labellife-design-tool 2.2.2 → 2.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/model/node-model.js","../../src/model/shape-model.js","../../src/model/image-model.js","../../src/model/text-model.js","../../src/model/svg-model.js","../../src/model/figure-model.js","../../src/model/line-model.js","../../src/model/group-model.js","../../src/model/page-model.js","../../src/model/history.js","../../src/model/store.js","../../src/side-panel/tab-button.js","../../src/utils/l10n.js","../../src/config.js","../../src/side-panel/text-panel.js","../../src/side-panel/background-panel.js","../../src/side-panel/layers-panel.js","../../src/side-panel/elements-panel.js","../../src/utils/image.js","../../src/side-panel/upload-panel.js","../../src/toolbar/image-effects-panel.js","../../src/toolbar/image-mask-panel.js","../../src/toolbar/text-effects-panel.js","../../src/side-panel/side-panel.js","../../src/side-panel/images-grid.js","../../src/side-panel/input-fields-panel.js","../../src/utils/fonts.js","../../src/toolbar/toolbar.js","../../src/toolbar/zoom-buttons.js","../../src/canvas/image-element.js","../../src/canvas/text-element.js","../../src/canvas/svg-element.js","../../src/canvas/figure-element.js","../../src/canvas/line-element.js","../../src/canvas/group-element.js","../../src/canvas/element.js","../../src/components/InputFieldsDialog.js","../../src/canvas/workspace.js","../../src/utils/unit.js","../../src/index.js"],"sourcesContent":["import { types, getParent, getRoot } from 'mobx-state-tree';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport const Node = types\n .model('Node', {\n id: types.optional(types.identifier, () => uuidv4()),\n type: types.optional(types.string, ''),\n name: types.optional(types.string, ''),\n opacity: types.optional(types.number, 1),\n custom: types.optional(types.frozen(), {}),\n visible: types.optional(types.boolean, true),\n selectable: types.optional(types.boolean, true),\n removable: types.optional(types.boolean, true),\n alwaysOnTop: types.optional(types.boolean, false),\n showInExport: types.optional(types.boolean, true),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n\n // Polotno uses 'locked' boolean → map to our interaction flags\n if (s.locked === true) {\n if (s.draggable === undefined) s.draggable = false;\n if (s.resizable === undefined) s.resizable = false;\n if (s.contentEditable === undefined) s.contentEditable = false;\n if (s.styleEditable === undefined) s.styleEditable = false;\n }\n delete s.locked;\n\n // Coerce opacity from string to number if needed\n if (typeof s.opacity === 'string') {\n s.opacity = parseFloat(s.opacity) || 1;\n }\n\n return s;\n })\n .views((self) => ({\n get locked() {\n return (\n !self.draggable &&\n !self.resizable &&\n !self.contentEditable &&\n !self.styleEditable\n );\n },\n get page() {\n try {\n let parent = getParent(self);\n // Walk up: element -> children array -> page\n if (parent && getParent(parent)) {\n return getParent(parent);\n }\n } catch (e) {\n // not attached yet\n }\n return undefined;\n },\n get store() {\n try {\n return getRoot(self);\n } catch (e) {\n return undefined;\n }\n },\n get top() {\n // For grouped elements, returns the top-level group. For ungrouped, returns self.\n try {\n let parent = getParent(self);\n if (parent) {\n let grandParent = getParent(parent);\n if (grandParent && grandParent.type === 'group') {\n return grandParent.top;\n }\n }\n } catch (e) {\n // not in a group\n }\n return self;\n },\n get parent() {\n try {\n const arr = getParent(self);\n if (arr) {\n return getParent(arr);\n }\n } catch (e) {\n // not attached\n }\n return undefined;\n },\n get zIndex() {\n try {\n const arr = getParent(self);\n if (arr) {\n return arr.indexOf(self);\n }\n } catch (e) {\n // not attached\n }\n return 0;\n },\n }))\n .actions((self) => ({\n toJSON() {\n const json = {};\n const snapshot = { ...self };\n for (const key of Object.keys(snapshot)) {\n if (key.startsWith('_')) continue;\n json[key] = snapshot[key];\n }\n return json;\n },\n }))\n .actions((self) => ({\n clone(attrs = {}, { skipSelect = false } = {}) {\n const json = self.toJSON();\n delete json.id;\n Object.assign(json, attrs);\n const page = self.page;\n if (page) {\n return page.addElement(json, { skipSelect });\n }\n return null;\n },\n set(attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (key in self && key !== 'id') {\n self[key] = value;\n }\n }\n },\n moveUp() {\n const page = self.page;\n if (page) {\n page.moveElementUp(self.id);\n }\n },\n moveTop() {\n const page = self.page;\n if (page) {\n page.moveElementTop(self.id);\n }\n },\n moveDown() {\n const page = self.page;\n if (page) {\n page.moveElementDown(self.id);\n }\n },\n moveBottom() {\n const page = self.page;\n if (page) {\n page.moveElementBottom(self.id);\n }\n },\n setZIndex(zIndex) {\n const page = self.page;\n if (page) {\n page.setElementZIndex(self.id, zIndex);\n }\n },\n beforeDestroy() {\n // cleanup hook\n },\n }));\n","import { types } from 'mobx-state-tree';\nimport { Node } from './node-model';\n\nconst Animation = types.model('Animation', {\n delay: types.optional(types.number, 0),\n duration: types.optional(types.number, 1),\n enabled: types.optional(types.boolean, false),\n type: types.optional(types.string, ''),\n name: types.optional(types.string, ''),\n data: types.optional(types.frozen(), {}),\n});\n\nconst ShapeFilter = types.model('ShapeFilter', {\n intensity: types.optional(types.number, 1),\n});\n\nexport const Shape = Node.named('Shape')\n .props({\n x: types.optional(types.number, 0),\n y: types.optional(types.number, 0),\n width: types.optional(types.number, 100),\n height: types.optional(types.number, 100),\n rotation: types.optional(types.number, 0),\n\n animations: types.optional(types.array(Animation), []),\n\n // Effects\n blurEnabled: types.optional(types.boolean, false),\n blurRadius: types.optional(types.number, 10),\n brightnessEnabled: types.optional(types.boolean, false),\n brightness: types.optional(types.number, 0),\n sepiaEnabled: types.optional(types.boolean, false),\n grayscaleEnabled: types.optional(types.boolean, false),\n warmEnabled: types.optional(types.boolean, false),\n coldEnabled: types.optional(types.boolean, false),\n filters: types.optional(types.map(ShapeFilter), {}),\n\n // Shadow\n shadowEnabled: types.optional(types.boolean, false),\n shadowBlur: types.optional(types.number, 5),\n shadowOffsetX: types.optional(types.number, 0),\n shadowOffsetY: types.optional(types.number, 0),\n shadowColor: types.optional(types.string, 'black'),\n shadowOpacity: types.optional(types.number, 1),\n\n // Interaction flags\n draggable: types.optional(types.boolean, true),\n resizable: types.optional(types.boolean, true),\n contentEditable: types.optional(types.boolean, true),\n styleEditable: types.optional(types.boolean, true),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n\n // Coerce numeric properties that may arrive as strings from templates\n const numericKeys = [\n 'x', 'y', 'width', 'height', 'rotation',\n 'blurRadius', 'brightness',\n 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'shadowOpacity',\n ];\n numericKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = parseFloat(s[key]) || 0;\n }\n });\n\n // Coerce boolean properties that may arrive as strings\n const boolKeys = [\n 'blurEnabled', 'brightnessEnabled', 'sepiaEnabled', 'grayscaleEnabled', 'warmEnabled', 'coldEnabled',\n 'shadowEnabled', 'draggable', 'resizable', 'contentEditable', 'styleEditable',\n ];\n boolKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = s[key] === 'true';\n }\n });\n\n return s;\n })\n .actions((self) => ({\n setAnimation(type, attrs) {\n const existing = self.animations.find((a) => a.type === type);\n if (existing) {\n Object.assign(existing, attrs);\n } else {\n self.animations.push({ type, ...attrs });\n }\n },\n setFilter(type, value) {\n self.filters.set(type, { intensity: value });\n },\n }));\n\nexport { Animation, ShapeFilter };\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const ImageElement = Shape.named('ImageElement')\n .props({\n type: types.optional(types.string, 'image'),\n src: types.optional(types.string, ''),\n cropX: types.optional(types.number, 0),\n cropY: types.optional(types.number, 0),\n cropWidth: types.optional(types.number, 1),\n cropHeight: types.optional(types.number, 1),\n cornerRadius: types.optional(types.number, 0),\n flipX: types.optional(types.boolean, false),\n flipY: types.optional(types.boolean, false),\n clipSrc: types.optional(types.string, ''),\n borderColor: types.optional(types.string, ''),\n borderSize: types.optional(types.number, 0),\n keepRatio: types.optional(types.boolean, true),\n stretchEnabled: types.optional(types.boolean, false),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n const numericKeys = ['cropX', 'cropY', 'cropWidth', 'cropHeight', 'cornerRadius', 'borderSize'];\n numericKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = parseFloat(s[key]) || 0;\n }\n });\n const boolKeys = ['flipX', 'flipY', 'keepRatio', 'stretchEnabled'];\n boolKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = s[key] === 'true';\n }\n });\n return s;\n })\n .volatile(() => ({\n _cropModeEnabled: false,\n }))\n .actions((self) => ({\n toggleCropMode(flag) {\n self._cropModeEnabled = flag !== undefined ? flag : !self._cropModeEnabled;\n },\n }));\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const TextElement = Shape.named('TextElement')\n .props({\n type: types.optional(types.string, 'text'),\n text: types.optional(types.string, ''),\n placeholder: types.optional(types.string, ''),\n fontSize: types.optional(types.number, 20),\n fontFamily: types.optional(types.string, 'Roboto'),\n fontStyle: types.optional(types.string, 'normal'),\n fontWeight: types.optional(types.union(types.string, types.number), 'normal'),\n textDecoration: types.optional(types.string, ''),\n textTransform: types.optional(types.string, ''),\n fill: types.optional(types.string, '#000000'),\n align: types.optional(types.string, 'center'),\n verticalAlign: types.optional(types.string, 'top'),\n strokeWidth: types.optional(types.number, 0),\n stroke: types.optional(types.string, ''),\n lineHeight: types.optional(types.union(types.number, types.string), 1.2),\n letterSpacing: types.optional(types.number, 0),\n\n // Text background\n backgroundEnabled: types.optional(types.boolean, false),\n backgroundColor: types.optional(types.string, '#ffffff'),\n backgroundOpacity: types.optional(types.number, 1),\n backgroundCornerRadius: types.optional(types.number, 0),\n backgroundPadding: types.optional(types.number, 0),\n\n // Curved text\n curveEnabled: types.optional(types.boolean, false),\n curvePower: types.optional(types.number, 0),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n\n // Normalize combined fontStyle that may include weight (e.g. \"italic bold\", \"bold\")\n if (s.fontStyle && typeof s.fontStyle === 'string') {\n const parts = s.fontStyle.trim().split(/\\s+/);\n const styleWords = [];\n const weightWords = [];\n const weightKeywords = ['bold', 'normal', 'lighter', 'bolder',\n '100','200','300','400','500','600','700','800','900'];\n parts.forEach((p) => {\n if (weightKeywords.includes(p)) {\n weightWords.push(p);\n } else {\n styleWords.push(p);\n }\n });\n if (weightWords.length > 0 && !s.fontWeight) {\n s.fontWeight = weightWords[0];\n } else if (weightWords.length > 0 && s.fontWeight === 'normal') {\n s.fontWeight = weightWords[0];\n }\n s.fontStyle = styleWords.length > 0 ? styleWords.join(' ') : 'normal';\n }\n\n // Coerce numeric fontWeight to string if needed\n if (typeof s.fontWeight === 'number') {\n s.fontWeight = String(s.fontWeight);\n }\n\n // Coerce text-specific numeric properties from strings\n const numericKeys = [\n 'fontSize', 'letterSpacing', 'strokeWidth',\n 'backgroundOpacity', 'backgroundCornerRadius', 'backgroundPadding',\n 'curvePower',\n ];\n numericKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = parseFloat(s[key]) || 0;\n }\n });\n\n // Coerce text-specific boolean properties\n const boolKeys = ['backgroundEnabled', 'curveEnabled'];\n boolKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = s[key] === 'true';\n }\n });\n\n return s;\n })\n .volatile(() => ({\n _editModeEnabled: false,\n }))\n .actions((self) => ({\n toggleEditMode(editing) {\n self._editModeEnabled =\n editing !== undefined ? editing : !self._editModeEnabled;\n },\n }));\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const SVGElement = Shape.named('SVGElement')\n .props({\n type: types.optional(types.string, 'svg'),\n src: types.optional(types.string, ''),\n maskSrc: types.optional(types.string, ''),\n cropX: types.optional(types.number, 0),\n cropY: types.optional(types.number, 0),\n cropWidth: types.optional(types.number, 1),\n cropHeight: types.optional(types.number, 1),\n keepRatio: types.optional(types.boolean, true),\n stretchEnabled: types.optional(types.boolean, false),\n flipX: types.optional(types.boolean, false),\n flipY: types.optional(types.boolean, false),\n borderColor: types.optional(types.string, ''),\n borderSize: types.optional(types.number, 0),\n cornerRadius: types.optional(types.number, 0),\n colorsReplace: types.optional(types.map(types.string), {}),\n })\n .actions((self) => ({\n replaceColor(oldColor, newColor) {\n self.colorsReplace.set(oldColor, newColor);\n },\n }));\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const FigureElement = Shape.named('FigureElement')\n .props({\n type: types.optional(types.string, 'figure'),\n subType: types.optional(types.string, 'rect'),\n fill: types.optional(types.string, '#BFBFBF'),\n dash: types.optional(types.array(types.number), []),\n strokeWidth: types.optional(types.number, 0),\n stroke: types.optional(types.string, ''),\n cornerRadius: types.optional(types.number, 0),\n pathData: types.optional(types.string, ''),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n const numericKeys = ['strokeWidth', 'cornerRadius'];\n numericKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = parseFloat(s[key]) || 0;\n }\n });\n return s;\n });\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const LineElement = Shape.named('LineElement')\n .props({\n type: types.optional(types.string, 'line'),\n color: types.optional(types.string, '#000000'),\n dash: types.optional(types.array(types.number), []),\n startHead: types.optional(types.string, ''),\n endHead: types.optional(types.string, ''),\n });\n","import { types, getSnapshot } from 'mobx-state-tree';\nimport { ImageElement } from './image-model';\nimport { TextElement } from './text-model';\nimport { SVGElement } from './svg-model';\nimport { FigureElement } from './figure-model';\nimport { LineElement } from './line-model';\nimport { Node } from './node-model';\n\nexport const TYPES_MAP = {\n image: ImageElement,\n text: TextElement,\n svg: SVGElement,\n figure: FigureElement,\n line: LineElement,\n};\n\nconst ElementUnion = types.union(\n {\n dispatcher: (snapshot) => {\n if (!snapshot || !snapshot.type) return Node;\n const model = TYPES_MAP[snapshot.type];\n if (model) return model;\n // For group type or unknown types, use late-bound GroupElement or Node\n if (snapshot.type === 'group') return GroupElement;\n return Node;\n },\n },\n ImageElement,\n TextElement,\n SVGElement,\n FigureElement,\n LineElement,\n // GroupElement added below via late binding\n Node\n);\n\nexport const GroupElement = Node.named('GroupElement')\n .props({\n type: types.optional(types.string, 'group'),\n x: types.optional(types.number, 0),\n y: types.optional(types.number, 0),\n width: types.optional(types.number, 0),\n height: types.optional(types.number, 0),\n rotation: types.optional(types.number, 0),\n draggable: types.optional(types.boolean, true),\n resizable: types.optional(types.boolean, true),\n children: types.optional(types.array(types.late(() => ElementUnion)), []),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n\n // Polotno compat: groups without explicit width — compute bounds from children\n if (s.children && s.children.length > 0 && !(s.width > 0)) {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n s.children.forEach((child) => {\n const cx = child.x || 0;\n const cy = child.y || 0;\n const cw = child.width || 0;\n const ch = child.height || 0;\n minX = Math.min(minX, cx);\n minY = Math.min(minY, cy);\n maxX = Math.max(maxX, cx + cw);\n maxY = Math.max(maxY, cy + ch);\n });\n if (minX !== Infinity) {\n s.x = minX;\n s.y = minY;\n s.width = maxX - minX;\n s.height = maxY - minY;\n s.children = s.children.map((child) => ({\n ...child,\n x: (child.x || 0) - minX,\n y: (child.y || 0) - minY,\n }));\n }\n }\n\n return s;\n })\n .actions((self) => ({\n toJSON() {\n const gx = self.x;\n const gy = self.y;\n return {\n id: self.id,\n type: self.type,\n name: self.name,\n opacity: self.opacity,\n visible: self.visible,\n selectable: self.selectable,\n removable: self.removable,\n alwaysOnTop: self.alwaysOnTop,\n showInExport: self.showInExport,\n children: self.children.map((child) => {\n const cj = child.toJSON ? child.toJSON() : getSnapshot(child);\n return { ...cj, x: (cj.x || 0) + gx, y: (cj.y || 0) + gy };\n }),\n };\n },\n }));\n\nexport const forEveryChild = (node, cb) => {\n cb(node);\n if (node.children) {\n node.children.forEach((child) => forEveryChild(child, cb));\n }\n};\n\nexport const createElement = (attrs) => {\n const type = attrs.type;\n const Model = TYPES_MAP[type];\n if (Model) {\n return Model.create(attrs);\n }\n if (type === 'group') {\n return GroupElement.create(attrs);\n }\n return Node.create(attrs);\n};\n\nexport { ElementUnion };\n","import { types, getParent, getRoot, getSnapshot, destroy } from 'mobx-state-tree';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ImageElement } from './image-model';\nimport { TextElement } from './text-model';\nimport { SVGElement } from './svg-model';\nimport { FigureElement } from './figure-model';\nimport { LineElement } from './line-model';\nimport { GroupElement, ElementUnion, TYPES_MAP } from './group-model';\n\nexport const Page = types\n .model('Page', {\n id: types.optional(types.identifier, () => uuidv4()),\n children: types.optional(types.array(types.late(() => ElementUnion)), []),\n width: types.optional(types.union(types.number, types.literal('auto')), 'auto'),\n height: types.optional(types.union(types.number, types.literal('auto')), 'auto'),\n background: types.optional(types.string, ''),\n bleed: types.optional(types.number, 0),\n custom: types.optional(types.frozen(), {}),\n duration: types.optional(types.number, 5000),\n })\n .volatile(() => ({\n _exporting: false,\n _rendering: false,\n _forceMount: false,\n }))\n .views((self) => ({\n get store() {\n try {\n return getRoot(self);\n } catch (e) {\n return undefined;\n }\n },\n get computedWidth() {\n if (self.width !== 'auto') return self.width;\n const store = self.store;\n return store ? store.width : 500;\n },\n get computedHeight() {\n if (self.height !== 'auto') return self.height;\n const store = self.store;\n return store ? store.height : 500;\n },\n get startTime() {\n const store = self.store;\n if (!store) return 0;\n let time = 0;\n for (const page of store.pages) {\n if (page.id === self.id) return time;\n time += page.duration;\n }\n return time;\n },\n get _exportingOrRendering() {\n return self._exporting || self._rendering;\n },\n }))\n .actions((self) => ({\n toJSON() {\n return {\n id: self.id,\n children: self.children.map((child) => {\n if (child.toJSON) return child.toJSON();\n return getSnapshot(child);\n }),\n width: self.width,\n height: self.height,\n background: self.background,\n bleed: self.bleed,\n custom: self.custom,\n duration: self.duration,\n };\n },\n set(attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (key in self && key !== 'id') {\n self[key] = value;\n }\n }\n },\n select() {\n const store = self.store;\n if (store) {\n store.selectPage(self.id);\n }\n },\n clone(attrs = {}) {\n const json = self.toJSON();\n delete json.id;\n Object.assign(json, attrs);\n const store = self.store;\n if (store) {\n return store.addPage(json);\n }\n return null;\n },\n addElement(attrs, { skipSelect = false } = {}) {\n const type = attrs.type;\n const elementData = {\n id: uuidv4(),\n ...attrs,\n };\n\n self.children.push(elementData);\n const newElement = self.children[self.children.length - 1];\n\n if (!skipSelect) {\n const store = self.store;\n if (store) {\n store.selectElements([newElement.id]);\n }\n }\n\n return newElement;\n },\n\n // Z-ordering helpers\n _findChildIndex(id) {\n return self.children.findIndex((c) => c.id === id);\n },\n\n canMoveElementsUp(ids) {\n for (const id of ids) {\n const idx = self._findChildIndex(id);\n if (idx < self.children.length - 1) return true;\n }\n return false;\n },\n moveElementsUp(ids) {\n for (const id of ids) {\n self.moveElementUp(id);\n }\n },\n moveElementUp(id) {\n const idx = self._findChildIndex(id);\n if (idx >= 0 && idx < self.children.length - 1) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.splice(idx + 1, 0, snapshot);\n }\n },\n\n canMoveElementsTop(ids) {\n for (const id of ids) {\n const idx = self._findChildIndex(id);\n if (idx < self.children.length - 1) return true;\n }\n return false;\n },\n moveElementsTop(ids) {\n for (const id of ids) {\n self.moveElementTop(id);\n }\n },\n moveElementTop(id) {\n const idx = self._findChildIndex(id);\n if (idx >= 0 && idx < self.children.length - 1) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.push(snapshot);\n }\n },\n\n canMoveElementsDown(ids) {\n for (const id of ids) {\n const idx = self._findChildIndex(id);\n if (idx > 0) return true;\n }\n return false;\n },\n moveElementsDown(ids) {\n for (const id of ids) {\n self.moveElementDown(id);\n }\n },\n moveElementDown(id) {\n const idx = self._findChildIndex(id);\n if (idx > 0) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.splice(idx - 1, 0, snapshot);\n }\n },\n\n canMoveElementsBottom(ids) {\n for (const id of ids) {\n const idx = self._findChildIndex(id);\n if (idx > 0) return true;\n }\n return false;\n },\n moveElementsBottom(ids) {\n for (const id of ids) {\n self.moveElementBottom(id);\n }\n },\n moveElementBottom(id) {\n const idx = self._findChildIndex(id);\n if (idx > 0) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.splice(0, 0, snapshot);\n }\n },\n\n setElementZIndex(id, zIndex) {\n const idx = self._findChildIndex(id);\n if (idx >= 0 && zIndex >= 0 && zIndex < self.children.length) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.splice(zIndex, 0, snapshot);\n }\n },\n\n setSize({ width, height, useMagic = false, softChange = false }) {\n if (width !== undefined) self.width = width;\n if (height !== undefined) self.height = height;\n },\n\n setZIndex(zIndex) {\n const store = self.store;\n if (store) {\n store.setPageZIndex(self.id, zIndex);\n }\n },\n\n _forEachElementUp(ids, callback) {\n for (let i = self.children.length - 1; i >= 0; i--) {\n const child = self.children[i];\n if (ids.includes(child.id)) {\n callback(child);\n }\n }\n },\n\n _forEachElementDown(ids, callback) {\n for (let i = 0; i < self.children.length; i++) {\n const child = self.children[i];\n if (ids.includes(child.id)) {\n callback(child);\n }\n }\n return false;\n },\n\n play() {\n // placeholder for animation support\n },\n }));\n","import { types, getSnapshot, applySnapshot, getRoot } from 'mobx-state-tree';\n\nexport const History = types\n .model('History', {\n history: types.optional(types.array(types.frozen()), []),\n undoIdx: types.optional(types.number, -1),\n targetPath: types.optional(types.string, ''),\n })\n .volatile(() => ({\n _isTransacting: false,\n _skipSave: false,\n _ignoring: false,\n }))\n .views((self) => ({\n get canUndo() {\n return self.undoIdx > 0;\n },\n get canRedo() {\n return self.undoIdx < self.history.length - 1;\n },\n }))\n .actions((self) => {\n let disposer = null;\n\n return {\n startTransaction() {\n self._isTransacting = true;\n },\n endTransaction(skipSave = false) {\n self._isTransacting = false;\n if (!skipSave) {\n self.addUndoState();\n }\n },\n ignore(func) {\n self._ignoring = true;\n try {\n func();\n } finally {\n self._ignoring = false;\n }\n },\n async transaction(func) {\n self.startTransaction();\n try {\n await func();\n } finally {\n self.endTransaction();\n }\n },\n addUndoState() {\n if (self._ignoring) return;\n try {\n const root = getRoot(self);\n const snapshot = getSnapshot(root);\n // Strip history (circular) and zoom-level properties (UI preference,\n // not content — should not be affected by undo/redo).\n const stateToSave = { ...snapshot };\n delete stateToSave.history;\n delete stateToSave.scale;\n delete stateToSave.scaleToFit;\n\n // Remove future states if we're in the middle of history\n if (self.undoIdx < self.history.length - 1) {\n self.history.splice(self.undoIdx + 1);\n }\n\n self.history.push(stateToSave);\n self.undoIdx = self.history.length - 1;\n\n // Limit history size to 100 entries\n if (self.history.length > 100) {\n self.history.splice(0, self.history.length - 100);\n self.undoIdx = self.history.length - 1;\n }\n } catch (e) {\n console.warn('History: failed to save state', e);\n }\n },\n _restoreState(state) {\n if (!state) return;\n self._ignoring = true;\n try {\n const root = getRoot(self);\n const currentHistory = getSnapshot(self);\n\n // Preserve zoom level across undo/redo — scale and scaleToFit are UI\n // preferences, not content, so they are excluded from history snapshots.\n const currentScale = root.scale;\n const currentScaleToFit = root.scaleToFit;\n\n // Apply the full snapshot (children may get reordered by MST reconciliation)\n applySnapshot(root, {\n ...state,\n history: currentHistory,\n scale: currentScale,\n scaleToFit: currentScaleToFit,\n });\n\n // Fix children order — MST's identifier-based reconciliation can\n // reorder arrays. Use getSnapshot→clear→push (same pattern as\n // page-model moveElementUp/Down) to enforce the saved order.\n if (state.pages) {\n state.pages.forEach((savedPage) => {\n const page = root.pages.find((p) => p.id === savedPage.id);\n if (!page || !savedPage.children || !savedPage.children.length) return;\n const targetIds = savedPage.children.map((c) => c.id);\n const currentIds = page.children.map((c) => c.id);\n // Only reorder if order actually differs\n if (targetIds.length === currentIds.length &&\n targetIds.every((id, i) => id === currentIds[i])) return;\n const snapById = {};\n page.children.forEach((c) => { snapById[c.id] = getSnapshot(c); });\n page.children.clear();\n targetIds.forEach((id) => {\n if (snapById[id]) page.children.push(snapById[id]);\n });\n });\n }\n } catch (e) {\n console.warn('History: failed to restore state', e);\n } finally {\n self._ignoring = false;\n }\n },\n undo() {\n if (!self.canUndo) return;\n self.undoIdx -= 1;\n self._restoreState(self.history[self.undoIdx]);\n },\n redo() {\n if (!self.canRedo) return;\n self.undoIdx += 1;\n self._restoreState(self.history[self.undoIdx]);\n },\n clear() {\n self.history.clear();\n self.undoIdx = -1;\n },\n afterCreate() {\n // Do NOT defer an addUndoState() here.\n //\n // The previous setTimeout(addUndoState, 0) fired asynchronously and\n // created a race condition with loadJSON:\n //\n // • If the timeout fired BEFORE loadJSON: the empty-store snapshot\n // was saved as history[0], then loadJSON's history.clear() removed\n // it and saved the correct template as the new history[0] — OK so\n // far, but then the timeout could also fire AFTER loadJSON and add\n // a stale duplicate as history[1], making undoIdx=1 instead of 0.\n //\n // • Either way, history[0] ended up being saved with whatever `scale`\n // was current at a moment we did not control (potentially a negative\n // value produced by the ResizeObserver when the container had\n // width=0), so the first undo restored that wrong scale and mirrored\n // the entire canvas.\n //\n // loadJSON (and store.clear) both call history.clear() + addUndoState()\n // explicitly, and now do so AFTER resetting scale=1, so they own the\n // \"initial state\" responsibility completely.\n },\n beforeDestroy() {\n if (disposer) {\n disposer();\n disposer = null;\n }\n },\n replaceState() {\n // Replace the current state in history (for non-undoable changes)\n if (self._ignoring) return;\n try {\n const root = getRoot(self);\n const snapshot = getSnapshot(root);\n const stateToSave = { ...snapshot };\n delete stateToSave.history;\n\n if (self.undoIdx >= 0 && self.undoIdx < self.history.length) {\n self.history[self.undoIdx] = stateToSave;\n }\n } catch (e) {\n console.warn('History: failed to replace state', e);\n }\n },\n requestAddState() {\n // Debounced version - just calls addUndoState\n self.addUndoState();\n },\n };\n });\n","import { types, getSnapshot, applySnapshot, destroy, onSnapshot } from 'mobx-state-tree';\nimport { v4 as uuidv4 } from 'uuid';\nimport { jsPDF } from 'jspdf';\nimport { Page } from './page-model';\nimport { History } from './history';\nimport { TYPES_MAP, forEveryChild } from './group-model';\n\n// Detect embedded base64 data URLs (data:...;base64,...).\n// Regular http/https/blob URLs are preserved.\nconst isBase64DataUrl = (v) =>\n typeof v === 'string' && v.startsWith('data:') && v.includes(';base64,');\n\n// Only strip base64 from variable input-field images (inputField: true).\n// Static design images ARE the template content — stripping them clears the design.\n// Variable input-field placeholders are replaced at runtime anyway, so stripping\n// their (usually tiny SVG) placeholder base64 is safe and keeps exports clean.\nconst stripBase64FromElement = (el) => {\n const out = { ...el };\n const isInputField = out.custom && out.custom.inputField;\n if (isInputField) {\n if (isBase64DataUrl(out.src)) out.src = '';\n if (isBase64DataUrl(out.clipSrc)) out.clipSrc = '';\n }\n if (Array.isArray(out.children)) {\n out.children = out.children.map(stripBase64FromElement);\n }\n return out;\n};\n\nconst stripBase64FromExport = (data) => ({\n ...data,\n pages: (data.pages || []).map((page) => ({\n ...page,\n children: (page.children || []).map(stripBase64FromElement),\n })),\n});\n\nconst Font = types.model('Font', {\n fontFamily: types.string,\n url: types.optional(types.string, ''),\n styles: types.optional(types.frozen(), []),\n});\n\nconst Audio = types\n .model('Audio', {\n id: types.optional(types.identifier, () => uuidv4()),\n src: types.optional(types.string, ''),\n duration: types.optional(types.number, 0),\n startTime: types.optional(types.number, 0),\n endTime: types.optional(types.number, 0),\n volume: types.optional(types.number, 1),\n delay: types.optional(types.number, 0),\n custom: types.optional(types.frozen(), {}),\n })\n .actions((self) => ({\n toJSON() {\n return {\n id: self.id,\n src: self.src,\n duration: self.duration,\n startTime: self.startTime,\n endTime: self.endTime,\n volume: self.volume,\n delay: self.delay,\n custom: self.custom,\n };\n },\n set(attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (key in self && key !== 'id') {\n self[key] = value;\n }\n }\n },\n }));\n\nexport const Store = types\n .model('Store', {\n role: types.optional(types.string, 'design'),\n pages: types.optional(types.array(Page), []),\n fonts: types.optional(types.array(Font), []),\n audios: types.optional(types.array(Audio), []),\n width: types.optional(types.number, 500),\n height: types.optional(types.number, 500),\n scale: types.optional(types.number, 1),\n scaleToFit: types.optional(types.number, 1),\n unit: types.optional(types.string, 'px'),\n dpi: types.optional(types.number, 72),\n schemaVersion: types.optional(types.number, 1),\n bleedVisible: types.optional(types.boolean, false),\n rulesVisible: types.optional(types.boolean, false),\n distanceGuidesVisible: types.optional(types.boolean, false),\n openedSidePanel: types.optional(types.string, ''),\n previousOpenedSidePanel: types.optional(types.string, ''),\n custom: types.optional(types.frozen(), {}),\n tool: types.optional(types.string, 'selection'),\n selectedElementsIds: types.optional(types.array(types.string), []),\n history: types.optional(History, {}),\n _activePageId: types.optional(types.string, ''),\n _selectedPagesIds: types.optional(types.array(types.string), []),\n _elementsPixelRatio: types.optional(types.number, 1),\n })\n .volatile(() => ({\n _stageRef: null,\n _listeners: new Map(),\n _key: '',\n _showCredit: false,\n currentTime: 0,\n isPlaying: false,\n _toolbarPanel: null, // null | { type: 'effects'|'mask', elementId: string }\n _fontVersion: 0, // incremented after each font load to trigger canvas re-render\n _pendingInputFields: [], // elements awaiting user input after loadJSON\n }))\n .views((self) => ({\n get _idsMap() {\n const map = {};\n self.pages.forEach((page) => {\n page.children.forEach((child) => {\n forEveryChild(child, (el) => {\n map[el.id] = el;\n });\n });\n });\n return map;\n },\n get selectedElements() {\n const map = self._idsMap;\n return self.selectedElementsIds\n .map((id) => map[id])\n .filter(Boolean);\n },\n get selectedShapes() {\n return self.selectedElements;\n },\n get children() {\n return self.pages;\n },\n get activePage() {\n if (self._activePageId) {\n const page = self.pages.find((p) => p.id === self._activePageId);\n if (page) return page;\n }\n return self.pages.length > 0 ? self.pages[0] : undefined;\n },\n get selectedPages() {\n if (self._selectedPagesIds.length > 0) {\n return self._selectedPagesIds\n .map((id) => self.pages.find((p) => p.id === id))\n .filter(Boolean);\n }\n const active = self.activePage;\n return active ? [active] : [];\n },\n get duration() {\n let total = 0;\n self.pages.forEach((page) => {\n total += page.duration;\n });\n return total;\n },\n get inputFields() {\n const fields = [];\n self.pages.forEach((page) => {\n page.children.forEach((el) => {\n forEveryChild(el, (child) => {\n if (child.custom && child.custom.inputField) {\n fields.push(child);\n }\n });\n });\n });\n return fields;\n },\n get _hasCroppedImages() {\n for (const page of self.pages) {\n for (const child of page.children) {\n if (\n child.type === 'image' &&\n (child.cropX !== 0 ||\n child.cropY !== 0 ||\n child.cropWidth !== 1 ||\n child.cropHeight !== 1)\n ) {\n return true;\n }\n }\n }\n return false;\n },\n }))\n .actions((self) => ({\n find(callback) {\n for (const page of self.pages) {\n if (callback(page)) return page;\n for (const child of page.children) {\n if (callback(child)) return child;\n }\n }\n return undefined;\n },\n getElementById(id) {\n return self._idsMap[id];\n },\n }))\n .actions((self) => ({\n requestInputFields() {\n const fields = self.inputFields;\n self._pendingInputFields = fields;\n return fields;\n },\n _resolveInputField(id) {\n self._pendingInputFields = self._pendingInputFields.filter(\n (el) => el.id !== id\n );\n },\n _unresolveInputField(el) {\n // Re-insert at the front so it becomes the next field shown (back navigation)\n const alreadyPending = self._pendingInputFields.some((f) => f.id === el.id);\n if (!alreadyPending) {\n self._pendingInputFields.unshift(el);\n }\n },\n clearPendingInputFields() {\n self._pendingInputFields = [];\n },\n }))\n .actions((self) => ({\n afterCreate() {\n // set initial active page\n if (self.pages.length > 0 && !self._activePageId) {\n self._activePageId = self.pages[0].id;\n }\n },\n set(attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (key in self && !key.startsWith('_')) {\n self[key] = value;\n }\n }\n },\n setUnit({ unit, dpi }) {\n if (unit !== undefined) self.unit = unit;\n if (dpi !== undefined) self.dpi = dpi;\n },\n setRole(role) {\n self.role = role;\n },\n setTool(tool) {\n self.tool = tool;\n },\n setToolOptions(options) {\n // placeholder for tool options\n },\n addPage(attrs = {}) {\n const pageData = {\n id: uuidv4(),\n ...attrs,\n };\n self.pages.push(pageData);\n const newPage = self.pages[self.pages.length - 1];\n self._activePageId = newPage.id;\n return newPage;\n },\n selectPage(id) {\n self._activePageId = id;\n self._selectedPagesIds.clear();\n },\n selectPages(ids) {\n self._selectedPagesIds.replace(ids);\n if (ids.length > 0) {\n self._activePageId = ids[0];\n }\n },\n selectElements(ids) {\n self.selectedElementsIds.replace(ids);\n // Close toolbar panel if the selected element changes\n if (self._toolbarPanel) {\n const stillSelected = ids.includes(self._toolbarPanel.elementId);\n if (!stillSelected) {\n self._toolbarPanel = null;\n }\n }\n },\n toggleBleed(bleedVisible) {\n self.bleedVisible =\n bleedVisible !== undefined ? bleedVisible : !self.bleedVisible;\n },\n toggleRulers(rulesVisible) {\n self.rulesVisible =\n rulesVisible !== undefined ? rulesVisible : !self.rulesVisible;\n },\n toggleDistanceGuides(distanceGuidesVisible) {\n self.distanceGuidesVisible =\n distanceGuidesVisible !== undefined\n ? distanceGuidesVisible\n : !self.distanceGuidesVisible;\n },\n openSidePanel(panelName) {\n self.previousOpenedSidePanel = self.openedSidePanel;\n self.openedSidePanel = panelName;\n },\n openToolbarPanel(type) {\n const el = self.selectedElements.length === 1 ? self.selectedElements[0] : null;\n if (el) {\n self._toolbarPanel = { type, elementId: el.id };\n }\n },\n closeToolbarPanel() {\n self._toolbarPanel = null;\n },\n setScale(scale) {\n self.scale = scale;\n },\n _setScaleToFit(scale) {\n self.scaleToFit = scale;\n },\n setElementsPixelRatio(ratio) {\n self._elementsPixelRatio = ratio;\n },\n setSize(width, height, useMagic = false) {\n if (width !== undefined) self.width = width;\n if (height !== undefined) self.height = height;\n },\n setPageZIndex(id, zIndex) {\n const idx = self.pages.findIndex((p) => p.id === id);\n if (idx >= 0 && zIndex >= 0 && zIndex < self.pages.length) {\n const snapshot = getSnapshot(self.pages[idx]);\n self.pages.splice(idx, 1);\n self.pages.splice(zIndex, 0, snapshot);\n }\n },\n deletePages(ids) {\n const toRemove = self.pages.filter((p) => ids.includes(p.id));\n toRemove.forEach((page) => {\n destroy(page);\n });\n // ensure at least one page exists\n if (self.pages.length === 0) {\n self.addPage();\n }\n // fix active page if deleted\n if (!self.pages.find((p) => p.id === self._activePageId)) {\n self._activePageId = self.pages[0].id;\n }\n },\n groupElements(ids, attrs = {}) {\n const page = self.activePage;\n if (!page) return null;\n\n const elements = ids\n .map((id) => {\n const idx = page.children.findIndex((c) => c.id === id);\n if (idx >= 0) return { idx, snapshot: getSnapshot(page.children[idx]) };\n return null;\n })\n .filter(Boolean);\n\n if (elements.length < 2) return null;\n\n // Calculate group bounds\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n elements.forEach(({ snapshot }) => {\n minX = Math.min(minX, snapshot.x || 0);\n minY = Math.min(minY, snapshot.y || 0);\n maxX = Math.max(maxX, (snapshot.x || 0) + (snapshot.width || 0));\n maxY = Math.max(maxY, (snapshot.y || 0) + (snapshot.height || 0));\n });\n\n // Remove original elements (in reverse order to preserve indices)\n const sortedIndices = elements.map((e) => e.idx).sort((a, b) => b - a);\n sortedIndices.forEach((idx) => {\n page.children.splice(idx, 1);\n });\n\n // Adjust children positions relative to group\n const groupChildren = elements.map(({ snapshot }) => ({\n ...snapshot,\n id: undefined, // will get new id\n x: (snapshot.x || 0) - minX,\n y: (snapshot.y || 0) - minY,\n }));\n\n const group = page.addElement({\n type: 'group',\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n children: groupChildren,\n ...attrs,\n });\n\n return group;\n },\n ungroupElements(ids) {\n const page = self.activePage;\n if (!page) return;\n\n const newChildIds = [];\n\n ids.forEach((id) => {\n const idx = page.children.findIndex((c) => c.id === id);\n if (idx < 0) return;\n const group = page.children[idx];\n if (group.type !== 'group') return;\n\n const groupSnapshot = getSnapshot(group);\n const groupX = groupSnapshot.x || 0;\n const groupY = groupSnapshot.y || 0;\n\n // Remove group\n page.children.splice(idx, 1);\n\n // Re-add children at group's position\n (groupSnapshot.children || []).forEach((childSnapshot) => {\n const newEl = page.addElement(\n {\n ...childSnapshot,\n id: undefined,\n x: (childSnapshot.x || 0) + groupX,\n y: (childSnapshot.y || 0) + groupY,\n },\n { skipSelect: true }\n );\n if (newEl) newChildIds.push(newEl.id);\n });\n });\n\n // Select the ungrouped children\n if (newChildIds.length > 0) {\n self.selectElements(newChildIds);\n }\n },\n deleteElements(ids) {\n self.pages.forEach((page) => {\n const toRemove = page.children.filter((c) => ids.includes(c.id));\n toRemove.forEach((el) => {\n destroy(el);\n });\n });\n // Remove from selection\n self.selectedElementsIds.replace(\n self.selectedElementsIds.filter((id) => !ids.includes(id))\n );\n },\n on(event, callback) {\n if (!self._listeners.has(event)) {\n self._listeners.set(event, []);\n }\n self._listeners.get(event).push(callback);\n\n // Return disposer\n return () => {\n const listeners = self._listeners.get(event);\n if (listeners) {\n const idx = listeners.indexOf(callback);\n if (idx >= 0) listeners.splice(idx, 1);\n }\n };\n },\n _emit(event, data) {\n const listeners = self._listeners.get(event);\n if (listeners) {\n listeners.forEach((cb) => cb(data));\n }\n },\n _setStageRef(ref) {\n self._stageRef = ref;\n },\n\n async _toCanvas({\n pixelRatio = 1,\n ignoreBackground = false,\n pageId,\n mimeType = 'image/png',\n includeBleed = false,\n _skipTimeout = false,\n quickMode = false,\n } = {}) {\n const stage = self._stageRef;\n if (!stage) {\n throw new Error('Stage ref not set. Make sure <Workspace> is mounted.');\n }\n\n const page = pageId\n ? self.pages.find((p) => p.id === pageId)\n : self.activePage;\n if (!page) {\n throw new Error('No page found for export.');\n }\n\n // The workspace renders content in a Layer with offset/scale for centering.\n // For export we temporarily reset the layer transform to capture just the\n // design at its native resolution.\n const layer = stage.getLayers()[0];\n if (!layer) {\n throw new Error('No layer found in stage for export.');\n }\n\n const prevX = layer.x();\n const prevY = layer.y();\n const prevScaleX = layer.scaleX();\n const prevScaleY = layer.scaleY();\n\n layer.x(0);\n layer.y(0);\n layer.scaleX(1);\n layer.scaleY(1);\n layer.draw();\n\n const canvas = layer.toCanvas({\n pixelRatio,\n x: 0,\n y: 0,\n width: self.width,\n height: self.height,\n });\n\n // Restore\n layer.x(prevX);\n layer.y(prevY);\n layer.scaleX(prevScaleX);\n layer.scaleY(prevScaleY);\n layer.draw();\n\n return canvas;\n },\n\n async toDataURL({\n mimeType = 'image/png',\n quality = 1,\n dpi,\n dpiMetadata,\n ...rest\n } = {}) {\n const canvas = await self._toCanvas({ mimeType, ...rest });\n return canvas.toDataURL(mimeType, quality);\n },\n\n async toBlob({ mimeType = 'image/png', quality = 1, ...rest } = {}) {\n const canvas = await self._toCanvas({ mimeType, ...rest });\n return new Promise((resolve, reject) => {\n canvas.toBlob(\n (blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error('Failed to create blob'));\n }\n },\n mimeType,\n quality\n );\n });\n },\n\n async saveAsImage({ fileName = 'design.png', ...exportProps } = {}) {\n const dataURL = await self.toDataURL(exportProps);\n const link = document.createElement('a');\n link.download = fileName;\n link.href = dataURL;\n link.click();\n },\n\n async toPDFDataURL({\n pixelRatio = 2,\n pageId,\n dpi = 300,\n includeBleed = false,\n } = {}) {\n const pages = pageId\n ? [self.pages.find((p) => p.id === pageId)].filter(Boolean)\n : [...self.pages];\n\n if (pages.length === 0) {\n throw new Error('No pages found for PDF export.');\n }\n\n const widthPt = (self.width / 96) * 72;\n const heightPt = (self.height / 96) * 72;\n\n const orientation = widthPt > heightPt ? 'landscape' : 'portrait';\n const pdf = new jsPDF({\n orientation,\n unit: 'pt',\n format: [widthPt, heightPt],\n compress: true,\n });\n\n const prevActivePageId = self._activePageId;\n\n for (let i = 0; i < pages.length; i++) {\n if (i > 0) {\n pdf.addPage([widthPt, heightPt], orientation);\n }\n\n self._activePageId = pages[i].id;\n\n await new Promise((r) => setTimeout(r, 50));\n\n const canvas = await self._toCanvas({\n pixelRatio,\n pageId: pages[i].id,\n mimeType: 'image/jpeg',\n includeBleed,\n });\n\n const imgData = canvas.toDataURL('image/jpeg', 0.95);\n pdf.addImage(imgData, 'JPEG', 0, 0, widthPt, heightPt, undefined, 'FAST');\n }\n\n self._activePageId = prevActivePageId;\n\n return pdf.output('datauristring');\n },\n\n async saveAsPDF({ fileName = 'design.pdf', ...exportProps } = {}) {\n const dataURL = await self.toPDFDataURL(exportProps);\n const link = document.createElement('a');\n link.download = fileName;\n link.href = dataURL;\n link.click();\n },\n\n saveAsJSON({ fileName = 'design.json', stripBase64 = false } = {}) {\n const data = stripBase64 ? stripBase64FromExport(self.toJSON()) : self.toJSON();\n const json = JSON.stringify(data, null, 2);\n const blob = new Blob([json], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.download = fileName;\n link.href = url;\n link.click();\n URL.revokeObjectURL(url);\n },\n\n async waitLoading({ _skipTimeout = false } = {}) {\n // Wait for all images to load\n return new Promise((resolve) => {\n setTimeout(resolve, _skipTimeout ? 0 : 100);\n });\n },\n\n toJSON() {\n return {\n width: self.width,\n height: self.height,\n fonts: self.fonts.map((f) => getSnapshot(f)),\n pages: self.pages.map((p) => p.toJSON()),\n audios: self.audios.map((a) => a.toJSON()),\n unit: self.unit,\n dpi: self.dpi,\n custom: self.custom,\n schemaVersion: self.schemaVersion,\n };\n },\n\n loadJSON(json, keepHistory = false) {\n if (!json) return;\n\n const data = typeof json === 'string' ? JSON.parse(json) : json;\n\n self.history.ignore(() => {\n if (data.width !== undefined) self.width = data.width;\n if (data.height !== undefined) self.height = data.height;\n if (data.unit !== undefined) self.unit = data.unit;\n if (data.dpi !== undefined) self.dpi = data.dpi;\n if (data.custom !== undefined) self.custom = data.custom;\n if (data.schemaVersion !== undefined) self.schemaVersion = data.schemaVersion;\n\n // Load fonts\n if (data.fonts) {\n self.fonts.clear();\n data.fonts.forEach((font) => {\n self.fonts.push(font);\n });\n }\n\n // Load audios\n if (data.audios) {\n self.audios.clear();\n data.audios.forEach((audio) => {\n self.audios.push(audio);\n });\n }\n\n // Load pages\n if (data.pages) {\n self.pages.clear();\n data.pages.forEach((pageData) => {\n self.pages.push(pageData);\n });\n }\n\n // Set active page\n if (self.pages.length > 0) {\n self._activePageId = self.pages[0].id;\n }\n\n // Clear selection\n self.selectedElementsIds.clear();\n });\n\n // Reset scale before saving the initial undo state so that history[0]\n // always records scale=1 (the intended post-load baseline). Without this,\n // history[0] would capture whatever scale was active before loadJSON ran\n // (e.g. the auto-fit of a previous template or a zero-width-container\n // negative value), and the first undo would restore that wrong scale —\n // which, when negative, mirrors the entire canvas.\n self.scale = 1;\n\n if (!keepHistory) {\n self.history.clear();\n self.history.addUndoState();\n }\n\n // Auto-load fonts referenced in text elements\n self._autoLoadFonts(data);\n\n // Auto-populate pending input fields so the dialog triggers\n self.requestInputFields();\n },\n\n clear({ keepHistory = false } = {}) {\n self.pages.clear();\n self.fonts.clear();\n self.audios.clear();\n self.selectedElementsIds.clear();\n self._activePageId = '';\n self.width = 500;\n self.height = 500;\n self.custom = {};\n\n self.addPage();\n\n if (!keepHistory) {\n self.history.clear();\n self.history.addUndoState();\n }\n },\n\n addFont(font) {\n const existing = self.fonts.find((f) => f.fontFamily === font.fontFamily);\n if (!existing) {\n self.fonts.push(font);\n }\n },\n\n removeFont(fontFamily) {\n const idx = self.fonts.findIndex((f) => f.fontFamily === fontFamily);\n if (idx >= 0) {\n self.fonts.splice(idx, 1);\n }\n },\n\n addAudio(data) {\n self.audios.push({ id: uuidv4(), ...data });\n },\n\n removeAudio(audioId) {\n const idx = self.audios.findIndex((a) => a.id === audioId);\n if (idx >= 0) {\n self.audios.splice(idx, 1);\n }\n },\n\n async loadFont(fontFamily, text = '') {\n // Load font via Google Fonts CSS API\n const id = `google-font-${fontFamily.replace(/\\s+/g, '-').toLowerCase()}`;\n\n try {\n if (!document.getElementById(id)) {\n const link = document.createElement('link');\n link.id = id;\n link.href = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(\n fontFamily\n )}:wght@100;200;300;400;500;600;700;800;900&display=swap`;\n link.rel = 'stylesheet';\n\n // Wait for the CSS stylesheet to load so @font-face rules are parsed\n await new Promise((resolve) => {\n link.onload = resolve;\n link.onerror = resolve; // don't block on network errors\n document.head.appendChild(link);\n });\n }\n\n // Now the browser knows about the @font-face, load the actual font files\n await document.fonts.load(`16px \"${fontFamily}\"`);\n await document.fonts.load(`bold 16px \"${fontFamily}\"`);\n await document.fonts.ready;\n\n // Bump version so MobX observers re-render with the real font\n self._fontVersion += 1;\n // Force Konva to redraw all text nodes with the newly loaded font\n if (self._stageRef) {\n self._stageRef.batchDraw();\n }\n } catch (e) {\n console.warn(`Failed to load font: ${fontFamily}`, e);\n }\n },\n\n _autoLoadFonts(data) {\n // Collect all unique fontFamily values from text elements across all pages\n const fonts = new Set();\n const collectFromChildren = (children) => {\n if (!Array.isArray(children)) return;\n children.forEach((el) => {\n if (el.type === 'text' && el.fontFamily) {\n fonts.add(el.fontFamily);\n }\n if (el.children) {\n collectFromChildren(el.children);\n }\n });\n };\n\n if (data.pages) {\n data.pages.forEach((page) => {\n collectFromChildren(page.children);\n });\n }\n\n // Also load fonts from the fonts array in the JSON\n if (data.fonts) {\n data.fonts.forEach((f) => {\n if (f.fontFamily) fonts.add(f.fontFamily);\n });\n }\n\n // Load each unique font\n fonts.forEach((fontFamily) => {\n self.loadFont(fontFamily);\n });\n },\n\n validate(json) {\n const errors = [];\n if (!json) {\n errors.push({ path: '', message: 'JSON is empty' });\n return errors;\n }\n if (typeof json.width !== 'number') {\n errors.push({ path: 'width', message: 'width must be a number' });\n }\n if (typeof json.height !== 'number') {\n errors.push({ path: 'height', message: 'height must be a number' });\n }\n if (!Array.isArray(json.pages)) {\n errors.push({ path: 'pages', message: 'pages must be an array' });\n }\n return errors;\n },\n\n checkActivePage() {\n if (self.pages.length > 0 && !self.activePage) {\n self._activePageId = self.pages[0].id;\n }\n },\n\n setCurrentTime(time) {\n self.currentTime = time;\n },\n\n _togglePlaying(playing = true) {\n self.isPlaying = playing;\n },\n\n play() {\n self._togglePlaying(true);\n },\n\n stop() {\n self._togglePlaying(false);\n },\n\n seek() {\n // placeholder\n },\n _initConfig(key, showCredit) {\n self._key = key;\n self._showCredit = showCredit;\n },\n }));\n\nexport function createStore({ key = '', showCredit = false } = {}) {\n const store = Store.create({});\n store._initConfig(key, showCredit);\n return store;\n}\n\nexport default createStore;\n","import React from 'react';\nimport { Box, ButtonBase, Typography } from '@mui/material';\n\nexport function SectionTab({ name, onClick, active, children, ...rest }) {\n return (\n <ButtonBase\n onClick={onClick}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px 4px',\n width: '100%',\n minHeight: 64,\n borderRadius: '4px',\n color: active ? '#0d83cd' : '#666',\n backgroundColor: active ? 'rgba(13,131,205,0.08)' : 'transparent',\n '&:hover': {\n backgroundColor: active\n ? 'rgba(13,131,205,0.12)'\n : 'rgba(0,0,0,0.04)',\n },\n transition: 'all 0.15s ease',\n }}\n {...rest}\n >\n <Box\n sx={{\n fontSize: 24,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n mb: 0.5,\n }}\n >\n {children}\n </Box>\n <Typography\n variant=\"caption\"\n sx={{\n fontSize: '10px',\n lineHeight: 1.2,\n textTransform: 'none',\n fontWeight: active ? 600 : 400,\n }}\n >\n {name}\n </Typography>\n </ButtonBase>\n );\n}\n\nexport default SectionTab;\n","// Use a window-level singleton so that all Rollup bundles (config, toolbar,\n// side-panel, canvas) share the same translations object. Without this each\n// bundle gets its own copy of this module with a separate local variable.\nconst GLOBAL_KEY = '__labellife_translations__';\nif (typeof window !== 'undefined' && !window[GLOBAL_KEY]) {\n window[GLOBAL_KEY] = {};\n}\n\nfunction _get() {\n return (typeof window !== 'undefined' && window[GLOBAL_KEY]) || {};\n}\n\nfunction deepMerge(target, source) {\n const result = { ...target };\n for (const key of Object.keys(source)) {\n if (\n source[key] &&\n typeof source[key] === 'object' &&\n !Array.isArray(source[key]) &&\n target[key] &&\n typeof target[key] === 'object' &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(target[key], source[key]);\n } else {\n result[key] = source[key];\n }\n }\n return result;\n}\n\nexport function setTranslations(newTranslations) {\n if (typeof window !== 'undefined') {\n window[GLOBAL_KEY] = deepMerge(_get(), newTranslations);\n }\n}\n\nexport function getTranslations() {\n return _get();\n}\n\nexport function t(key, defaultValue) {\n // Support dot-notation paths like 'toolbar.duration'\n const parts = key.split('.');\n let current = _get();\n for (const part of parts) {\n if (current == null || typeof current !== 'object') {\n return defaultValue || key;\n }\n current = current[part];\n }\n if (current !== undefined && current !== null && typeof current !== 'object') {\n return current;\n }\n return defaultValue || key;\n}\n","import { setTranslations as _setTranslations, getTranslations, t } from './utils/l10n';\n\nlet _theme = 'light';\nlet _customTheme = {};\n\nexport function setTranslations(translations) {\n _setTranslations(translations);\n}\n\nexport { getTranslations, t };\n\nexport function setTheme(theme) {\n _theme = theme;\n}\n\nexport function getTheme() {\n return _theme;\n}\n\nexport function setCustomTheme(customTheme) {\n _customTheme = { ..._customTheme, ...customTheme };\n}\n\nexport function getCustomTheme() {\n return _customTheme;\n}\n\n// ── Input Fields Dialog Config ───────────────────────────────────────\nconst INPUT_FIELDS_CONFIG_KEY = '__labellife_input_fields_config__';\nif (typeof window !== 'undefined' && !window[INPUT_FIELDS_CONFIG_KEY]) {\n window[INPUT_FIELDS_CONFIG_KEY] = {};\n}\n\nexport function setInputFieldsConfig(config) {\n if (typeof window !== 'undefined') {\n window[INPUT_FIELDS_CONFIG_KEY] = { ...window[INPUT_FIELDS_CONFIG_KEY], ...config };\n }\n}\n\nexport function getInputFieldsConfig() {\n return (typeof window !== 'undefined' && window[INPUT_FIELDS_CONFIG_KEY]) || {};\n}\n","import React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Button, Typography, IconButton } from '@mui/material';\nimport TextFieldsIcon from '@mui/icons-material/TextFields';\nimport FileUploadOutlinedIcon from '@mui/icons-material/FileUploadOutlined';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\n// ── Shared helper: add a text element to canvas ──\nconst addTextToCanvas = (store, opts) => {\n const page = store.activePage;\n if (!page) return;\n\n const scaleFactor = Math.max(store.width / 500, 0.5);\n const fontSize = Math.round((opts.fontSize || 36) * scaleFactor);\n const width = Math.round((opts.width || 350) * scaleFactor);\n\n const defaults = {\n type: 'text',\n x: store.width / 2 - width / 2,\n y: store.height / 2 - fontSize / 2,\n width,\n text: opts.text || 'Cool text',\n fontSize,\n fontFamily: opts.fontFamily || 'Roboto',\n fontWeight: opts.fontWeight || 'normal',\n fontStyle: opts.fontStyle || 'normal',\n fill: '#000000',\n align: 'center',\n };\n defaults.height = Math.max(fontSize * 1.5, 40);\n\n page.addElement(defaults);\n store.history.addUndoState();\n};\n\n// ── Predefined text templates (json = element data, preview = thumbnail image) ──\nconst TEXT_TEMPLATES = [\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-adventure-fun-cursive.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-adventure-fun-cursive.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-celebration-birthday-cursive-handwritting.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-celebration-birthday-cursive-handwritting.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-corporate-business-clean-simple-modern.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-corporate-business-clean-simple-modern.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-corporate-hiring-simple-clean-modern.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-corporate-hiring-simple-clean-modern.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-fashion-sale-brand-clothes.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-fashion-sale-brand-clothes.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-modern-minamalistic-simple.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-modern-minamalistic-simple.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-party-invitation.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-party-invitation.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-price-package-corporate-list.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-price-package-corporate-list.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-quote-contemporary.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-quote-contemporary.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-quote-quotation-motivation-inspiring.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-quote-quotation-motivation-inspiring.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-romantic-handwrittern-cursive-elegant-celebration.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-romantic-handwrittern-cursive-elegant-celebration.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-sale-fashion-brand.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-sale-fashion-brand.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-sassy-fun-feminine.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-sassy-fun-feminine.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-ancient-old-roman-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-ancient-old-roman-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-awesome-fun-intresting-funky-playful.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-awesome-fun-intresting-funky-playful.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-beautiful-decorative-love-elgant-cursive-emotion-famenine.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-beautiful-decorative-love-elgant-cursive-emotion-famenine.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-buy-corporate-urgent-now-marketing.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-buy-corporate-urgent-now-marketing.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-classic-west-cowboy-wildwest-country-classic.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-classic-west-cowboy-wildwest-country-classic.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-future-ftureistic-trendy-funky-fun-cool.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-future-ftureistic-trendy-funky-fun-cool.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-halloween-celeration-horror-spooky.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-halloween-celeration-horror-spooky.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-marry-christmas-celebration.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-marry-christmas-celebration.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-motivating-motivational-inspiring-inspirational-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-motivating-motivational-inspiring-inspirational-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-motivation-inspiration-cursive-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-motivation-inspiration-cursive-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-orange-fruity-fruit-food-fuun-happy.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-orange-fruity-fruit-food-fuun-happy.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-romantic-elegant-love.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-romantic-elegant-love.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-data-stat-statistics-numeric-figures-reports-charts.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-data-stat-statistics-numeric-figures-reports-charts.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-list-colum-modern-point-fact.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-list-colum-modern-point-fact.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-recipe-food-list.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-recipe-food-list.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-ancient-medieval-old-roman-kind-royal.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-ancient-medieval-old-roman-kind-royal.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-anonymous-mystery-suspense.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-anonymous-mystery-suspense.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-autumn-red-orange-season-cursive-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-autumn-red-orange-season-cursive-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-colorful-color-fun-beads-game-themed-videogames.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-colorful-color-fun-beads-game-themed-videogames.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-decorative-hollow-effect.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-decorative-hollow-effect.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-decorative-message-line-lineart.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-decorative-message-line-lineart.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-fairytale-fanatcy-magic-magical.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-fairytale-fanatcy-magic-magical.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-happy-easter-festive-holiday.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-happy-easter-festive-holiday.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-happy-fun-joy-celebration.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-happy-fun-joy-celebration.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-horror-scary-fun-celebration-halloween.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-horror-scary-fun-celebration-halloween.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-inivitation-rsvp-event-celebration-weeding.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-inivitation-rsvp-event-celebration-weeding.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-motivation-hope-never-giveup-win-wivtory-cool-funky.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-motivation-hope-never-giveup-win-wivtory-cool-funky.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-murder-horror-scary-temed-holloween-haunted-suspence.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-murder-horror-scary-temed-holloween-haunted-suspence.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-music-simple-straight-jazzy-simple.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-music-simple-straight-jazzy-simple.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-numeric-number-figure-chalk-written-writting.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-numeric-number-figure-chalk-written-writting.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-save-the-date-celebration-calander-inviation-event.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-save-the-date-celebration-calander-inviation-event.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-save-the-date-invitation-party-invited-cool-.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-save-the-date-invitation-party-invited-cool-.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-signature-sign-elegant-royal.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-signature-sign-elegant-royal.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-spring-season-nature-leaf-flower-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-spring-season-nature-leaf-flower-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-summer-sunny-hot-sea-season.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-summer-sunny-hot-sea-season.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-treandu-cool-funky-hip.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-treandu-cool-funky-hip.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-what-when-where-column-fun-cool-question.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-what-when-where-column-fun-cool-question.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-winter-cold-wonderland-decorative-season.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-winter-cold-wonderland-decorative-season.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-alert-sale-brand-clearance-shop-now-sjopping-discount.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-alert-sale-brand-clearance-shop-now-sjopping-discount.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-chalk-drawing-chalkboard-pencil-marker-color-fill-hand-drawn-drawing.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-chalk-drawing-chalkboard-pencil-marker-color-fill-hand-drawn-drawing.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-code-matrix-numbers-numeric-data-sale.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-code-matrix-numbers-numeric-data-sale.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-fun-cool-cartoon-animated-game.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-fun-cool-cartoon-animated-game.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-funky-cool-hashtag-young-fun.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-funky-cool-hashtag-young-fun.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-instagram-tag-tagging-cool-unique.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-instagram-tag-tagging-cool-unique.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-s-sle-black-friday-shopping-buy.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-s-sle-black-friday-shopping-buy.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-speed-fast-run-running-cool-themed-cartoon-lines-waves-move-movement.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-speed-fast-run-running-cool-themed-cartoon-lines-waves-move-movement.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-sweat-candy.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-sweat-candy.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-themed-ink-bubble-fun-cool-cartoon-comic.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-themed-ink-bubble-fun-cool-cartoon-comic.png' },\n];\n\n// ── Preload all template fonts in background (runs once) ──\nlet _fontsPreloaded = false;\nfunction preloadTemplateFonts(store) {\n if (_fontsPreloaded) return;\n _fontsPreloaded = true;\n // Fetch all JSONs in parallel, collect font families, load them\n Promise.all(\n TEXT_TEMPLATES.map((t) =>\n fetch(t.json).then((r) => r.json()).catch(() => null)\n )\n ).then((results) => {\n const fonts = new Set();\n results.forEach((data) => {\n if (!data?.pages?.[0]?.children) return;\n data.pages[0].children.forEach((child) => {\n if (child.fontFamily) fonts.add(child.fontFamily);\n });\n });\n fonts.forEach((f) => store.loadFont(f));\n });\n}\n\n// ── Tab 1: Text presets + predefined templates ──\nconst TextTab = observer(({ store }) => {\n const [loadingIdx, setLoadingIdx] = useState(null);\n\n // Preload all template fonts on first mount\n useEffect(() => { preloadTemplateFonts(store); }, [store]);\n\n const presets = [\n {\n label: t('sidePanel.headerText', 'Create header'),\n text: t('sidePanel.headerText', 'Create header'),\n fontSize: 48,\n width: 400,\n fontWeight: 'bold',\n fontFamily: 'Roboto',\n },\n {\n label: t('sidePanel.subHeaderText', 'Create sub header'),\n text: t('sidePanel.subHeaderText', 'Create sub header'),\n fontSize: 28,\n width: 350,\n fontWeight: '500',\n fontFamily: 'Roboto',\n },\n {\n label: t('sidePanel.bodyText', 'Create body text'),\n text: t('sidePanel.bodyText', 'Create body text'),\n fontSize: 16,\n width: 300,\n fontWeight: 'normal',\n fontFamily: 'Roboto',\n },\n ];\n\n const handleTemplateClick = useCallback(async (tmpl, idx) => {\n const page = store.activePage;\n if (!page) return;\n setLoadingIdx(idx);\n try {\n const res = await fetch(tmpl.json);\n const data = await res.json();\n const templateChildren = data?.pages?.[0]?.children || [];\n\n // Add elements immediately so the user sees instant feedback\n const newIds = [];\n const fonts = new Set();\n templateChildren.forEach((child) => {\n const { id: _omit, ...childData } = child;\n const el = page.addElement(childData, { skipSelect: true });\n if (el) newIds.push(el.id);\n if (child.fontFamily) fonts.add(child.fontFamily);\n });\n if (newIds.length > 0) {\n store.selectElements(newIds);\n }\n store.history.addUndoState();\n\n // Load fonts in background — text-element's loadingdone handler\n // will reflow text once each font arrives\n [...fonts].forEach((f) => store.loadFont(f));\n } catch (err) {\n console.error('Failed to load text template:', err);\n } finally {\n setLoadingIdx(null);\n }\n }, [store]);\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column' }}>\n {presets.map((preset, idx) => (\n <Button\n key={idx}\n fullWidth\n onClick={() => addTextToCanvas(store, preset)}\n sx={{\n justifyContent: 'center',\n textTransform: 'none',\n py: 0,\n px: 0,\n fontSize: preset.fontSize > 30 ? 30 : preset.fontSize > 20 ? 20 : 16,\n fontWeight: preset.fontWeight,\n fontFamily: preset.fontFamily,\n color: '#333',\n '&:hover': {\n backgroundColor: 'rgba(13,131,205,0.04)',\n },\n }}\n >\n {preset.label}\n </Button>\n ))}\n\n {/* Predefined text templates grid */}\n <Typography\n variant=\"caption\"\n sx={{ mt: 2, mb: 1, color: '#888', fontSize: 11, fontWeight: 500 }}\n >\n {t('sidePanel.textTemplates', 'Text templates')}\n </Typography>\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: 1,\n }}\n >\n {TEXT_TEMPLATES.map((tmpl, idx) => (\n <Box\n key={idx}\n onClick={() => handleTemplateClick(tmpl, idx)}\n sx={{\n cursor: loadingIdx === idx ? 'wait' : 'pointer',\n borderRadius: '4px',\n overflow: 'hidden',\n border: '1px solid transparent',\n opacity: loadingIdx === idx ? 0.5 : 1,\n transition: 'border-color 0.15s, box-shadow 0.15s, opacity 0.15s',\n '&:hover': {\n borderColor: '#0d83cd',\n boxShadow: '0 1px 4px rgba(13,131,205,0.15)',\n },\n }}\n >\n <img\n src={tmpl.preview}\n alt=\"Text template\"\n loading=\"lazy\"\n crossOrigin=\"anonymous\"\n draggable={false}\n style={{\n width: '100%',\n height: 'auto',\n display: 'block',\n }}\n />\n </Box>\n ))}\n </Box>\n </Box>\n );\n});\n\n// ── Module-level font storage (persists until page refresh) ──\nlet _uploadedFonts = [];\nlet _fontIdCounter = 0;\n\nconst registerFont = (displayName, blobUrl) => {\n const style = document.createElement('style');\n style.textContent = `@font-face { font-family: '${displayName}'; src: url('${blobUrl}'); }`;\n document.head.appendChild(style);\n return { familyName: displayName, styleEl: style };\n};\n\n// ── Tab 2: My Fonts ──\nconst MyFontsTab = observer(({ store }) => {\n const [, setRenderKey] = useState(0);\n const forceUpdate = useCallback(() => setRenderKey((k) => k + 1), []);\n const fileInputRef = useRef(null);\n\n const fonts = _uploadedFonts;\n\n const handleUpload = useCallback((e) => {\n const file = e.target.files?.[0];\n if (!file) return;\n e.target.value = '';\n\n const rawName = file.name.replace(/\\.(ttf|otf|woff2?|eot)$/i, '');\n const blobUrl = URL.createObjectURL(file);\n const { familyName, styleEl } = registerFont(rawName, blobUrl);\n\n _uploadedFonts = [\n ..._uploadedFonts,\n { id: `${Date.now()}_${++_fontIdCounter}`, displayName: rawName, familyName, blobUrl, styleEl },\n ];\n forceUpdate();\n }, [forceUpdate]);\n\n const handleDelete = useCallback((id) => {\n const font = _uploadedFonts.find((f) => f.id === id);\n if (font) {\n if (font.styleEl?.parentNode) font.styleEl.parentNode.removeChild(font.styleEl);\n URL.revokeObjectURL(font.blobUrl);\n }\n _uploadedFonts = _uploadedFonts.filter((f) => f.id !== id);\n forceUpdate();\n }, [forceUpdate]);\n\n const handleFontClick = useCallback((font) => {\n addTextToCanvas(store, {\n text: 'Cool text',\n fontSize: 36,\n width: 350,\n fontFamily: font.familyName,\n fontWeight: 'normal',\n });\n }, [store]);\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>\n {/* Upload button */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\".ttf,.otf,.woff,.woff2,.eot\"\n style={{ display: 'none' }}\n onChange={handleUpload}\n />\n <Button\n fullWidth\n variant=\"outlined\"\n onClick={() => fileInputRef.current?.click()}\n startIcon={<FileUploadOutlinedIcon />}\n sx={{\n textTransform: 'none',\n borderColor: '#ccc',\n color: '#333',\n fontWeight: 400,\n fontSize: 13,\n py: 0.8,\n '&:hover': { borderColor: '#999', backgroundColor: 'rgba(0,0,0,0.02)' },\n }}\n >\n {t('sidePanel.uploadFont', 'Upload font')}\n </Button>\n\n {/* Uploaded fonts list */}\n {fonts.map((font) => (\n <Box\n key={font.id}\n onClick={() => handleFontClick(font)}\n sx={{\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#b0b0b0',\n borderRadius: '6px',\n py: 2.5,\n px: 2,\n cursor: 'pointer',\n minHeight: 60,\n '&:hover': { backgroundColor: '#a0a0a0' },\n }}\n >\n <Typography\n sx={{\n fontFamily: `'${font.familyName}', sans-serif`,\n fontSize: 20,\n color: '#fff',\n textAlign: 'center',\n userSelect: 'none',\n lineHeight: 1.3,\n }}\n >\n {font.displayName} text\n </Typography>\n <IconButton\n size=\"small\"\n onClick={(e) => { e.stopPropagation(); handleDelete(font.id); }}\n sx={{\n position: 'absolute',\n bottom: 4,\n right: 4,\n color: 'rgba(255,255,255,0.7)',\n '&:hover': { color: '#fff', backgroundColor: 'rgba(255,255,255,0.15)' },\n }}\n >\n <DeleteOutlineIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n ))}\n </Box>\n );\n});\n\n// ── Main panel with tabs ──\nconst TextPanelContent = observer(({ store }) => {\n const [activeTab, setActiveTab] = useState('text');\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', height: '100%' }}>\n {/* Tab bar */}\n <Box sx={{ display: 'flex', borderBottom: '1px solid #e0e0e0' }}>\n {[\n { key: 'text', label: t('sidePanel.textTab', 'Text') },\n { key: 'myfonts', label: t('sidePanel.myFontsTab', 'My fonts') },\n ].map((tab) => (\n <Box\n key={tab.key}\n onClick={() => setActiveTab(tab.key)}\n sx={{\n flex: 1,\n textAlign: 'center',\n py: 1,\n fontSize: 13,\n fontWeight: activeTab === tab.key ? 600 : 400,\n color: activeTab === tab.key ? '#0d83cd' : '#666',\n borderBottom: activeTab === tab.key ? '2px solid #0d83cd' : '2px solid transparent',\n cursor: 'pointer',\n userSelect: 'none',\n transition: 'color 0.15s, border-color 0.15s',\n '&:hover': { color: '#0d83cd' },\n }}\n >\n {tab.label}\n </Box>\n ))}\n </Box>\n\n {/* Tab content */}\n <Box sx={{ p: 2, flex: 1, overflowY: 'auto' }}>\n {activeTab === 'text' && <TextTab store={store} />}\n {activeTab === 'myfonts' && <MyFontsTab store={store} />}\n </Box>\n </Box>\n );\n});\n\nexport const TextSection = {\n name: 'text',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.text', 'Text')} {...props}>\n <TextFieldsIcon />\n </SectionTab>\n ),\n Panel: TextPanelContent,\n};\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, TextField, InputAdornment, Paper, ClickAwayListener } from '@mui/material';\nimport WallpaperIcon from '@mui/icons-material/Wallpaper';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\n// ─── Color conversion utilities ──────────────────────────────────────\n\nfunction hsvToRgb(h, s, v) {\n const i = Math.floor(h / 60) % 6;\n const f = h / 60 - Math.floor(h / 60);\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const tt = v * (1 - (1 - f) * s);\n let r, g, b;\n switch (i) {\n case 0: r = v; g = tt; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = tt; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = tt; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n}\n\nfunction rgbToHsv(r, g, b) {\n r /= 255; g /= 255; b /= 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n const d = max - min;\n let h = 0, s = max === 0 ? 0 : d / max, v = max;\n if (d !== 0) {\n if (max === r) h = ((g - b) / d + 6) % 6 * 60;\n else if (max === g) h = ((b - r) / d + 2) * 60;\n else h = ((r - g) / d + 4) * 60;\n }\n return [h, s, v];\n}\n\nfunction hexToRgb(hex) {\n hex = (hex || '000000').replace('#', '');\n if (hex.length === 3) hex = hex.split('').map(c => c + c).join('');\n if (hex.length !== 6) return [0, 0, 0];\n return [parseInt(hex.substr(0, 2), 16) || 0, parseInt(hex.substr(2, 2), 16) || 0, parseInt(hex.substr(4, 2), 16) || 0];\n}\n\nfunction rgbToHex(r, g, b) {\n return '#' + [r, g, b].map(x => Math.max(0, Math.min(255, Math.round(x))).toString(16).padStart(2, '0')).join('');\n}\n\nfunction hueToColor(h) { return rgbToHex(...hsvToRgb(h, 1, 1)); }\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst UNSPLASH_KEY = 'zwiE802FyRjTmLhZjXqW';\nconst UNSPLASH_BASE = 'https://api.polotno.com/api/get-unsplash';\n\nconst SWATCH_COLORS = ['#ffffff', '#1a237e', '#ff6d00', '#2e7d32', '#fdd835', '#9c27b0'];\n\nconst PICKER_PRESETS = [\n '#f44336', '#ff9800', '#ffeb3b', '#4caf50', '#2196f3', '#9c27b0',\n '#00bcd4', '#8bc34a', '#cddc39', '#000000', '#607d8b', '#ffffff',\n];\n\nconst CHECKER_SVG = \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Crect width='8' height='8' fill='%23ccc'/%3E%3Crect x='8' y='8' width='8' height='8' fill='%23ccc'/%3E%3Crect x='8' width='8' height='8' fill='%23fff'/%3E%3Crect y='8' width='8' height='8' fill='%23fff'/%3E%3C/svg%3E\";\n\n// ─── Saturation / Brightness Square ─────────────────────────────────\n\nconst SatBrightSquare = ({ hue, sat, bright, onChange, size = 220 }) => {\n const ref = useRef(null);\n const dragging = useRef(false);\n\n const update = useCallback((e) => {\n const rect = ref.current?.getBoundingClientRect();\n if (!rect) return;\n const x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));\n const y = Math.max(0, Math.min(1, (e.clientY - rect.top) / rect.height));\n onChange(x, 1 - y);\n }, [onChange]);\n\n useEffect(() => {\n const onMove = (e) => { if (dragging.current) { e.preventDefault(); update(e); } };\n const onUp = () => { dragging.current = false; };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n return () => { document.removeEventListener('mousemove', onMove); document.removeEventListener('mouseup', onUp); };\n }, [update]);\n\n return (\n <Box\n ref={ref}\n onMouseDown={(e) => { dragging.current = true; update(e); }}\n sx={{\n width: size, height: Math.round(size * 0.7), position: 'relative', cursor: 'crosshair',\n borderRadius: '4px', userSelect: 'none',\n background: `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, ${hueToColor(hue)})`,\n }}\n >\n <Box sx={{\n position: 'absolute', left: `${sat * 100}%`, top: `${(1 - bright) * 100}%`,\n width: 12, height: 12, borderRadius: '50%',\n border: '2px solid #fff', boxShadow: '0 0 3px rgba(0,0,0,0.6)',\n transform: 'translate(-50%, -50%)', pointerEvents: 'none',\n }} />\n </Box>\n );\n};\n\n// ─── Hue Bar ─────────────────────────────────────────────────────────\n\nconst HueBar = ({ hue, onChange, width = 220 }) => {\n const ref = useRef(null);\n const dragging = useRef(false);\n\n const update = useCallback((e) => {\n const rect = ref.current?.getBoundingClientRect();\n if (!rect) return;\n onChange(Math.max(0, Math.min(360, ((e.clientX - rect.left) / rect.width) * 360)));\n }, [onChange]);\n\n useEffect(() => {\n const onMove = (e) => { if (dragging.current) { e.preventDefault(); update(e); } };\n const onUp = () => { dragging.current = false; };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n return () => { document.removeEventListener('mousemove', onMove); document.removeEventListener('mouseup', onUp); };\n }, [update]);\n\n return (\n <Box\n ref={ref}\n onMouseDown={(e) => { dragging.current = true; update(e); }}\n sx={{\n width, height: 14, borderRadius: '7px', position: 'relative', cursor: 'pointer',\n background: 'linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)',\n userSelect: 'none', mt: 1,\n }}\n >\n <Box sx={{\n position: 'absolute', left: `${(hue / 360) * 100}%`, top: '50%',\n width: 14, height: 14, borderRadius: '50%',\n border: '2px solid #fff', boxShadow: '0 0 2px rgba(0,0,0,0.5)',\n transform: 'translate(-50%, -50%)', pointerEvents: 'none',\n backgroundColor: hueToColor(hue),\n }} />\n </Box>\n );\n};\n\n// ─── Color Picker (used inside Solid & Linear tabs) ──────────────────\n\nconst ColorPicker = ({ color, onChange }) => {\n const [hsv, setHsv] = useState(() => rgbToHsv(...hexToRgb(color)));\n const [rgb, setRgb] = useState(() => hexToRgb(color));\n const [hexInput, setHexInput] = useState((color || '#000000').replace('#', ''));\n\n useEffect(() => {\n const r = hexToRgb(color || '#000000');\n const h = rgbToHsv(...r);\n setRgb(r);\n setHsv(h);\n setHexInput((color || '#000000').replace('#', ''));\n }, [color]);\n\n const emit = (h, s, v) => {\n const newRgb = hsvToRgb(h, s, v);\n const hex = rgbToHex(...newRgb);\n setHsv([h, s, v]);\n setRgb(newRgb);\n setHexInput(hex.replace('#', ''));\n onChange(hex);\n };\n\n const handleHex = (val) => {\n setHexInput(val);\n if (/^[0-9a-fA-F]{6}$/.test(val)) {\n const r = hexToRgb(val);\n setRgb(r);\n setHsv(rgbToHsv(...r));\n onChange('#' + val);\n }\n };\n\n const handleRgb = (idx, val) => {\n const v = parseInt(val);\n if (isNaN(v) || v < 0 || v > 255) return;\n const newRgb = [...rgb]; newRgb[idx] = v;\n setRgb(newRgb);\n setHsv(rgbToHsv(...newRgb));\n const hex = rgbToHex(...newRgb);\n setHexInput(hex.replace('#', ''));\n onChange(hex);\n };\n\n const smallSx = { width: 38, '& .MuiInputBase-input': { fontSize: 11, py: 0.3, px: 0.3, textAlign: 'center' } };\n\n return (\n <Box>\n <SatBrightSquare hue={hsv[0]} sat={hsv[1]} bright={hsv[2]} onChange={(s, v) => emit(hsv[0], s, v)} />\n <HueBar hue={hsv[0]} onChange={(h) => emit(h, hsv[1], hsv[2])} />\n\n <Box sx={{ display: 'flex', gap: 0.5, mt: 1.5, alignItems: 'center' }}>\n <TextField size=\"small\" value={hexInput} onChange={(e) => handleHex(e.target.value)}\n onFocus={(e) => e.target.select()}\n sx={{ width: 60, '& .MuiInputBase-input': { fontSize: 11, py: 0.3, px: 0.5 } }} />\n {[0, 1, 2].map((i) => (\n <TextField key={i} size=\"small\" type=\"number\" value={rgb[i]}\n onChange={(e) => handleRgb(i, e.target.value)} onFocus={(e) => e.target.select()} sx={smallSx} inputProps={{ min: 0, max: 255 }} />\n ))}\n <TextField size=\"small\" type=\"number\" value={100} disabled sx={smallSx} />\n </Box>\n <Box sx={{ display: 'flex', gap: 0.5, mt: 0.3 }}>\n {['Hex', 'R', 'G', 'B', 'A'].map((label, i) => (\n <Typography key={label} variant=\"caption\" sx={{ width: i === 0 ? 60 : 38, textAlign: 'center', color: '#888', fontSize: 10 }}>\n {label}\n </Typography>\n ))}\n </Box>\n\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5, mt: 1 }}>\n {PICKER_PRESETS.map((c) => (\n <Box key={c} onClick={() => onChange(c)} sx={{\n width: 18, height: 18, borderRadius: '3px', backgroundColor: c,\n border: '1px solid #ddd', cursor: 'pointer',\n '&:hover': { transform: 'scale(1.2)' }, transition: 'transform 0.1s',\n }} />\n ))}\n </Box>\n </Box>\n );\n};\n\n// ─── Color Popup (Solid / Linear tabs) ───────────────────────────────\n\nconst ColorPopup = ({ open, onClose, background, onBackgroundChange }) => {\n const [tab, setTab] = useState('solid');\n const [solidColor, setSolidColor] = useState('#000000');\n const [gradColors, setGradColors] = useState(['#000000', '#ffffff']);\n const [gradAngle, setGradAngle] = useState(0);\n const [activeStop, setActiveStop] = useState(0);\n\n useEffect(() => {\n if (!open) return;\n if (background && background.startsWith('{')) {\n try {\n const g = JSON.parse(background);\n if (g.type === 'linear') {\n setTab('linear');\n setGradColors(g.colors || ['#000000', '#ffffff']);\n setGradAngle(g.angle || 0);\n return;\n }\n } catch (e) {}\n }\n setTab('solid');\n if (background && background.startsWith('#')) setSolidColor(background);\n }, [open]);\n\n const handleSolid = (c) => { setSolidColor(c); onBackgroundChange(c); };\n\n const handleGradColor = (c) => {\n const nc = [...gradColors]; nc[activeStop] = c; setGradColors(nc);\n onBackgroundChange(JSON.stringify({ type: 'linear', colors: nc, angle: gradAngle }));\n };\n\n const handleAngle = (a) => {\n setGradAngle(a);\n onBackgroundChange(JSON.stringify({ type: 'linear', colors: gradColors, angle: a }));\n };\n\n if (!open) return null;\n\n const tabStyle = (active) => ({\n cursor: 'pointer', fontWeight: active ? 600 : 400,\n color: active ? '#1976d2' : '#666',\n borderBottom: active ? '2px solid #1976d2' : '2px solid transparent',\n pb: 0.3, px: 0.5, userSelect: 'none',\n });\n\n return (\n <ClickAwayListener onClickAway={onClose}>\n <Paper elevation={4} sx={{ position: 'absolute', top: 52, left: 0, zIndex: 1000, p: 1.5, width: 252, borderRadius: '8px' }}>\n <Box sx={{ display: 'flex', gap: 2, mb: 1.5, borderBottom: '1px solid #e0e0e0', pb: 0.5 }}>\n <Typography variant=\"body2\" onClick={() => setTab('solid')} sx={tabStyle(tab === 'solid')}>Solid</Typography>\n <Typography variant=\"body2\" onClick={() => {\n setTab('linear');\n onBackgroundChange(JSON.stringify({ type: 'linear', colors: gradColors, angle: gradAngle }));\n }} sx={tabStyle(tab === 'linear')}>Linear</Typography>\n </Box>\n\n {tab === 'solid' && <ColorPicker color={solidColor} onChange={handleSolid} />}\n\n {tab === 'linear' && (\n <>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n {gradColors.map((c, i) => (\n <Box key={i} onClick={() => setActiveStop(i)} sx={{\n width: 32, height: 32, borderRadius: '4px', backgroundColor: c,\n border: activeStop === i ? '2px solid #1976d2' : '2px solid #ccc', cursor: 'pointer',\n }} />\n ))}\n </Box>\n\n <Box sx={{\n width: '100%', height: 12, borderRadius: '6px', mb: 1,\n background: `linear-gradient(${gradAngle}deg, ${gradColors[0]}, ${gradColors[1]})`,\n border: '1px solid #e0e0e0',\n }} />\n\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1.5 }}>\n <Box sx={{\n width: 24, height: 24, borderRadius: '50%', border: '1px solid #ccc',\n position: 'relative', flexShrink: 0,\n }}>\n <Box sx={{\n width: 1, height: 10, backgroundColor: '#333',\n transformOrigin: 'bottom center', transform: `rotate(${gradAngle}deg)`,\n position: 'absolute', left: '50%', bottom: '50%', ml: '-0.5px',\n }} />\n </Box>\n <input type=\"range\" min={0} max={360} value={gradAngle}\n onChange={(e) => handleAngle(parseInt(e.target.value))}\n style={{ flex: 1, cursor: 'pointer' }} />\n <Typography variant=\"caption\" sx={{ width: 32, textAlign: 'right', flexShrink: 0 }}>{gradAngle}°</Typography>\n </Box>\n\n <ColorPicker color={gradColors[activeStop]} onChange={handleGradColor} />\n </>\n )}\n </Paper>\n </ClickAwayListener>\n );\n};\n\n// ─── Main Background Panel ───────────────────────────────────────────\n\nconst BackgroundPanelContent = observer(({ store }) => {\n const page = store.activePage;\n const [pickerOpen, setPickerOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [photos, setPhotos] = useState([]);\n const [loading, setLoading] = useState(false);\n const [lastSolidColor, setLastSolidColor] = useState('#ffffff');\n const [hasMore, setHasMore] = useState(true);\n const [pageNum, setPageNum] = useState(1);\n\n const hasMoreRef = useRef(true);\n const pageNumRef = useRef(1);\n const currentQueryRef = useRef('gradient');\n const debounceRef = useRef(null);\n const isFirstRender = useRef(true);\n const requestIdRef = useRef(0);\n const observerRef = useRef(null);\n const fetchingRef = useRef(false);\n\n useEffect(() => {\n const bg = page?.background || '';\n if (bg && bg.startsWith('#')) setLastSolidColor(bg);\n }, [page?.background]);\n\n const fetchPhotos = useCallback(async (query, pg = 1) => {\n // For pagination (pg > 1), skip if already fetching to avoid duplicates\n if (pg > 1 && fetchingRef.current) return;\n const id = ++requestIdRef.current;\n fetchingRef.current = true;\n setLoading(true);\n try {\n const q = query || 'gradient';\n const res = await fetch(`${UNSPLASH_BASE}?query=${encodeURIComponent(q)}&per_page=20&page=${pg}&KEY=${UNSPLASH_KEY}`);\n const data = await res.json();\n if (requestIdRef.current !== id) return; // Stale response, ignore\n const results = data.results || (Array.isArray(data) ? data : []);\n const totalPages = data.total_pages || 0;\n if (pg === 1) { setPhotos(results); } else { setPhotos(prev => [...prev, ...results]); }\n const more = pg < totalPages;\n setHasMore(more); hasMoreRef.current = more;\n setPageNum(pg); pageNumRef.current = pg;\n currentQueryRef.current = q;\n } catch (e) {\n if (requestIdRef.current !== id) return;\n console.warn('Unsplash fetch failed:', e);\n }\n fetchingRef.current = false;\n setLoading(false);\n }, []);\n\n // Initial load\n useEffect(() => { fetchPhotos('gradient', 1); }, [fetchPhotos]);\n\n // Debounced auto-search (500ms)\n useEffect(() => {\n if (isFirstRender.current) { isFirstRender.current = false; return; }\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n const q = searchQuery.trim() || 'gradient';\n hasMoreRef.current = true; pageNumRef.current = 1;\n setHasMore(true); setPageNum(1);\n fetchPhotos(q, 1);\n }, 500);\n return () => { if (debounceRef.current) clearTimeout(debounceRef.current); };\n }, [searchQuery, fetchPhotos]);\n\n // Callback ref for infinite scroll sentinel — reconnects observer on every mount/remount\n const sentinelRef = useCallback((node) => {\n if (observerRef.current) { observerRef.current.disconnect(); observerRef.current = null; }\n if (!node) return;\n observerRef.current = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && !fetchingRef.current && hasMoreRef.current) {\n fetchPhotos(currentQueryRef.current, pageNumRef.current + 1);\n }\n }, { threshold: 0.1 });\n observerRef.current.observe(node);\n }, [fetchPhotos]);\n\n const setBackground = useCallback((value) => {\n if (!page) return;\n page.set({ background: value });\n store.history.addUndoState();\n }, [page, store]);\n\n const bg = page?.background || '';\n const isGradient = bg.startsWith('{');\n const isImage = bg.startsWith('http');\n const displayColor = isGradient || isImage ? lastSolidColor : (bg || '#ffffff');\n\n return (\n <Box sx={{ p: 1.5, position: 'relative' }}>\n {/* ── Color Swatches Row ── */}\n <Box sx={{ display: 'flex', gap: '6px', mb: 1.5, alignItems: 'center', flexWrap: 'nowrap', overflowX: 'hidden', '&::-webkit-scrollbar': { display: 'none' } }}>\n {/* Palette / color picker trigger */}\n <Box onClick={() => setPickerOpen(!pickerOpen)} sx={{\n width: 30, height: 30, minWidth: 30, borderRadius: '50%', cursor: 'pointer',\n border: pickerOpen ? '2px solid #1976d2' : '2px solid #e0e0e0',\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n background: 'conic-gradient(#f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)',\n '&:hover': { borderColor: '#1976d2' }, transition: 'border-color 0.15s',\n }}>\n <Box sx={{ width: 16, height: 16, borderRadius: '50%', backgroundColor: '#fff' }} />\n </Box>\n\n {/* Preset color swatches */}\n {SWATCH_COLORS.map((c) => (\n <Box key={c} onClick={() => { setBackground(c); setPickerOpen(false); }} sx={{\n width: 30, height: 30, minWidth: 30, borderRadius: '50%', backgroundColor: c, cursor: 'pointer',\n border: bg === c ? '2px solid #1976d2' : '2px solid #e0e0e0',\n '&:hover': { transform: 'scale(1.1)' }, transition: 'all 0.15s',\n }} />\n ))}\n\n {/* Transparent / remove background */}\n <Box onClick={() => { setBackground('transparent'); setPickerOpen(false); }} sx={{\n width: 30, height: 30, minWidth: 30, borderRadius: '50%', cursor: 'pointer',\n backgroundImage: `url(\"${CHECKER_SVG}\")`, backgroundSize: '8px 8px',\n border: bg === 'transparent' ? '2px solid #1976d2' : '2px solid #e0e0e0',\n '&:hover': { transform: 'scale(1.1)' }, transition: 'all 0.15s',\n }} />\n </Box>\n\n {/* ── Color Picker Popup ── */}\n <ColorPopup open={pickerOpen} onClose={() => setPickerOpen(false)} background={bg} onBackgroundChange={setBackground} />\n\n {/* ── Search Input ── */}\n <TextField\n size=\"small\" fullWidth\n placeholder={t('sidePanel.search', 'Search...')}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ fontSize: 18, color: '#999' }} />\n </InputAdornment>\n ),\n }}\n sx={{ mb: 1.5, '& .MuiInputBase-input': { fontSize: 13, py: 0.8 } }}\n />\n\n {/* ── Unsplash Attribution ── */}\n <Typography variant=\"caption\" sx={{ display: 'block', textAlign: 'center', mb: 1, color: '#888' }}>\n Photos by{' '}\n <a href=\"https://unsplash.com\" target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: '#1976d2', textDecoration: 'none' }}>\n Unsplash\n </a>\n </Typography>\n\n {/* ── Photo Grid ── */}\n <Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 1 }}>\n {photos.map((photo, idx) => {\n const thumb = photo.urls?.small || photo.urls?.thumb || photo.src;\n if (!thumb) return null;\n return (\n <Box key={photo.id || idx} onClick={() => {\n const url = photo.urls?.regular || photo.urls?.small || photo.src;\n if (url) setBackground(url);\n }} sx={{\n cursor: 'pointer', borderRadius: '8px', overflow: 'hidden', aspectRatio: '4/3',\n '&:hover': { opacity: 0.85 }, transition: 'opacity 0.15s',\n }}>\n <img src={thumb} alt={photo.alt_description || 'Background'}\n style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }} loading=\"lazy\" />\n </Box>\n );\n })}\n </Box>\n\n {/* Sentinel for infinite scroll */}\n {hasMore && <Box ref={sentinelRef} sx={{ height: 20 }} />}\n\n {loading && (\n <Typography variant=\"caption\" sx={{ display: 'block', textAlign: 'center', mt: 2, color: '#888' }}>\n Loading...\n </Typography>\n )}\n {!loading && photos.length === 0 && (\n <Typography variant=\"caption\" sx={{ display: 'block', textAlign: 'center', mt: 2, color: '#888' }}>\n No photos found\n </Typography>\n )}\n </Box>\n );\n});\n\nexport const BackgroundSection = {\n name: 'background',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.background', 'Background')} {...props}>\n <WallpaperIcon />\n </SectionTab>\n ),\n Panel: BackgroundPanelContent,\n};\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, IconButton, List, ListItem, ListItemText, ListItemIcon } from '@mui/material';\nimport LayersIcon from '@mui/icons-material/Layers';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport VisibilityOffIcon from '@mui/icons-material/VisibilityOff';\nimport LockIcon from '@mui/icons-material/Lock';\nimport LockOpenIcon from '@mui/icons-material/LockOpen';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\nimport ImageIcon from '@mui/icons-material/Image';\nimport TextFieldsIcon from '@mui/icons-material/TextFields';\nimport CategoryIcon from '@mui/icons-material/Category';\nimport TimelineIcon from '@mui/icons-material/Timeline';\nimport CodeIcon from '@mui/icons-material/Code';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\nconst ELEMENT_ICONS = {\n image: ImageIcon,\n text: TextFieldsIcon,\n figure: CategoryIcon,\n line: TimelineIcon,\n svg: CodeIcon,\n};\n\nconst LayerItem = observer(({ element, store, index }) => {\n const isSelected = store.selectedElementsIds.includes(element.id);\n const Icon = ELEMENT_ICONS[element.type] || CategoryIcon;\n const isLocked = element.locked;\n\n const handleSelect = () => {\n store.selectElements([element.id]);\n };\n\n const handleToggleVisibility = (e) => {\n e.stopPropagation();\n element.set({ visible: !element.visible });\n store.history.addUndoState();\n };\n\n const handleToggleLock = (e) => {\n e.stopPropagation();\n if (isLocked) {\n element.set({\n draggable: true,\n resizable: true,\n contentEditable: true,\n styleEditable: true,\n });\n } else {\n element.set({\n draggable: false,\n resizable: false,\n contentEditable: false,\n styleEditable: false,\n });\n }\n store.history.addUndoState();\n };\n\n const handleMoveUp = (e) => {\n e.stopPropagation();\n element.moveUp();\n store.history.addUndoState();\n };\n\n const handleMoveDown = (e) => {\n e.stopPropagation();\n element.moveDown();\n store.history.addUndoState();\n };\n\n const handleDelete = (e) => {\n e.stopPropagation();\n store.deleteElements([element.id]);\n store.history.addUndoState();\n };\n\n const displayName =\n element.name ||\n `${element.type}${element.text ? `: ${element.text.substring(0, 20)}` : ''}`;\n\n return (\n <ListItem\n onClick={handleSelect}\n sx={{\n cursor: 'pointer',\n borderRadius: '4px',\n mb: 0.5,\n py: 0.5,\n px: 1,\n backgroundColor: isSelected ? 'rgba(13,131,205,0.1)' : 'transparent',\n border: isSelected ? '1px solid rgba(13,131,205,0.3)' : '1px solid transparent',\n opacity: element.visible ? 1 : 0.5,\n '&:hover': {\n backgroundColor: isSelected\n ? 'rgba(13,131,205,0.15)'\n : 'rgba(0,0,0,0.04)',\n },\n }}\n >\n <ListItemIcon sx={{ minWidth: 32 }}>\n <Icon sx={{ fontSize: 18, color: isSelected ? '#0d83cd' : '#666' }} />\n </ListItemIcon>\n <ListItemText\n primary={displayName}\n primaryTypographyProps={{\n variant: 'body2',\n noWrap: true,\n sx: { fontSize: '12px' },\n }}\n />\n <Box sx={{ display: 'flex', gap: 0, ml: 1 }}>\n <IconButton size=\"small\" onClick={handleMoveUp} sx={{ p: 0.3 }}>\n <ArrowUpwardIcon sx={{ fontSize: 14 }} />\n </IconButton>\n <IconButton size=\"small\" onClick={handleMoveDown} sx={{ p: 0.3 }}>\n <ArrowDownwardIcon sx={{ fontSize: 14 }} />\n </IconButton>\n <IconButton size=\"small\" onClick={handleToggleVisibility} sx={{ p: 0.3 }}>\n {element.visible ? (\n <VisibilityIcon sx={{ fontSize: 14 }} />\n ) : (\n <VisibilityOffIcon sx={{ fontSize: 14 }} />\n )}\n </IconButton>\n <IconButton size=\"small\" onClick={handleToggleLock} sx={{ p: 0.3 }}>\n {isLocked ? (\n <LockIcon sx={{ fontSize: 14 }} />\n ) : (\n <LockOpenIcon sx={{ fontSize: 14 }} />\n )}\n </IconButton>\n <IconButton size=\"small\" onClick={handleDelete} sx={{ p: 0.3 }}>\n <DeleteOutlineIcon sx={{ fontSize: 14, color: '#d32f2f' }} />\n </IconButton>\n </Box>\n </ListItem>\n );\n});\n\nconst LayersPanelContent = observer(({ store }) => {\n const page = store.activePage;\n\n if (!page || page.children.length === 0) {\n return (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {t('sidePanel.noLayers', 'No layers on this page')}\n </Typography>\n </Box>\n );\n }\n\n // Show in reverse order (top layer first)\n const elements = [...page.children].reverse();\n\n return (\n <Box sx={{ p: 1, overflowY: 'auto', height: '100%' }}>\n <Typography variant=\"subtitle2\" sx={{ px: 1, mb: 1 }}>\n {t('sidePanel.layers', 'Layers')} ({page.children.length})\n </Typography>\n <List dense disablePadding>\n {elements.map((element, index) => (\n <LayerItem\n key={element.id}\n element={element}\n store={store}\n index={index}\n />\n ))}\n </List>\n </Box>\n );\n});\n\nexport const LayersSection = {\n name: 'layers',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.layers', 'Layers')} {...props}>\n <LayersIcon />\n </SectionTab>\n ),\n Panel: LayersPanelContent,\n};\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography } from '@mui/material';\nimport CategoryIcon from '@mui/icons-material/Category';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\n// ── Line definitions ────────────────────────────────────────────────\nconst LINES = [\n { name: 'Solid', endHead: '', dash: [], svgLine: { strokeDasharray: 'none' } },\n { name: 'Dashed', endHead: '', dash: [10, 5], svgLine: { strokeDasharray: '8 4' } },\n { name: 'Dotted', endHead: '', dash: [2, 4], svgLine: { strokeDasharray: '2 4' } },\n { name: 'Arrow', endHead: 'arrow', dash: [], svgLine: { strokeDasharray: 'none', marker: true } },\n { name: 'Dot Arrow', endHead: 'arrow', startHead: 'circle', dash: [], svgLine: { strokeDasharray: 'none', marker: true, startDot: true } },\n { name: 'Dash Arrow', endHead: 'arrow', startHead: 'square', dash: [8, 4], svgLine: { strokeDasharray: '6 3', marker: true, startSquare: true } },\n];\n\n// ── Shape definitions (100×100 viewBox paths) ───────────────────────\nconst SHAPES = [\n // Row 1 — basic\n { name: 'Rectangle', subType: 'rect' },\n { name: 'Circle', subType: 'circle' },\n { name: 'Star', subType: 'star' },\n { name: 'Triangle', subType: 'triangle' },\n // Row 2\n { name: 'Parallelogram', subType: 'path', path: 'M20 90 L0 10 L80 10 L100 90 Z' },\n { name: 'Diamond', subType: 'diamond' },\n { name: 'Pentagon', subType: 'polygon' },\n { name: 'Hexagon', subType: 'hexagon' },\n // Row 3\n { name: 'Speech Bubble', subType: 'path', path: 'M10 5 H90 Q95 5 95 10 V55 Q95 60 90 60 H35 L15 80 L25 60 H10 Q5 60 5 55 V10 Q5 5 10 5 Z' },\n { name: 'Cross', subType: 'path', path: 'M35 0 H65 V35 H100 V65 H65 V100 H35 V65 H0 V35 H35 Z' },\n { name: 'Egg', subType: 'path', path: 'M50 5 C75 5 95 30 95 55 C95 80 75 95 50 95 C25 95 5 80 5 55 C5 30 25 5 50 5 Z' },\n { name: 'Cloud', subType: 'path', path: 'M25 80 C10 80 0 70 5 60 C0 50 10 40 22 42 C20 30 30 20 45 20 C55 15 70 20 75 32 C85 28 100 38 95 52 C105 62 95 78 80 78 Z' },\n // Row 4 — arrows\n { name: 'Right Arrow', subType: 'path', path: 'M0 30 H60 V10 L100 50 L60 90 V70 H0 Z' },\n { name: 'Left Arrow', subType: 'path', path: 'M100 30 H40 V10 L0 50 L40 90 V70 H100 Z' },\n { name: 'Down Arrow', subType: 'path', path: 'M30 0 V60 H10 L50 100 L90 60 H70 V0 Z' },\n { name: 'Up Arrow', subType: 'path', path: 'M30 100 V40 H10 L50 0 L90 40 H70 V100 Z' },\n // Row 5 — decorative\n { name: 'Flower 5', subType: 'path', path: 'M50 10 C60 0 75 5 70 20 C85 15 90 30 80 40 C95 45 90 65 75 60 C80 75 65 85 55 70 C50 85 35 80 35 65 C20 75 10 65 20 55 C5 50 10 35 25 35 C15 20 25 10 40 15 C35 0 45 0 50 10 Z' },\n { name: 'Asterisk', subType: 'path', path: 'M50 0 L58 35 L90 15 L65 42 L100 50 L65 58 L90 85 L58 65 L50 100 L42 65 L10 85 L35 58 L0 50 L35 42 L10 15 L42 35 Z' },\n { name: 'Bowtie', subType: 'path', path: 'M0 0 L45 40 L45 0 L55 0 L55 40 L100 0 L100 100 L55 60 L55 100 L45 100 L45 60 L0 100 Z' },\n { name: 'Half Circle', subType: 'path', path: 'M50 0 A50 50 0 0 1 50 100 Z' },\n // Row 6\n { name: 'Rounded Square', subType: 'path', path: 'M20 5 H80 Q95 5 95 20 V80 Q95 95 80 95 H20 Q5 95 5 80 V20 Q5 5 20 5 Z' },\n { name: 'Gem', subType: 'path', path: 'M50 0 L95 35 L50 100 L5 35 Z' },\n { name: 'Arch', subType: 'path', path: 'M5 95 V40 Q5 5 50 5 Q95 5 95 40 V95 H70 V45 Q70 25 50 25 Q30 25 30 45 V95 Z' },\n { name: 'Teardrop', subType: 'path', path: 'M50 5 C70 5 90 25 90 50 C90 75 70 95 50 95 C30 95 10 75 10 50 C10 25 30 5 50 5 Z' },\n // Row 7\n { name: 'Drop', subType: 'path', path: 'M50 0 C55 20 90 40 90 65 C90 85 72 100 50 100 C28 100 10 85 10 65 C10 40 45 20 50 0 Z' },\n { name: 'Starburst', subType: 'path', path: 'M50 0 L56 30 L80 8 L62 34 L100 25 L70 44 L100 50 L70 56 L100 75 L62 66 L80 92 L56 70 L50 100 L44 70 L20 92 L38 66 L0 75 L30 56 L0 50 L30 44 L0 25 L38 34 L20 8 L44 30 Z' },\n { name: 'Wave', subType: 'path', path: 'M0 20 C25 0 25 40 50 20 C75 0 75 40 100 20 V80 C75 100 75 60 50 80 C25 100 25 60 0 80 Z' },\n { name: 'Flower 6', subType: 'path', path: 'M50 5 C55 20 65 15 68 25 C78 18 82 28 75 35 C85 35 88 48 78 50 C88 52 85 65 75 65 C82 72 78 82 68 75 C65 85 55 80 50 95 C45 80 35 85 32 75 C22 82 18 72 25 65 C15 65 12 52 22 50 C12 48 15 35 25 35 C18 28 22 18 32 25 C35 15 45 20 50 5 Z' },\n // Row 8\n { name: 'Hourglass', subType: 'path', path: 'M10 0 H90 L55 45 L55 55 L90 100 H10 L45 55 L45 45 Z' },\n { name: 'Heart', subType: 'path', path: 'M50 90 C25 70 0 55 0 30 C0 10 15 0 30 0 C40 0 48 5 50 15 C52 5 60 0 70 0 C85 0 100 10 100 30 C100 55 75 70 50 90 Z' },\n { name: 'House', subType: 'path', path: 'M50 5 L95 45 V95 H5 V45 Z' },\n { name: 'Arrow Up', subType: 'path', path: 'M50 0 L90 35 H65 V100 H35 V35 H10 Z' },\n // Row 9\n { name: 'Hourglass V', subType: 'path', path: 'M0 0 L100 0 L55 45 L55 55 L100 100 L0 100 L45 55 L45 45 Z' },\n { name: 'Barn', subType: 'path', path: 'M50 0 L95 30 V95 H5 V30 Z' },\n { name: 'Mushroom', subType: 'path', path: 'M5 55 C5 20 30 0 50 0 C70 0 95 20 95 55 H65 V95 H35 V55 Z' },\n { name: 'Lips', subType: 'path', path: 'M10 50 C10 25 30 15 50 25 C70 15 90 25 90 50 C90 75 70 85 50 75 C30 85 10 75 10 50 Z' },\n // Row 10\n { name: 'Leaf', subType: 'path', path: 'M10 90 Q10 10 90 10 Q90 90 10 90 Z' },\n { name: 'Lightning', subType: 'path', path: 'M60 0 L25 45 H50 L15 100 L80 50 H55 L85 0 Z' },\n { name: 'Bolt', subType: 'path', path: 'M55 0 L20 42 H45 L10 100 L80 55 H52 L90 0 Z' },\n { name: 'D Shape', subType: 'path', path: 'M10 5 H60 C90 5 95 30 95 50 C95 70 90 95 60 95 H10 Z' },\n // Row 11\n { name: 'Peanut', subType: 'path', path: 'M35 10 C55 0 80 10 80 30 C95 40 95 60 80 70 C80 90 55 100 35 90 C20 100 5 90 5 70 C-5 60 -5 40 5 30 C5 10 20 0 35 10 Z' },\n { name: 'L Shape', subType: 'path', path: 'M10 0 H50 V60 H90 V100 H10 Z' },\n { name: 'Sun', subType: 'path', path: 'M50 0 L54 35 L75 8 L58 37 L95 20 L63 42 L100 40 L65 48 L98 62 L62 54 L85 80 L56 58 L68 95 L52 62 L50 100 L48 62 L32 95 L44 58 L15 80 L38 54 L2 62 L35 48 L0 40 L37 42 L5 20 L42 37 L25 8 L46 35 Z' },\n { name: 'Concave Rect', subType: 'path', path: 'M0 0 C35 15 65 15 100 0 V100 C65 85 35 85 0 100 Z' },\n // Row 12\n { name: 'Hexagon 2', subType: 'path', path: 'M25 5 H75 L95 50 L75 95 H25 L5 50 Z' },\n { name: 'U Shape', subType: 'path', path: 'M5 0 H30 V65 C30 80 42 90 50 90 C58 90 70 80 70 65 V0 H95 V65 C95 90 75 100 50 100 C25 100 5 90 5 65 Z' },\n { name: 'Corner', subType: 'path', path: 'M0 0 H55 V55 H100 V100 H0 Z' },\n { name: 'T Shape', subType: 'path', path: 'M0 0 H100 V40 H65 V100 H35 V40 H0 Z' },\n // Row 13\n { name: 'Shield', subType: 'path', path: 'M50 95 C20 80 5 60 5 30 V10 H95 V30 C95 60 80 80 50 95 Z' },\n { name: 'Shield 2', subType: 'path', path: 'M50 95 C15 75 5 55 5 25 V5 H95 V25 C95 55 85 75 50 95 Z' },\n { name: 'Parallelogram 2', subType: 'path', path: 'M20 0 H100 L80 100 H0 Z' },\n { name: 'Clover', subType: 'path', path: 'M50 40 C40 30 25 20 25 35 C15 25 0 30 10 45 C0 50 5 65 20 60 C15 75 25 85 40 75 L50 95 L60 75 C75 85 85 75 80 60 C95 65 100 50 90 45 C100 30 85 25 75 35 C75 20 60 30 50 40 Z' },\n // Row 14\n { name: '4-Point Star', subType: 'path', path: 'M50 0 L58 38 L100 50 L58 62 L50 100 L42 62 L0 50 L42 38 Z' },\n { name: 'L Step', subType: 'path', path: 'M0 0 H50 V50 H100 V100 H0 Z' },\n { name: 'Steps', subType: 'path', path: 'M0 0 H35 V35 H65 V65 H100 V100 H0 Z' },\n { name: 'Steps 2', subType: 'path', path: 'M0 0 H30 V30 H50 V0 H80 V50 H100 V100 H0 Z' },\n // Row 15 — organic blobs\n { name: 'Blob 1', subType: 'path', path: 'M60 10 C85 10 95 30 90 50 C95 75 80 95 55 90 C30 95 10 80 10 55 C5 30 30 10 60 10 Z' },\n { name: 'Blob 2', subType: 'path', path: 'M55 5 C80 5 100 25 95 50 C100 75 80 95 55 95 C30 100 5 80 10 55 C0 30 25 5 55 5 Z' },\n { name: 'Blob 3', subType: 'path', path: 'M50 5 C75 0 100 20 95 45 C100 70 80 100 50 95 C20 100 0 75 5 50 C0 25 25 5 50 5 Z' },\n { name: 'Blob 4', subType: 'path', path: 'M60 5 C90 10 100 35 85 60 C95 85 70 100 45 95 C20 95 0 70 10 45 C5 20 30 0 60 5 Z' },\n];\n\n// ── SVG thumbnail for shapes ────────────────────────────────────────\nconst FILL_COLOR = '#BFBFBF';\n\n// Built-in shape → SVG path mapping for thumbnails\nconst builtInPaths = {\n rect: 'M5 5 H95 V95 H5 Z',\n circle: 'M50 5 A45 45 0 1 1 50 95 A45 45 0 1 1 50 5 Z',\n star: 'M50 5 L62 38 L97 38 L68 60 L79 93 L50 73 L21 93 L32 60 L3 38 L38 38 Z',\n triangle: 'M50 5 L95 90 H5 Z',\n diamond: 'M50 5 L95 50 L50 95 L5 50 Z',\n hexagon: 'M25 10 H75 L95 50 L75 90 H25 L5 50 Z',\n polygon: 'M50 5 L95 38 L80 90 H20 L5 38 Z',\n};\n\nconst ShapeThumbnail = ({ shape }) => {\n const svgPath = shape.path || builtInPaths[shape.subType] || builtInPaths.rect;\n return (\n <svg viewBox=\"0 0 100 100\" width=\"100%\" height=\"100%\" style={{ display: 'block' }}>\n <path d={svgPath} fill={FILL_COLOR} />\n </svg>\n );\n};\n\n// ── Line thumbnail ──────────────────────────────────────────────────\nconst LineThumbnail = ({ line }) => {\n const s = line.svgLine || {};\n return (\n <svg viewBox=\"0 0 80 20\" width=\"100%\" height=\"20\" style={{ display: 'block' }}>\n {s.startDot && <circle cx=\"6\" cy=\"10\" r=\"4\" fill={FILL_COLOR} />}\n {s.startSquare && <rect x=\"2\" y=\"6\" width=\"8\" height=\"8\" fill={FILL_COLOR} />}\n <line\n x1={s.startDot || s.startSquare ? 12 : 2}\n y1=\"10\"\n x2={s.marker ? 65 : 78}\n y2=\"10\"\n stroke={FILL_COLOR}\n strokeWidth=\"2.5\"\n strokeDasharray={s.strokeDasharray === 'none' ? undefined : s.strokeDasharray}\n strokeLinecap=\"round\"\n />\n {s.marker && (\n <polygon points=\"62,4 78,10 62,16\" fill={FILL_COLOR} />\n )}\n </svg>\n );\n};\n\n// ── Panel ───────────────────────────────────────────────────────────\nconst ElementsPanelContent = observer(({ store }) => {\n const addShape = (shape) => {\n const page = store.activePage;\n if (!page) return;\n\n const size = Math.min(store.width, store.height) * 0.2;\n const isRect = shape.subType === 'rect';\n const w = isRect ? size * 1.5 : size;\n const h = isRect ? size * 0.8 : size;\n\n const props = {\n type: 'figure',\n subType: shape.subType,\n x: store.width / 2 - w / 2,\n y: store.height / 2 - h / 2,\n width: w,\n height: h,\n fill: FILL_COLOR,\n stroke: '',\n strokeWidth: 0,\n };\n if (shape.path) {\n props.pathData = shape.path;\n }\n page.addElement(props);\n store.history.addUndoState();\n };\n\n const addLine = (line) => {\n const page = store.activePage;\n if (!page) return;\n\n const lineWidth = Math.min(store.width, store.height) * 0.4;\n page.addElement({\n type: 'line',\n x: store.width / 2 - lineWidth / 2,\n y: store.height / 2,\n width: lineWidth,\n height: 4,\n color: '#000000',\n endHead: line.endHead || '',\n startHead: line.startHead || '',\n dash: line.dash || [],\n });\n store.history.addUndoState();\n };\n\n const shapeBoxSx = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n aspectRatio: '1',\n borderRadius: '8px',\n cursor: 'pointer',\n padding: '10px',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n transition: 'background 0.15s ease',\n };\n\n const lineBoxSx = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '8px',\n cursor: 'pointer',\n padding: '12px 8px',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n transition: 'background 0.15s ease',\n };\n\n return (\n <Box sx={{ p: 1.5, overflowY: 'auto' }}>\n {/* Lines */}\n <Typography variant=\"subtitle2\" sx={{ mb: 1, color: '#555', fontSize: '13px' }}>\n {t('sidePanel.lines', 'Lines')}\n </Typography>\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'repeat(3, 1fr)',\n gap: '4px',\n mb: 2.5,\n }}\n >\n {LINES.map((line, idx) => (\n <Box key={idx} onClick={() => addLine(line)} sx={lineBoxSx}>\n <LineThumbnail line={line} />\n </Box>\n ))}\n </Box>\n\n {/* Shapes */}\n <Typography variant=\"subtitle2\" sx={{ mb: 1, color: '#555', fontSize: '13px' }}>\n {t('sidePanel.shapes', 'Shapes')}\n </Typography>\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'repeat(4, 1fr)',\n gap: '4px',\n }}\n >\n {SHAPES.map((shape, idx) => (\n <Box key={idx} onClick={() => addShape(shape)} sx={shapeBoxSx}>\n <ShapeThumbnail shape={shape} />\n </Box>\n ))}\n </Box>\n </Box>\n );\n});\n\nexport const ElementsSection = {\n name: 'elements',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.elements', 'Elements')} {...props}>\n <CategoryIcon />\n </SectionTab>\n ),\n Panel: ElementsPanelContent,\n};\n","export function getImageSize(url) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.naturalWidth, height: img.naturalHeight });\n };\n img.onerror = (err) => {\n reject(err || new Error('Failed to load image'));\n };\n img.crossOrigin = 'anonymous';\n img.src = url;\n });\n}\n\nexport function loadImage(url) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = (err) => reject(err || new Error('Failed to load image'));\n img.crossOrigin = 'anonymous';\n img.src = url;\n });\n}\n\nexport function cropImage({ src, x, y, width, height, outputWidth, outputHeight }) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = outputWidth || width;\n canvas.height = outputHeight || height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(\n img,\n x,\n y,\n width,\n height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n resolve(canvas.toDataURL('image/png'));\n };\n img.onerror = (err) => reject(err || new Error('Failed to crop image'));\n img.crossOrigin = 'anonymous';\n img.src = src;\n });\n}\n","import React, { useState, useCallback, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, Button, IconButton } from '@mui/material';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { SectionTab } from './tab-button';\nimport { getImageSize } from '../utils/image';\nimport { t } from '../config';\n\nconst UploadPanelContent = observer(({ store }) => {\n const [images, setImages] = useState([]);\n const [isDragging, setIsDragging] = useState(false);\n const fileInputRef = useRef(null);\n\n const processFiles = useCallback(\n async (files) => {\n const newImages = [];\n for (const file of files) {\n if (!file.type.startsWith('image/')) continue;\n const url = URL.createObjectURL(file);\n try {\n const { width, height } = await getImageSize(url);\n newImages.push({\n id: `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n src: url,\n name: file.name,\n width,\n height,\n });\n } catch {\n URL.revokeObjectURL(url);\n }\n }\n setImages((prev) => [...prev, ...newImages]);\n },\n []\n );\n\n const handleDrop = useCallback(\n (e) => {\n e.preventDefault();\n setIsDragging(false);\n if (e.dataTransfer.files?.length) {\n processFiles(Array.from(e.dataTransfer.files));\n }\n },\n [processFiles]\n );\n\n const handleDragOver = useCallback((e) => {\n e.preventDefault();\n setIsDragging(true);\n }, []);\n\n const handleDragLeave = useCallback((e) => {\n e.preventDefault();\n setIsDragging(false);\n }, []);\n\n const handleFileInput = useCallback(\n (e) => {\n if (e.target.files?.length) {\n processFiles(Array.from(e.target.files));\n }\n e.target.value = '';\n },\n [processFiles]\n );\n\n const addImageToCanvas = useCallback(\n (img) => {\n const page = store.activePage;\n if (!page) return;\n\n const scale = Math.min(\n store.width / img.width,\n store.height / img.height,\n 1\n );\n const w = img.width * scale;\n const h = img.height * scale;\n\n page.addElement({\n type: 'image',\n src: img.src,\n x: store.width / 2 - w / 2,\n y: store.height / 2 - h / 2,\n width: w,\n height: h,\n });\n store.history.addUndoState();\n },\n [store]\n );\n\n const removeImage = useCallback((id) => {\n setImages((prev) => {\n const img = prev.find((i) => i.id === id);\n if (img) URL.revokeObjectURL(img.src);\n return prev.filter((i) => i.id !== id);\n });\n }, []);\n\n return (\n <Box sx={{ p: 1.5, display: 'flex', flexDirection: 'column', height: '100%' }}>\n {/* Drop zone */}\n <Box\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onClick={() => fileInputRef.current?.click()}\n sx={{\n border: '2px dashed',\n borderColor: isDragging ? '#0d83cd' : '#ccc',\n borderRadius: '8px',\n p: 3,\n textAlign: 'center',\n cursor: 'pointer',\n backgroundColor: isDragging ? 'rgba(13,131,205,0.06)' : 'transparent',\n transition: 'all 0.2s ease',\n mb: 2,\n '&:hover': {\n borderColor: '#0d83cd',\n backgroundColor: 'rgba(13,131,205,0.04)',\n },\n }}\n >\n <CloudUploadIcon sx={{ fontSize: 36, color: '#999', mb: 1 }} />\n <Typography variant=\"body2\" sx={{ color: '#666', fontSize: '13px' }}>\n {t('sidePanel.uploadTip', 'Drop images here or click to upload')}\n </Typography>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n multiple\n onChange={handleFileInput}\n style={{ display: 'none' }}\n />\n </Box>\n\n {/* Uploaded images grid */}\n {images.length > 0 && (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gap: '8px',\n overflowY: 'auto',\n flex: 1,\n }}\n >\n {images.map((img) => (\n <Box\n key={img.id}\n sx={{\n position: 'relative',\n paddingTop: '100%',\n borderRadius: '6px',\n overflow: 'hidden',\n cursor: 'pointer',\n border: '1px solid #e0e0e0',\n '&:hover .upload-delete-btn': {\n opacity: 1,\n },\n '&:hover': {\n borderColor: '#0d83cd',\n },\n }}\n onClick={() => addImageToCanvas(img)}\n >\n <Box\n sx={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#f5f5f5',\n }}\n >\n <img\n src={img.src}\n alt={img.name}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n </Box>\n <IconButton\n className=\"upload-delete-btn\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n removeImage(img.id);\n }}\n sx={{\n position: 'absolute',\n top: 2,\n right: 2,\n opacity: 0,\n backgroundColor: 'rgba(255,255,255,0.85)',\n transition: 'opacity 0.15s ease',\n '&:hover': {\n backgroundColor: 'rgba(255,255,255,1)',\n },\n }}\n >\n <DeleteIcon sx={{ fontSize: 16 }} />\n </IconButton>\n </Box>\n ))}\n </Box>\n )}\n </Box>\n );\n});\n\nexport const UploadSection = {\n name: 'upload',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.upload', 'Upload')} {...props}>\n <CloudUploadIcon />\n </SectionTab>\n ),\n Panel: UploadPanelContent,\n};\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport {\n Box,\n Typography,\n IconButton,\n Switch,\n Slider,\n TextField,\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { t } from '../config';\n\nconst FILTER_PRESETS = [\n { name: 'Grayscale', key: 'grayscale', bg: '#e0e0e0', color: '#888' },\n { name: 'Sepia', key: 'sepia', bg: '#f5e6c8', color: '#a67c52' },\n { name: 'Cold', key: 'cold', bg: '#d0e4f7', color: '#6a9fd8' },\n { name: 'Natural', key: 'natural', bg: '#f0f0f0', color: '#777' },\n { name: 'Warm', key: 'warm', bg: '#fbe8d3', color: '#c08050' },\n];\n\nconst EffectRow = ({ label, enabled, onToggle, value, onChange, min, max, step, children }) => (\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{label}</Typography>\n <Switch size=\"small\" checked={enabled} onChange={(e) => onToggle(e.target.checked)} />\n </Box>\n {enabled && (\n <>\n {children}\n {value !== undefined && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Slider\n size=\"small\"\n value={value}\n onChange={(_, v) => onChange(v)}\n min={min || 0}\n max={max || 100}\n step={step || 1}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={typeof value === 'number' ? Math.round(value * 10) / 10 : value}\n onChange={(e) => {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) onChange(v);\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min, max, step }}\n />\n </Box>\n )}\n </>\n )}\n </Box>\n);\n\nconst ImageEffectsPanel = observer(({ store }) => {\n const panel = store._toolbarPanel;\n if (!panel || panel.type !== 'effects') return null;\n\n const element = store.getElementById(panel.elementId);\n if (!element) return null;\n\n const handleClose = () => store.closeToolbarPanel();\n\n const commit = () => store.history.addUndoState();\n\n const resetAll = { grayscaleEnabled: false, sepiaEnabled: false, warmEnabled: false, coldEnabled: false, brightnessEnabled: false, brightness: 0, blurEnabled: false };\n\n const applyPreset = (key) => {\n const presets = {\n grayscale: { ...resetAll, grayscaleEnabled: true },\n sepia: { ...resetAll, sepiaEnabled: true },\n cold: { ...resetAll, coldEnabled: true },\n natural: { ...resetAll },\n warm: { ...resetAll, warmEnabled: true },\n };\n element.set(presets[key] || resetAll);\n commit();\n };\n\n const getActivePreset = () => {\n if (element.grayscaleEnabled) return 'grayscale';\n if (element.sepiaEnabled) return 'sepia';\n if (element.warmEnabled) return 'warm';\n if (element.coldEnabled) return 'cold';\n return null;\n };\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.effects', 'Effects')}</Typography>\n <IconButton size=\"small\" onClick={handleClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n {/* Filter presets */}\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 1, mb: 3 }}>\n {FILTER_PRESETS.map((preset) => {\n const isActive = getActivePreset() === preset.key;\n return (\n <Box\n key={preset.key}\n onClick={() => applyPreset(preset.key)}\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 borderRadius: '6px',\n backgroundColor: preset.bg,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n mb: 0.5,\n overflow: 'hidden',\n }}\n >\n {element.src ? (\n <img\n src={element.src}\n alt={preset.name}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n filter:\n preset.key === 'grayscale' ? 'grayscale(1)' :\n preset.key === 'sepia' ? 'sepia(1)' :\n preset.key === 'cold' ? 'saturate(0.5) hue-rotate(180deg)' :\n preset.key === 'warm' ? 'saturate(1.3) sepia(0.2)' :\n 'none',\n }}\n />\n ) : (\n <Typography variant=\"caption\" sx={{ color: preset.color, fontSize: 10 }}>\n {preset.name[0]}\n </Typography>\n )}\n </Box>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{preset.name}</Typography>\n </Box>\n );\n })}\n </Box>\n\n {/* Blur */}\n <EffectRow\n label={t('toolbar.blur', 'Blur')}\n enabled={element.blurEnabled}\n onToggle={(v) => { element.set({ blurEnabled: v }); commit(); }}\n value={element.blurRadius}\n onChange={(v) => element.set({ blurRadius: v })}\n min={0}\n max={40}\n step={1}\n />\n\n {/* Brightness */}\n <EffectRow\n label={t('toolbar.brightness', 'Brightness')}\n enabled={element.brightnessEnabled}\n onToggle={(v) => { element.set({ brightnessEnabled: v }); commit(); }}\n value={Math.round(element.brightness * 100)}\n onChange={(v) => element.set({ brightness: v / 100 })}\n min={-100}\n max={100}\n step={1}\n />\n\n {/* Border */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.border', 'Border')}</Typography>\n <Switch\n size=\"small\"\n checked={element.borderSize > 0}\n onChange={(e) => {\n element.set({ borderSize: e.target.checked ? 2 : 0 });\n commit();\n }}\n />\n </Box>\n {element.borderSize > 0 && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <input\n type=\"color\"\n value={element.borderColor || '#000000'}\n onChange={(e) => { element.set({ borderColor: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.borderSize}\n onChange={(e) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v) && v >= 0) { element.set({ borderSize: v }); commit(); }\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 0 }}\n />\n </Box>\n )}\n </Box>\n\n {/* Corner Radius */}\n <EffectRow\n label={t('toolbar.cornerRadius', 'Corner Radius')}\n enabled={element.cornerRadius > 0}\n onToggle={(v) => { element.set({ cornerRadius: v ? 10 : 0 }); commit(); }}\n value={element.cornerRadius}\n onChange={(v) => element.set({ cornerRadius: v })}\n min={0}\n max={Math.min(element.width, element.height) / 2}\n step={1}\n />\n\n {/* Shadow */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.shadow', 'Shadow')}</Typography>\n <Switch\n size=\"small\"\n checked={element.shadowEnabled}\n onChange={(e) => { element.set({ shadowEnabled: e.target.checked }); commit(); }}\n />\n </Box>\n {element.shadowEnabled && (\n <>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.blur', 'Blur')}</Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n <Slider\n size=\"small\"\n value={element.shadowBlur}\n onChange={(_, v) => element.set({ shadowBlur: v })}\n min={0}\n max={50}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.shadowBlur}\n onChange={(e) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) element.set({ shadowBlur: v });\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.offsetX', 'Offset X')}</Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n <Slider\n size=\"small\"\n value={element.shadowOffsetX}\n onChange={(_, v) => element.set({ shadowOffsetX: v })}\n min={-50}\n max={50}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.shadowOffsetX}\n onChange={(e) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) element.set({ shadowOffsetX: v });\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.offsetY', 'Offset Y')}</Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n <Slider\n size=\"small\"\n value={element.shadowOffsetY}\n onChange={(_, v) => element.set({ shadowOffsetY: v })}\n min={-50}\n max={50}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.shadowOffsetY}\n onChange={(e) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) element.set({ shadowOffsetY: v });\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.color', 'Color')}</Typography>\n <input\n type=\"color\"\n value={element.shadowColor || '#000000'}\n onChange={(e) => { element.set({ shadowColor: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </>\n )}\n </Box>\n </Box>\n );\n});\n\nImageEffectsPanel.displayName = 'ImageEffectsPanel';\nexport { ImageEffectsPanel };\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 from 'react';\nimport { observer } from 'mobx-react-lite';\nimport {\n Box,\n Typography,\n IconButton,\n Switch,\n Slider,\n TextField,\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { t } from '../config';\n\nconst SliderRow = ({ label, value, onChange, min = 0, max = 100, step = 1 }) => (\n <Box sx={{ mb: 1 }}>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{label}</Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Slider\n size=\"small\"\n value={value}\n onChange={(_, v) => onChange(v)}\n min={min}\n max={max}\n step={step}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={typeof value === 'number' ? Math.round(value * 10) / 10 : value}\n onChange={(e) => {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) onChange(v);\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min, max, step }}\n />\n </Box>\n </Box>\n);\n\nconst TextEffectsPanel = observer(({ store }) => {\n const panel = store._toolbarPanel;\n if (!panel || panel.type !== 'effects') return null;\n\n const element = store.getElementById(panel.elementId);\n if (!element || element.type !== 'text') return null;\n\n const handleClose = () => store.closeToolbarPanel();\n const commit = () => store.history.addUndoState();\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 }}>\n {t('toolbar.textEffects', 'Text Effects')}\n </Typography>\n <IconButton size=\"small\" onClick={handleClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n {/* Blur */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.blur', 'Blur')}</Typography>\n <Switch\n size=\"small\"\n checked={element.blurEnabled}\n onChange={(e) => { element.set({ blurEnabled: e.target.checked }); commit(); }}\n />\n </Box>\n {element.blurEnabled && (\n <SliderRow\n label={t('toolbar.blur', 'Blur')}\n value={element.blurRadius}\n onChange={(v) => element.set({ blurRadius: v })}\n min={0}\n max={40}\n />\n )}\n </Box>\n\n {/* Text Stroke */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.textStroke', 'Text Stroke')}</Typography>\n <Switch\n size=\"small\"\n checked={element.strokeWidth > 0}\n onChange={(e) => {\n element.set({\n strokeWidth: e.target.checked ? 2 : 0,\n stroke: element.stroke || '#000000',\n });\n commit();\n }}\n />\n </Box>\n {element.strokeWidth > 0 && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <input\n type=\"color\"\n value={element.stroke || '#000000'}\n onChange={(e) => { element.set({ stroke: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.strokeWidth}\n onChange={(e) => {\n const v = parseFloat(e.target.value);\n if (!isNaN(v) && v >= 0) { element.set({ strokeWidth: v }); commit(); }\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 0, max: 20, step: 0.5 }}\n />\n </Box>\n )}\n </Box>\n\n {/* Background */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.background', 'Background')}</Typography>\n <Switch\n size=\"small\"\n checked={element.backgroundEnabled}\n onChange={(e) => { element.set({ backgroundEnabled: e.target.checked }); commit(); }}\n />\n </Box>\n {element.backgroundEnabled && (\n <>\n <SliderRow\n label={t('toolbar.cornerRadius', 'Corner radius')}\n value={element.backgroundCornerRadius}\n onChange={(v) => element.set({ backgroundCornerRadius: v })}\n min={0}\n max={50}\n step={0.5}\n />\n <SliderRow\n label={t('toolbar.padding', 'Padding')}\n value={element.backgroundPadding}\n onChange={(v) => element.set({ backgroundPadding: v })}\n min={0}\n max={100}\n />\n <SliderRow\n label={t('toolbar.opacity', 'Opacity')}\n value={Math.round(element.backgroundOpacity * 100)}\n onChange={(v) => element.set({ backgroundOpacity: v / 100 })}\n min={0}\n max={100}\n />\n <Box sx={{ mt: 1 }}>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.color', 'Color')}</Typography>\n <input\n type=\"color\"\n value={element.backgroundColor || '#ffffff'}\n onChange={(e) => { element.set({ backgroundColor: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </>\n )}\n </Box>\n\n {/* Shadow */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.shadow', 'Shadow')}</Typography>\n <Switch\n size=\"small\"\n checked={element.shadowEnabled}\n onChange={(e) => { element.set({ shadowEnabled: e.target.checked }); commit(); }}\n />\n </Box>\n {element.shadowEnabled && (\n <>\n <SliderRow\n label={t('toolbar.blur', 'Blur')}\n value={element.shadowBlur}\n onChange={(v) => element.set({ shadowBlur: v })}\n min={0}\n max={50}\n />\n <SliderRow\n label={t('toolbar.offsetX', 'Offset X')}\n value={element.shadowOffsetX}\n onChange={(v) => element.set({ shadowOffsetX: v })}\n min={-50}\n max={50}\n />\n <SliderRow\n label={t('toolbar.offsetY', 'Offset Y')}\n value={element.shadowOffsetY}\n onChange={(v) => element.set({ shadowOffsetY: v })}\n min={-50}\n max={50}\n />\n <SliderRow\n label={t('toolbar.opacity', 'Opacity')}\n value={Math.round(element.shadowOpacity * 100)}\n onChange={(v) => element.set({ shadowOpacity: v / 100 })}\n min={0}\n max={100}\n />\n <Box sx={{ mt: 1 }}>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.color', 'Color')}</Typography>\n <input\n type=\"color\"\n value={element.shadowColor || '#000000'}\n onChange={(e) => { element.set({ shadowColor: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </>\n )}\n </Box>\n </Box>\n );\n});\n\nTextEffectsPanel.displayName = 'TextEffectsPanel';\nexport { TextEffectsPanel };\n","import React, { useState, useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, IconButton } from '@mui/material';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport { TextSection } from './text-panel';\nimport { BackgroundSection } from './background-panel';\nimport { LayersSection } from './layers-panel';\nimport { ElementsSection } from './elements-panel';\nimport { UploadSection } from './upload-panel';\nimport { ImageEffectsPanel } from '../toolbar/image-effects-panel';\nimport { ImageMaskPanel } from '../toolbar/image-mask-panel';\nimport { TextEffectsPanel } from '../toolbar/text-effects-panel';\n\nexport const DEFAULT_SECTIONS = [\n TextSection,\n ElementsSection,\n UploadSection,\n BackgroundSection,\n LayersSection,\n];\n\nconst SidePanel = observer(({ store, sections, defaultSection }) => {\n const sectionsList = sections || DEFAULT_SECTIONS;\n const [activeSection, setActiveSection] = useState(null);\n\n // Sync with store.openedSidePanel\n useEffect(() => {\n if (store.openedSidePanel) {\n const section = sectionsList.find((s) => s.name === store.openedSidePanel);\n if (section) {\n setActiveSection(section.name);\n } else if (store.openedSidePanel === '') {\n setActiveSection(null);\n }\n }\n }, [store.openedSidePanel]);\n\n // Set initial active section\n useEffect(() => {\n if (defaultSection) {\n const section = sectionsList.find((s) => s.name === defaultSection);\n if (section) {\n setActiveSection(section.name);\n }\n } else if (!activeSection && sectionsList.length > 0) {\n setActiveSection(sectionsList[0].name);\n }\n }, []);\n\n const handleTabClick = (sectionName) => {\n if (activeSection === sectionName) {\n // Toggle off\n setActiveSection(null);\n store.openSidePanel('');\n } else {\n setActiveSection(sectionName);\n store.openSidePanel(sectionName);\n }\n };\n\n const activeSectionObj = sectionsList.find((s) => s.name === activeSection);\n\n return (\n <Box\n sx={{\n display: 'flex',\n height: '100%',\n borderRight: '1px solid #e0e0e0',\n position: 'relative',\n }}\n >\n {/* Tab strip */}\n <Box\n sx={{\n width: 72,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n py: 1,\n gap: 0.5,\n borderRight: '1px solid #e0e0e0',\n backgroundColor: '#fafafa',\n overflowY: 'auto',\n flexShrink: 0,\n }}\n >\n {sectionsList.map((section) => {\n const isActive = activeSection === section.name;\n const TabComponent = section.Tab;\n if (section.visibleInList === false) return null;\n return (\n <Box key={section.name} sx={{ width: '100%', px: 0.5 }}>\n <TabComponent\n onClick={() => handleTabClick(section.name)}\n active={isActive}\n />\n </Box>\n );\n })}\n </Box>\n\n {/* Toolbar panel overlay (Effects / Mask) */}\n {store._toolbarPanel ? (\n store._toolbarPanel.type === 'effects' ? (\n (() => {\n const el = store.getElementById(store._toolbarPanel.elementId);\n if (el && el.type === 'text') return <TextEffectsPanel store={store} />;\n return <ImageEffectsPanel store={store} />;\n })()\n ) : store._toolbarPanel.type === 'mask' ? (\n <ImageMaskPanel store={store} />\n ) : null\n ) : (\n /* Normal panel content */\n activeSectionObj && (\n <Box\n sx={{\n width: 325,\n overflowY: 'auto',\n overflowX: 'hidden',\n backgroundColor: '#ffffff',\n flexShrink: 0,\n position: 'relative',\n }}\n >\n <activeSectionObj.Panel store={store} />\n </Box>\n )\n )}\n\n {/* Close / collapse button — rounded pill on right edge */}\n {activeSectionObj && (\n <Box\n onClick={() => { setActiveSection(null); store.openSidePanel(''); }}\n sx={{\n position: 'absolute',\n right: -16,\n top: '50%',\n transform: 'translateY(-50%)',\n width: 16,\n height: 52,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n backgroundColor: '#fff',\n border: '1px solid #e0e0e0',\n borderLeft: 'none',\n borderRadius: '0 10px 10px 0',\n boxShadow: '2px 0 6px rgba(0,0,0,0.06)',\n zIndex: 10,\n '&:hover': { backgroundColor: '#f5f5f5' },\n transition: 'background-color 0.15s',\n }}\n >\n <ChevronLeftIcon sx={{ fontSize: 14, color: '#aaa' }} />\n </Box>\n )}\n </Box>\n );\n});\n\nSidePanel.displayName = 'SidePanel';\nexport default SidePanel;\nexport { SidePanel };\n\n// Re-export sections for polotno-compatible import path:\n// import { TextSection } from 'labellife-design-tool/side-panel/side-panel'\nexport { TextSection } from './text-panel';\nexport { BackgroundSection } from './background-panel';\nexport { LayersSection } from './layers-panel';\nexport { ElementsSection } from './elements-panel';\nexport { UploadSection } from './upload-panel';\nexport { SectionTab } from './tab-button';\n","import React from 'react';\nimport { Box, CircularProgress, Typography } from '@mui/material';\n\nexport function ImagesGrid({\n images = [],\n getPreview,\n onSelect,\n rowsNumber = 2,\n isLoading = false,\n loadMore = false,\n itemHeight,\n}) {\n if (isLoading) {\n return (\n <Box sx={{ display: 'flex', justifyContent: 'center', py: 4 }}>\n <CircularProgress size={32} />\n </Box>\n );\n }\n\n if (!images || images.length === 0) {\n return (\n <Box sx={{ py: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n No items found\n </Typography>\n </Box>\n );\n }\n\n const columns = rowsNumber;\n const gap = 8;\n\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap}px`,\n overflowY: 'auto',\n flex: 1,\n }}\n >\n {images.map((item, index) => {\n const preview = getPreview ? getPreview(item) : item.src || item.url || item;\n return (\n <Box\n key={index}\n onClick={(e) => {\n if (onSelect) {\n const rect = e.currentTarget.getBoundingClientRect();\n onSelect(item, {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height,\n });\n }\n }}\n sx={{\n cursor: 'pointer',\n borderRadius: '4px',\n overflow: 'hidden',\n border: '1px solid #e0e0e0',\n aspectRatio: '1',\n height: itemHeight || 'auto',\n '&:hover': {\n borderColor: '#0d83cd',\n boxShadow: '0 0 0 1px #0d83cd',\n },\n transition: 'all 0.15s ease',\n }}\n >\n <img\n src={preview}\n alt=\"\"\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n display: 'block',\n }}\n loading=\"lazy\"\n />\n </Box>\n );\n })}\n </Box>\n );\n}\n\nexport default ImagesGrid;\n","import React, { useState, useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, Select, MenuItem, FormControl, InputLabel, TextField, FormControlLabel, Checkbox, Divider, Chip, Alert, Button } from '@mui/material';\nimport InputIcon from '@mui/icons-material/Input';\nimport TextFieldsIcon from '@mui/icons-material/TextFields';\nimport CalendarTodayIcon from '@mui/icons-material/CalendarToday';\nimport NumbersIcon from '@mui/icons-material/Numbers';\nimport ImageIcon from '@mui/icons-material/Image';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\n// ── Image input placeholder ──────────────────────────────────────────\nconst IMAGE_PLACEHOLDER_SRC = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400\" height=\"400\" viewBox=\"0 0 400 400\">\n <rect width=\"400\" height=\"400\" fill=\"#f0f2f5\" rx=\"12\"/>\n <rect x=\"110\" y=\"90\" width=\"180\" height=\"145\" rx=\"10\" fill=\"#dde1e7\"/>\n <circle cx=\"158\" cy=\"135\" r=\"22\" fill=\"#f0f2f5\"/>\n <polygon points=\"110,235 168,163 210,205 250,163 290,235\" fill=\"#c8cdd6\"/>\n <rect x=\"140\" y=\"268\" width=\"120\" height=\"14\" rx=\"7\" fill=\"#c8cdd6\"/>\n <rect x=\"160\" y=\"292\" width=\"80\" height=\"10\" rx=\"5\" fill=\"#dde1e7\"/>\n </svg>`\n)}`;\n\n// ── Date formatting helpers ──────────────────────────────────────────\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nconst DATE_FORMATS = [\n { key: 'MM-DD-YYYY', label: 'MM-DD-YYYY' },\n { key: 'MMMM-DD-YYYY', label: 'Month Name-DD-YYYY' },\n { key: 'MMMM-DD', label: 'Month Name-DD' },\n { key: 'YYYY', label: 'YYYY' },\n { key: 'MM-DD', label: 'MM-DD' },\n];\n\nfunction formatDate(date, format) {\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const yyyy = String(date.getFullYear());\n const monthName = MONTH_NAMES[date.getMonth()];\n\n switch (format) {\n case 'MM-DD-YYYY':\n return `${mm}-${dd}-${yyyy}`;\n case 'MMMM-DD-YYYY':\n return `${monthName}-${dd}-${yyyy}`;\n case 'MMMM-DD':\n return `${monthName}-${dd}`;\n case 'YYYY':\n return yyyy;\n case 'MM-DD':\n return `${mm}-${dd}`;\n default:\n return `${mm}-${dd}-${yyyy}`;\n }\n}\n\n// ── Card component ───────────────────────────────────────────────────\nconst InputFieldCard = ({ icon, label, description, onClick }) => (\n <Box\n onClick={onClick}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n p: 1.5,\n borderRadius: '8px',\n border: '1px solid #e0e0e0',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: 'rgba(13,131,205,0.06)',\n borderColor: '#0d83cd',\n },\n transition: 'all 0.15s ease',\n }}\n >\n <Box\n sx={{\n width: 40,\n height: 40,\n borderRadius: '8px',\n backgroundColor: 'rgba(13,131,205,0.08)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n color: '#0d83cd',\n }}\n >\n {icon}\n </Box>\n <Box sx={{ minWidth: 0 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 600, fontSize: 13, lineHeight: 1.3 }}>\n {label}\n </Typography>\n {description && (\n <Typography variant=\"caption\" sx={{ color: '#888', fontSize: 11, lineHeight: 1.2 }}>\n {description}\n </Typography>\n )}\n </Box>\n </Box>\n);\n\n// ── Panel content ────────────────────────────────────────────────────\nconst InputFieldsPanelContent = observer(({ store }) => {\n const [dateFormat, setDateFormat] = useState('MM-DD-YYYY');\n const [textPrompt, setTextPrompt] = useState('');\n const [datePrompt, setDatePrompt] = useState('');\n const [integerPrompt, setIntegerPrompt] = useState('');\n const [imagePrompt, setImagePrompt] = useState('');\n const [textRequired, setTextRequired] = useState(false);\n const [dateRequired, setDateRequired] = useState(false);\n const [integerRequired, setIntegerRequired] = useState(false);\n const [imageRequired, setImageRequired] = useState(false);\n\n const addInputElement = (inputType, extra = {}) => {\n const page = store.activePage;\n if (!page) return;\n\n const scaleFactor = Math.min(store.width, store.height) / 500;\n\n if (inputType === 'image') {\n const size = Math.min(store.width, store.height) * 0.3;\n page.addElement({\n type: 'image',\n x: store.width / 2 - size / 2,\n y: store.height / 2 - size / 2,\n width: size,\n height: size,\n src: IMAGE_PLACEHOLDER_SRC,\n custom: {\n inputField: true,\n inputType: 'image',\n placeholder: t('sidePanel.inputFields.imagePlaceholder', 'Upload image'),\n promptText: extra.promptText || t('sidePanel.inputFields.defaultImagePrompt', 'Please upload an image'),\n required: extra.required || false,\n },\n });\n } else {\n let dummyText = '';\n let placeholder = '';\n\n let defaultPrompt = '';\n\n switch (inputType) {\n case 'text':\n dummyText = t('sidePanel.inputFields.sampleText', 'Sample Text');\n placeholder = t('sidePanel.inputFields.textPlaceholder', 'Enter text');\n defaultPrompt = t('sidePanel.inputFields.defaultTextPrompt', 'Please enter your text');\n break;\n case 'date':\n dummyText = formatDate(new Date(), extra.dateFormat || 'MM-DD-YYYY');\n placeholder = t('sidePanel.inputFields.datePlaceholder', 'Select date');\n defaultPrompt = t('sidePanel.inputFields.defaultDatePrompt', 'Please select a date');\n break;\n case 'integer':\n dummyText = '0';\n placeholder = t('sidePanel.inputFields.integerPlaceholder', 'Enter number');\n defaultPrompt = t('sidePanel.inputFields.defaultIntegerPrompt', 'Please enter a number');\n break;\n default:\n dummyText = 'Input';\n placeholder = 'Input';\n defaultPrompt = 'Please provide input';\n }\n\n const fontSize = Math.round(20 * scaleFactor);\n const textWidth = Math.round(250 * scaleFactor);\n\n page.addElement({\n type: 'text',\n x: store.width / 2 - textWidth / 2,\n y: store.height / 2 - fontSize,\n width: textWidth,\n height: fontSize * 2,\n text: dummyText,\n fontSize: fontSize,\n fontFamily: 'Roboto',\n align: 'center',\n fill: '#333333',\n custom: {\n inputField: true,\n inputType: inputType,\n placeholder: placeholder,\n promptText: extra.promptText || defaultPrompt,\n required: extra.required || false,\n ...(inputType === 'date' ? { dateFormat: extra.dateFormat || 'MM-DD-YYYY' } : {}),\n },\n });\n }\n\n store.history.addUndoState();\n };\n\n return (\n <Box sx={{ p: 2, overflowY: 'auto', height: '100%' }}>\n <Typography variant=\"subtitle2\" sx={{ mb: 2, color: '#555', fontSize: 13 }}>\n {t('sidePanel.inputFields.title', 'Input Fields')}\n </Typography>\n <Typography variant=\"caption\" sx={{ display: 'block', mb: 2, color: '#999', fontSize: 11 }}>\n {t('sidePanel.inputFields.description', 'Add placeholder elements that require user input when the template is used.')}\n </Typography>\n\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>\n {/* Text input */}\n <InputFieldCard\n icon={<TextFieldsIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.textInput', 'Text Input')}\n description={t('sidePanel.inputFields.textInputDesc', 'Free text entry')}\n onClick={() => addInputElement('text', { promptText: textPrompt, required: textRequired })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={textPrompt}\n onChange={(e) => setTextPrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={textRequired} onChange={(e) => setTextRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n\n {/* Date input */}\n <InputFieldCard\n icon={<CalendarTodayIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.dateInput', 'Date Input')}\n description={t('sidePanel.inputFields.dateInputDesc', 'Date value with format')}\n onClick={() => addInputElement('date', { dateFormat, promptText: datePrompt, required: dateRequired })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={datePrompt}\n onChange={(e) => setDatePrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={dateRequired} onChange={(e) => setDateRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n\n {/* Date format selector */}\n <FormControl size=\"small\" sx={{ ml: 6.5, mr: 1 }}>\n <InputLabel sx={{ fontSize: 12 }}>\n {t('sidePanel.inputFields.dateFormat', 'Date format')}\n </InputLabel>\n <Select\n value={dateFormat}\n onChange={(e) => setDateFormat(e.target.value)}\n label={t('sidePanel.inputFields.dateFormat', 'Date format')}\n sx={{ fontSize: 12 }}\n >\n {DATE_FORMATS.map((fmt) => (\n <MenuItem key={fmt.key} value={fmt.key} sx={{ fontSize: 12 }}>\n {fmt.label} — {formatDate(new Date(), fmt.key)}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n {/* Integer input */}\n <InputFieldCard\n icon={<NumbersIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.integerInput', 'Integer Input')}\n description={t('sidePanel.inputFields.integerInputDesc', 'Numeric value')}\n onClick={() => addInputElement('integer', { promptText: integerPrompt, required: integerRequired })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={integerPrompt}\n onChange={(e) => setIntegerPrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={integerRequired} onChange={(e) => setIntegerRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n\n {/* Image input */}\n <InputFieldCard\n icon={<ImageIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.imageInput', 'Image Input')}\n description={t('sidePanel.inputFields.imageInputDesc', 'Image placeholder')}\n onClick={() => addInputElement('image', { promptText: imagePrompt, required: imageRequired })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={imagePrompt}\n onChange={(e) => setImagePrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={imageRequired} onChange={(e) => setImageRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n </Box>\n\n {/* ── Mark existing element as variable ─────────────────────── */}\n <Divider sx={{ my: 2 }} />\n <Typography variant=\"subtitle2\" sx={{ mb: 1, color: '#555', fontSize: 13 }}>\n {t('sidePanel.inputFields.markTitle', 'Mark Selected as Variable')}\n </Typography>\n <Typography variant=\"caption\" sx={{ display: 'block', mb: 2, color: '#999', fontSize: 11 }}>\n {t('sidePanel.inputFields.markDescription', 'Convert any selected text or image element into a variable, preserving its existing style.')}\n </Typography>\n <MarkAsVariableForm store={store} />\n </Box>\n );\n});\n\n// ── Mark-as-variable sub-form ─────────────────────────────────────────\nconst MarkAsVariableForm = observer(({ store }) => {\n const [markLabel, setMarkLabel] = useState('');\n const [markRequired, setMarkRequired] = useState(false);\n const [markInputType, setMarkInputType] = useState('text');\n\n const selectedIds = store.selectedElementsIds || [];\n const selectedElement =\n selectedIds.length === 1 ? store.getElementById(selectedIds[0]) : null;\n\n const isImageElement = selectedElement?.type === 'image';\n const isTextElement = selectedElement?.type === 'text';\n const isSupportedElement = isImageElement || isTextElement;\n const isAlreadyVariable = !!selectedElement?.custom?.inputField;\n\n useEffect(() => {\n if (selectedElement && isSupportedElement) {\n setMarkLabel(selectedElement.custom?.promptText || '');\n setMarkRequired(!!selectedElement.custom?.required);\n setMarkInputType(\n isImageElement ? 'image' : (selectedElement.custom?.inputType || 'text')\n );\n } else {\n setMarkLabel('');\n setMarkRequired(false);\n setMarkInputType('text');\n }\n }, [selectedElement?.id]);\n\n const handleMark = () => {\n if (!selectedElement || !markLabel.trim()) return;\n selectedElement.set({\n custom: {\n ...selectedElement.custom,\n inputField: true,\n promptText: markLabel.trim(),\n inputType: isImageElement ? 'image' : markInputType,\n required: markRequired,\n },\n });\n store.history.addUndoState();\n };\n\n const handleUnmark = () => {\n if (!selectedElement) return;\n const {\n inputField: _f,\n promptText: _p,\n inputType: _it,\n required: _r,\n placeholder: _pl,\n ...rest\n } = selectedElement.custom || {};\n selectedElement.set({ custom: rest });\n store.history.addUndoState();\n };\n\n if (!selectedElement) {\n return (\n <Typography variant=\"caption\" sx={{ color: '#bbb', display: 'block', textAlign: 'center', py: 1 }}>\n {t('sidePanel.inputFields.noSelection', 'Select a text or image element on the canvas')}\n </Typography>\n );\n }\n\n if (!isSupportedElement) {\n return (\n <Alert severity=\"info\" sx={{ fontSize: 11, py: 0.5 }}>\n {t('sidePanel.inputFields.unsupportedType', 'Only text and image elements can be marked as variables.')}\n </Alert>\n );\n }\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>\n {isAlreadyVariable && (\n <Alert severity=\"success\" sx={{ fontSize: 11, py: 0.5 }}>\n {t('sidePanel.inputFields.alreadyVariable', 'Variable')}{': '}\n <strong>{selectedElement.custom.promptText}</strong>\n <Chip label={selectedElement.custom.inputType} size=\"small\" sx={{ ml: 1, fontSize: 10 }} />\n </Alert>\n )}\n\n <Box sx={{ bgcolor: '#f5f5f5', borderRadius: 1, p: 1.5 }}>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {t('sidePanel.inputFields.selectedElement', 'Selected')}:{' '}\n <strong style={{ textTransform: 'capitalize' }}>{selectedElement.type}</strong>\n </Typography>\n {isTextElement && selectedElement.text && (\n <Typography variant=\"body2\" sx={{ mt: 0.5, fontStyle: 'italic', fontSize: 11, color: '#555' }} noWrap>\n &ldquo;{selectedElement.text}&rdquo;\n </Typography>\n )}\n </Box>\n\n <TextField\n size=\"small\"\n label={t('sidePanel.inputFields.variableLabel', 'Variable Label')}\n placeholder={t('sidePanel.inputFields.variableLabelHint', 'e.g. First Name, Photo...')}\n value={markLabel}\n onChange={(e) => setMarkLabel(e.target.value)}\n fullWidth\n sx={{ '& .MuiInputBase-input': { fontSize: 12 } }}\n />\n\n {isTextElement && (\n <FormControl size=\"small\" fullWidth>\n <InputLabel sx={{ fontSize: 12 }}>\n {t('sidePanel.inputFields.inputType', 'Input Type')}\n </InputLabel>\n <Select\n value={markInputType}\n onChange={(e) => setMarkInputType(e.target.value)}\n label={t('sidePanel.inputFields.inputType', 'Input Type')}\n sx={{ fontSize: 12 }}\n >\n <MenuItem value=\"text\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.textInput', 'Text Input')}</MenuItem>\n <MenuItem value=\"integer\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.integerInput', 'Integer Input')}</MenuItem>\n <MenuItem value=\"date\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.dateInput', 'Date Input')}</MenuItem>\n </Select>\n </FormControl>\n )}\n\n <FormControlLabel\n control={\n <Checkbox\n size=\"small\"\n checked={markRequired}\n onChange={(e) => setMarkRequired(e.target.checked)}\n />\n }\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n />\n\n <Button\n variant=\"contained\"\n size=\"small\"\n fullWidth\n disabled={!markLabel.trim()}\n onClick={handleMark}\n sx={{ textTransform: 'none', fontSize: 12 }}\n >\n {isAlreadyVariable\n ? t('sidePanel.inputFields.updateVariable', 'Update Variable')\n : t('sidePanel.inputFields.markAsVariable', 'Mark as Variable')}\n </Button>\n\n {isAlreadyVariable && (\n <Button\n variant=\"outlined\"\n color=\"error\"\n size=\"small\"\n fullWidth\n onClick={handleUnmark}\n sx={{ textTransform: 'none', fontSize: 12 }}\n >\n {t('sidePanel.inputFields.removeVariable', 'Remove Variable')}\n </Button>\n )}\n </Box>\n );\n});\n\nexport const InputFieldsSection = {\n name: 'inputFields',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.inputFields.tab', 'Input Fields')} {...props}>\n <InputIcon />\n </SectionTab>\n ),\n Panel: InputFieldsPanelContent,\n};\n","const GOOGLE_FONTS_API = 'https://www.googleapis.com/webfonts/v1/webfonts';\n\nlet cachedFonts = null;\n\nexport async function fetchGoogleFonts(apiKey) {\n if (cachedFonts) return cachedFonts;\n\n try {\n const url = apiKey\n ? `${GOOGLE_FONTS_API}?key=${apiKey}&sort=popularity`\n : `${GOOGLE_FONTS_API}?sort=popularity`;\n const response = await fetch(url);\n const data = await response.json();\n cachedFonts = (data.items || []).map((font) => ({\n fontFamily: font.family,\n variants: font.variants || [],\n category: font.category,\n url: `https://fonts.googleapis.com/css2?family=${encodeURIComponent(\n font.family\n )}&display=swap`,\n }));\n return cachedFonts;\n } catch (e) {\n console.warn('Failed to fetch Google Fonts list', e);\n return [];\n }\n}\n\nexport async function loadGoogleFont(fontFamily) {\n const id = `google-font-${fontFamily.replace(/\\s+/g, '-').toLowerCase()}`;\n const existing = document.getElementById(id);\n\n if (!existing) {\n // Add the stylesheet and wait for it to load before checking fonts\n await new Promise((resolve) => {\n const link = document.createElement('link');\n link.id = id;\n link.href = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(\n fontFamily\n )}:wght@100;200;300;400;500;600;700;800;900&display=swap`;\n link.rel = 'stylesheet';\n link.onload = () => resolve();\n link.onerror = () => resolve();\n document.head.appendChild(link);\n });\n }\n\n // Now that the CSS is loaded, wait for the actual font files to download\n try {\n await document.fonts.load(`16px \"${fontFamily}\"`);\n await document.fonts.load(`bold 16px \"${fontFamily}\"`);\n await document.fonts.ready;\n } catch (e) {\n console.warn(`Font \"${fontFamily}\" may not have loaded correctly.`, e);\n }\n}\n\nexport function clearFontCache() {\n cachedFonts = null;\n}\n\n// Comprehensive list of Google Fonts matching Polotno's font library\nexport const DEFAULT_FONTS = [\n 'ABeeZee','Abel','Abhaya Libre','Abril Fatface','Aclonica','Acme','Actor',\n 'Adamina','Advent Pro','Aguafina Script','Akronim','Aladin','Alata','Alatsi',\n 'Albert Sans','Aldrich','Alef','Alegreya','Alegreya Sans','Alegreya Sans SC',\n 'Alegreya SC','Aleo','Alex Brush','Alfa Slab One','Alice','Alike',\n 'Alike Angular','Allan','Allerta','Allerta Stencil','Allison','Allura',\n 'Almarai','Almendra','Almendra Display','Almendra SC','Alumni Sans',\n 'Alumni Sans Inline One','Amarante','Amaranth','Amatic SC','Amethysta',\n 'Amiko','Amiri','Amita','Anaheim','Andada Pro','Andika','Anek Bangla',\n 'Anek Devanagari','Anek Gujarati','Anek Gurmukhi','Anek Kannada',\n 'Anek Latin','Anek Malayalam','Anek Odia','Anek Tamil','Anek Telugu',\n 'Angkor','Annie Use Your Telescope','Anonymous Pro','Antic','Antic Didone',\n 'Antic Slab','Anton','Antonio','Anybody','Arapey','Arbutus','Arbutus Slab',\n 'Architects Daughter','Archivo','Archivo Black','Archivo Narrow','Are You Serious',\n 'Aref Ruqaa','Arima','Arimo','Arizonia','Armata','Arsenal','Artifika',\n 'Arvo','Arya','Asap','Asap Condensed','Asar','Asset','Assistant',\n 'Astloch','Asul','Athiti','Atkinson Hyperlegible','Atma','Atomic Age',\n 'Aubrey','Audiowide','Autour One','Average','Average Sans','Averia Gruesa Libre',\n 'Averia Libre','Averia Sans Libre','Averia Serif Libre',\n 'Azeret Mono','B612','B612 Mono','Bad Script','Bahiana','Bahianita',\n 'Bai Jamjuree','Bakbak One','Ballet','Baloo 2','Baloo Bhai 2',\n 'Baloo Bhaijaan 2','Baloo Bhaina 2','Baloo Chettan 2','Baloo Da 2',\n 'Baloo Paaji 2','Baloo Tamma 2','Baloo Tammudu 2','Baloo Thambi 2',\n 'Balsamiq Sans','Balthazar','Bangers','Barlow','Barlow Condensed',\n 'Barlow Semi Condensed','Barriecito','Barrio','Basic','Baskervville',\n 'Battambang','Baumans','Bayon','Be Vietnam Pro','Beau Rivage',\n 'Bebas Neue','Belgrano','Bellefair','Belleza','Bellota','Bellota Text',\n 'BenchNine','Benne','Bentham','Berkshire Swash','Besley','Beth Ellen',\n 'Bevan','BIZ UDGothic','BIZ UDMincho','BIZ UDPGothic','BIZ UDPMincho',\n 'Big Shoulders Display','Big Shoulders Inline Display',\n 'Big Shoulders Inline Text','Big Shoulders Stencil Display',\n 'Big Shoulders Stencil Text','Big Shoulders Text','Bigelow Rules',\n 'Bigshot One','Bilbo','Bilbo Swash Caps','BioRhyme','BioRhyme Expanded',\n 'Birthstone','Birthstone Bounce','Bitter','Black And White Picture',\n 'Black Han Sans','Black Ops One','Blaka','Blaka Hollow','Blaka Ink',\n 'Blinker','Bodoni Moda','Bokor','Bona Nova','Bonbon','Bonheur Royale',\n 'Boogaloo','Bowlby One','Bowlby One SC','Brawler','Bree Serif',\n 'Brygada 1918','Bubblegum Sans','Bubbler One','Buda','Buenard',\n 'Bungee','Bungee Hairline','Bungee Inline','Bungee Outline',\n 'Bungee Shade','Bungee Spice','Butcherman','Butterfly Kids',\n 'Cabin','Cabin Condensed','Cabin Sketch','Caesar Dressing','Cagliostro',\n 'Cairo','Cairo Play','Caladea','Calistoga','Calligraffitti','Cambay',\n 'Cambo','Candal','Cantarell','Cantata One','Cantora One','Caprasimo',\n 'Capriola','Caramel','Carattere','Cardo','Carlito','Carme','Carrois Gothic',\n 'Carrois Gothic SC','Carter One','Castoro','Catamaran','Caudex','Caveat',\n 'Caveat Brush','Cedarville Cursive','Ceviche One','Chakra Petch',\n 'Changa','Changa One','Chango','Charis SIL','Charm','Charmonman',\n 'Chathura','Chau Philomene One','Chela One','Chelsea Market',\n 'Chenla','Cherry Bomb One','Cherry Cream Soda','Cherry Swash',\n 'Chewy','Chicle','Chilanka','Chivo','Chivo Mono','Chonburi',\n 'Cinzel','Cinzel Decorative','Clicker Script','Coda','Coda Caption',\n 'Codystar','Coiny','Combo','Comfortaa','Comforter','Comforter Brush',\n 'Comic Neue','Coming Soon','Commissioner','Concert One','Condiment',\n 'Content','Contrail One','Convergence','Cookie','Copse','Corben',\n 'Corinthia','Cormorant','Cormorant Garamond','Cormorant Infant',\n 'Cormorant SC','Cormorant Unicase','Cormorant Upright','Courgette',\n 'Courier Prime','Cousine','Coustard','Covered By Your Grace',\n 'Crafty Girls','Creepster','Crete Round','Crimson Pro','Crimson Text',\n 'Croissant One','Crushed','Cuprum','Cute Font','Cutive','Cutive Mono',\n 'DM Mono','DM Sans','DM Serif Display','DM Serif Text',\n 'Damion','Dancing Script','Dangrek','Darker Grotesque','David Libre',\n 'Dawning of a New Day','Days One','Dekko','Dela Gothic One','Delius',\n 'Delius Swash Caps','Delius Unicase','Della Respira','Denk One',\n 'Devonshire','Dhurjati','Didact Gothic','Diplomata','Diplomata SC',\n 'Do Hyeon','Dokdo','Domine','Donegal One','Dongle','Doppio One',\n 'Dorsa','Dosis','DotGothic16','Dr Sugiyama','Duru Sans',\n 'DynaPuff','Dynalight',\n 'EB Garamond','Eagle Lake','East Sea Dokdo','Eater','Economica',\n 'Eczar','El Messiri','Electrolize','Elsie','Elsie Swash Caps',\n 'Emblema One','Emilys Candy','Encode Sans','Encode Sans Condensed',\n 'Encode Sans Expanded','Encode Sans SC','Encode Sans Semi Condensed',\n 'Encode Sans Semi Expanded','Engagement','Englebert','Enriqueta',\n 'Ephesis','Epilogue','Erica One','Esteban','Estonia','Euphoria Script',\n 'Ewert','Exo','Exo 2','Expletus Sans','Explora',\n 'Fahkwang','Familjen Grotesk','Fanwood Text','Farro','Farsan',\n 'Fascinate','Fascinate Inline','Faster One','Fasthand','Fauna One',\n 'Faustina','Federant','Federo','Felipa','Fenix','Festive',\n 'Finger Paint','Finlandica','Fira Code','Fira Mono','Fira Sans',\n 'Fira Sans Condensed','Fira Sans Extra Condensed','Fjalla One',\n 'Fjord One','Flamenco','Flavors','Fleur De Leah','Flow Block',\n 'Flow Circular','Flow Rounded','Fondamento','Fontdiner Swanky',\n 'Forum','Fragment Mono','Francois One','Frank Ruhl Libre',\n 'Fraunces','Freckle Face','Fredericka the Great','Fredoka',\n 'Freehand','Fresca','Frijole','Fruktur','Fugaz One','Fuggles',\n 'Fuzzy Bubbles',\n 'GFS Didot','GFS Neohellenic','Gabriela','Gaegu','Gafata',\n 'Galada','Galdeano','Galindo','Gamja Flower','Gantari',\n 'Gas','Gayathri','Gelasio','Gemunu Libre','Genos',\n 'Gentium Book Plus','Gentium Plus','Geo','Georama','Geostar',\n 'Geostar Fill','Germania One','Gideon Roman','Gidugu',\n 'Gilda Display','Girassol','Give You Glory','Glass Antiqua',\n 'Glegoo','Gloria Hallelujah','Glory','Gluten','Goblin One',\n 'Gochi Hand','Goldman','Goldplay','Golos Text','Gorditas',\n 'Gothic A1','Gotu','Goudy Bookletter 1911','Gowun Batang',\n 'Gowun Dodum','Graduate','Grand Hotel','Grandstander',\n 'Grape Nuts','Gravitas One','Great Vibes','Grechen Fuemen',\n 'Grenze','Grenze Gotisch','Grey Qo','Griffy','Gruppo',\n 'Gudea','Gugi','Gulzar','Gupter','Gurajada','Gwendolyn',\n 'Habibi','Hachi Maru Pop','Hahmlet','Halant','Hammersmith One',\n 'Hanalei','Hanalei Fill','Handlee','Hanken Grotesk','Hanuman',\n 'Happy Monkey','Harmattan','Headland One','Heebo','Henny Penny',\n 'Hepta Slab','Herr Von Muellerhoff','Hi Melody','Hina Mincho',\n 'Hind','Hind Guntur','Hind Madurai','Hind Siliguri','Hind Vadodara',\n 'Holtwood One SC','Homemade Apple','Homenaje','Hubballi',\n 'Hurricane','IBM Plex Mono','IBM Plex Sans','IBM Plex Sans Arabic',\n 'IBM Plex Sans Condensed','IBM Plex Sans Devanagari','IBM Plex Sans Hebrew',\n 'IBM Plex Sans JP','IBM Plex Sans KR','IBM Plex Sans Thai',\n 'IBM Plex Sans Thai Looped','IBM Plex Serif','Iceberg','Iceland',\n 'Imbue','Imperial Script','Imprima','Inconsolata','Inder',\n 'Indie Flower','Ingrid Darling','Inika','Inknut Antiqua',\n 'Inria Sans','Inria Serif','Inspiration','Inter','Inter Tight',\n 'Irish Grover','Island Moments','Istok Web','Italiana','Italianno',\n 'Itim','Jacques Francois','Jacques Francois Shadow',\n 'Jaldi','JetBrains Mono','Jim Nightshade','Joan','Jockey One',\n 'Jolly Lodger','Jomhuria','Jomolhari','Josefin Sans','Josefin Slab',\n 'Jost','Joti One','Jua','Judson','Julee','Julius Sans One',\n 'Junge','Jura',\n 'K2D','Kadwa','Kaisei Decol','Kaisei HarunoUmi','Kaisei Opti',\n 'Kaisei Tokumin','Kalam','Kameron','Kanit','Kantumruy Pro',\n 'Karantina','Karla','Karma','Katibeh','Kaushan Script','Kavivanar',\n 'Kavoon','Kdam Thmor Pro','Keania One','Kelly Slab','Kenia',\n 'Khand','Khmer','Khula','Kings','Kirang Haerang','Kite One',\n 'Kiwi Maru','Klee One','Knewave','KoHo','Kodchasan','Koh Santepheap',\n 'Kolker Brush','Konkhmer Sleokchher','Kosugi','Kosugi Maru',\n 'Kotta One','Koulen','Kranky','Kreon','Kristi','Krona One',\n 'Krub','Kufam','Kulim Park','Kumar One','Kumar One Outline',\n 'Kumbh Sans','Kurale',\n 'La Belle Aurore','Lacquer','Laila','Lakki Reddy','Lalezar',\n 'Lancelot','Langar','Lango','Lateef','Lato','Lavishly Yours',\n 'League Gothic','League Script','League Spartan','Leckerli One',\n 'Ledger','Lekton','Lemon','Lemonada','Lexend','Lexend Deca',\n 'Lexend Exa','Lexend Giga','Lexend Mega','Lexend Peta',\n 'Lexend Tera','Lexend Zetta','Libre Barcode 128',\n 'Libre Barcode 128 Text','Libre Barcode 39','Libre Barcode 39 Extended',\n 'Libre Barcode 39 Extended Text','Libre Barcode 39 Text',\n 'Libre Barcode EAN13 Text','Libre Baskerville','Libre Bodoni',\n 'Libre Caslon Display','Libre Caslon Text','Libre Franklin',\n 'Licorice','Life Savers','Lilita One','Lily Script One',\n 'Limelight','Linden Hill','Lingua Franca','Literata','Liu Jian Mao Cao',\n 'Livvic','Lobster','Lobster Two','Londrina Outline',\n 'Londrina Shadow','Londrina Sketch','Londrina Solid','Long Cang',\n 'Lora','Love Light','Love Ya Like A Sister','Loved by the King',\n 'Lovers Quarrel','Luckiest Guy','Lusitana','Lustria','Luxurious Roman',\n 'Luxurious Script',\n 'M PLUS 1','M PLUS 1 Code','M PLUS 1p','M PLUS 2','M PLUS Code Latin',\n 'M PLUS Rounded 1c','Ma Shan Zheng','Macondo','Macondo Swash Caps',\n 'Mada','Magra','Maiden Orange','Maitree','Major Mono Display',\n 'Mako','Mali','Mallanna','Mandali','Manjari','Manrope','Mansalva',\n 'Manuale','Marcellus','Marcellus SC','Marck Script','Margarine',\n 'Marhey','Markazi Text','Marko One','Marmelad','Martel',\n 'Martel Sans','Marvel','Mate','Mate SC','Maven Pro',\n 'McLaren','Mea Culpa','Meddon','MedievalSharp','Medula One',\n 'Meera Inimai','Megrim','Meie Script','Meow Script','Merienda',\n 'Merriweather','Merriweather Sans','Metal','Metal Mania',\n 'Metamorphous','Metrophobic','Michroma','Milonga','Miltonian',\n 'Miltonian Tattoo','Mina','Miniver','Miriam Libre','Mirza',\n 'Miss Fajardose','Mitr','Mochiy Pop One','Mochiy Pop P One',\n 'Modak','Modern Antiqua','Mogra','Mohave','Moirai One','Molengo',\n 'Molle','Monda','Monofett','Monoton','Monsieur La Doulaise',\n 'Montaga','Montagu Slab','MonteCarlo','Montez','Montserrat',\n 'Montserrat Alternates','Montserrat Subrayada','Moon Dance',\n 'Moul','Moulpali','Mountains of Christmas','Mouse Memoirs',\n 'Mr Bedfort','Mr Dafoe','Mr De Haviland','Mrs Saint Delafield',\n 'Mrs Sheppards','Mukta','Mukta Mahee','Mukta Malar','Mukta Vaani',\n 'Mulish','Murecho','MuseoModerno','My Soul','Mynerve','Mystery Quest',\n 'NTR','Nabla','Nanum Brush Script','Nanum Gothic',\n 'Nanum Gothic Coding','Nanum Myeongjo','Nanum Pen Script',\n 'Neonderthaw','Nerko One','Neucha','Neuton','New Rocker',\n 'New Tegomin','News Cycle','Newsreader','Niconne','Niramit',\n 'Nixie One','Nobile','Nokora','Norican','Nosifer',\n 'Notable','Nothing You Could Do','Noticia Text','Noto Color Emoji',\n 'Noto Emoji','Noto Kufi Arabic','Noto Music','Noto Naskh Arabic',\n 'Noto Nastaliq Urdu','Noto Sans','Noto Sans Arabic',\n 'Noto Sans Display','Noto Sans Mono','Noto Serif',\n 'Noto Serif Display','Nova Cut','Nova Flat','Nova Mono',\n 'Nova Oval','Nova Round','Nova Script','Nova Slim','Nova Square',\n 'Numans','Nunito','Nunito Sans',\n 'Odibee Sans','Odor Mean Chey','Offside','Oi','Old Standard TT',\n 'Oldenburg','Ole','Oleo Script','Oleo Script Swash Caps',\n 'Oooh Baby','Open Sans','Oranienbaum','Orbit','Orbitron',\n 'Oregano','Orelega One','Orienta','Original Surfer','Oswald',\n 'Outfit','Over the Rainbow','Overlock','Overlock SC','Overpass',\n 'Overpass Mono','Ovo','Oxanium','Oxygen','Oxygen Mono',\n 'PT Mono','PT Sans','PT Sans Caption','PT Sans Narrow','PT Serif',\n 'PT Serif Caption','Pacifico','Padauk','Padyakke Expanded One',\n 'Palanquin','Palanquin Dark','Palette Mosaic','Pangolin','Paprika',\n 'Parisienne','Passero One','Passion One','Passions Conflict',\n 'Pathway Extreme','Pathway Gothic One','Patrick Hand','Patrick Hand SC',\n 'Pattaya','Patua One','Pavanam','Paytone One','Peddana',\n 'Peralta','Permanent Marker','Petit Formal Script','Petrona',\n 'Philosopher','Phudu','Piazzolla','Piedra','Pinyon Script',\n 'Pirata One','Plaster','Play','Playball','Playfair Display',\n 'Playfair Display SC','Playpen Sans','Plus Jakarta Sans',\n 'Podkova','Poiret One','Poller One','Poltawski Nowy','Poly',\n 'Pompiere','Pontano Sans','Poor Story','Poppins','Port Lligat Sans',\n 'Port Lligat Slab','Potta One','Pragati Narrow','Praise',\n 'Prata','Preahvihear','Press Start 2P','Pridi','Princess Sofia',\n 'Prociono','Prompt','Prosto One','Proza Libre','Public Sans',\n 'Puppies Play','Puritan','Purple Purse','Pushster',\n 'Quando','Quantico','Quattrocento','Quattrocento Sans',\n 'Questrial','Quicksand','Quintessential','Qwigley','Qwitcher Grypen',\n 'REM','Racing Sans One','Radio Canada','Radley','Rajdhani',\n 'Rakkas','Raleway','Raleway Dots','Ramabhadra','Ramaraja',\n 'Rambla','Rammetto One','Rampart One','Ranchers','Rancho',\n 'Ranga','Rasa','Rationale','Ravi Prakash','Readex Pro',\n 'Recursive','Red Hat Display','Red Hat Mono','Red Hat Text',\n 'Red Rose','Redacted','Redacted Script','Redressed','Reem Kufi',\n 'Reem Kufi Fun','Reem Kufi Ink','Reenie Beanie','Reggae One',\n 'Revalia','Rhodium Libre','Ribeye','Ribeye Marrow','Righteous',\n 'Risque','Road Rage','RocknRoll One','Rokkitt','Romanesco',\n 'Ropa Sans','Rosario','Rosarivo','Rouge Script','Rowdies',\n 'Rozha One','Rubik','Rubik Beastly','Rubik Bubbles',\n 'Rubik Burned','Rubik Dirt','Rubik Distressed','Rubik Gemstones',\n 'Rubik Glitch','Rubik Iso','Rubik Marker Hatch','Rubik Maze',\n 'Rubik Microbe','Rubik Mono One','Rubik Moonrocks',\n 'Rubik Pixels','Rubik Puddles','Rubik Spray Paint',\n 'Rubik Storm','Rubik Vinyl','Rubik Wet Paint','Ruda','Rufina',\n 'Ruge Boogie','Ruluko','Rum Raisin','Ruslan Display',\n 'Russo One','Ruthie','Rye',\n 'STIX Two Text','Sacramento','Sahitya','Sail','Saira',\n 'Saira Condensed','Saira Extra Condensed','Saira Semi Condensed',\n 'Saira Stencil One','Salsa','Sanchez','Sancreek','Sansita',\n 'Sansita Swashed','Sarabun','Sarala','Sarina','Sarpanch',\n 'Sassybold','Satisfy','Sawarabi Gothic','Sawarabi Mincho',\n 'Scada','Scheherazade New','Schoolbell','Scope One',\n 'Seaweed Script','Secular One','Sedgwick Ave','Sedgwick Ave Display',\n 'Sen','Send Flowers','Sevillana','Seymour One','Shadows Into Light',\n 'Shadows Into Light Two','Shalimar','Shanti','Share',\n 'Share Tech','Share Tech Mono','Shippori Antique','Shippori Antique B1',\n 'Shippori Mincho','Shippori Mincho B1','Shizuru','Shojumaru',\n 'Short Stack','Shrikhand','Siemreap','Sigmar One','Signika',\n 'Signika Negative','Silkscreen','Simonetta','Single Day',\n 'Sintony','Sirin Stencil','Six Caps','Skranji','Slabo 13px',\n 'Slabo 27px','Slackey','Smokum','Smooch','Smooch Sans',\n 'Smythe','Sniglet','Snippet','Snowburst One','Sofadi One',\n 'Sofia','Sofia Sans','Sofia Sans Condensed','Sofia Sans Extra Condensed',\n 'Sofia Sans Semi Condensed','Solitreo','Solway','Song Myung',\n 'Sono','Sonsie One','Sora','Sorts Mill Goudy','Source Code Pro',\n 'Source Sans 3','Source Sans Pro','Source Serif 4','Source Serif Pro',\n 'Space Grotesk','Space Mono','Special Elite','Spectral',\n 'Spectral SC','Spicy Rice','Spinnaker','Spirax','Splash',\n 'Spline Sans','Spline Sans Mono','Squada One','Square Peg',\n 'Sree Krushnadevaraya','Sriracha','Srisakdi','Staatliches',\n 'Stalemate','Stalinist One','Stardos Stencil','Stick',\n 'Stick No Bills','Stint Ultra Condensed','Stint Ultra Expanded',\n 'Stoke','Strait','Style Script','Stylish','Sue Ellen Francisco',\n 'Suez One','Sulphur Point','Sumana','Sunflower','Sunshiney',\n 'Supermercado One','Sura','Suranna','Suravaram','Suwannaphum',\n 'Swanky and Moo Moo','Syncopate','Syne','Syne Mono','Syne Tactile',\n 'Tac One','Tai Heritage Pro','Tajawal','Tangerine','Tapestry',\n 'Taprom','Tauri','Taviraj','Teko','Telex','Tenali Ramakrishna',\n 'Tenor Sans','Text Me One','Texturina','Thasadith',\n 'The Girl Next Door','The Nautigal','Tienne','Tillana',\n 'Tilt Neon','Tilt Prism','Tilt Warp','Timmana','Tinos',\n 'Tiro Bangla','Tiro Devanagari Marathi','Tiro Devanagari Sanskrit',\n 'Tiro Gurmukhi','Tiro Kannada','Tiro Tamil','Tiro Telugu',\n 'Titan One','Titillium Web','Tomorrow','Tourney','Trade Winds',\n 'Train One','Trirong','Trispace','Trocchi','Trochut','Truculenta',\n 'Trykker','Tsukimi Rounded','Tulpen One','Turret Road',\n 'Twinkle Star','Ubuntu','Ubuntu Condensed','Ubuntu Mono','Uchen',\n 'Ultra','Unbounded','Uncial Antiqua','Underdog','Unica One',\n 'UnifrakturCook','UnifrakturMaguntia','Unkempt','Unlock',\n 'Unna','Updock','Urbanist','Vast Shadow','Vazirmatn',\n 'Vesper Libre','Viaoda Libre','Vibes','Vibur',\n 'Vidaloka','Viga','Voces','Volkhov','Vollkorn','Vollkorn SC',\n 'Voltaire','Vujahday Script',\n 'Waiting for the Sunrise','Wallpoet','Walter Turncoat',\n 'Warnes','Waterfall','Wavefont','Wellfleet','Wendy One',\n 'Whisper','WindSong','Wire One','Work Sans','Wix Madefor Display',\n 'Wix Madefor Text',\n 'Xanh Mono','Yaldevi','Yanone Kaffeesatz','Yantramanav',\n 'Yatra One','Yellowtail','Yeon Sung','Yeseva One','Yesteryear',\n 'Yomogi','Yrsa','Ysabeau','Ysabeau Infant','Ysabeau Office',\n 'Ysabeau SC','Yuji Boku','Yuji Hentaigana Akari',\n 'Yuji Hentaigana Akebono','Yuji Mai','Yuji Syuku','Yusei Magic',\n 'ZCOOL KuaiLe','ZCOOL QingKe HuangYou','ZCOOL XiaoWei',\n 'Zen Antique','Zen Antique Soft','Zen Dots','Zen Kaku Gothic Antique',\n 'Zen Kaku Gothic New','Zen Kurenaido','Zen Loop','Zen Maru Gothic',\n 'Zen Old Mincho','Zen Tokyo Zoo','Zeyada','Zhi Mang Xing',\n 'Zilla Slab','Zilla Slab Highlight',\n];\n","import React, { useState, useCallback, useEffect, useRef, memo } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, IconButton, Divider, Tooltip, TextField, Slider, Typography, ToggleButton, ToggleButtonGroup, Button, Popover, Select, MenuItem, CircularProgress, Menu, ListItemIcon, ListItemText, Autocomplete } from '@mui/material';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport FileUploadIcon from '@mui/icons-material/FileUpload';\nimport { DEFAULT_FONTS } from '../utils/fonts';\nimport { t } from '../config';\nimport UndoIcon from '@mui/icons-material/Undo';\nimport RedoIcon from '@mui/icons-material/Redo';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport LockIcon from '@mui/icons-material/Lock';\nimport LockOpenIcon from '@mui/icons-material/LockOpen';\nimport FormatBoldIcon from '@mui/icons-material/FormatBold';\nimport FormatItalicIcon from '@mui/icons-material/FormatItalic';\nimport FormatUnderlinedIcon from '@mui/icons-material/FormatUnderlined';\nimport StrikethroughSIcon from '@mui/icons-material/StrikethroughS';\nimport FormatAlignLeftIcon from '@mui/icons-material/FormatAlignLeft';\nimport FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter';\nimport FormatAlignRightIcon from '@mui/icons-material/FormatAlignRight';\nimport OpacityIcon from '@mui/icons-material/Opacity';\nimport CropIcon from '@mui/icons-material/Crop';\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\nimport AutoAwesomeIcon from '@mui/icons-material/AutoAwesome';\nimport SwapHorizIcon from '@mui/icons-material/SwapHoriz';\nimport SwapVertIcon from '@mui/icons-material/SwapVert';\n\n// ── Font preview: lightweight Google Font subsets for dropdown ──\nconst _fontPreviewLoaded = new Set();\nfunction loadFontPreview(fontFamily) {\n if (_fontPreviewLoaded.has(fontFamily)) return;\n _fontPreviewLoaded.add(fontFamily);\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(fontFamily)}&text=${encodeURIComponent(fontFamily)}&display=swap`;\n document.head.appendChild(link);\n}\n\nconst FontPreviewOption = memo(function FontPreviewOption({ fontFamily, ...liProps }) {\n const ref = useRef(null);\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const io = new IntersectionObserver(\n ([entry]) => { if (entry.isIntersecting) { loadFontPreview(fontFamily); io.disconnect(); } },\n { rootMargin: '200px' }\n );\n io.observe(el);\n return () => io.disconnect();\n }, [fontFamily]);\n return (\n <li ref={ref} {...liProps}>\n <span style={{ fontFamily: `'${fontFamily}', sans-serif`, fontSize: 14 }}>{fontFamily}</span>\n </li>\n );\n});\n\n// Text-specific toolbar\nconst TextToolbar = observer(({ element, store }) => {\n const handleFontSizeChange = (e) => {\n const val = parseInt(e.target.value);\n if (!isNaN(val) && val > 0) {\n element.set({ fontSize: val });\n store.history.addUndoState();\n }\n };\n\n const toggleBold = () => {\n element.set({ fontWeight: element.fontWeight === 'bold' ? 'normal' : 'bold' });\n store.history.addUndoState();\n };\n\n const toggleItalic = () => {\n element.set({ fontStyle: element.fontStyle === 'italic' ? 'normal' : 'italic' });\n store.history.addUndoState();\n };\n\n const toggleUnderline = () => {\n element.set({\n textDecoration: element.textDecoration === 'underline' ? '' : 'underline',\n });\n store.history.addUndoState();\n };\n\n const toggleStrikethrough = () => {\n element.set({\n textDecoration: element.textDecoration === 'line-through' ? '' : 'line-through',\n });\n store.history.addUndoState();\n };\n\n const handleAlignChange = (_, value) => {\n if (value) {\n element.set({ align: value });\n store.history.addUndoState();\n }\n };\n\n const handleColorChange = (e) => {\n element.set({ fill: e.target.value });\n store.history.addUndoState();\n };\n\n return (\n <>\n {/* Font family */}\n <Autocomplete\n size=\"small\"\n value={element.fontFamily}\n onChange={(_, value) => {\n if (value) {\n element.set({ fontFamily: value });\n store.loadFont(value);\n store.history.addUndoState();\n }\n }}\n options={(() => {\n const fonts = [...DEFAULT_FONTS];\n if (element.fontFamily && !fonts.includes(element.fontFamily)) {\n fonts.unshift(element.fontFamily);\n }\n return fonts;\n })()}\n disableClearable\n renderOption={(props, option) => (\n <FontPreviewOption key={option} fontFamily={option} {...props} />\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n sx={{ width: 170, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, fontFamily: `'${element.fontFamily}', sans-serif` } }}\n />\n )}\n ListboxProps={{ style: { maxHeight: 300 } }}\n sx={{ width: 170 }}\n />\n\n {/* Font size */}\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.fontSize}\n onChange={handleFontSizeChange}\n onFocus={(e) => e.target.select()}\n sx={{ width: 85, '& .MuiInputBase-input': { fontSize: 13, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 1, max: 500 }}\n />\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Color */}\n <Tooltip title=\"Text color\">\n <input\n type=\"color\"\n value={element.fill || '#000000'}\n onChange={handleColorChange}\n style={{ width: 28, height: 28, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Bold, Italic, Underline, Strikethrough */}\n <Tooltip title=\"Bold\">\n <IconButton size=\"small\" onClick={toggleBold} color={element.fontWeight === 'bold' ? 'primary' : 'default'}>\n <FormatBoldIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Italic\">\n <IconButton size=\"small\" onClick={toggleItalic} color={element.fontStyle === 'italic' ? 'primary' : 'default'}>\n <FormatItalicIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Underline\">\n <IconButton size=\"small\" onClick={toggleUnderline} color={element.textDecoration === 'underline' ? 'primary' : 'default'}>\n <FormatUnderlinedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Strikethrough\">\n <IconButton size=\"small\" onClick={toggleStrikethrough} color={element.textDecoration === 'line-through' ? 'primary' : 'default'}>\n <StrikethroughSIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Alignment */}\n <ToggleButtonGroup size=\"small\" value={element.align} exclusive onChange={handleAlignChange}>\n <ToggleButton value=\"left\" sx={{ p: 0.5 }}>\n <FormatAlignLeftIcon sx={{ fontSize: 16 }} />\n </ToggleButton>\n <ToggleButton value=\"center\" sx={{ p: 0.5 }}>\n <FormatAlignCenterIcon sx={{ fontSize: 16 }} />\n </ToggleButton>\n <ToggleButton value=\"right\" sx={{ p: 0.5 }}>\n <FormatAlignRightIcon sx={{ fontSize: 16 }} />\n </ToggleButton>\n </ToggleButtonGroup>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n <Button\n size=\"small\"\n sx={{\n textTransform: 'none', fontSize: 12, whiteSpace: 'nowrap', px: 1.5, minWidth: 'auto',\n ...(store._toolbarPanel?.type === 'effects' ? { backgroundColor: '#e3f2fd', color: '#0d83cd' } : {}),\n }}\n startIcon={<AutoAwesomeIcon sx={{ fontSize: '16px !important' }} />}\n onClick={() => {\n if (store._toolbarPanel?.type === 'effects') {\n store.closeToolbarPanel();\n } else {\n store.openToolbarPanel('effects');\n }\n }}\n >\n {t('toolbar.effects', 'Effects')}\n </Button>\n </>\n );\n});\n\n// Toolbar text button style (matches Polotno)\nconst toolbarBtnSx = {\n textTransform: 'none',\n fontWeight: 500,\n fontSize: '13px',\n color: '#333',\n minWidth: 'auto',\n px: 1.5,\n py: 0.5,\n borderRadius: '6px',\n '&:hover': { backgroundColor: '#f0f0f0' },\n};\n\n// Image-specific toolbar\nconst ImageToolbar = observer(({ element, store }) => {\n const [flipAnchor, setFlipAnchor] = useState(null);\n\n const handleFlipX = () => {\n element.set({ flipX: !element.flipX });\n store.history.addUndoState();\n setFlipAnchor(null);\n };\n\n const handleFlipY = () => {\n element.set({ flipY: !element.flipY });\n store.history.addUndoState();\n setFlipAnchor(null);\n };\n\n const handleCrop = () => {\n if (element.toggleCropMode) {\n element.toggleCropMode();\n }\n };\n\n const handleFitToPage = () => {\n element.set({\n x: 0,\n y: 0,\n width: store.width,\n height: store.height,\n });\n store.history.addUndoState();\n };\n\n const handleEffects = () => {\n if (store._toolbarPanel?.type === 'effects') {\n store.closeToolbarPanel();\n } else {\n store.openToolbarPanel('effects');\n }\n };\n\n const handleMask = () => {\n if (element.clipSrc) {\n element.set({ clipSrc: '' });\n store.history.addUndoState();\n } else {\n if (store._toolbarPanel?.type === 'mask') {\n store.closeToolbarPanel();\n } else {\n store.openToolbarPanel('mask');\n }\n }\n };\n\n const hasMask = !!element.clipSrc;\n\n return (\n <>\n {/* Flip dropdown */}\n <Button\n size=\"small\"\n sx={toolbarBtnSx}\n onClick={(e) => setFlipAnchor(e.currentTarget)}\n >\n {t('toolbar.flip', 'Flip')}\n </Button>\n <Menu\n anchorEl={flipAnchor}\n open={Boolean(flipAnchor)}\n onClose={() => setFlipAnchor(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{ paper: { sx: { mt: 0.5, borderRadius: '8px', minWidth: 200 } } }}\n >\n <MenuItem onClick={handleFlipX} sx={{ py: 1 }}>\n <ListItemIcon><SwapHorizIcon fontSize=\"small\" sx={{ color: '#555' }} /></ListItemIcon>\n <ListItemText primaryTypographyProps={{ fontSize: 13 }}>{t('toolbar.flipHorizontally', 'Flip horizontally')}</ListItemText>\n </MenuItem>\n <MenuItem onClick={handleFlipY} sx={{ py: 1 }}>\n <ListItemIcon><SwapVertIcon fontSize=\"small\" sx={{ color: '#555' }} /></ListItemIcon>\n <ListItemText primaryTypographyProps={{ fontSize: 13 }}>{t('toolbar.flipVertically', 'Flip vertically')}</ListItemText>\n </MenuItem>\n </Menu>\n\n {/* Effects */}\n <Button\n size=\"small\"\n sx={{\n ...toolbarBtnSx,\n ...(store._toolbarPanel?.type === 'effects' ? { backgroundColor: '#e3f2fd', color: '#0d83cd' } : {}),\n }}\n startIcon={<AutoAwesomeIcon sx={{ fontSize: '16px !important' }} />}\n onClick={handleEffects}\n >\n {t('toolbar.effects', 'Effects')}\n </Button>\n\n {/* Fit to page */}\n <Button size=\"small\" sx={toolbarBtnSx} onClick={handleFitToPage}>\n {t('toolbar.fitToBackground', 'Fit to page')}\n </Button>\n\n {/* Apply mask / Remove mask */}\n <Button\n size=\"small\"\n sx={{\n ...toolbarBtnSx,\n ...(hasMask ? { color: '#d32f2f' } : {}),\n ...(store._toolbarPanel?.type === 'mask' ? { backgroundColor: '#e3f2fd', color: '#0d83cd' } : {}),\n }}\n onClick={handleMask}\n >\n {hasMask ? t('toolbar.removeMask', 'Remove mask') : t('toolbar.clip', 'Apply mask')}\n </Button>\n\n {/* Crop */}\n {/* <Tooltip title={t('toolbar.crop', 'Crop')}>\n <IconButton size=\"small\" onClick={handleCrop}>\n <CropIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip> */}\n </>\n );\n});\n\n// Figure-specific toolbar\nconst FigureToolbar = observer(({ element, store }) => {\n const handleFillChange = (e) => {\n element.set({ fill: e.target.value });\n store.history.addUndoState();\n };\n\n const handleStrokeChange = (e) => {\n element.set({ stroke: e.target.value });\n store.history.addUndoState();\n };\n\n const handleStrokeWidthChange = (e) => {\n const val = parseInt(e.target.value);\n if (!isNaN(val) && val >= 0) {\n element.set({ strokeWidth: val });\n store.history.addUndoState();\n }\n };\n\n const handleCornerRadiusChange = (e) => {\n const val = parseInt(e.target.value);\n if (!isNaN(val) && val >= 0) {\n element.set({ cornerRadius: val });\n store.history.addUndoState();\n }\n };\n\n return (\n <>\n <Tooltip title={t('toolbar.fill', 'Fill color')}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.fill', 'Fill')}</Typography>\n <input\n type=\"color\"\n value={element.fill || '#000000'}\n onChange={handleFillChange}\n style={{ width: 28, height: 28, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </Tooltip>\n <Tooltip title={t('toolbar.textStroke', 'Stroke color')}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.textStroke', 'Stroke')}</Typography>\n <input\n type=\"color\"\n value={element.stroke || '#000000'}\n onChange={handleStrokeChange}\n style={{ width: 28, height: 28, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </Tooltip>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.border', 'Border')}</Typography>\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.strokeWidth || 0}\n onChange={handleStrokeWidthChange}\n onFocus={(e) => e.target.select()}\n sx={{ width: 50, '& .MuiInputBase-input': { fontSize: 11, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 0 }}\n />\n </Box>\n {element.subType === 'rect' && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.cornerRadius', 'Radius')}</Typography>\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.cornerRadius || 0}\n onChange={handleCornerRadiusChange}\n onFocus={(e) => e.target.select()}\n sx={{ width: 50, '& .MuiInputBase-input': { fontSize: 11, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 0 }}\n />\n </Box>\n )}\n </>\n );\n});\n\n// Line-specific toolbar\nconst LineToolbar = observer(({ element, store }) => {\n const handleColorChange = (e) => {\n element.set({ color: e.target.value });\n store.history.addUndoState();\n };\n\n return (\n <>\n <Tooltip title={t('toolbar.color', 'Line color')}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.color', 'Color')}</Typography>\n <input\n type=\"color\"\n value={element.color || '#000000'}\n onChange={handleColorChange}\n style={{ width: 28, height: 28, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </Tooltip>\n </>\n );\n});\n\n// Common controls for all element types\nconst CommonControls = observer(({ element, store }) => {\n const isLocked = element.locked;\n\n const handleDuplicate = () => {\n if (element.clone) {\n element.clone({ x: (element.x || 0) + 20, y: (element.y || 0) + 20 });\n store.history.addUndoState();\n }\n };\n\n const handleDelete = () => {\n store.deleteElements([element.id]);\n store.history.addUndoState();\n };\n\n const handleToggleLock = () => {\n if (isLocked) {\n element.set({ draggable: true, resizable: true, contentEditable: true, styleEditable: true });\n } else {\n element.set({ draggable: false, resizable: false, contentEditable: false, styleEditable: false });\n }\n store.history.addUndoState();\n };\n\n const handleOpacityChange = (_, value) => {\n element.set({ opacity: value });\n };\n\n const handleOpacityCommit = () => {\n store.history.addUndoState();\n };\n\n const handleMoveUp = () => {\n element.moveUp();\n store.history.addUndoState();\n };\n\n const handleMoveDown = () => {\n element.moveDown();\n store.history.addUndoState();\n };\n\n return (\n <>\n {/* Opacity */}\n <Tooltip title={t('toolbar.opacity', 'Opacity')}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, width: 100 }}>\n <OpacityIcon sx={{ fontSize: 16, color: '#666' }} />\n <Slider\n size=\"small\"\n value={element.opacity}\n onChange={handleOpacityChange}\n onChangeCommitted={handleOpacityCommit}\n min={0}\n max={1}\n step={0.01}\n sx={{ py: 0 }}\n />\n </Box>\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Z-order */}\n <Tooltip title={t('toolbar.up', 'Move up')}>\n <IconButton size=\"small\" onClick={handleMoveUp}>\n <ArrowUpwardIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title={t('toolbar.down', 'Move down')}>\n <IconButton size=\"small\" onClick={handleMoveDown}>\n <ArrowDownwardIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Lock */}\n <Tooltip title={isLocked ? t('toolbar.unlockedDescription', 'Unlock') : t('toolbar.lockedDescription', 'Lock')}>\n <IconButton size=\"small\" onClick={handleToggleLock}>\n {isLocked ? <LockIcon fontSize=\"small\" /> : <LockOpenIcon fontSize=\"small\" />}\n </IconButton>\n </Tooltip>\n\n {/* Duplicate */}\n <Tooltip title={t('toolbar.duplicateElements', 'Duplicate')}>\n <IconButton size=\"small\" onClick={handleDuplicate}>\n <ContentCopyIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n {/* Delete */}\n <Tooltip title={t('toolbar.removeElements', 'Delete')}>\n <IconButton size=\"small\" onClick={handleDelete}>\n <DeleteOutlineIcon fontSize=\"small\" sx={{ color: '#d32f2f' }} />\n </IconButton>\n </Tooltip>\n </>\n );\n});\n\n// Download button with format/quality popover\nconst DefaultDownloadButton = observer(({ store }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [fileType, setFileType] = useState('png');\n // Default quality so pixelRatio=1 (output = template's own pixel size).\n // qualityToPixelRatio(q) = q * 3, so q = 1/3 → pixelRatio = 1.\n const [quality, setQuality] = useState(1 / 3);\n const [exporting, setExporting] = useState(false);\n\n const open = Boolean(anchorEl);\n\n const handleClick = (e) => {\n setAnchorEl(e.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const qualityToPixelRatio = (q) => Math.max(0.5, q * 3);\n\n const resWidth = Math.round(store.width * qualityToPixelRatio(quality));\n const resHeight = Math.round(store.height * qualityToPixelRatio(quality));\n\n const handleDownload = useCallback(async () => {\n setExporting(true);\n try {\n const pixelRatio = qualityToPixelRatio(quality);\n switch (fileType) {\n case 'png':\n await store.saveAsImage({\n fileName: 'design.png',\n mimeType: 'image/png',\n pixelRatio,\n });\n break;\n case 'jpeg':\n await store.saveAsImage({\n fileName: 'design.jpg',\n mimeType: 'image/jpeg',\n quality,\n pixelRatio,\n });\n break;\n case 'pdf':\n await store.saveAsPDF({\n fileName: 'design.pdf',\n pixelRatio,\n });\n break;\n case 'json':\n store.saveAsJSON({ fileName: 'design.json' });\n break;\n default:\n break;\n }\n } catch (err) {\n console.error('Export failed:', err);\n } finally {\n setExporting(false);\n handleClose();\n }\n }, [store, fileType, quality]);\n\n const fileTypeLabel = {\n png: 'PNG',\n jpeg: 'JPEG',\n pdf: 'PDF',\n json: 'JSON',\n };\n\n return (\n <>\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={handleClick}\n endIcon={<ArrowDropDownIcon />}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: '13px',\n px: 2,\n py: 0.5,\n borderRadius: '6px',\n backgroundColor: '#3d5afe',\n '&:hover': { backgroundColor: '#304ffe' },\n }}\n >\n {t('toolbar.download', 'Download')}\n </Button>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: {\n mt: 1,\n p: 2,\n width: 260,\n borderRadius: '10px',\n backgroundColor: '#2b2d31',\n color: '#e0e0e0',\n },\n },\n }}\n >\n {/* File type */}\n <Typography variant=\"caption\" sx={{ color: '#aaa', mb: 0.5, display: 'block' }}>\n {t('toolbar.fileType', 'File type')}\n </Typography>\n <Select\n value={fileType}\n onChange={(e) => setFileType(e.target.value)}\n size=\"small\"\n fullWidth\n sx={{\n mb: 2,\n color: '#fff',\n backgroundColor: '#1e1f22',\n borderRadius: '6px',\n '& .MuiSelect-icon': { color: '#aaa' },\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: '#555',\n },\n '&:hover .MuiOutlinedInput-notchedOutline': {\n borderColor: '#777',\n },\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: '#3d5afe',\n },\n }}\n >\n <MenuItem value=\"png\">PNG</MenuItem>\n <MenuItem value=\"jpeg\">JPEG</MenuItem>\n <MenuItem value=\"pdf\">PDF</MenuItem>\n <MenuItem value=\"json\">JSON</MenuItem>\n </Select>\n\n {/* Quality slider (only for image/pdf) */}\n {fileType !== 'json' && (\n <>\n <Typography variant=\"caption\" sx={{ color: '#aaa', mb: 0.5, display: 'block' }}>\n {t('toolbar.quality', 'Quality')}\n </Typography>\n <Slider\n value={quality}\n onChange={(_, v) => setQuality(v)}\n min={0.1}\n max={1}\n step={0.05}\n size=\"small\"\n sx={{\n color: '#3d5afe',\n mb: 1,\n '& .MuiSlider-thumb': { width: 14, height: 14 },\n }}\n />\n <Typography variant=\"caption\" sx={{ color: '#888', mb: 2, display: 'block' }}>\n {resWidth} x {resHeight} px\n </Typography>\n </>\n )}\n\n {/* Download action */}\n <Button\n variant=\"contained\"\n fullWidth\n onClick={handleDownload}\n disabled={exporting}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: '14px',\n py: 1,\n borderRadius: '8px',\n backgroundColor: '#3d5afe',\n '&:hover': { backgroundColor: '#304ffe' },\n }}\n >\n {exporting ? (\n <CircularProgress size={20} sx={{ color: '#fff' }} />\n ) : (\n `${t('toolbar.download', 'Download')} ${fileTypeLabel[fileType]}`\n )}\n </Button>\n </Popover>\n </>\n );\n});\n\n// Import button — loads a JSON template file into the store\nconst DefaultImportButton = observer(({ store }) => {\n const [importing, setImporting] = useState(false);\n const fileInputRef = React.useRef(null);\n\n const handleFileChange = useCallback(\n async (e) => {\n const file = e.target.files?.[0];\n if (!file) return;\n\n setImporting(true);\n try {\n const text = await file.text();\n const jsonData = JSON.parse(text);\n store.loadJSON(jsonData);\n } catch (err) {\n console.error('Error loading template JSON:', err);\n } finally {\n setImporting(false);\n if (fileInputRef.current) fileInputRef.current.value = '';\n }\n },\n [store]\n );\n\n return (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\".json,application/json\"\n onChange={handleFileChange}\n style={{ display: 'none' }}\n />\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => fileInputRef.current?.click()}\n disabled={importing}\n startIcon={\n importing ? (\n <CircularProgress size={16} />\n ) : (\n <FileUploadIcon sx={{ fontSize: 18 }} />\n )\n }\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: '13px',\n px: 2,\n py: 0.5,\n mr: 1,\n borderRadius: '6px',\n borderColor: '#3d5afe',\n color: '#3d5afe',\n '&:hover': {\n borderColor: '#304ffe',\n backgroundColor: 'rgba(61,90,254,0.04)',\n },\n }}\n >\n {t('toolbar.import', 'Import')}\n </Button>\n </>\n );\n});\n\nconst TYPE_TOOLBARS = {\n text: TextToolbar,\n image: ImageToolbar,\n figure: FigureToolbar,\n line: LineToolbar,\n svg: ImageToolbar, // SVG uses same toolbar as image\n};\n\nconst rowSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n px: 1.5,\n py: 0.75,\n overflowX: 'auto',\n overflowY: 'hidden',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': { display: 'none' },\n};\n\nconst Toolbar = observer(({ store, components = {} }) => {\n const { ActionControls } = components;\n const ImportButton =\n 'ImportButton' in components\n ? components.ImportButton\n : DefaultImportButton;\n const DownloadButton =\n 'DownloadButton' in components\n ? components.DownloadButton\n : DefaultDownloadButton;\n\n const selectedElements = store.selectedElements;\n const element = selectedElements.length === 1 ? selectedElements[0] : null;\n\n const TypeToolbar = element ? TYPE_TOOLBARS[element.type] : null;\n\n return (\n <Box\n sx={{\n borderBottom: '1px solid #e0e0e0',\n backgroundColor: '#ffffff',\n flexShrink: 0,\n }}\n >\n {/* ── Row 1: undo/redo + type-specific tools + right-side actions ── */}\n <Box sx={{ ...rowSx, minHeight: 52, borderBottom: '1px solid #f0f0f0' }}>\n {/* Undo / Redo */}\n <Tooltip title={t('toolbar.undo', 'Undo')}>\n <span>\n <IconButton\n size=\"small\"\n onClick={() => store.history.undo()}\n disabled={!store.history.canUndo}\n >\n <UndoIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip title={t('toolbar.redo', 'Redo')}>\n <span>\n <IconButton\n size=\"small\"\n onClick={() => store.history.redo()}\n disabled={!store.history.canRedo}\n >\n <RedoIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Multi-select: Group + Delete */}\n {selectedElements.length > 1 && (\n <>\n <Button\n size=\"small\"\n onClick={() => {\n const ids = selectedElements.map((el) => el.id);\n const group = store.groupElements(ids);\n if (group) {\n store.selectElements([group.id]);\n store.history.addUndoState();\n }\n }}\n sx={{\n textTransform: 'none',\n fontSize: 13,\n fontWeight: 500,\n px: 1.5,\n py: 0.3,\n minWidth: 0,\n color: '#333',\n '&:hover': { backgroundColor: 'rgba(13,131,205,0.08)' },\n }}\n >\n {t('toolbar.group', 'Group')}\n </Button>\n <Tooltip title={t('toolbar.removeElements', 'Delete')}>\n <IconButton\n size=\"small\"\n onClick={() => {\n store.deleteElements(selectedElements.map((el) => el.id));\n store.history.addUndoState();\n }}\n >\n <DeleteOutlineIcon fontSize=\"small\" sx={{ color: '#d32f2f' }} />\n </IconButton>\n </Tooltip>\n </>\n )}\n\n {/* Single group selected: Ungroup */}\n {element && element.type === 'group' && (\n <Button\n size=\"small\"\n onClick={() => {\n store.ungroupElements([element.id]);\n store.history.addUndoState();\n }}\n sx={{\n textTransform: 'none',\n fontSize: 13,\n fontWeight: 500,\n px: 1.5,\n py: 0.3,\n minWidth: 0,\n color: '#333',\n '&:hover': { backgroundColor: 'rgba(13,131,205,0.08)' },\n }}\n >\n {t('toolbar.ungroup', 'Ungroup')}\n </Button>\n )}\n\n {/* Type-specific toolbar */}\n {element && TypeToolbar && (\n <TypeToolbar element={element} store={store} />\n )}\n\n {/* Spacer */}\n <Box sx={{ flex: 1 }} />\n\n {/* Custom action controls */}\n {ActionControls && <ActionControls store={store} />}\n\n {/* Import button */}\n {ImportButton && <ImportButton store={store} />}\n\n {/* Download button */}\n {DownloadButton && <DownloadButton store={store} />}\n </Box>\n\n {/* ── Row 2: always rendered to reserve height and prevent layout shift ── */}\n <Box sx={{ ...rowSx, minHeight: 44, backgroundColor: '#fafafa', visibility: element ? 'visible' : 'hidden' }}>\n {element && <CommonControls element={element} store={store} />}\n </Box>\n </Box>\n );\n});\n\nToolbar.displayName = 'Toolbar';\nexport default Toolbar;\nexport { Toolbar };\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, IconButton, Typography, Tooltip } from '@mui/material';\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\nimport FitScreenIcon from '@mui/icons-material/FitScreen';\n\nconst ZoomButtons = observer(({ store }) => {\n const zoomIn = () => {\n store.setScale(Math.min(5, store.scale * 1.2));\n };\n\n const zoomOut = () => {\n store.setScale(Math.max(0.1, store.scale / 1.2));\n };\n\n const zoomToFit = () => {\n store.setScale(store.scaleToFit);\n };\n\n const zoomPercentage = Math.round(store.scale * 100);\n\n return (\n <Box\n sx={{\n position: 'absolute',\n bottom: 12,\n right: 12,\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n backgroundColor: 'rgba(255,255,255,0.95)',\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\n padding: '4px 8px',\n zIndex: 10,\n }}\n >\n <Tooltip title=\"Zoom out\">\n <IconButton size=\"small\" onClick={zoomOut}>\n <ZoomOutIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Typography\n variant=\"caption\"\n sx={{\n minWidth: 40,\n textAlign: 'center',\n fontSize: '12px',\n fontWeight: 500,\n userSelect: 'none',\n }}\n >\n {zoomPercentage}%\n </Typography>\n\n <Tooltip title=\"Zoom in\">\n <IconButton size=\"small\" onClick={zoomIn}>\n <ZoomInIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Tooltip title=\"Fit to screen\">\n <IconButton size=\"small\" onClick={zoomToFit}>\n <FitScreenIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </Box>\n );\n});\n\nZoomButtons.displayName = 'ZoomButtons';\nexport default ZoomButtons;\nexport { ZoomButtons };\n","import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport { Image as KonvaImage, Group, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport { MASK_SHAPES } from '../toolbar/image-mask-panel';\n\n// Custom Konva filter: Sepia\nconst SepiaFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i], g = data[i + 1], b = data[i + 2];\n data[i] = Math.min(255, (r * 0.393) + (g * 0.769) + (b * 0.189));\n data[i + 1] = Math.min(255, (r * 0.349) + (g * 0.686) + (b * 0.168));\n data[i + 2] = Math.min(255, (r * 0.272) + (g * 0.534) + (b * 0.131));\n }\n};\n\n// Custom Konva filter: Warm (boost red, reduce blue)\nconst WarmFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.min(255, data[i] + 25); // red up\n data[i + 1] = Math.min(255, data[i + 1] + 10); // green slightly up\n data[i + 2] = Math.max(0, data[i + 2] - 20); // blue down\n }\n};\n\n// Custom Konva filter: Cold (boost blue, reduce red)\nconst ColdFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.max(0, data[i] - 20); // red down\n data[i + 1] = Math.min(255, data[i + 1] + 5); // green slightly up\n data[i + 2] = Math.min(255, data[i + 2] + 25); // blue up\n }\n};\n\nconst ImageElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const groupRef = useRef(null);\n const [image, setImage] = useState(null);\n\n // Persistent auto-crop state: tracks the visible portion of the source image.\n // Initialized on image load (cover-fit centered), then updated directionally on resize.\n const autoCropRef = useRef(null);\n const autoCropSrcRef = useRef(null); // tracks which image the crop was computed for\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load image:', element.src.substring(0, 100));\n };\n img.src = element.src;\n }, [element.src]);\n\n // Build Konva filters array\n const filters = [];\n if (element.blurEnabled) filters.push(window.Konva.Filters.Blur);\n if (element.brightnessEnabled) filters.push(window.Konva.Filters.Brighten);\n if (element.grayscaleEnabled) filters.push(window.Konva.Filters.Grayscale);\n if (element.sepiaEnabled) filters.push(SepiaFilter);\n if (element.warmEnabled) filters.push(WarmFilter);\n if (element.coldEnabled) filters.push(ColdFilter);\n\n const hasFilters = filters.length > 0;\n const hasBorder = element.borderSize > 0 && element.borderColor;\n const needsCache = hasFilters || element.cornerRadius > 0 || element.shadowEnabled;\n\n // Cache the image node whenever filters, cornerRadius, or shadow change so they take effect\n useEffect(() => {\n const node = imageRef.current;\n if (!node || !image) return;\n if (needsCache) {\n try {\n node.cache();\n } catch (e) { /* ignore cache errors */ }\n } else {\n try {\n node.clearCache();\n } catch (e) { /* ignore */ }\n }\n }, [image, needsCache, element.blurEnabled, element.blurRadius, element.brightnessEnabled, element.brightness, element.grayscaleEnabled, element.sepiaEnabled, element.warmEnabled, element.coldEnabled, element.cornerRadius, element.shadowEnabled, element.shadowBlur, element.shadowOffsetX, element.shadowOffsetY, element.shadowColor]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n const target = groupRef.current || e.target;\n element.set({\n x: target.x(),\n y: target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Helper: update autoCrop directionally based on which edges moved.\n // Stores IDEAL (unclamped) values so resizing always reverses correctly.\n // Clamping to image bounds happens at render time only.\n const updateAutoCrop = (oldX, oldY, oldW, oldH, newX, newY, newW, newH) => {\n const crop = autoCropRef.current;\n if (!crop || !image) return;\n\n const newAspect = newW / newH;\n\n const xMoved = Math.abs(newX - oldX) > 0.5;\n const yMoved = Math.abs(newY - oldY) > 0.5;\n const wChanged = Math.abs(newW - oldW) > 0.5;\n const hChanged = Math.abs(newH - oldH) > 0.5;\n\n let cx = crop.x, cy = crop.y, cw = crop.w, ch = crop.h;\n\n if (wChanged && !hChanged) {\n // Width only — adjust crop width, keep crop height fixed\n cw = ch * newAspect;\n if (xMoved) cx = crop.x + crop.w - cw; // left edge dragged → anchor right\n } else if (hChanged && !wChanged) {\n // Height only — adjust crop height, keep crop width fixed\n ch = cw / newAspect;\n if (yMoved) cy = crop.y + crop.h - ch; // top edge dragged → anchor bottom\n } else if (wChanged && hChanged) {\n // Corner resize — keep ch as base, derive cw\n cw = ch * newAspect;\n if (xMoved) cx = crop.x + crop.w - cw;\n if (yMoved) cy = crop.y + crop.h - ch;\n }\n\n // Store ideal values — NO clamping here\n autoCropRef.current = { x: cx, y: cy, w: cw, h: ch };\n };\n\n // Live transform — reset scale, set node dimensions, update crop directionally\n const handleTransform = (e) => {\n const node = groupRef.current || e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n const oldX = element.x, oldY = element.y;\n const oldW = element.width, oldH = element.height;\n const newW = Math.max(5, node.width() * Math.abs(scaleX));\n const newH = Math.max(5, node.height() * Math.abs(scaleY));\n const newX = node.x();\n const newY = node.y();\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newW);\n node.height(newH);\n\n updateAutoCrop(oldX, oldY, oldW, oldH, newX, newY, newW, newH);\n\n element.set({ x: newX, y: newY, width: newW, height: newH, rotation: node.rotation() });\n };\n\n const handleTransformEnd = (e) => {\n const node = groupRef.current || e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n const oldX = element.x, oldY = element.y;\n const oldW = element.width, oldH = element.height;\n const newW = Math.max(5, node.width() * Math.abs(scaleX));\n const newH = Math.max(5, node.height() * Math.abs(scaleY));\n const newX = node.x();\n const newY = node.y();\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newW);\n node.height(newH);\n\n updateAutoCrop(oldX, oldY, oldW, oldH, newX, newY, newW, newH);\n\n element.set({ x: newX, y: newY, width: newW, height: newH, rotation: node.rotation() });\n if (onTransformEnd) onTransformEnd(e);\n };\n\n // Crop calculations\n const modelHasCrop = image && (\n element.cropX !== 0 ||\n element.cropY !== 0 ||\n element.cropWidth !== 1 ||\n element.cropHeight !== 1\n );\n\n // Initialize auto-crop when image changes (cover-fit, centered)\n if (image && image !== autoCropSrcRef.current) {\n autoCropSrcRef.current = image;\n if (!modelHasCrop) {\n const natW = image.naturalWidth || image.width;\n const natH = image.naturalHeight || image.height;\n if (natW > 0 && natH > 0) {\n const elemAspect = element.width / element.height;\n const imgAspect = natW / natH;\n if (imgAspect > elemAspect) {\n const ch = natH;\n const cw = natH * elemAspect;\n autoCropRef.current = { x: (natW - cw) / 2, y: 0, w: cw, h: ch };\n } else {\n const cw = natW;\n const ch = natW / elemAspect;\n autoCropRef.current = { x: 0, y: (natH - ch) / 2, w: cw, h: ch };\n }\n }\n } else {\n autoCropRef.current = null;\n }\n }\n if (!image) { autoCropSrcRef.current = null; autoCropRef.current = null; }\n\n let cropProps = {};\n if (modelHasCrop) {\n cropProps = {\n crop: {\n x: element.cropX * image.naturalWidth,\n y: element.cropY * image.naturalHeight,\n width: element.cropWidth * image.naturalWidth,\n height: element.cropHeight * image.naturalHeight,\n },\n };\n } else if (autoCropRef.current && image) {\n // Render-time clamping: fit ideal crop within source image bounds\n // while maintaining element aspect ratio.\n const ac = autoCropRef.current;\n const natW = image.naturalWidth || image.width;\n const natH = image.naturalHeight || image.height;\n const elemAspect = element.width / element.height;\n\n let rw = ac.w, rh = ac.h, rx = ac.x, ry = ac.y;\n\n // Clamp dimensions to image bounds, maintaining aspect ratio\n if (rw > natW) { rw = natW; rh = natW / elemAspect; }\n if (rh > natH) { rh = natH; rw = natH * elemAspect; }\n rw = Math.max(1, rw);\n rh = Math.max(1, rh);\n\n // Clamp position\n rx = Math.max(0, Math.min(rx, natW - rw));\n ry = Math.max(0, Math.min(ry, natH - rh));\n\n cropProps = { crop: { x: rx, y: ry, width: rw, height: rh } };\n }\n\n // Mask clipping (clipFunc only works on Container nodes like Group)\n const maskShape = element.clipSrc\n ? MASK_SHAPES.find((s) => s.clipId === element.clipSrc)\n : null;\n\n const hasMask = !!maskShape;\n\n const clipFunc = hasMask\n ? (ctx) => { maskShape.clipFunc(ctx, element.width, element.height); }\n : undefined;\n\n const imageNode = (\n <KonvaImage\n ref={imageRef}\n image={image}\n x={0}\n y={0}\n width={element.width}\n height={element.height}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n filters={hasFilters ? filters : undefined}\n blurRadius={element.blurEnabled ? element.blurRadius : undefined}\n brightness={element.brightnessEnabled ? element.brightness : undefined}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n {...cropProps}\n />\n );\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'image'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n clipFunc={clipFunc}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {imageNode}\n {hasBorder && (\n <Rect\n x={0}\n y={0}\n width={element.width}\n height={element.height}\n stroke={element.borderColor}\n strokeWidth={element.borderSize}\n cornerRadius={element.cornerRadius}\n listening={false}\n />\n )}\n </Group>\n );\n});\n\nImageElementComponent.displayName = 'ImageElement';\nexport default ImageElementComponent;\n","import React, { useRef, useEffect, useState } from 'react';\nimport { Group, Rect, Text as KonvaText } from 'react-konva';\nimport Konva from 'konva';\nimport { observer } from 'mobx-react-lite';\n\nconst TextElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const groupRef = useRef(null);\n const textRef = useRef(null);\n const [textHeight, setTextHeight] = useState(element.height || 50);\n\n // Force Konva to recalculate text layout when fonts finish loading.\n useEffect(() => {\n const onFontLoaded = () => {\n const node = textRef.current;\n if (!node) return;\n const f = node.fontFamily();\n node.fontFamily('serif');\n node.fontFamily(f);\n const h = node.height();\n if (h > 0) {\n setTextHeight(h);\n if (Math.abs(h - element.height) > 1) element.set({ height: h });\n }\n // Re-cache if blur is active\n if (element.blurEnabled && node) {\n node.cache();\n }\n node.getLayer()?.batchDraw();\n };\n document.fonts.addEventListener('loadingdone', onFontLoaded);\n return () => document.fonts.removeEventListener('loadingdone', onFontLoaded);\n }, []);\n\n // Sync Konva auto-sized height back to element model after text reflows\n useEffect(() => {\n const node = textRef.current;\n if (!node) return;\n const frame = requestAnimationFrame(() => {\n const h = node.height();\n if (h > 0) {\n setTextHeight(h);\n if (Math.abs(h - element.height) > 1) element.set({ height: h });\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [element.text, element.fontSize, element.fontFamily, element.fontWeight, element.width]);\n\n // Apply blur filter: cache the text node when blur is enabled\n useEffect(() => {\n const node = textRef.current;\n if (!node) return;\n if (element.blurEnabled) {\n node.filters([Konva.Filters.Blur]);\n node.blurRadius(element.blurRadius);\n node.cache();\n } else {\n node.filters([]);\n node.clearCache();\n }\n node.getLayer()?.batchDraw();\n }, [element.blurEnabled, element.blurRadius, element.text, element.fontSize, element.width]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // During live drag: let Konva scale the node visually — no imperative changes,\n // no element.set(). Any MobX update here causes React to sync stale x/y back\n // to the node every frame, fighting the Transformer (especially top/left anchors).\n const handleTransform = () => {};\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n // Read accumulated scale against the MODEL values (not node.width/height,\n // which accumulate across multiple transform sessions and can drift).\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n const newWidth = Math.max(20, element.width * Math.abs(scaleX));\n const newFontSize = Math.max(8, Math.round(element.fontSize * Math.abs(scaleY)));\n\n const tNode = textRef.current;\n if (tNode) {\n tNode.width(newWidth);\n tNode.fontSize(newFontSize);\n }\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newWidth);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: newWidth,\n fontSize: newFontSize,\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const handleDblClick = () => {\n if (!element.contentEditable) return;\n element.toggleEditMode(true);\n\n const textNode = textRef.current;\n if (!textNode) return;\n\n const grp = groupRef.current;\n const stage = textNode.getStage();\n if (!stage) return;\n\n // Hide the group so the textarea appears as in-place editing\n if (grp) grp.hide();\n stage.batchDraw();\n\n const stageContainer = stage.container();\n const textPosition = textNode.absolutePosition();\n const absScale = textNode.getAbsoluteScale();\n const scaleX = absScale.x;\n const scaleY = absScale.y;\n\n const cssFontStyle = element.fontStyle === 'italic' ? 'italic' : 'normal';\n const cssFontWeight = String(element.fontWeight || 'normal');\n\n const textarea = document.createElement('textarea');\n textarea.value = element.text;\n textarea.style.position = 'absolute';\n textarea.style.top = `${textPosition.y}px`;\n textarea.style.left = `${textPosition.x}px`;\n textarea.style.width = `${element.width * scaleX}px`;\n textarea.style.height = `${element.height * scaleY}px`;\n textarea.style.fontSize = `${element.fontSize * scaleX}px`;\n textarea.style.fontFamily = `\"${element.fontFamily}\", sans-serif`;\n textarea.style.fontStyle = cssFontStyle;\n textarea.style.fontWeight = cssFontWeight;\n textarea.style.textAlign = element.align;\n textarea.style.color = element.fill;\n textarea.style.border = '0';\n textarea.style.borderWidth = '0';\n textarea.style.padding = '0';\n textarea.style.margin = '0';\n textarea.style.overflow = 'hidden';\n textarea.style.background = 'none';\n textarea.style.outline = 'none';\n textarea.style.resize = 'none';\n textarea.style.appearance = 'none';\n textarea.style.webkitAppearance = 'none';\n textarea.style.lineHeight = String(\n typeof element.lineHeight === 'number'\n ? element.lineHeight\n : parseFloat(element.lineHeight) || 1.2\n );\n textarea.style.letterSpacing = `${(element.letterSpacing || 0) * scaleX}px`;\n textarea.style.transformOrigin = 'left top';\n textarea.style.transform = `rotate(${element.rotation}deg)`;\n textarea.style.textDecoration = element.textDecoration || '';\n textarea.style.boxSizing = 'content-box';\n textarea.style.zIndex = '10000';\n textarea.style.whiteSpace = 'pre-wrap';\n textarea.style.wordBreak = 'break-word';\n textarea.style.minHeight = '0';\n textarea.style.minWidth = '0';\n\n stageContainer.appendChild(textarea);\n textarea.focus();\n textarea.select();\n\n let removed = false;\n const removeTextarea = () => {\n if (removed) return;\n removed = true;\n element.set({ text: textarea.value });\n element.toggleEditMode(false);\n if (grp) grp.show();\n stage.batchDraw();\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n };\n\n textarea.addEventListener('blur', removeTextarea);\n textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n removeTextarea();\n }\n });\n };\n\n // Compute displayed text based on textTransform\n let displayText = element.text || element.placeholder || '';\n if (element.textTransform === 'uppercase') {\n displayText = displayText.toUpperCase();\n } else if (element.textTransform === 'lowercase') {\n displayText = displayText.toLowerCase();\n } else if (element.textTransform === 'capitalize') {\n displayText = displayText.replace(/\\b\\w/g, (c) => c.toUpperCase());\n }\n\n const fontStyleStr = (() => {\n const parts = [];\n const style = String(element.fontStyle || '').trim();\n const weight = String(element.fontWeight || '').trim();\n if (style === 'italic' || style.includes('italic')) parts.push('italic');\n if (weight && weight !== 'normal') parts.push(weight);\n return parts.length > 0 ? parts.join(' ') : 'normal';\n })();\n\n const pad = element.backgroundEnabled ? (element.backgroundPadding || 0) : 0;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'text'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={textHeight}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDblClick={handleDblClick}\n onDblTap={handleDblClick}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {/* Background rect */}\n {element.backgroundEnabled && (\n <Rect\n x={-pad}\n y={-pad}\n width={element.width + pad * 2}\n height={textHeight + pad * 2}\n fill={element.backgroundColor || '#ffffff'}\n opacity={element.backgroundOpacity ?? 1}\n cornerRadius={element.backgroundCornerRadius || 0}\n listening={false}\n />\n )}\n\n {/* Text */}\n <KonvaText\n ref={textRef}\n text={displayText}\n width={element.width}\n fontSize={element.fontSize}\n fontFamily={element.fontFamily}\n fontStyle={fontStyleStr}\n textDecoration={element.textDecoration}\n fill={element.fill}\n align={element.align}\n verticalAlign={element.verticalAlign}\n lineHeight={typeof element.lineHeight === 'number' ? element.lineHeight : parseFloat(element.lineHeight) || 1.2}\n letterSpacing={element.letterSpacing}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth || 0}\n fillAfterStrokeEnabled={true}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n />\n </Group>\n );\n});\n\nTextElementComponent.displayName = 'TextElement';\nexport default TextElementComponent;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Image as KonvaImage } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst SVGElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const [image, setImage] = useState(null);\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n let svgSrc = element.src;\n\n // Apply color replacements to SVG\n if (element.colorsReplace && element.colorsReplace.size > 0) {\n // If it's a data URI SVG, decode and replace colors\n if (svgSrc.startsWith('data:image/svg+xml')) {\n try {\n let svgContent;\n if (svgSrc.includes('base64,')) {\n svgContent = atob(svgSrc.split('base64,')[1]);\n } else {\n svgContent = decodeURIComponent(svgSrc.split(',')[1]);\n }\n\n element.colorsReplace.forEach((newColor, oldColor) => {\n svgContent = svgContent.replace(new RegExp(oldColor, 'gi'), newColor);\n });\n\n svgSrc = 'data:image/svg+xml;base64,' + btoa(svgContent);\n } catch (e) {\n console.warn('Failed to process SVG color replacement', e);\n }\n }\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load SVG:', element.src.substring(0, 100));\n };\n img.src = svgSrc;\n }, [element.src, element.colorsReplace?.toJSON?.()]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n return (\n <KonvaImage\n ref={imageRef}\n id={element.id}\n name={element.name || 'svg'}\n image={image}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onClick={(e) => {\n if (onSelect) onSelect(e);\n }}\n onTap={(e) => {\n if (onSelect) onSelect(e);\n }}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n />\n );\n});\n\nSVGElementComponent.displayName = 'SVGElement';\nexport default SVGElementComponent;\n","import React, { useRef } from 'react';\nimport { Rect, Circle, Star, Line as KonvaLine, RegularPolygon, Arrow, Path, Group } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst FigureElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const shapeRef = useRef(null);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const commonProps = {\n id: element.id,\n name: element.name || 'figure',\n x: element.x,\n y: element.y,\n rotation: element.rotation,\n opacity: element.opacity,\n fill: element.fill,\n stroke: element.stroke || undefined,\n strokeWidth: element.strokeWidth || 0,\n dash: element.dash?.length > 0 ? [...element.dash] : undefined,\n draggable: !groupChild && element.draggable,\n visible: element.visible,\n shadowEnabled: element.shadowEnabled,\n shadowColor: element.shadowColor,\n shadowBlur: element.shadowBlur,\n shadowOffsetX: element.shadowOffsetX,\n shadowOffsetY: element.shadowOffsetY,\n shadowOpacity: element.shadowOpacity,\n onClick: (e) => { if (onSelect) onSelect(e); },\n onTap: (e) => { if (onSelect) onSelect(e); },\n onDragEnd: handleDragEnd,\n onTransformEnd: handleTransformEnd,\n };\n\n const subType = element.subType || 'rect';\n\n // Center-origin shapes use offset so that node.x()/y() stays top-left\n // (matching our model) while the visual center is positioned correctly.\n const centerOffset = {\n offsetX: -(element.width / 2),\n offsetY: -(element.height / 2),\n };\n\n switch (subType) {\n case 'circle':\n case 'ellipse':\n return (\n <Circle\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n radiusX={element.width / 2}\n radiusY={element.height / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'triangle':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={3}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'star':\n return (\n <Star\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n numPoints={5}\n innerRadius={Math.min(element.width, element.height) / 4}\n outerRadius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'polygon':\n case 'hexagon':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={subType === 'hexagon' ? 6 : 5}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'diamond':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={4}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'path':\n if (!element.pathData) return null;\n return (\n <Group\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n >\n <Path\n data={element.pathData}\n fill={element.fill}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth ? element.strokeWidth * (100 / element.width) : 0}\n scaleX={element.width / 100}\n scaleY={element.height / 100}\n />\n </Group>\n );\n\n case 'arrow':\n return (\n <Arrow\n ref={shapeRef}\n {...commonProps}\n points={[0, element.height / 2, element.width, element.height / 2]}\n pointerLength={10}\n pointerWidth={10}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'rect':\n default:\n return (\n <Rect\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n cornerRadius={element.cornerRadius || 0}\n />\n );\n }\n});\n\nFigureElementComponent.displayName = 'FigureElement';\nexport default FigureElementComponent;\n","import React, { Fragment } from 'react';\nimport { Line as KonvaLine, Arrow, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst HANDLE_SIZE = 10;\nconst DEG = Math.PI / 180;\n\nconst LineElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n if (!element.visible) return null;\n\n const rot = (element.rotation || 0) * DEG;\n const cosR = Math.cos(rot);\n const sinR = Math.sin(rot);\n\n // Start and end points in canvas coordinates\n const startX = element.x;\n const startY = element.y;\n const endX = element.x + element.width * cosR;\n const endY = element.y + element.width * sinR;\n\n const hasArrow = element.endHead === 'arrow' || element.startHead === 'arrow';\n\n // Drag the whole line\n const handleLineDragEnd = (e) => {\n const dx = e.target.x();\n const dy = e.target.y();\n // The line is rendered at (0,0) with absolute points, so dx/dy is the drag offset\n e.target.x(0);\n e.target.y(0);\n element.set({\n x: element.x + dx,\n y: element.y + dy,\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Drag the START handle\n const handleStartDrag = (e) => {\n const newSX = e.target.x() + HANDLE_SIZE / 2;\n const newSY = e.target.y() + HANDLE_SIZE / 2;\n const dx = endX - newSX;\n const dy = endY - newSY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n x: newSX,\n y: newSY,\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position since the line re-renders from new model coords\n e.target.x(newSX - HANDLE_SIZE / 2);\n e.target.y(newSY - HANDLE_SIZE / 2);\n };\n\n const handleStartDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n // Drag the END handle\n const handleEndDrag = (e) => {\n const newEX = e.target.x() + HANDLE_SIZE / 2;\n const newEY = e.target.y() + HANDLE_SIZE / 2;\n const dx = newEX - startX;\n const dy = newEY - startY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position\n e.target.x(newEX - HANDLE_SIZE / 2);\n e.target.y(newEY - HANDLE_SIZE / 2);\n };\n\n const handleEndDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n const lineNode = hasArrow ? (\n <Arrow\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n fill={element.color || '#000000'}\n pointerLength={10}\n pointerWidth={10}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n ) : (\n <KonvaLine\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n );\n\n return (\n <Fragment>\n {lineNode}\n\n {/* Endpoint handles — only visible when selected */}\n {isSelected && (\n <Fragment>\n {/* Start handle */}\n <Rect\n x={startX - HANDLE_SIZE / 2}\n y={startY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleStartDrag}\n onDragEnd={handleStartDragEnd}\n />\n {/* End handle */}\n <Rect\n x={endX - HANDLE_SIZE / 2}\n y={endY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleEndDrag}\n onDragEnd={handleEndDragEnd}\n />\n </Fragment>\n )}\n </Fragment>\n );\n});\n\nLineElementComponent.displayName = 'LineElement';\nexport default LineElementComponent;\n","import React, { useRef, useCallback } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Group } from 'react-konva';\n\n// ElementRenderer is passed via the _ElementRenderer prop to avoid circular imports\nconst GroupElementComponent = observer(({ element, isSelected, onTransformEnd, onDragEnd, _ElementRenderer }) => {\n const groupRef = useRef(null);\n\n const handleDragEnd = useCallback((e) => {\n const node = e.target;\n element.set({\n x: node.x(),\n y: node.y(),\n });\n if (onDragEnd) onDragEnd(e);\n }, [element, onDragEnd]);\n\n const handleTransformEnd = useCallback((e) => {\n const node = groupRef.current;\n if (!node) return;\n\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n // Scale each child proportionally\n element.children.forEach((child) => {\n if (child.set) {\n const updates = {\n x: (child.x || 0) * scaleX,\n y: (child.y || 0) * scaleY,\n };\n if ('width' in child) updates.width = (child.width || 0) * scaleX;\n if ('height' in child) updates.height = (child.height || 0) * scaleY;\n if (child.type === 'text' && child.fontSize) {\n updates.fontSize = Math.round(child.fontSize * Math.max(scaleX, scaleY));\n }\n child.set(updates);\n }\n });\n\n // Update group position, rotation, dimensions\n element.set({\n x: node.x(),\n y: node.y(),\n rotation: node.rotation(),\n width: element.width * scaleX,\n height: element.height * scaleY,\n });\n\n // Reset scale on the Konva node\n node.scaleX(1);\n node.scaleY(1);\n\n if (onTransformEnd) onTransformEnd(e);\n }, [element, onTransformEnd]);\n\n if (!element.visible) return null;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'group'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={element.draggable !== false}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n >\n {_ElementRenderer && element.children.map((child) => (\n <_ElementRenderer\n key={child.id}\n element={child}\n isSelected={false}\n groupChild={true}\n />\n ))}\n </Group>\n );\n});\n\nGroupElementComponent.displayName = 'GroupElementComponent';\nexport default GroupElementComponent;\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport ImageElementComponent from './image-element';\nimport TextElementComponent from './text-element';\nimport SVGElementComponent from './svg-element';\nimport FigureElementComponent from './figure-element';\nimport LineElementComponent from './line-element';\nimport GroupElementComponent from './group-element';\n\nconst ELEMENT_RENDERERS = {\n image: ImageElementComponent,\n text: TextElementComponent,\n svg: SVGElementComponent,\n figure: FigureElementComponent,\n line: LineElementComponent,\n group: GroupElementComponent,\n};\n\nconst ElementRenderer = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const Renderer = ELEMENT_RENDERERS[element.type];\n\n if (!Renderer) {\n console.warn(`No renderer for element type: ${element.type}`);\n return null;\n }\n\n // Pass ElementRenderer itself to GroupElementComponent to avoid circular imports\n const extra = element.type === 'group' ? { _ElementRenderer: ElementRenderer } : {};\n\n return (\n <Renderer\n element={element}\n isSelected={isSelected}\n onSelect={onSelect}\n onTransformEnd={onTransformEnd}\n onDragEnd={onDragEnd}\n groupChild={groupChild}\n {...extra}\n />\n );\n});\n\nElementRenderer.displayName = 'ElementRenderer';\nexport default ElementRenderer;\nexport { ELEMENT_RENDERERS };\n","import React, { useState, useEffect, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Button, TextField, Typography, Box } from '@mui/material';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport { getInputFieldsConfig } from '../config';\nimport { t } from '../config';\n\n// ── Date formatting helpers (shared with input-fields-panel) ─────────\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nfunction formatDate(date, format) {\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const yyyy = String(date.getFullYear());\n const monthName = MONTH_NAMES[date.getMonth()];\n\n switch (format) {\n case 'MM-DD-YYYY':\n return `${mm}-${dd}-${yyyy}`;\n case 'MMMM-DD-YYYY':\n return `${monthName}-${dd}-${yyyy}`;\n case 'MMMM-DD':\n return `${monthName}-${dd}`;\n case 'YYYY':\n return yyyy;\n case 'MM-DD':\n return `${mm}-${dd}`;\n default:\n return `${mm}-${dd}-${yyyy}`;\n }\n}\n\nfunction parseDateFromFormat(dateStr, format) {\n try {\n const d = new Date(dateStr);\n if (!isNaN(d.getTime())) return d;\n } catch (e) {\n // ignore\n }\n return new Date();\n}\n\n// ── Default single-field dialog (full-page overlay) ──────────────────\nconst SingleFieldDialog = ({ field, onSubmit, onSkip, onBack, canGoBack, currentIndex, totalCount }) => {\n const [value, setValue] = useState('');\n const [imagePreview, setImagePreview] = useState(null);\n const fileInputRef = useRef(null);\n const config = getInputFieldsConfig();\n\n const custom = field.custom || {};\n const inputType = custom.inputType || 'text';\n const promptText = custom.promptText || custom.placeholder || 'Please provide input';\n const dateFormat = custom.dateFormat || 'MM-DD-YYYY';\n const isRequired = custom.required === true;\n const logoUrl = config.logoUrl || null;\n const headerText = config.headerText || null;\n const accentColor = config.accentColor || '#0d83cd';\n const progressPct = Math.round(((currentIndex + 1) / totalCount) * 100);\n\n useEffect(() => {\n setValue('');\n setImagePreview(null);\n }, [field.id]);\n\n const handleImageSelect = (e) => {\n const file = e.target.files?.[0];\n if (!file || !file.type.startsWith('image/')) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n const dataURL = ev.target.result;\n setValue(dataURL);\n setImagePreview(dataURL);\n };\n reader.readAsDataURL(file);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleSubmit = () => {\n if (inputType === 'date' && value) {\n const dateObj = parseDateFromFormat(value, dateFormat);\n const formatted = formatDate(dateObj, dateFormat);\n onSubmit(field.id, formatted);\n } else {\n onSubmit(field.id, value);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' && inputType !== 'image') handleSubmit();\n };\n\n const renderInput = () => {\n const sharedSx = {\n mt: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: '8px',\n fontSize: 22,\n '& fieldset': { borderColor: '#d0d5dd' },\n '&:hover fieldset': { borderColor: accentColor },\n '&.Mui-focused fieldset': { borderColor: accentColor },\n },\n ...config.inputStyle,\n };\n\n switch (inputType) {\n case 'date':\n return (\n <TextField\n fullWidth\n type=\"date\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n InputLabelProps={{ shrink: true }}\n sx={sharedSx}\n />\n );\n case 'integer':\n return (\n <TextField\n fullWidth\n type=\"number\"\n value={value}\n onChange={(e) => {\n const v = e.target.value;\n if (v === '' || /^-?\\d*$/.test(v)) setValue(v);\n }}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder=\"0\"\n inputProps={{ step: 1 }}\n sx={sharedSx}\n />\n );\n case 'image':\n return (\n <Box sx={{ mt: 1 }}>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleImageSelect}\n style={{ display: 'none' }}\n />\n {imagePreview ? (\n <Box sx={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 2 }}>\n <Box\n sx={{\n width: '100%',\n maxHeight: 260,\n borderRadius: '10px',\n overflow: 'hidden',\n border: '1px solid #e0e0e0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fafafa',\n }}\n >\n <img\n src={imagePreview}\n alt=\"Preview\"\n style={{ maxWidth: '100%', maxHeight: 260, objectFit: 'contain' }}\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => fileInputRef.current?.click()}\n sx={{ textTransform: 'none', fontSize: 13, borderRadius: '8px', borderColor: '#d0d5dd' }}\n >\n {t('inputFieldsDialog.changeImage', 'Change Image')}\n </Button>\n </Box>\n ) : (\n <Box\n onClick={() => fileInputRef.current?.click()}\n sx={{\n border: '2px dashed #d0d5dd',\n borderRadius: '10px',\n p: 4,\n textAlign: 'center',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n >\n <CloudUploadIcon sx={{ fontSize: 40, color: '#bbb', mb: 1.5 }} />\n <Typography variant=\"body2\" sx={{ color: '#888', fontSize: 14 }}>\n {t('inputFieldsDialog.uploadImage', 'Click to select an image')}\n </Typography>\n </Box>\n )}\n </Box>\n );\n case 'text':\n default:\n return (\n <TextField\n fullWidth\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder={custom.placeholder || ''}\n sx={sharedSx}\n />\n );\n }\n };\n\n return (\n <Box\n sx={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n backgroundColor: '#f7f8fa',\n display: 'flex',\n flexDirection: 'column',\n ...config.dialogStyle,\n }}\n >\n {/* Progress bar */}\n <Box sx={{ height: 4, backgroundColor: '#e4e7ec', flexShrink: 0 }}>\n <Box\n sx={{\n height: '100%',\n width: `${progressPct}%`,\n backgroundColor: accentColor,\n transition: 'width 0.4s ease',\n }}\n />\n </Box>\n\n {/* Header */}\n <Box\n sx={{\n backgroundColor: '#fff',\n borderBottom: '1px solid #f0f0f0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n px: 4,\n py: 1.75,\n flexShrink: 0,\n ...config.titleStyle,\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>\n {logoUrl && (\n <img\n src={logoUrl}\n alt=\"Logo\"\n style={{ maxHeight: 36, maxWidth: 200, objectFit: 'contain' }}\n />\n )}\n {(headerText || !logoUrl) && (\n <Typography sx={{ fontWeight: 700, fontSize: 17, color: '#1a1a1a', letterSpacing: '-0.2px' }}>\n {headerText || 'LabelLife'}\n </Typography>\n )}\n </Box>\n </Box>\n\n {/* Centered content */}\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n p: { xs: 3, sm: 5 },\n overflowY: 'auto',\n }}\n >\n <Box sx={{ width: '100%', maxWidth: 750 }}>\n {/* Step indicator */}\n <Typography\n sx={{ display: 'block', fontSize: 18, color: '#999', fontWeight: 500, mb: 1.5, letterSpacing: '0.2px' }}\n >\n {t('inputFieldsDialog.stepIndicator', 'Field {current} of {total}')\n .replace('{current}', currentIndex + 1)\n .replace('{total}', totalCount)}\n </Typography>\n\n {/* Main question */}\n <Typography\n sx={{\n fontSize: { xs: 33, sm: 39 },\n fontWeight: 700,\n color: '#111827',\n lineHeight: 1.3,\n mb: 4.5,\n ...config.promptStyle,\n }}\n >\n {promptText}\n </Typography>\n\n {/* Input */}\n {renderInput()}\n\n {/* Actions */}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mt: 4.5 }}>\n {canGoBack && (\n <Button\n variant=\"outlined\"\n onClick={onBack}\n startIcon={<ArrowBackIcon />}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 3,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n }}\n >\n {t('inputFieldsDialog.back', 'Back')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={handleSubmit}\n disabled={isRequired && !value}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: 21,\n px: 5,\n py: 1.65,\n borderRadius: '10px',\n backgroundColor: accentColor,\n boxShadow: 'none',\n '&:hover': { backgroundColor: '#0a6eb3', boxShadow: 'none' },\n ...config.submitButtonStyle,\n }}\n >\n {config.submitButtonText || t('inputFieldsDialog.submit', 'Continue')}\n </Button>\n {!isRequired && (\n <Button\n variant=\"outlined\"\n onClick={() => onSkip(field.id)}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 4.5,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n ...config.skipButtonStyle,\n }}\n >\n {config.skipButtonText || t('inputFieldsDialog.skip', 'Do it later')}\n </Button>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n\n// ── Main orchestrator component ──────────────────────────────────────\nconst InputFieldsDialog = observer(({ store, onComplete, enabled = true }) => {\n // displayIndex counts how many fields have been answered (for step indicator only).\n // Navigation always uses fields[0] — the first remaining pending field.\n const [displayIndex, setDisplayIndex] = useState(0);\n const initialTotalRef = useRef(0);\n const completedHistoryRef = useRef([]);\n const config = getInputFieldsConfig();\n\n const pendingFields = store._pendingInputFields || [];\n\n // When disabled, clear any pending fields so they are treated as skipped\n useEffect(() => {\n if (!enabled && pendingFields.length > 0) {\n store.clearPendingInputFields();\n }\n }, [enabled, pendingFields.length, store]);\n\n const fields = pendingFields.filter(\n (f) => f.custom && f.custom.inputField\n );\n\n // Capture total and reset display counter when a fresh batch appears\n useEffect(() => {\n if (fields.length > 0 && initialTotalRef.current === 0) {\n initialTotalRef.current = fields.length;\n setDisplayIndex(0);\n completedHistoryRef.current = [];\n }\n if (fields.length === 0) {\n initialTotalRef.current = 0;\n completedHistoryRef.current = [];\n }\n }, [fields.length]);\n\n const totalCount = initialTotalRef.current || fields.length;\n\n if (!enabled || fields.length === 0) return null;\n\n // Always show the first remaining field — the array shrinks as fields are resolved\n const currentField = fields[0];\n if (!currentField) return null;\n\n // ── Shared submit / skip / back helpers ─────────────────────────────\n const handleSubmit = (elementId, value) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: false });\n if (el && el.set) {\n if (isImage) {\n el.set({ src: String(value) });\n } else {\n el.set({ text: String(value) });\n }\n }\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n store.history.addUndoState();\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleSkip = (elementId) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: true });\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleBack = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n store._unresolveInputField(el);\n }\n setDisplayIndex((prev) => Math.max(0, prev - 1));\n };\n\n const canGoBack = displayIndex > 0;\n\n // ── Resolve which dialog component to use ───────────────────────────\n // Priority: per-type custom dialog > global CustomDialog > built-in\n const TYPE_DIALOG_MAP = {\n text: config.CustomTextDialog,\n date: config.CustomDateDialog,\n integer: config.CustomIntegerDialog,\n image: config.CustomImageDialog,\n };\n\n const fieldType = (currentField.custom && currentField.custom.inputType) || 'text';\n const PerTypeDialog = TYPE_DIALOG_MAP[fieldType];\n const GlobalCustomDialog = config.CustomDialog;\n const ResolvedDialog = PerTypeDialog || GlobalCustomDialog || null;\n\n if (ResolvedDialog) {\n return (\n <ResolvedDialog\n field={currentField}\n fields={fields}\n currentIndex={displayIndex}\n totalCount={totalCount}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n onComplete={() => {\n store.history.addUndoState();\n if (onComplete) onComplete();\n }}\n />\n );\n }\n\n return (\n <SingleFieldDialog\n field={currentField}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n currentIndex={displayIndex}\n totalCount={totalCount}\n />\n );\n});\n\nInputFieldsDialog.displayName = 'InputFieldsDialog';\nexport default InputFieldsDialog;\nexport { InputFieldsDialog };\n","import React, { useRef, useEffect, useCallback, useState } from 'react';\nimport { Stage, Layer, Rect, Transformer, Group, Image as KonvaImage, Shape } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport ElementRenderer from './element';\nimport InputFieldsDialog from '../components/InputFieldsDialog';\n\n// Generate a checkerboard pattern tile (off-screen canvas)\nconst createCheckerboardImage = (tileSize = 10, color1 = '#d4d4d4', color2 = '#ffffff') => {\n const canvas = document.createElement('canvas');\n canvas.width = tileSize * 2;\n canvas.height = tileSize * 2;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = color1;\n ctx.fillRect(0, 0, tileSize, tileSize);\n ctx.fillRect(tileSize, tileSize, tileSize, tileSize);\n ctx.fillStyle = color2;\n ctx.fillRect(tileSize, 0, tileSize, tileSize);\n ctx.fillRect(0, tileSize, tileSize, tileSize);\n const img = new window.Image();\n img.src = canvas.toDataURL();\n return img;\n};\n\nlet _checkerImg = null;\nconst getCheckerboardImage = () => {\n if (!_checkerImg) _checkerImg = createCheckerboardImage();\n return _checkerImg;\n};\n\nconst CheckerboardBackground = ({ w, h }) => {\n const [ready, setReady] = useState(false);\n const imgRef = useRef(getCheckerboardImage());\n useEffect(() => {\n const img = imgRef.current;\n if (img.complete) { setReady(true); return; }\n img.onload = () => setReady(true);\n return () => { img.onload = null; };\n }, []);\n if (!ready) return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillPatternImage={imgRef.current}\n fillPatternRepeat=\"repeat\"\n listening={false}\n name=\"page-background\"\n />\n );\n};\n\nconst ImageBackground = ({ url, w, h }) => {\n const [image, setImage] = useState(null);\n useEffect(() => {\n if (!url) { setImage(null); return; }\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => setImage(img);\n img.onerror = () => setImage(null);\n img.src = url;\n return () => { img.onload = null; img.onerror = null; };\n }, [url]);\n if (!image) return <Rect x={0} y={0} width={w} height={h} fill=\"#f0f0f0\" listening={false} name=\"page-background\" />;\n\n // \"cover\" fit: scale to fill canvas while maintaining aspect ratio, then center\n const imgW = image.naturalWidth || image.width;\n const imgH = image.naturalHeight || image.height;\n const scale = Math.max(w / imgW, h / imgH);\n const drawW = imgW * scale;\n const drawH = imgH * scale;\n const drawX = (w - drawW) / 2;\n const drawY = (h - drawH) / 2;\n\n return (\n <Group clipX={0} clipY={0} clipWidth={w} clipHeight={h} listening={false} name=\"page-background\">\n <KonvaImage x={drawX} y={drawY} width={drawW} height={drawH} image={image} listening={false} />\n </Group>\n );\n};\n\nconst PageBackground = observer(({ store }) => {\n const page = store.activePage;\n if (!page) return null;\n\n const bg = page.background;\n const w = store.width;\n const h = store.height;\n\n if (!bg) {\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n }\n\n if (bg === 'transparent') {\n return <CheckerboardBackground w={w} h={h} />;\n }\n\n // Linear gradient stored as JSON\n if (bg.startsWith('{')) {\n try {\n const grad = JSON.parse(bg);\n if (grad.type === 'linear') {\n const angle = (grad.angle || 0) * (Math.PI / 180);\n const cx = w / 2, cy = h / 2;\n const len = Math.sqrt(w * w + h * h) / 2;\n const x1 = cx - len * Math.cos(angle);\n const y1 = cy - len * Math.sin(angle);\n const x2 = cx + len * Math.cos(angle);\n const y2 = cy + len * Math.sin(angle);\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillLinearGradientStartPoint={{ x: x1, y: y1 }}\n fillLinearGradientEndPoint={{ x: x2, y: y2 }}\n fillLinearGradientColorStops={[0, grad.colors?.[0] || '#000000', 1, grad.colors?.[1] || '#ffffff']}\n listening={false}\n name=\"page-background\"\n />\n );\n }\n } catch (e) { /* fall through */ }\n }\n\n // Image URL background\n if (bg.startsWith('http')) {\n return <ImageBackground url={bg} w={w} h={h} />;\n }\n\n // Solid color\n if (bg.startsWith('#') || bg.startsWith('rgb') || bg.startsWith('hsl') || ['white', 'black', 'red', 'blue', 'green'].includes(bg)) {\n return <Rect x={0} y={0} width={w} height={h} fill={bg} listening={false} name=\"page-background\" />;\n }\n\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n});\n\n// Semi-transparent overlay that dims everything outside the page boundary.\n// Draws a huge rectangle with a rectangular hole cut out for the page area.\nconst PageOverlayFrame = observer(({ store }) => {\n const W = store.width;\n const H = store.height;\n if (!W || !H) return null;\n const BIG = 100000; // large enough to cover viewport at any zoom\n return (\n <Shape\n sceneFunc={(ctx, shape) => {\n ctx.beginPath();\n // Outer rectangle (clockwise)\n ctx.moveTo(-BIG, -BIG);\n ctx.lineTo(BIG, -BIG);\n ctx.lineTo(BIG, BIG);\n ctx.lineTo(-BIG, BIG);\n ctx.closePath();\n // Inner rectangle (counter-clockwise to create hole)\n ctx.moveTo(0, 0);\n ctx.lineTo(0, H);\n ctx.lineTo(W, H);\n ctx.lineTo(W, 0);\n ctx.closePath();\n ctx.fillStrokeShape(shape);\n }}\n fill=\"rgba(240,240,240,0.5)\"\n listening={false}\n />\n );\n});\n\nconst ALL_ANCHORS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nconst TEXT_ANCHORS = [\n 'top-left',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst CORNER_ANCHORS = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst SelectionTransformer = observer(({ store, stageRef }) => {\n const transformerRef = useRef(null);\n\n const selectedIds = [...store.selectedElementsIds];\n\n // Filter out line elements — they use custom endpoint handles instead\n const nonLineIds = selectedIds.filter((id) => {\n const el = store.getElementById(id);\n return el && el.type !== 'line';\n });\n\n const allText = nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'text';\n })();\n\n const useCorners = nonLineIds.length > 1 || (nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'group';\n })());\n\n const targetAnchors = useCorners ? CORNER_ANCHORS : allText ? TEXT_ANCHORS : ALL_ANCHORS;\n\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (!transformerRef.current || !stageRef.current) return;\n\n const stage = stageRef.current;\n const nodes = [];\n\n nonLineIds.forEach((id) => {\n const node = stage.findOne(`#${id}`);\n if (node) nodes.push(node);\n });\n\n transformerRef.current.enabledAnchors(targetAnchors);\n transformerRef.current.nodes(nodes);\n transformerRef.current.getLayer()?.batchDraw();\n });\n return () => cancelAnimationFrame(frame);\n }, [nonLineIds.length, nonLineIds.join(','), targetAnchors]);\n\n return (\n <Transformer\n ref={transformerRef}\n rotateEnabled={true}\n enabledAnchors={ALL_ANCHORS}\n boundBoxFunc={(oldBox, newBox) => {\n // Reject flip (negative) and too-small dimensions\n if (newBox.width < 5 || newBox.height < 5) {\n return oldBox;\n }\n return newBox;\n }}\n anchorSize={8}\n anchorCornerRadius={2}\n borderStroke=\"#0d83cd\"\n anchorStroke=\"#0d83cd\"\n anchorFill=\"#ffffff\"\n padding={0}\n />\n );\n});\n\nconst Workspace = observer(({ store, components = {}, showInputFieldsPopup = true, onInputFieldsComplete }) => {\n const stageRef = useRef(null);\n const containerRef = useRef(null);\n const [stageSize, setStageSize] = useState({ width: 800, height: 600 });\n\n const { PageControls } = components;\n\n // Resize observer\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateSize = () => {\n const { width, height } = container.getBoundingClientRect();\n setStageSize({ width, height });\n\n // Auto-fit the canvas.\n // Guard: if the container hasn't been laid out yet (width/height === 0)\n // the arithmetic produces a negative scale which mirrors the entire canvas.\n // Skip the update in that case — the ResizeObserver will fire again once\n // the container has real dimensions.\n if (store.width > 0 && store.height > 0 && width > 0 && height > 0) {\n const padding = 40;\n const scaleX = (width - padding * 2) / store.width;\n const scaleY = (height - padding * 2) / store.height;\n const scale = Math.min(scaleX, scaleY, 1);\n if (scale > 0) {\n store._setScaleToFit(scale);\n if (store.scale === 1) {\n store.setScale(scale);\n }\n }\n }\n };\n\n updateSize();\n\n const observer = new ResizeObserver(updateSize);\n observer.observe(container);\n\n return () => observer.disconnect();\n }, [store.width, store.height]);\n\n // Set stage ref on store for export\n useEffect(() => {\n if (stageRef.current) {\n store._setStageRef(stageRef.current);\n }\n }, [stageRef.current]);\n\n const handleStageMouseDown = useCallback(\n (e) => {\n let target = e.target;\n\n // Click on empty area or background -> deselect\n if (target === target.getStage() || target.attrs?.name === 'page-background') {\n store.selectElements([]);\n return;\n }\n\n // Walk up the node tree to find the nearest ancestor with an element id\n // (needed for Group-wrapped elements like lines)\n let clickedId = target.id();\n while (!clickedId && target.parent && target.parent !== target.getStage()) {\n target = target.parent;\n clickedId = target.id();\n }\n if (!clickedId) return;\n\n const element = store.getElementById(clickedId);\n if (!element || !element.selectable) return;\n\n // If element is inside a group, select the top-level group instead\n const targetElement = element.top || element;\n const targetId = targetElement.id;\n\n if (e.evt?.ctrlKey || e.evt?.metaKey) {\n // Multi-select with Ctrl (Cmd on Mac)\n const currentIds = [...store.selectedElementsIds];\n const idx = currentIds.indexOf(targetId);\n if (idx >= 0) {\n currentIds.splice(idx, 1);\n } else {\n currentIds.push(targetId);\n }\n store.selectElements(currentIds);\n } else if (!store.selectedElementsIds.includes(targetId)) {\n store.selectElements([targetId]);\n }\n },\n [store]\n );\n\n const handleTransformEnd = useCallback(() => {\n // Save to history after transform\n store.history.addUndoState();\n }, [store]);\n\n const handleDragEnd = useCallback(() => {\n // Save to history after drag\n store.history.addUndoState();\n }, [store]);\n\n // Keyboard shortcuts\n useEffect(() => {\n const handleKeyDown = (e) => {\n // Only handle if stage container or body is focused\n const target = e.target;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n return;\n }\n\n // Delete / Backspace\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n store.deleteElements(selectedIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+Z / Cmd+Z -> Undo\n if ((e.ctrlKey || e.metaKey) && e.key === 'z' && !e.shiftKey) {\n store.history.undo();\n e.preventDefault();\n }\n\n // Ctrl+Y / Cmd+Shift+Z -> Redo\n if (\n ((e.ctrlKey || e.metaKey) && e.key === 'y') ||\n ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'z')\n ) {\n store.history.redo();\n e.preventDefault();\n }\n\n // Ctrl+D -> Duplicate\n if ((e.ctrlKey || e.metaKey) && e.key === 'd') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0 && store.activePage) {\n const newIds = [];\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.clone) {\n const cloned = el.clone({ x: (el.x || 0) + 20, y: (el.y || 0) + 20 }, { skipSelect: true });\n if (cloned) newIds.push(cloned.id);\n }\n });\n store.selectElements(newIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+G -> Group selected elements\n if ((e.ctrlKey || e.metaKey) && e.key === 'g' && !e.shiftKey) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 1) {\n const group = store.groupElements(selectedIds);\n if (group) {\n store.selectElements([group.id]);\n store.history.addUndoState();\n }\n e.preventDefault();\n }\n }\n\n // Ctrl+Shift+G -> Ungroup\n if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'G') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length === 1) {\n const el = store.getElementById(selectedIds[0]);\n if (el && el.type === 'group') {\n store.ungroupElements([el.id]);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n }\n\n // Arrow keys -> nudge\n const NUDGE = e.shiftKey ? 10 : 1;\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key)) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.set) {\n if (e.key === 'ArrowLeft') el.set({ x: el.x - NUDGE });\n if (e.key === 'ArrowRight') el.set({ x: el.x + NUDGE });\n if (e.key === 'ArrowUp') el.set({ y: el.y - NUDGE });\n if (e.key === 'ArrowDown') el.set({ y: el.y + NUDGE });\n }\n });\n e.preventDefault();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [store]);\n\n // Zoom with mouse wheel\n const handleWheel = useCallback(\n (e) => {\n e.evt.preventDefault();\n const stage = stageRef.current;\n if (!stage) return;\n\n const scaleBy = 1.05;\n const oldScale = store.scale;\n const newScale =\n e.evt.deltaY > 0 ? oldScale / scaleBy : oldScale * scaleBy;\n\n store.setScale(Math.max(0.1, Math.min(5, newScale)));\n },\n [store]\n );\n\n const page = store.activePage;\n const scale = store.scale;\n // Reading _fontVersion makes this observer re-render whenever a font finishes\n // loading, so Konva redraws text with the correct font instead of the fallback.\n void store._fontVersion;\n\n // Center the canvas in the viewport\n const offsetX = (stageSize.width - store.width * scale) / 2;\n const offsetY = (stageSize.height - store.height * scale) / 2;\n\n return (\n <div\n ref={containerRef}\n style={{\n width: '100%',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n position: 'relative',\n background: '#f0f0f0',\n }}\n >\n <Stage\n ref={stageRef}\n width={stageSize.width}\n height={stageSize.height}\n onMouseDown={handleStageMouseDown}\n onTouchStart={handleStageMouseDown}\n onWheel={handleWheel}\n >\n <Layer\n x={offsetX}\n y={offsetY}\n scaleX={scale}\n scaleY={scale}\n >\n {/* Canvas shadow */}\n <Rect\n x={4}\n y={4}\n width={store.width}\n height={store.height}\n fill=\"rgba(0,0,0,0.1)\"\n cornerRadius={0}\n listening={false}\n />\n\n {/* Page background */}\n <PageBackground store={store} />\n\n {/* Elements */}\n {page &&\n page.children.map((element) => (\n <ElementRenderer\n key={element.id}\n element={element}\n isSelected={store.selectedElementsIds.includes(element.id)}\n onTransformEnd={handleTransformEnd}\n onDragEnd={handleDragEnd}\n />\n ))}\n\n {/* Overlay that dims content outside the page */}\n <PageOverlayFrame store={store} />\n\n {/* Selection transformer */}\n <SelectionTransformer store={store} stageRef={stageRef} />\n </Layer>\n </Stage>\n\n {/* Page controls slot */}\n {PageControls !== undefined ? (\n PageControls === null ? null : <PageControls store={store} />\n ) : null}\n\n {/* Input fields popup */}\n <InputFieldsDialog store={store} enabled={showInputFieldsPopup} onComplete={onInputFieldsComplete} />\n </div>\n );\n});\n\nWorkspace.displayName = 'Workspace';\nexport default Workspace;\nexport { Workspace };\n","const UNITS = {\n px: 1,\n mm: 25.4,\n cm: 2.54,\n in: 1,\n pt: 72,\n pc: 6,\n};\n\nexport function unitToPx({ unit = 'px', dpi = 72, unitVal = 0 }) {\n if (unit === 'px') return unitVal;\n if (unit === 'in') return unitVal * dpi;\n if (unit === 'mm') return (unitVal / 25.4) * dpi;\n if (unit === 'cm') return (unitVal / 2.54) * dpi;\n if (unit === 'pt') return (unitVal / 72) * dpi;\n if (unit === 'pc') return (unitVal / 6) * dpi;\n return unitVal;\n}\n\nexport function pxToUnit({ unit = 'px', dpi = 72, pxVal = 0 }) {\n if (unit === 'px') return pxVal;\n if (unit === 'in') return pxVal / dpi;\n if (unit === 'mm') return (pxVal / dpi) * 25.4;\n if (unit === 'cm') return (pxVal / dpi) * 2.54;\n if (unit === 'pt') return (pxVal / dpi) * 72;\n if (unit === 'pc') return (pxVal / dpi) * 6;\n return pxVal;\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\n\n// Layout components matching polotno's PolotnoContainer / SidePanelWrap / WorkspaceWrap\nexport function DesignContainer({ children, style, ...props }) {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n ...style,\n }}\n {...props}\n >\n {children}\n </Box>\n );\n}\n\n// Alias for polotno compat\nexport const PolotnoContainer = DesignContainer;\n\nexport function SidePanelWrap({ children, style, ...props }) {\n return (\n <Box\n sx={{\n display: 'flex',\n flexShrink: 0,\n height: '100%',\n overflow: 'visible',\n ...style,\n }}\n {...props}\n >\n {children}\n </Box>\n );\n}\n\nexport function WorkspaceWrap({ children, style, ...props }) {\n return (\n <Box\n sx={{\n flex: 1,\n minHeight: 0,\n position: 'relative',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n ...style,\n }}\n {...props}\n >\n {children}\n </Box>\n );\n}\n\n// Re-export store\nexport { createStore, Store } from './model/store';\n\n// Re-export side panel\nexport {\n SidePanel,\n DEFAULT_SECTIONS,\n SectionTab,\n ImagesGrid,\n TextSection,\n BackgroundSection,\n LayersSection,\n ElementsSection,\n UploadSection,\n InputFieldsSection,\n} from './side-panel/index';\n\n// Re-export toolbar\nexport { Toolbar } from './toolbar/toolbar';\nexport { ZoomButtons } from './toolbar/zoom-buttons';\n\n// Re-export workspace\nexport { Workspace } from './canvas/workspace';\n\n// Re-export config\nexport { setTranslations, getTranslations, t, setTheme, getTheme, setInputFieldsConfig, getInputFieldsConfig } from './config';\n\n// Re-export utils\nexport { unitToPx, pxToUnit } from './utils/unit';\nexport { getImageSize, loadImage, cropImage } from './utils/image';\nexport { fetchGoogleFonts, loadGoogleFont, DEFAULT_FONTS } from './utils/fonts';\n\n// Re-export components\nexport { InputFieldsDialog } from './components/InputFieldsDialog';\n"],"names":["Node","types","model","id","optional","identifier","uuidv4","type","string","name","opacity","number","custom","frozen","visible","selectable","removable","alwaysOnTop","showInExport","preProcessSnapshot","snapshot","s","_objectSpread","locked","draggable","undefined","resizable","contentEditable","styleEditable","parseFloat","views","self","page","parent","getParent","e","store","getRoot","top","grandParent","arr","zIndex","indexOf","actions","toJSON","json","_i","_Object$keys","Object","keys","length","key","startsWith","clone","attrs","arguments","_ref","_ref$skipSelect","skipSelect","assign","addElement","set","_i2","_Object$entries","entries","_Object$entries$_i","_slicedToArray","value","moveUp","moveElementUp","moveTop","moveElementTop","moveDown","moveElementDown","moveBottom","moveElementBottom","setZIndex","setElementZIndex","beforeDestroy","Animation","delay","duration","enabled","data","ShapeFilter","intensity","Shape","named","props","x","y","width","height","rotation","animations","array","blurEnabled","blurRadius","brightnessEnabled","brightness","sepiaEnabled","grayscaleEnabled","warmEnabled","coldEnabled","filters","map","shadowEnabled","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","shadowOpacity","numericKeys","forEach","boolKeys","setAnimation","existing","find","a","push","setFilter","ImageElement","src","cropX","cropY","cropWidth","cropHeight","cornerRadius","flipX","flipY","clipSrc","borderColor","borderSize","keepRatio","stretchEnabled","_cropModeEnabled","toggleCropMode","flag","TextElement","text","placeholder","fontSize","fontFamily","fontStyle","fontWeight","union","textDecoration","textTransform","fill","align","verticalAlign","strokeWidth","stroke","lineHeight","letterSpacing","backgroundEnabled","backgroundColor","backgroundOpacity","backgroundCornerRadius","backgroundPadding","curveEnabled","curvePower","parts","trim","split","styleWords","weightWords","weightKeywords","p","includes","join","String","_editModeEnabled","toggleEditMode","editing","SVGElement","maskSrc","colorsReplace","replaceColor","oldColor","newColor","FigureElement","subType","dash","pathData","LineElement","color","startHead","endHead","TYPES_MAP","image","svg","figure","line","ElementUnion","dispatcher","GroupElement","children","late","minX","Infinity","minY","maxX","maxY","child","cx","cy","cw","ch","Math","min","max","gx","gy","cj","getSnapshot","forEveryChild","node","cb","Page","literal","background","bleed","_exporting","_rendering","_forceMount","computedWidth","computedHeight","startTime","time","_iterator","_createForOfIteratorHelper","pages","_step","n","done","err","f","_exportingOrRendering","select","selectPage","addPage","elementData","newElement","selectElements","_findChildIndex","findIndex","c","canMoveElementsUp","ids","_iterator2","_step2","idx","moveElementsUp","_iterator3","_step3","splice","canMoveElementsTop","_iterator4","_step4","moveElementsTop","_iterator5","_step5","canMoveElementsDown","_iterator6","_step6","moveElementsDown","_iterator7","_step7","canMoveElementsBottom","_iterator8","_step8","moveElementsBottom","_iterator9","_step9","setSize","_ref2","useMagic","softChange","setPageZIndex","_forEachElementUp","callback","i","_forEachElementDown","play","History","history","undoIdx","targetPath","_isTransacting","_skipSave","_ignoring","canUndo","canRedo","startTransaction","endTransaction","skipSave","addUndoState","ignore","func","transaction","_asyncToGenerator","_regenerator","m","_callee","w","_context","root","stateToSave","scale","scaleToFit","console","warn","_restoreState","state","currentHistory","currentScale","currentScaleToFit","applySnapshot","savedPage","targetIds","currentIds","every","snapById","clear","undo","redo","afterCreate","replaceState","requestAddState","isBase64DataUrl","v","stripBase64FromElement","el","out","isInputField","inputField","Array","isArray","stripBase64FromExport","Font","url","styles","Audio","endTime","volume","Store","role","fonts","audios","unit","dpi","schemaVersion","bleedVisible","rulesVisible","distanceGuidesVisible","openedSidePanel","previousOpenedSidePanel","tool","selectedElementsIds","_activePageId","_selectedPagesIds","_elementsPixelRatio","_stageRef","_listeners","Map","_key","_showCredit","currentTime","isPlaying","_toolbarPanel","_fontVersion","_pendingInputFields","_idsMap","selectedElements","filter","Boolean","selectedShapes","activePage","selectedPages","active","total","inputFields","fields","_hasCroppedImages","getElementById","requestInputFields","_resolveInputField","_unresolveInputField","alreadyPending","some","unshift","clearPendingInputFields","_Object$entries2","_Object$entries2$_i","setUnit","setRole","setTool","setToolOptions","options","pageData","newPage","selectPages","replace","stillSelected","elementId","toggleBleed","toggleRulers","toggleDistanceGuides","openSidePanel","panelName","openToolbarPanel","closeToolbarPanel","setScale","_setScaleToFit","setElementsPixelRatio","ratio","deletePages","toRemove","destroy","groupElements","elements","sortedIndices","sort","b","groupChildren","_ref3","group","ungroupElements","newChildIds","groupSnapshot","groupX","groupY","childSnapshot","newEl","deleteElements","on","event","has","get","listeners","_emit","_setStageRef","ref","_toCanvas","_arguments","_ref4","_ref4$pixelRatio","pixelRatio","pageId","stage","layer","prevX","prevY","prevScaleX","prevScaleY","canvas","ignoreBackground","mimeType","includeBleed","_skipTimeout","quickMode","Error","getLayers","scaleX","scaleY","draw","toCanvas","toDataURL","_arguments2","_callee2","_ref5","_ref5$mimeType","_ref5$quality","quality","rest","_context2","dpiMetadata","_objectWithoutProperties","_excluded","toBlob","_arguments3","_callee3","_ref6","_ref6$mimeType","_ref6$quality","_context3","_excluded2","Promise","resolve","reject","blob","saveAsImage","_arguments4","_callee4","_ref7","_ref7$fileName","fileName","exportProps","dataURL","link","_context4","_excluded3","document","createElement","download","href","click","toPDFDataURL","_arguments5","_callee5","_ref8","_ref8$pixelRatio","_ref8$includeBleed","widthPt","heightPt","orientation","pdf","prevActivePageId","imgData","_context5","_toConsumableArray","jsPDF","format","compress","r","setTimeout","addImage","output","saveAsPDF","_arguments6","_callee6","_ref9","_ref9$fileName","_context6","_excluded4","saveAsJSON","_ref0","_ref0$fileName","_ref0$stripBase","stripBase64","JSON","stringify","Blob","URL","createObjectURL","revokeObjectURL","waitLoading","_arguments7","_callee7","_ref1","_ref1$_skipTimeout","_context7","loadJSON","keepHistory","parse","font","audio","_autoLoadFonts","_ref10","_ref10$keepHistory","addFont","removeFont","addAudio","removeAudio","audioId","loadFont","_callee8","_t","_context8","concat","toLowerCase","encodeURIComponent","rel","onload","onerror","head","appendChild","load","ready","batchDraw","Set","collectFromChildren","add","validate","errors","path","message","checkActivePage","setCurrentTime","_togglePlaying","playing","stop","seek","_initConfig","showCredit","createStore","_ref11","_ref11$key","_ref11$showCredit","create","SectionTab","onClick","_jsxs","ButtonBase","sx","display","flexDirection","alignItems","justifyContent","padding","minHeight","borderRadius","transition","_jsx","Box","mb","Typography","variant","GLOBAL_KEY","window","_get","deepMerge","target","source","result","_typeof","setTranslations","newTranslations","getTranslations","t","defaultValue","current","part","_theme","translations","_setTranslations","setTheme","theme","getTheme","INPUT_FIELDS_CONFIG_KEY","setInputFieldsConfig","config","getInputFieldsConfig","addTextToCanvas","opts","scaleFactor","round","defaults","TEXT_TEMPLATES","preview","_fontsPreloaded","preloadTemplateFonts","all","fetch","then","results","_data$pages","TextTab","observer","_useState","useState","_useState2","loadingIdx","setLoadingIdx","useEffect","presets","label","handleTemplateClick","useCallback","tmpl","_data$pages2","res","templateChildren","newIds","childData","error","_x","_x2","apply","preset","Button","fullWidth","py","px","mt","gridTemplateColumns","gap","cursor","overflow","border","boxShadow","alt","loading","crossOrigin","style","_uploadedFonts","_fontIdCounter","registerFont","displayName","blobUrl","textContent","familyName","styleEl","MyFontsTab","_useState3","_useState4","setRenderKey","forceUpdate","k","fileInputRef","useRef","handleUpload","_e$target$files","file","files","rawName","_registerFont","Date","now","handleDelete","_font$styleEl","parentNode","removeChild","handleFontClick","accept","onChange","_fileInputRef$current","startIcon","FileUploadOutlinedIcon","position","textAlign","userSelect","IconButton","size","stopPropagation","bottom","right","DeleteOutlineIcon","TextPanelContent","_useState5","_useState6","activeTab","setActiveTab","borderBottom","tab","flex","overflowY","TextSection","Tab","TextFieldsIcon","Panel","hsvToRgb","h","floor","q","tt","g","rgbToHsv","d","hexToRgb","hex","parseInt","substr","rgbToHex","toString","padStart","hueToColor","UNSPLASH_KEY","UNSPLASH_BASE","SWATCH_COLORS","PICKER_PRESETS","CHECKER_SVG","SatBrightSquare","hue","sat","bright","_ref$size","dragging","update","_ref$current","rect","getBoundingClientRect","clientX","left","clientY","onMove","preventDefault","onUp","addEventListener","removeEventListener","onMouseDown","transform","pointerEvents","HueBar","_ref2$width","_ref$current2","ColorPicker","hsv","setHsv","rgb","setRgb","hexInput","setHexInput","emit","newRgb","handleHex","val","test","handleRgb","isNaN","smallSx","TextField","onFocus","inputProps","disabled","flexWrap","ColorPopup","open","onClose","onBackgroundChange","_useState7","_useState8","setTab","_useState9","_useState0","solidColor","setSolidColor","_useState1","_useState10","gradColors","setGradColors","_useState11","_useState12","gradAngle","setGradAngle","_useState13","_useState14","activeStop","setActiveStop","colors","angle","handleSolid","handleGradColor","nc","handleAngle","tabStyle","pb","ClickAwayListener","onClickAway","Paper","elevation","_Fragment","flexShrink","transformOrigin","ml","BackgroundPanelContent","_useState15","_useState16","pickerOpen","setPickerOpen","_useState17","_useState18","searchQuery","setSearchQuery","_useState19","_useState20","photos","setPhotos","_useState21","_useState22","setLoading","_useState23","_useState24","lastSolidColor","setLastSolidColor","_useState25","_useState26","hasMore","setHasMore","_useState27","_useState28","pageNum","setPageNum","hasMoreRef","pageNumRef","currentQueryRef","debounceRef","isFirstRender","requestIdRef","observerRef","fetchingRef","bg","fetchPhotos","query","pg","totalPages","more","_args","total_pages","prev","clearTimeout","sentinelRef","disconnect","IntersectionObserver","isIntersecting","threshold","observe","setBackground","overflowX","minWidth","backgroundImage","backgroundSize","InputProps","startAdornment","InputAdornment","SearchIcon","photo","_photo$urls","_photo$urls2","thumb","urls","small","_photo$urls3","_photo$urls4","regular","aspectRatio","alt_description","objectFit","BackgroundSection","WallpaperIcon","ELEMENT_ICONS","ImageIcon","CategoryIcon","TimelineIcon","CodeIcon","LayerItem","element","index","isSelected","Icon","isLocked","handleSelect","handleToggleVisibility","handleToggleLock","handleMoveUp","handleMoveDown","substring","ListItem","ListItemIcon","ListItemText","primary","primaryTypographyProps","noWrap","ArrowUpwardIcon","ArrowDownwardIcon","VisibilityIcon","VisibilityOffIcon","LockIcon","LockOpenIcon","LayersPanelContent","reverse","List","dense","disablePadding","LayersSection","LayersIcon","LINES","svgLine","strokeDasharray","marker","startDot","startSquare","SHAPES","FILL_COLOR","builtInPaths","circle","star","triangle","diamond","hexagon","polygon","ShapeThumbnail","shape","svgPath","viewBox","LineThumbnail","x1","y1","x2","y2","strokeLinecap","points","ElementsPanelContent","addShape","isRect","addLine","lineWidth","shapeBoxSx","lineBoxSx","ElementsSection","getImageSize","img","Image","naturalWidth","naturalHeight","loadImage","cropImage","outputWidth","outputHeight","ctx","getContext","drawImage","UploadPanelContent","images","setImages","isDragging","setIsDragging","processFiles","newImages","_yield$getImageSize","_t2","random","slice","handleDrop","_e$dataTransfer$files","dataTransfer","from","handleDragOver","handleDragLeave","handleFileInput","addImageToCanvas","removeImage","onDrop","onDragOver","onDragLeave","CloudUploadIcon","multiple","paddingTop","className","DeleteIcon","UploadSection","FILTER_PRESETS","EffectRow","onToggle","step","Switch","checked","Slider","_","ImageEffectsPanel","panel","handleClose","commit","resetAll","applyPreset","grayscale","sepia","cold","natural","warm","getActivePreset","borderRight","CloseIcon","isActive","MASK_SHAPES","clipFunc","beginPath","ellipse","PI","closePath","clipId","moveTo","lineTo","outerR","innerR","cos","sin","topY","bezierCurveTo","quadraticCurveTo","ImageMaskPanel","applyMask","removeMask","hasMask","maxWidth","maxHeight","SliderRow","_ref$min","_ref$max","_ref$step","TextEffectsPanel","DEFAULT_SECTIONS","SidePanel","sections","defaultSection","sectionsList","activeSection","setActiveSection","section","handleTabClick","sectionName","activeSectionObj","TabComponent","visibleInList","borderLeft","ChevronLeftIcon","ImagesGrid","_ref$images","getPreview","onSelect","_ref$rowsNumber","rowsNumber","_ref$isLoading","isLoading","loadMore","itemHeight","CircularProgress","columns","item","currentTarget","IMAGE_PLACEHOLDER_SRC","MONTH_NAMES","DATE_FORMATS","formatDate","date","mm","getMonth","dd","getDate","yyyy","getFullYear","monthName","InputFieldCard","icon","description","InputFieldsPanelContent","dateFormat","setDateFormat","textPrompt","setTextPrompt","datePrompt","setDatePrompt","integerPrompt","setIntegerPrompt","imagePrompt","setImagePrompt","textRequired","setTextRequired","dateRequired","setDateRequired","integerRequired","setIntegerRequired","imageRequired","setImageRequired","addInputElement","inputType","extra","promptText","required","dummyText","defaultPrompt","textWidth","mr","FormControlLabel","control","Checkbox","CalendarTodayIcon","FormControl","InputLabel","Select","fmt","MenuItem","NumbersIcon","Divider","my","MarkAsVariableForm","_selectedElement$cust","markLabel","setMarkLabel","markRequired","setMarkRequired","markInputType","setMarkInputType","selectedIds","selectedElement","isImageElement","isTextElement","isSupportedElement","isAlreadyVariable","_selectedElement$cust2","_selectedElement$cust3","_selectedElement$cust4","handleMark","handleUnmark","Alert","severity","Chip","bgcolor","InputFieldsSection","InputIcon","GOOGLE_FONTS_API","cachedFonts","fetchGoogleFonts","_fetchGoogleFonts","apiKey","response","items","family","variants","category","loadGoogleFont","_loadGoogleFont","DEFAULT_FONTS","_fontPreviewLoaded","loadFontPreview","FontPreviewOption","memo","liProps","io","entry","rootMargin","TextToolbar","_store$_toolbarPanel","handleFontSizeChange","toggleBold","toggleItalic","toggleUnderline","toggleStrikethrough","handleAlignChange","handleColorChange","Autocomplete","disableClearable","renderOption","option","renderInput","params","ListboxProps","flexItem","mx","Tooltip","title","FormatBoldIcon","FormatItalicIcon","FormatUnderlinedIcon","StrikethroughSIcon","ToggleButtonGroup","exclusive","ToggleButton","FormatAlignLeftIcon","FormatAlignCenterIcon","FormatAlignRightIcon","whiteSpace","AutoAwesomeIcon","_store$_toolbarPanel2","toolbarBtnSx","ImageToolbar","_store$_toolbarPanel5","_store$_toolbarPanel6","flipAnchor","setFlipAnchor","handleFlipX","handleFlipY","handleFitToPage","handleEffects","_store$_toolbarPanel3","handleMask","_store$_toolbarPanel4","Menu","anchorEl","anchorOrigin","vertical","horizontal","slotProps","paper","SwapHorizIcon","SwapVertIcon","FigureToolbar","handleFillChange","handleStrokeChange","handleStrokeWidthChange","handleCornerRadiusChange","LineToolbar","CommonControls","handleDuplicate","handleOpacityChange","handleOpacityCommit","OpacityIcon","onChangeCommitted","ContentCopyIcon","DefaultDownloadButton","setAnchorEl","fileType","setFileType","setQuality","exporting","setExporting","handleClick","qualityToPixelRatio","resWidth","resHeight","handleDownload","fileTypeLabel","png","jpeg","endIcon","ArrowDropDownIcon","Popover","DefaultImportButton","importing","setImporting","React","handleFileChange","jsonData","_t3","FileUploadIcon","TYPE_TOOLBARS","rowSx","scrollbarWidth","Toolbar","_ref11$components","components","ActionControls","ImportButton","DownloadButton","TypeToolbar","UndoIcon","RedoIcon","visibility","ZoomButtons","zoomIn","zoomOut","zoomToFit","zoomPercentage","ZoomOutIcon","ZoomInIcon","FitScreenIcon","SepiaFilter","imageData","WarmFilter","ColdFilter","ImageElementComponent","onTransformEnd","onDragEnd","groupChild","imageRef","groupRef","setImage","autoCropRef","autoCropSrcRef","Konva","Filters","Blur","Brighten","Grayscale","hasFilters","hasBorder","needsCache","cache","clearCache","handleDragEnd","updateAutoCrop","oldX","oldY","oldW","oldH","newX","newY","newW","newH","crop","newAspect","xMoved","abs","yMoved","wChanged","hChanged","handleTransform","handleTransformEnd","modelHasCrop","natW","natH","elemAspect","imgAspect","cropProps","ac","rw","rh","rx","ry","maskShape","imageNode","KonvaImage","offsetX","offsetY","Group","onTap","onTransform","Rect","listening","TextElementComponent","_element$backgroundOp","textRef","textHeight","setTextHeight","onFontLoaded","_node$getLayer","getLayer","frame","requestAnimationFrame","cancelAnimationFrame","_node$getLayer2","newWidth","newFontSize","tNode","handleDblClick","textNode","grp","getStage","hide","stageContainer","container","textPosition","absolutePosition","absScale","getAbsoluteScale","cssFontStyle","cssFontWeight","textarea","borderWidth","margin","outline","resize","appearance","webkitAppearance","boxSizing","wordBreak","focus","removed","removeTextarea","show","displayText","toUpperCase","fontStyleStr","weight","pad","onDblClick","onDblTap","KonvaText","fillAfterStrokeEnabled","SVGElementComponent","_element$colorsReplac","_element$colorsReplac2","svgSrc","svgContent","atob","decodeURIComponent","RegExp","btoa","call","FigureElementComponent","_element$dash","shapeRef","commonProps","centerOffset","Circle","radiusX","radiusY","RegularPolygon","sides","radius","Star","numPoints","innerRadius","outerRadius","Path","Arrow","pointerLength","pointerWidth","HANDLE_SIZE","DEG","LineElementComponent","_element$dash2","rot","cosR","sinR","startX","startY","endX","endY","hasArrow","handleLineDragEnd","dx","dy","handleStartDrag","newSX","newSY","sqrt","newRotation","atan2","handleStartDragEnd","handleEndDrag","newEX","newEY","handleEndDragEnd","lineNode","hitStrokeWidth","KonvaLine","Fragment","onDragMove","GroupElementComponent","_ElementRenderer","updates","ELEMENT_RENDERERS","ElementRenderer","Renderer","parseDateFromFormat","dateStr","getTime","SingleFieldDialog","field","onSubmit","onSkip","onBack","canGoBack","currentIndex","totalCount","setValue","imagePreview","setImagePreview","isRequired","logoUrl","headerText","accentColor","progressPct","handleImageSelect","reader","FileReader","ev","readAsDataURL","handleSubmit","dateObj","formatted","handleKeyDown","sharedSx","inputStyle","onKeyDown","autoFocus","InputLabelProps","shrink","_fileInputRef$current2","inset","dialogStyle","titleStyle","xs","sm","promptStyle","ArrowBackIcon","submitButtonStyle","submitButtonText","skipButtonStyle","skipButtonText","InputFieldsDialog","onComplete","_ref2$enabled","displayIndex","setDisplayIndex","initialTotalRef","completedHistoryRef","pendingFields","currentField","isImage","previousValue","skipped","handleSkip","handleBack","last","pop","TYPE_DIALOG_MAP","CustomTextDialog","CustomDateDialog","integer","CustomIntegerDialog","CustomImageDialog","fieldType","PerTypeDialog","GlobalCustomDialog","CustomDialog","ResolvedDialog","createCheckerboardImage","tileSize","color1","color2","fillStyle","fillRect","_checkerImg","getCheckerboardImage","CheckerboardBackground","setReady","imgRef","complete","fillPatternImage","fillPatternRepeat","ImageBackground","imgW","imgH","drawW","drawH","drawX","drawY","clipX","clipY","clipWidth","clipHeight","PageBackground","grad","_grad$colors","_grad$colors2","len","fillLinearGradientStartPoint","fillLinearGradientEndPoint","fillLinearGradientColorStops","PageOverlayFrame","W","H","BIG","sceneFunc","fillStrokeShape","ALL_ANCHORS","TEXT_ANCHORS","CORNER_ANCHORS","SelectionTransformer","stageRef","transformerRef","nonLineIds","allText","useCorners","targetAnchors","_transformerRef$curre","nodes","findOne","enabledAnchors","Transformer","rotateEnabled","boundBoxFunc","oldBox","newBox","anchorSize","anchorCornerRadius","borderStroke","anchorStroke","anchorFill","Workspace","_ref6$components","_ref6$showInputFields","showInputFieldsPopup","onInputFieldsComplete","containerRef","stageSize","setStageSize","PageControls","updateSize","_container$getBoundin","ResizeObserver","handleStageMouseDown","_target$attrs","_e$evt","_e$evt2","clickedId","targetElement","targetId","evt","ctrlKey","metaKey","tagName","shiftKey","cloned","NUDGE","handleWheel","scaleBy","oldScale","newScale","deltaY","Stage","onTouchStart","onWheel","Layer","unitToPx","_ref$unit","_ref$dpi","_ref$unitVal","unitVal","pxToUnit","_ref2$unit","_ref2$dpi","_ref2$pxVal","pxVal","DesignContainer","PolotnoContainer","SidePanelWrap","WorkspaceWrap"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/model/node-model.js","../../src/model/shape-model.js","../../src/model/image-model.js","../../src/model/text-model.js","../../src/model/svg-model.js","../../src/model/figure-model.js","../../src/model/line-model.js","../../src/model/group-model.js","../../src/model/page-model.js","../../src/model/history.js","../../src/model/store.js","../../src/side-panel/tab-button.js","../../src/utils/l10n.js","../../src/config.js","../../src/side-panel/text-panel.js","../../src/side-panel/background-panel.js","../../src/side-panel/layers-panel.js","../../src/side-panel/elements-panel.js","../../src/utils/image.js","../../src/side-panel/upload-panel.js","../../src/toolbar/image-effects-panel.js","../../src/toolbar/image-mask-panel.js","../../src/toolbar/text-effects-panel.js","../../src/side-panel/side-panel.js","../../src/side-panel/images-grid.js","../../src/side-panel/input-fields-panel.js","../../src/utils/fonts.js","../../src/toolbar/toolbar.js","../../src/toolbar/zoom-buttons.js","../../src/canvas/image-element.js","../../src/canvas/text-element.js","../../src/canvas/svg-element.js","../../src/canvas/figure-element.js","../../src/canvas/line-element.js","../../src/canvas/group-element.js","../../src/canvas/element.js","../../src/components/InputFieldsDialog.js","../../src/canvas/workspace.js","../../src/utils/unit.js","../../src/index.js"],"sourcesContent":["import { types, getParent, getRoot } from 'mobx-state-tree';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport const Node = types\n .model('Node', {\n id: types.optional(types.identifier, () => uuidv4()),\n type: types.optional(types.string, ''),\n name: types.optional(types.string, ''),\n opacity: types.optional(types.number, 1),\n custom: types.optional(types.frozen(), {}),\n visible: types.optional(types.boolean, true),\n selectable: types.optional(types.boolean, true),\n removable: types.optional(types.boolean, true),\n alwaysOnTop: types.optional(types.boolean, false),\n showInExport: types.optional(types.boolean, true),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n\n // Polotno uses 'locked' boolean → map to our interaction flags\n if (s.locked === true) {\n if (s.draggable === undefined) s.draggable = false;\n if (s.resizable === undefined) s.resizable = false;\n if (s.contentEditable === undefined) s.contentEditable = false;\n if (s.styleEditable === undefined) s.styleEditable = false;\n }\n delete s.locked;\n\n // Coerce opacity from string to number if needed\n if (typeof s.opacity === 'string') {\n s.opacity = parseFloat(s.opacity) || 1;\n }\n\n return s;\n })\n .views((self) => ({\n get locked() {\n return (\n !self.draggable &&\n !self.resizable &&\n !self.contentEditable &&\n !self.styleEditable\n );\n },\n get page() {\n try {\n let parent = getParent(self);\n // Walk up: element -> children array -> page\n if (parent && getParent(parent)) {\n return getParent(parent);\n }\n } catch (e) {\n // not attached yet\n }\n return undefined;\n },\n get store() {\n try {\n return getRoot(self);\n } catch (e) {\n return undefined;\n }\n },\n get top() {\n // For grouped elements, returns the top-level group. For ungrouped, returns self.\n try {\n let parent = getParent(self);\n if (parent) {\n let grandParent = getParent(parent);\n if (grandParent && grandParent.type === 'group') {\n return grandParent.top;\n }\n }\n } catch (e) {\n // not in a group\n }\n return self;\n },\n get parent() {\n try {\n const arr = getParent(self);\n if (arr) {\n return getParent(arr);\n }\n } catch (e) {\n // not attached\n }\n return undefined;\n },\n get zIndex() {\n try {\n const arr = getParent(self);\n if (arr) {\n return arr.indexOf(self);\n }\n } catch (e) {\n // not attached\n }\n return 0;\n },\n }))\n .actions((self) => ({\n toJSON() {\n const json = {};\n const snapshot = { ...self };\n for (const key of Object.keys(snapshot)) {\n if (key.startsWith('_')) continue;\n json[key] = snapshot[key];\n }\n return json;\n },\n }))\n .actions((self) => ({\n clone(attrs = {}, { skipSelect = false } = {}) {\n const json = self.toJSON();\n delete json.id;\n Object.assign(json, attrs);\n const page = self.page;\n if (page) {\n return page.addElement(json, { skipSelect });\n }\n return null;\n },\n set(attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (key in self && key !== 'id') {\n self[key] = value;\n }\n }\n },\n moveUp() {\n const page = self.page;\n if (page) {\n page.moveElementUp(self.id);\n }\n },\n moveTop() {\n const page = self.page;\n if (page) {\n page.moveElementTop(self.id);\n }\n },\n moveDown() {\n const page = self.page;\n if (page) {\n page.moveElementDown(self.id);\n }\n },\n moveBottom() {\n const page = self.page;\n if (page) {\n page.moveElementBottom(self.id);\n }\n },\n setZIndex(zIndex) {\n const page = self.page;\n if (page) {\n page.setElementZIndex(self.id, zIndex);\n }\n },\n beforeDestroy() {\n // cleanup hook\n },\n }));\n","import { types } from 'mobx-state-tree';\nimport { Node } from './node-model';\n\nconst Animation = types.model('Animation', {\n delay: types.optional(types.number, 0),\n duration: types.optional(types.number, 1),\n enabled: types.optional(types.boolean, false),\n type: types.optional(types.string, ''),\n name: types.optional(types.string, ''),\n data: types.optional(types.frozen(), {}),\n});\n\nconst ShapeFilter = types.model('ShapeFilter', {\n intensity: types.optional(types.number, 1),\n});\n\nexport const Shape = Node.named('Shape')\n .props({\n x: types.optional(types.number, 0),\n y: types.optional(types.number, 0),\n width: types.optional(types.number, 100),\n height: types.optional(types.number, 100),\n rotation: types.optional(types.number, 0),\n\n animations: types.optional(types.array(Animation), []),\n\n // Effects\n blurEnabled: types.optional(types.boolean, false),\n blurRadius: types.optional(types.number, 10),\n brightnessEnabled: types.optional(types.boolean, false),\n brightness: types.optional(types.number, 0),\n sepiaEnabled: types.optional(types.boolean, false),\n grayscaleEnabled: types.optional(types.boolean, false),\n warmEnabled: types.optional(types.boolean, false),\n coldEnabled: types.optional(types.boolean, false),\n filters: types.optional(types.map(ShapeFilter), {}),\n\n // Shadow\n shadowEnabled: types.optional(types.boolean, false),\n shadowBlur: types.optional(types.number, 5),\n shadowOffsetX: types.optional(types.number, 0),\n shadowOffsetY: types.optional(types.number, 0),\n shadowColor: types.optional(types.string, 'black'),\n shadowOpacity: types.optional(types.number, 1),\n\n // Interaction flags\n draggable: types.optional(types.boolean, true),\n resizable: types.optional(types.boolean, true),\n contentEditable: types.optional(types.boolean, true),\n styleEditable: types.optional(types.boolean, true),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n\n // Coerce numeric properties that may arrive as strings from templates\n const numericKeys = [\n 'x', 'y', 'width', 'height', 'rotation',\n 'blurRadius', 'brightness',\n 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'shadowOpacity',\n ];\n numericKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = parseFloat(s[key]) || 0;\n }\n });\n\n // Coerce boolean properties that may arrive as strings\n const boolKeys = [\n 'blurEnabled', 'brightnessEnabled', 'sepiaEnabled', 'grayscaleEnabled', 'warmEnabled', 'coldEnabled',\n 'shadowEnabled', 'draggable', 'resizable', 'contentEditable', 'styleEditable',\n ];\n boolKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = s[key] === 'true';\n }\n });\n\n return s;\n })\n .actions((self) => ({\n setAnimation(type, attrs) {\n const existing = self.animations.find((a) => a.type === type);\n if (existing) {\n Object.assign(existing, attrs);\n } else {\n self.animations.push({ type, ...attrs });\n }\n },\n setFilter(type, value) {\n self.filters.set(type, { intensity: value });\n },\n }));\n\nexport { Animation, ShapeFilter };\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const ImageElement = Shape.named('ImageElement')\n .props({\n type: types.optional(types.string, 'image'),\n src: types.optional(types.string, ''),\n cropX: types.optional(types.number, 0),\n cropY: types.optional(types.number, 0),\n cropWidth: types.optional(types.number, 1),\n cropHeight: types.optional(types.number, 1),\n cornerRadius: types.optional(types.number, 0),\n flipX: types.optional(types.boolean, false),\n flipY: types.optional(types.boolean, false),\n clipSrc: types.optional(types.string, ''),\n borderColor: types.optional(types.string, ''),\n borderSize: types.optional(types.number, 0),\n keepRatio: types.optional(types.boolean, true),\n stretchEnabled: types.optional(types.boolean, false),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n const numericKeys = ['cropX', 'cropY', 'cropWidth', 'cropHeight', 'cornerRadius', 'borderSize'];\n numericKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = parseFloat(s[key]) || 0;\n }\n });\n const boolKeys = ['flipX', 'flipY', 'keepRatio', 'stretchEnabled'];\n boolKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = s[key] === 'true';\n }\n });\n return s;\n })\n .volatile(() => ({\n _cropModeEnabled: false,\n }))\n .actions((self) => ({\n toggleCropMode(flag) {\n self._cropModeEnabled = flag !== undefined ? flag : !self._cropModeEnabled;\n },\n }));\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const TextElement = Shape.named('TextElement')\n .props({\n type: types.optional(types.string, 'text'),\n text: types.optional(types.string, ''),\n placeholder: types.optional(types.string, ''),\n fontSize: types.optional(types.number, 20),\n fontFamily: types.optional(types.string, 'Roboto'),\n fontStyle: types.optional(types.string, 'normal'),\n fontWeight: types.optional(types.union(types.string, types.number), 'normal'),\n textDecoration: types.optional(types.string, ''),\n textTransform: types.optional(types.string, ''),\n fill: types.optional(types.string, '#000000'),\n align: types.optional(types.string, 'center'),\n verticalAlign: types.optional(types.string, 'top'),\n strokeWidth: types.optional(types.number, 0),\n stroke: types.optional(types.string, ''),\n lineHeight: types.optional(types.union(types.number, types.string), 1.2),\n letterSpacing: types.optional(types.number, 0),\n\n // Text background\n backgroundEnabled: types.optional(types.boolean, false),\n backgroundColor: types.optional(types.string, '#ffffff'),\n backgroundOpacity: types.optional(types.number, 1),\n backgroundCornerRadius: types.optional(types.number, 0),\n backgroundPadding: types.optional(types.number, 0),\n\n // Curved text\n curveEnabled: types.optional(types.boolean, false),\n curvePower: types.optional(types.number, 0),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n\n // Normalize combined fontStyle that may include weight (e.g. \"italic bold\", \"bold\")\n if (s.fontStyle && typeof s.fontStyle === 'string') {\n const parts = s.fontStyle.trim().split(/\\s+/);\n const styleWords = [];\n const weightWords = [];\n const weightKeywords = ['bold', 'normal', 'lighter', 'bolder',\n '100','200','300','400','500','600','700','800','900'];\n parts.forEach((p) => {\n if (weightKeywords.includes(p)) {\n weightWords.push(p);\n } else {\n styleWords.push(p);\n }\n });\n if (weightWords.length > 0 && !s.fontWeight) {\n s.fontWeight = weightWords[0];\n } else if (weightWords.length > 0 && s.fontWeight === 'normal') {\n s.fontWeight = weightWords[0];\n }\n s.fontStyle = styleWords.length > 0 ? styleWords.join(' ') : 'normal';\n }\n\n // Coerce numeric fontWeight to string if needed\n if (typeof s.fontWeight === 'number') {\n s.fontWeight = String(s.fontWeight);\n }\n\n // Coerce text-specific numeric properties from strings\n const numericKeys = [\n 'fontSize', 'letterSpacing', 'strokeWidth',\n 'backgroundOpacity', 'backgroundCornerRadius', 'backgroundPadding',\n 'curvePower',\n ];\n numericKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = parseFloat(s[key]) || 0;\n }\n });\n\n // Coerce text-specific boolean properties\n const boolKeys = ['backgroundEnabled', 'curveEnabled'];\n boolKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = s[key] === 'true';\n }\n });\n\n return s;\n })\n .volatile(() => ({\n _editModeEnabled: false,\n }))\n .actions((self) => ({\n toggleEditMode(editing) {\n self._editModeEnabled =\n editing !== undefined ? editing : !self._editModeEnabled;\n },\n }));\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const SVGElement = Shape.named('SVGElement')\n .props({\n type: types.optional(types.string, 'svg'),\n src: types.optional(types.string, ''),\n maskSrc: types.optional(types.string, ''),\n cropX: types.optional(types.number, 0),\n cropY: types.optional(types.number, 0),\n cropWidth: types.optional(types.number, 1),\n cropHeight: types.optional(types.number, 1),\n keepRatio: types.optional(types.boolean, true),\n stretchEnabled: types.optional(types.boolean, false),\n flipX: types.optional(types.boolean, false),\n flipY: types.optional(types.boolean, false),\n borderColor: types.optional(types.string, ''),\n borderSize: types.optional(types.number, 0),\n cornerRadius: types.optional(types.number, 0),\n colorsReplace: types.optional(types.map(types.string), {}),\n })\n .actions((self) => ({\n replaceColor(oldColor, newColor) {\n self.colorsReplace.set(oldColor, newColor);\n },\n }));\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const FigureElement = Shape.named('FigureElement')\n .props({\n type: types.optional(types.string, 'figure'),\n subType: types.optional(types.string, 'rect'),\n fill: types.optional(types.string, '#BFBFBF'),\n dash: types.optional(types.array(types.number), []),\n strokeWidth: types.optional(types.number, 0),\n stroke: types.optional(types.string, ''),\n cornerRadius: types.optional(types.number, 0),\n pathData: types.optional(types.string, ''),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n const numericKeys = ['strokeWidth', 'cornerRadius'];\n numericKeys.forEach((key) => {\n if (key in s && typeof s[key] === 'string') {\n s[key] = parseFloat(s[key]) || 0;\n }\n });\n return s;\n });\n","import { types } from 'mobx-state-tree';\nimport { Shape } from './shape-model';\n\nexport const LineElement = Shape.named('LineElement')\n .props({\n type: types.optional(types.string, 'line'),\n color: types.optional(types.string, '#000000'),\n dash: types.optional(types.array(types.number), []),\n startHead: types.optional(types.string, ''),\n endHead: types.optional(types.string, ''),\n });\n","import { types, getSnapshot } from 'mobx-state-tree';\nimport { ImageElement } from './image-model';\nimport { TextElement } from './text-model';\nimport { SVGElement } from './svg-model';\nimport { FigureElement } from './figure-model';\nimport { LineElement } from './line-model';\nimport { Node } from './node-model';\n\nexport const TYPES_MAP = {\n image: ImageElement,\n text: TextElement,\n svg: SVGElement,\n figure: FigureElement,\n line: LineElement,\n};\n\nconst ElementUnion = types.union(\n {\n dispatcher: (snapshot) => {\n if (!snapshot || !snapshot.type) return Node;\n const model = TYPES_MAP[snapshot.type];\n if (model) return model;\n // For group type or unknown types, use late-bound GroupElement or Node\n if (snapshot.type === 'group') return GroupElement;\n return Node;\n },\n },\n ImageElement,\n TextElement,\n SVGElement,\n FigureElement,\n LineElement,\n // GroupElement added below via late binding\n Node\n);\n\nexport const GroupElement = Node.named('GroupElement')\n .props({\n type: types.optional(types.string, 'group'),\n x: types.optional(types.number, 0),\n y: types.optional(types.number, 0),\n width: types.optional(types.number, 0),\n height: types.optional(types.number, 0),\n rotation: types.optional(types.number, 0),\n draggable: types.optional(types.boolean, true),\n resizable: types.optional(types.boolean, true),\n children: types.optional(types.array(types.late(() => ElementUnion)), []),\n })\n .preProcessSnapshot((snapshot) => {\n if (!snapshot) return snapshot;\n const s = { ...snapshot };\n\n // Polotno compat: groups without explicit width — compute bounds from children\n if (s.children && s.children.length > 0 && !(s.width > 0)) {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n s.children.forEach((child) => {\n const cx = child.x || 0;\n const cy = child.y || 0;\n const cw = child.width || 0;\n const ch = child.height || 0;\n minX = Math.min(minX, cx);\n minY = Math.min(minY, cy);\n maxX = Math.max(maxX, cx + cw);\n maxY = Math.max(maxY, cy + ch);\n });\n if (minX !== Infinity) {\n s.x = minX;\n s.y = minY;\n s.width = maxX - minX;\n s.height = maxY - minY;\n s.children = s.children.map((child) => ({\n ...child,\n x: (child.x || 0) - minX,\n y: (child.y || 0) - minY,\n }));\n }\n }\n\n return s;\n })\n .actions((self) => ({\n toJSON() {\n const gx = self.x;\n const gy = self.y;\n return {\n id: self.id,\n type: self.type,\n name: self.name,\n opacity: self.opacity,\n visible: self.visible,\n selectable: self.selectable,\n removable: self.removable,\n alwaysOnTop: self.alwaysOnTop,\n showInExport: self.showInExport,\n children: self.children.map((child) => {\n const cj = child.toJSON ? child.toJSON() : getSnapshot(child);\n return { ...cj, x: (cj.x || 0) + gx, y: (cj.y || 0) + gy };\n }),\n };\n },\n }));\n\nexport const forEveryChild = (node, cb) => {\n cb(node);\n if (node.children) {\n node.children.forEach((child) => forEveryChild(child, cb));\n }\n};\n\nexport const createElement = (attrs) => {\n const type = attrs.type;\n const Model = TYPES_MAP[type];\n if (Model) {\n return Model.create(attrs);\n }\n if (type === 'group') {\n return GroupElement.create(attrs);\n }\n return Node.create(attrs);\n};\n\nexport { ElementUnion };\n","import { types, getParent, getRoot, getSnapshot, destroy } from 'mobx-state-tree';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ImageElement } from './image-model';\nimport { TextElement } from './text-model';\nimport { SVGElement } from './svg-model';\nimport { FigureElement } from './figure-model';\nimport { LineElement } from './line-model';\nimport { GroupElement, ElementUnion, TYPES_MAP } from './group-model';\n\nexport const Page = types\n .model('Page', {\n id: types.optional(types.identifier, () => uuidv4()),\n children: types.optional(types.array(types.late(() => ElementUnion)), []),\n width: types.optional(types.union(types.number, types.literal('auto')), 'auto'),\n height: types.optional(types.union(types.number, types.literal('auto')), 'auto'),\n background: types.optional(types.string, ''),\n bleed: types.optional(types.number, 0),\n custom: types.optional(types.frozen(), {}),\n duration: types.optional(types.number, 5000),\n })\n .volatile(() => ({\n _exporting: false,\n _rendering: false,\n _forceMount: false,\n }))\n .views((self) => ({\n get store() {\n try {\n return getRoot(self);\n } catch (e) {\n return undefined;\n }\n },\n get computedWidth() {\n if (self.width !== 'auto') return self.width;\n const store = self.store;\n return store ? store.width : 500;\n },\n get computedHeight() {\n if (self.height !== 'auto') return self.height;\n const store = self.store;\n return store ? store.height : 500;\n },\n get startTime() {\n const store = self.store;\n if (!store) return 0;\n let time = 0;\n for (const page of store.pages) {\n if (page.id === self.id) return time;\n time += page.duration;\n }\n return time;\n },\n get _exportingOrRendering() {\n return self._exporting || self._rendering;\n },\n }))\n .actions((self) => ({\n toJSON() {\n return {\n id: self.id,\n children: self.children.map((child) => {\n if (child.toJSON) return child.toJSON();\n return getSnapshot(child);\n }),\n width: self.width,\n height: self.height,\n background: self.background,\n bleed: self.bleed,\n custom: self.custom,\n duration: self.duration,\n };\n },\n set(attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (key in self && key !== 'id') {\n self[key] = value;\n }\n }\n },\n select() {\n const store = self.store;\n if (store) {\n store.selectPage(self.id);\n }\n },\n clone(attrs = {}) {\n const json = self.toJSON();\n delete json.id;\n Object.assign(json, attrs);\n const store = self.store;\n if (store) {\n return store.addPage(json);\n }\n return null;\n },\n addElement(attrs, { skipSelect = false } = {}) {\n const type = attrs.type;\n const elementData = {\n id: uuidv4(),\n ...attrs,\n };\n\n self.children.push(elementData);\n const newElement = self.children[self.children.length - 1];\n\n if (!skipSelect) {\n const store = self.store;\n if (store) {\n store.selectElements([newElement.id]);\n }\n }\n\n return newElement;\n },\n\n // Z-ordering helpers\n _findChildIndex(id) {\n return self.children.findIndex((c) => c.id === id);\n },\n\n canMoveElementsUp(ids) {\n for (const id of ids) {\n const idx = self._findChildIndex(id);\n if (idx < self.children.length - 1) return true;\n }\n return false;\n },\n moveElementsUp(ids) {\n for (const id of ids) {\n self.moveElementUp(id);\n }\n },\n moveElementUp(id) {\n const idx = self._findChildIndex(id);\n if (idx >= 0 && idx < self.children.length - 1) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.splice(idx + 1, 0, snapshot);\n }\n },\n\n canMoveElementsTop(ids) {\n for (const id of ids) {\n const idx = self._findChildIndex(id);\n if (idx < self.children.length - 1) return true;\n }\n return false;\n },\n moveElementsTop(ids) {\n for (const id of ids) {\n self.moveElementTop(id);\n }\n },\n moveElementTop(id) {\n const idx = self._findChildIndex(id);\n if (idx >= 0 && idx < self.children.length - 1) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.push(snapshot);\n }\n },\n\n canMoveElementsDown(ids) {\n for (const id of ids) {\n const idx = self._findChildIndex(id);\n if (idx > 0) return true;\n }\n return false;\n },\n moveElementsDown(ids) {\n for (const id of ids) {\n self.moveElementDown(id);\n }\n },\n moveElementDown(id) {\n const idx = self._findChildIndex(id);\n if (idx > 0) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.splice(idx - 1, 0, snapshot);\n }\n },\n\n canMoveElementsBottom(ids) {\n for (const id of ids) {\n const idx = self._findChildIndex(id);\n if (idx > 0) return true;\n }\n return false;\n },\n moveElementsBottom(ids) {\n for (const id of ids) {\n self.moveElementBottom(id);\n }\n },\n moveElementBottom(id) {\n const idx = self._findChildIndex(id);\n if (idx > 0) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.splice(0, 0, snapshot);\n }\n },\n\n setElementZIndex(id, zIndex) {\n const idx = self._findChildIndex(id);\n if (idx >= 0 && zIndex >= 0 && zIndex < self.children.length) {\n const snapshot = getSnapshot(self.children[idx]);\n self.children.splice(idx, 1);\n self.children.splice(zIndex, 0, snapshot);\n }\n },\n\n setSize({ width, height, useMagic = false, softChange = false }) {\n if (width !== undefined) self.width = width;\n if (height !== undefined) self.height = height;\n },\n\n setZIndex(zIndex) {\n const store = self.store;\n if (store) {\n store.setPageZIndex(self.id, zIndex);\n }\n },\n\n _forEachElementUp(ids, callback) {\n for (let i = self.children.length - 1; i >= 0; i--) {\n const child = self.children[i];\n if (ids.includes(child.id)) {\n callback(child);\n }\n }\n },\n\n _forEachElementDown(ids, callback) {\n for (let i = 0; i < self.children.length; i++) {\n const child = self.children[i];\n if (ids.includes(child.id)) {\n callback(child);\n }\n }\n return false;\n },\n\n play() {\n // placeholder for animation support\n },\n }));\n","import { types, getSnapshot, applySnapshot, getRoot } from 'mobx-state-tree';\n\nexport const History = types\n .model('History', {\n history: types.optional(types.array(types.frozen()), []),\n undoIdx: types.optional(types.number, -1),\n targetPath: types.optional(types.string, ''),\n })\n .volatile(() => ({\n _isTransacting: false,\n _skipSave: false,\n _ignoring: false,\n }))\n .views((self) => ({\n get canUndo() {\n return self.undoIdx > 0;\n },\n get canRedo() {\n return self.undoIdx < self.history.length - 1;\n },\n }))\n .actions((self) => {\n let disposer = null;\n\n return {\n startTransaction() {\n self._isTransacting = true;\n },\n endTransaction(skipSave = false) {\n self._isTransacting = false;\n if (!skipSave) {\n self.addUndoState();\n }\n },\n ignore(func) {\n self._ignoring = true;\n try {\n func();\n } finally {\n self._ignoring = false;\n }\n },\n async transaction(func) {\n self.startTransaction();\n try {\n await func();\n } finally {\n self.endTransaction();\n }\n },\n addUndoState() {\n if (self._ignoring) return;\n try {\n const root = getRoot(self);\n const snapshot = getSnapshot(root);\n // Strip history (circular) and zoom-level properties (UI preference,\n // not content — should not be affected by undo/redo).\n const stateToSave = { ...snapshot };\n delete stateToSave.history;\n delete stateToSave.scale;\n delete stateToSave.scaleToFit;\n\n // Remove future states if we're in the middle of history\n if (self.undoIdx < self.history.length - 1) {\n self.history.splice(self.undoIdx + 1);\n }\n\n self.history.push(stateToSave);\n self.undoIdx = self.history.length - 1;\n\n // Limit history size to 100 entries\n if (self.history.length > 100) {\n self.history.splice(0, self.history.length - 100);\n self.undoIdx = self.history.length - 1;\n }\n } catch (e) {\n console.warn('History: failed to save state', e);\n }\n },\n _restoreState(state) {\n if (!state) return;\n self._ignoring = true;\n try {\n const root = getRoot(self);\n const currentHistory = getSnapshot(self);\n\n // Preserve zoom level across undo/redo — scale and scaleToFit are UI\n // preferences, not content, so they are excluded from history snapshots.\n const currentScale = root.scale;\n const currentScaleToFit = root.scaleToFit;\n\n // Apply the full snapshot (children may get reordered by MST reconciliation)\n applySnapshot(root, {\n ...state,\n history: currentHistory,\n scale: currentScale,\n scaleToFit: currentScaleToFit,\n });\n\n // Fix children order — MST's identifier-based reconciliation can\n // reorder arrays. Use getSnapshot→clear→push (same pattern as\n // page-model moveElementUp/Down) to enforce the saved order.\n if (state.pages) {\n state.pages.forEach((savedPage) => {\n const page = root.pages.find((p) => p.id === savedPage.id);\n if (!page || !savedPage.children || !savedPage.children.length) return;\n const targetIds = savedPage.children.map((c) => c.id);\n const currentIds = page.children.map((c) => c.id);\n // Only reorder if order actually differs\n if (targetIds.length === currentIds.length &&\n targetIds.every((id, i) => id === currentIds[i])) return;\n const snapById = {};\n page.children.forEach((c) => { snapById[c.id] = getSnapshot(c); });\n page.children.clear();\n targetIds.forEach((id) => {\n if (snapById[id]) page.children.push(snapById[id]);\n });\n });\n }\n } catch (e) {\n console.warn('History: failed to restore state', e);\n } finally {\n self._ignoring = false;\n }\n },\n undo() {\n if (!self.canUndo) return;\n self.undoIdx -= 1;\n self._restoreState(self.history[self.undoIdx]);\n },\n redo() {\n if (!self.canRedo) return;\n self.undoIdx += 1;\n self._restoreState(self.history[self.undoIdx]);\n },\n clear() {\n self.history.clear();\n self.undoIdx = -1;\n },\n afterCreate() {\n // Do NOT defer an addUndoState() here.\n //\n // The previous setTimeout(addUndoState, 0) fired asynchronously and\n // created a race condition with loadJSON:\n //\n // • If the timeout fired BEFORE loadJSON: the empty-store snapshot\n // was saved as history[0], then loadJSON's history.clear() removed\n // it and saved the correct template as the new history[0] — OK so\n // far, but then the timeout could also fire AFTER loadJSON and add\n // a stale duplicate as history[1], making undoIdx=1 instead of 0.\n //\n // • Either way, history[0] ended up being saved with whatever `scale`\n // was current at a moment we did not control (potentially a negative\n // value produced by the ResizeObserver when the container had\n // width=0), so the first undo restored that wrong scale and mirrored\n // the entire canvas.\n //\n // loadJSON (and store.clear) both call history.clear() + addUndoState()\n // explicitly, and now do so AFTER resetting scale=1, so they own the\n // \"initial state\" responsibility completely.\n },\n beforeDestroy() {\n if (disposer) {\n disposer();\n disposer = null;\n }\n },\n replaceState() {\n // Replace the current state in history (for non-undoable changes)\n if (self._ignoring) return;\n try {\n const root = getRoot(self);\n const snapshot = getSnapshot(root);\n const stateToSave = { ...snapshot };\n delete stateToSave.history;\n\n if (self.undoIdx >= 0 && self.undoIdx < self.history.length) {\n self.history[self.undoIdx] = stateToSave;\n }\n } catch (e) {\n console.warn('History: failed to replace state', e);\n }\n },\n requestAddState() {\n // Debounced version - just calls addUndoState\n self.addUndoState();\n },\n };\n });\n","import { types, getSnapshot, applySnapshot, destroy, onSnapshot } from 'mobx-state-tree';\nimport { v4 as uuidv4 } from 'uuid';\nimport { jsPDF } from 'jspdf';\nimport { Page } from './page-model';\nimport { History } from './history';\nimport { TYPES_MAP, forEveryChild } from './group-model';\n\n// Detect embedded base64 data URLs (data:...;base64,...).\n// Regular http/https/blob URLs are preserved.\nconst isBase64DataUrl = (v) =>\n typeof v === 'string' && v.startsWith('data:') && v.includes(';base64,');\n\n// Only strip base64 from variable input-field images (inputField: true).\n// Static design images ARE the template content — stripping them clears the design.\n// Variable input-field placeholders are replaced at runtime anyway, so stripping\n// their (usually tiny SVG) placeholder base64 is safe and keeps exports clean.\nconst stripBase64FromElement = (el) => {\n const out = { ...el };\n const isInputField = out.custom && out.custom.inputField;\n if (isInputField) {\n if (isBase64DataUrl(out.src)) out.src = '';\n if (isBase64DataUrl(out.clipSrc)) out.clipSrc = '';\n }\n if (Array.isArray(out.children)) {\n out.children = out.children.map(stripBase64FromElement);\n }\n return out;\n};\n\nconst stripBase64FromExport = (data) => ({\n ...data,\n pages: (data.pages || []).map((page) => ({\n ...page,\n children: (page.children || []).map(stripBase64FromElement),\n })),\n});\n\nconst Font = types.model('Font', {\n fontFamily: types.string,\n url: types.optional(types.string, ''),\n styles: types.optional(types.frozen(), []),\n});\n\nconst Audio = types\n .model('Audio', {\n id: types.optional(types.identifier, () => uuidv4()),\n src: types.optional(types.string, ''),\n duration: types.optional(types.number, 0),\n startTime: types.optional(types.number, 0),\n endTime: types.optional(types.number, 0),\n volume: types.optional(types.number, 1),\n delay: types.optional(types.number, 0),\n custom: types.optional(types.frozen(), {}),\n })\n .actions((self) => ({\n toJSON() {\n return {\n id: self.id,\n src: self.src,\n duration: self.duration,\n startTime: self.startTime,\n endTime: self.endTime,\n volume: self.volume,\n delay: self.delay,\n custom: self.custom,\n };\n },\n set(attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (key in self && key !== 'id') {\n self[key] = value;\n }\n }\n },\n }));\n\nexport const Store = types\n .model('Store', {\n role: types.optional(types.string, 'design'),\n pages: types.optional(types.array(Page), []),\n fonts: types.optional(types.array(Font), []),\n audios: types.optional(types.array(Audio), []),\n width: types.optional(types.number, 500),\n height: types.optional(types.number, 500),\n scale: types.optional(types.number, 1),\n scaleToFit: types.optional(types.number, 1),\n unit: types.optional(types.string, 'px'),\n dpi: types.optional(types.number, 72),\n schemaVersion: types.optional(types.number, 1),\n bleedVisible: types.optional(types.boolean, false),\n rulesVisible: types.optional(types.boolean, false),\n distanceGuidesVisible: types.optional(types.boolean, false),\n openedSidePanel: types.optional(types.string, ''),\n previousOpenedSidePanel: types.optional(types.string, ''),\n custom: types.optional(types.frozen(), {}),\n tool: types.optional(types.string, 'selection'),\n selectedElementsIds: types.optional(types.array(types.string), []),\n history: types.optional(History, {}),\n _activePageId: types.optional(types.string, ''),\n _selectedPagesIds: types.optional(types.array(types.string), []),\n _elementsPixelRatio: types.optional(types.number, 1),\n })\n .volatile(() => ({\n _stageRef: null,\n _listeners: new Map(),\n _key: '',\n _showCredit: false,\n currentTime: 0,\n isPlaying: false,\n _toolbarPanel: null, // null | { type: 'effects'|'mask', elementId: string }\n _fontVersion: 0, // incremented after each font load to trigger canvas re-render\n _pendingInputFields: [], // elements awaiting user input after loadJSON\n }))\n .views((self) => ({\n get _idsMap() {\n const map = {};\n self.pages.forEach((page) => {\n page.children.forEach((child) => {\n forEveryChild(child, (el) => {\n map[el.id] = el;\n });\n });\n });\n return map;\n },\n get selectedElements() {\n const map = self._idsMap;\n return self.selectedElementsIds\n .map((id) => map[id])\n .filter(Boolean);\n },\n get selectedShapes() {\n return self.selectedElements;\n },\n get children() {\n return self.pages;\n },\n get activePage() {\n if (self._activePageId) {\n const page = self.pages.find((p) => p.id === self._activePageId);\n if (page) return page;\n }\n return self.pages.length > 0 ? self.pages[0] : undefined;\n },\n get selectedPages() {\n if (self._selectedPagesIds.length > 0) {\n return self._selectedPagesIds\n .map((id) => self.pages.find((p) => p.id === id))\n .filter(Boolean);\n }\n const active = self.activePage;\n return active ? [active] : [];\n },\n get duration() {\n let total = 0;\n self.pages.forEach((page) => {\n total += page.duration;\n });\n return total;\n },\n get inputFields() {\n const fields = [];\n self.pages.forEach((page) => {\n page.children.forEach((el) => {\n forEveryChild(el, (child) => {\n if (child.custom && child.custom.inputField) {\n fields.push(child);\n }\n });\n });\n });\n return fields;\n },\n get _hasCroppedImages() {\n for (const page of self.pages) {\n for (const child of page.children) {\n if (\n child.type === 'image' &&\n (child.cropX !== 0 ||\n child.cropY !== 0 ||\n child.cropWidth !== 1 ||\n child.cropHeight !== 1)\n ) {\n return true;\n }\n }\n }\n return false;\n },\n }))\n .actions((self) => ({\n find(callback) {\n for (const page of self.pages) {\n if (callback(page)) return page;\n for (const child of page.children) {\n if (callback(child)) return child;\n }\n }\n return undefined;\n },\n getElementById(id) {\n return self._idsMap[id];\n },\n }))\n .actions((self) => ({\n requestInputFields() {\n const fields = self.inputFields;\n self._pendingInputFields = fields;\n return fields;\n },\n _resolveInputField(id) {\n self._pendingInputFields = self._pendingInputFields.filter(\n (el) => el.id !== id\n );\n },\n _unresolveInputField(el) {\n // Re-insert at the front so it becomes the next field shown (back navigation)\n const alreadyPending = self._pendingInputFields.some((f) => f.id === el.id);\n if (!alreadyPending) {\n self._pendingInputFields.unshift(el);\n }\n },\n clearPendingInputFields() {\n self._pendingInputFields = [];\n },\n }))\n .actions((self) => ({\n afterCreate() {\n // set initial active page\n if (self.pages.length > 0 && !self._activePageId) {\n self._activePageId = self.pages[0].id;\n }\n },\n set(attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (key in self && !key.startsWith('_')) {\n self[key] = value;\n }\n }\n },\n setUnit({ unit, dpi }) {\n if (unit !== undefined) self.unit = unit;\n if (dpi !== undefined) self.dpi = dpi;\n },\n setRole(role) {\n self.role = role;\n },\n setTool(tool) {\n self.tool = tool;\n },\n setToolOptions(options) {\n // placeholder for tool options\n },\n addPage(attrs = {}) {\n const pageData = {\n id: uuidv4(),\n ...attrs,\n };\n self.pages.push(pageData);\n const newPage = self.pages[self.pages.length - 1];\n self._activePageId = newPage.id;\n return newPage;\n },\n selectPage(id) {\n self._activePageId = id;\n self._selectedPagesIds.clear();\n },\n selectPages(ids) {\n self._selectedPagesIds.replace(ids);\n if (ids.length > 0) {\n self._activePageId = ids[0];\n }\n },\n selectElements(ids) {\n self.selectedElementsIds.replace(ids);\n // Close toolbar panel if the selected element changes\n if (self._toolbarPanel) {\n const stillSelected = ids.includes(self._toolbarPanel.elementId);\n if (!stillSelected) {\n self._toolbarPanel = null;\n }\n }\n },\n toggleBleed(bleedVisible) {\n self.bleedVisible =\n bleedVisible !== undefined ? bleedVisible : !self.bleedVisible;\n },\n toggleRulers(rulesVisible) {\n self.rulesVisible =\n rulesVisible !== undefined ? rulesVisible : !self.rulesVisible;\n },\n toggleDistanceGuides(distanceGuidesVisible) {\n self.distanceGuidesVisible =\n distanceGuidesVisible !== undefined\n ? distanceGuidesVisible\n : !self.distanceGuidesVisible;\n },\n openSidePanel(panelName) {\n self.previousOpenedSidePanel = self.openedSidePanel;\n self.openedSidePanel = panelName;\n },\n openToolbarPanel(type) {\n const el = self.selectedElements.length === 1 ? self.selectedElements[0] : null;\n if (el) {\n self._toolbarPanel = { type, elementId: el.id };\n }\n },\n closeToolbarPanel() {\n self._toolbarPanel = null;\n },\n setScale(scale) {\n self.scale = scale;\n },\n _setScaleToFit(scale) {\n self.scaleToFit = scale;\n },\n setElementsPixelRatio(ratio) {\n self._elementsPixelRatio = ratio;\n },\n setSize(width, height, useMagic = false) {\n if (width !== undefined) self.width = width;\n if (height !== undefined) self.height = height;\n },\n setPageZIndex(id, zIndex) {\n const idx = self.pages.findIndex((p) => p.id === id);\n if (idx >= 0 && zIndex >= 0 && zIndex < self.pages.length) {\n const snapshot = getSnapshot(self.pages[idx]);\n self.pages.splice(idx, 1);\n self.pages.splice(zIndex, 0, snapshot);\n }\n },\n deletePages(ids) {\n const toRemove = self.pages.filter((p) => ids.includes(p.id));\n toRemove.forEach((page) => {\n destroy(page);\n });\n // ensure at least one page exists\n if (self.pages.length === 0) {\n self.addPage();\n }\n // fix active page if deleted\n if (!self.pages.find((p) => p.id === self._activePageId)) {\n self._activePageId = self.pages[0].id;\n }\n },\n groupElements(ids, attrs = {}) {\n const page = self.activePage;\n if (!page) return null;\n\n const elements = ids\n .map((id) => {\n const idx = page.children.findIndex((c) => c.id === id);\n if (idx >= 0) return { idx, snapshot: getSnapshot(page.children[idx]) };\n return null;\n })\n .filter(Boolean);\n\n if (elements.length < 2) return null;\n\n // Calculate group bounds\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n elements.forEach(({ snapshot }) => {\n minX = Math.min(minX, snapshot.x || 0);\n minY = Math.min(minY, snapshot.y || 0);\n maxX = Math.max(maxX, (snapshot.x || 0) + (snapshot.width || 0));\n maxY = Math.max(maxY, (snapshot.y || 0) + (snapshot.height || 0));\n });\n\n // Remove original elements (in reverse order to preserve indices)\n const sortedIndices = elements.map((e) => e.idx).sort((a, b) => b - a);\n sortedIndices.forEach((idx) => {\n page.children.splice(idx, 1);\n });\n\n // Adjust children positions relative to group\n const groupChildren = elements.map(({ snapshot }) => ({\n ...snapshot,\n id: undefined, // will get new id\n x: (snapshot.x || 0) - minX,\n y: (snapshot.y || 0) - minY,\n }));\n\n const group = page.addElement({\n type: 'group',\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n children: groupChildren,\n ...attrs,\n });\n\n return group;\n },\n ungroupElements(ids) {\n const page = self.activePage;\n if (!page) return;\n\n const newChildIds = [];\n\n ids.forEach((id) => {\n const idx = page.children.findIndex((c) => c.id === id);\n if (idx < 0) return;\n const group = page.children[idx];\n if (group.type !== 'group') return;\n\n const groupSnapshot = getSnapshot(group);\n const groupX = groupSnapshot.x || 0;\n const groupY = groupSnapshot.y || 0;\n\n // Remove group\n page.children.splice(idx, 1);\n\n // Re-add children at group's position\n (groupSnapshot.children || []).forEach((childSnapshot) => {\n const newEl = page.addElement(\n {\n ...childSnapshot,\n id: undefined,\n x: (childSnapshot.x || 0) + groupX,\n y: (childSnapshot.y || 0) + groupY,\n },\n { skipSelect: true }\n );\n if (newEl) newChildIds.push(newEl.id);\n });\n });\n\n // Select the ungrouped children\n if (newChildIds.length > 0) {\n self.selectElements(newChildIds);\n }\n },\n deleteElements(ids) {\n self.pages.forEach((page) => {\n const toRemove = page.children.filter((c) => ids.includes(c.id));\n toRemove.forEach((el) => {\n destroy(el);\n });\n });\n // Remove from selection\n self.selectedElementsIds.replace(\n self.selectedElementsIds.filter((id) => !ids.includes(id))\n );\n },\n on(event, callback) {\n if (!self._listeners.has(event)) {\n self._listeners.set(event, []);\n }\n self._listeners.get(event).push(callback);\n\n // Return disposer\n return () => {\n const listeners = self._listeners.get(event);\n if (listeners) {\n const idx = listeners.indexOf(callback);\n if (idx >= 0) listeners.splice(idx, 1);\n }\n };\n },\n _emit(event, data) {\n const listeners = self._listeners.get(event);\n if (listeners) {\n listeners.forEach((cb) => cb(data));\n }\n },\n _setStageRef(ref) {\n self._stageRef = ref;\n },\n\n async _toCanvas({\n pixelRatio = 1,\n ignoreBackground = false,\n pageId,\n mimeType = 'image/png',\n includeBleed = false,\n _skipTimeout = false,\n quickMode = false,\n } = {}) {\n const stage = self._stageRef;\n if (!stage) {\n throw new Error('Stage ref not set. Make sure <Workspace> is mounted.');\n }\n\n const page = pageId\n ? self.pages.find((p) => p.id === pageId)\n : self.activePage;\n if (!page) {\n throw new Error('No page found for export.');\n }\n\n // The workspace renders content in a Layer with offset/scale for centering.\n // For export we temporarily reset the layer transform to capture just the\n // design at its native resolution.\n const layer = stage.getLayers()[0];\n if (!layer) {\n throw new Error('No layer found in stage for export.');\n }\n\n const prevX = layer.x();\n const prevY = layer.y();\n const prevScaleX = layer.scaleX();\n const prevScaleY = layer.scaleY();\n\n layer.x(0);\n layer.y(0);\n layer.scaleX(1);\n layer.scaleY(1);\n layer.draw();\n\n const canvas = layer.toCanvas({\n pixelRatio,\n x: 0,\n y: 0,\n width: self.width,\n height: self.height,\n });\n\n // Restore\n layer.x(prevX);\n layer.y(prevY);\n layer.scaleX(prevScaleX);\n layer.scaleY(prevScaleY);\n layer.draw();\n\n return canvas;\n },\n\n async toDataURL({\n mimeType = 'image/png',\n quality = 1,\n dpi,\n dpiMetadata,\n ...rest\n } = {}) {\n const canvas = await self._toCanvas({ mimeType, ...rest });\n return canvas.toDataURL(mimeType, quality);\n },\n\n async toBlob({ mimeType = 'image/png', quality = 1, ...rest } = {}) {\n const canvas = await self._toCanvas({ mimeType, ...rest });\n return new Promise((resolve, reject) => {\n canvas.toBlob(\n (blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error('Failed to create blob'));\n }\n },\n mimeType,\n quality\n );\n });\n },\n\n async saveAsImage({ fileName = 'design.png', ...exportProps } = {}) {\n const dataURL = await self.toDataURL(exportProps);\n const link = document.createElement('a');\n link.download = fileName;\n link.href = dataURL;\n link.click();\n },\n\n async toPDFDataURL({\n pixelRatio = 2,\n pageId,\n dpi = 300,\n includeBleed = false,\n } = {}) {\n const pages = pageId\n ? [self.pages.find((p) => p.id === pageId)].filter(Boolean)\n : [...self.pages];\n\n if (pages.length === 0) {\n throw new Error('No pages found for PDF export.');\n }\n\n const widthPt = (self.width / 96) * 72;\n const heightPt = (self.height / 96) * 72;\n\n const orientation = widthPt > heightPt ? 'landscape' : 'portrait';\n const pdf = new jsPDF({\n orientation,\n unit: 'pt',\n format: [widthPt, heightPt],\n compress: true,\n });\n\n const prevActivePageId = self._activePageId;\n\n for (let i = 0; i < pages.length; i++) {\n if (i > 0) {\n pdf.addPage([widthPt, heightPt], orientation);\n }\n\n self._activePageId = pages[i].id;\n\n await new Promise((r) => setTimeout(r, 50));\n\n const canvas = await self._toCanvas({\n pixelRatio,\n pageId: pages[i].id,\n mimeType: 'image/jpeg',\n includeBleed,\n });\n\n const imgData = canvas.toDataURL('image/jpeg', 0.95);\n pdf.addImage(imgData, 'JPEG', 0, 0, widthPt, heightPt, undefined, 'FAST');\n }\n\n self._activePageId = prevActivePageId;\n\n return pdf.output('datauristring');\n },\n\n async saveAsPDF({ fileName = 'design.pdf', ...exportProps } = {}) {\n const dataURL = await self.toPDFDataURL(exportProps);\n const link = document.createElement('a');\n link.download = fileName;\n link.href = dataURL;\n link.click();\n },\n\n saveAsJSON({ fileName = 'design.json', stripBase64 = false } = {}) {\n const data = stripBase64 ? stripBase64FromExport(self.toJSON()) : self.toJSON();\n const json = JSON.stringify(data, null, 2);\n const blob = new Blob([json], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.download = fileName;\n link.href = url;\n link.click();\n URL.revokeObjectURL(url);\n },\n\n async waitLoading({ _skipTimeout = false } = {}) {\n // Wait for all images to load\n return new Promise((resolve) => {\n setTimeout(resolve, _skipTimeout ? 0 : 100);\n });\n },\n\n toJSON() {\n return {\n width: self.width,\n height: self.height,\n fonts: self.fonts.map((f) => getSnapshot(f)),\n pages: self.pages.map((p) => p.toJSON()),\n audios: self.audios.map((a) => a.toJSON()),\n unit: self.unit,\n dpi: self.dpi,\n custom: self.custom,\n schemaVersion: self.schemaVersion,\n };\n },\n\n loadJSON(json, keepHistory = false) {\n if (!json) return;\n\n const data = typeof json === 'string' ? JSON.parse(json) : json;\n\n self.history.ignore(() => {\n if (data.width !== undefined) self.width = data.width;\n if (data.height !== undefined) self.height = data.height;\n if (data.unit !== undefined) self.unit = data.unit;\n if (data.dpi !== undefined) self.dpi = data.dpi;\n if (data.custom !== undefined) self.custom = data.custom;\n if (data.schemaVersion !== undefined) self.schemaVersion = data.schemaVersion;\n\n // Load fonts\n if (data.fonts) {\n self.fonts.clear();\n data.fonts.forEach((font) => {\n self.fonts.push(font);\n });\n }\n\n // Load audios\n if (data.audios) {\n self.audios.clear();\n data.audios.forEach((audio) => {\n self.audios.push(audio);\n });\n }\n\n // Load pages\n if (data.pages) {\n self.pages.clear();\n data.pages.forEach((pageData) => {\n self.pages.push(pageData);\n });\n }\n\n // Set active page\n if (self.pages.length > 0) {\n self._activePageId = self.pages[0].id;\n }\n\n // Clear selection\n self.selectedElementsIds.clear();\n });\n\n // Reset scale before saving the initial undo state so that history[0]\n // always records scale=1 (the intended post-load baseline). Without this,\n // history[0] would capture whatever scale was active before loadJSON ran\n // (e.g. the auto-fit of a previous template or a zero-width-container\n // negative value), and the first undo would restore that wrong scale —\n // which, when negative, mirrors the entire canvas.\n self.scale = 1;\n\n if (!keepHistory) {\n self.history.clear();\n self.history.addUndoState();\n }\n\n // Auto-load fonts referenced in text elements\n self._autoLoadFonts(data);\n\n // Auto-populate pending input fields so the dialog triggers\n self.requestInputFields();\n },\n\n clear({ keepHistory = false } = {}) {\n self.pages.clear();\n self.fonts.clear();\n self.audios.clear();\n self.selectedElementsIds.clear();\n self._activePageId = '';\n self.width = 500;\n self.height = 500;\n self.custom = {};\n\n self.addPage();\n\n if (!keepHistory) {\n self.history.clear();\n self.history.addUndoState();\n }\n },\n\n addFont(font) {\n const existing = self.fonts.find((f) => f.fontFamily === font.fontFamily);\n if (!existing) {\n self.fonts.push(font);\n }\n },\n\n removeFont(fontFamily) {\n const idx = self.fonts.findIndex((f) => f.fontFamily === fontFamily);\n if (idx >= 0) {\n self.fonts.splice(idx, 1);\n }\n },\n\n addAudio(data) {\n self.audios.push({ id: uuidv4(), ...data });\n },\n\n removeAudio(audioId) {\n const idx = self.audios.findIndex((a) => a.id === audioId);\n if (idx >= 0) {\n self.audios.splice(idx, 1);\n }\n },\n\n async loadFont(fontFamily, text = '') {\n // Load font via Google Fonts CSS API\n const id = `google-font-${fontFamily.replace(/\\s+/g, '-').toLowerCase()}`;\n\n try {\n if (!document.getElementById(id)) {\n const link = document.createElement('link');\n link.id = id;\n link.href = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(\n fontFamily\n )}:wght@100;200;300;400;500;600;700;800;900&display=swap`;\n link.rel = 'stylesheet';\n\n // Wait for the CSS stylesheet to load so @font-face rules are parsed\n await new Promise((resolve) => {\n link.onload = resolve;\n link.onerror = resolve; // don't block on network errors\n document.head.appendChild(link);\n });\n }\n\n // Now the browser knows about the @font-face, load the actual font files\n await document.fonts.load(`16px \"${fontFamily}\"`);\n await document.fonts.load(`bold 16px \"${fontFamily}\"`);\n await document.fonts.ready;\n\n // Bump version so MobX observers re-render with the real font\n self._fontVersion += 1;\n // Force Konva to redraw all text nodes with the newly loaded font\n if (self._stageRef) {\n self._stageRef.batchDraw();\n }\n } catch (e) {\n console.warn(`Failed to load font: ${fontFamily}`, e);\n }\n },\n\n _autoLoadFonts(data) {\n // Collect all unique fontFamily values from text elements across all pages\n const fonts = new Set();\n const collectFromChildren = (children) => {\n if (!Array.isArray(children)) return;\n children.forEach((el) => {\n if (el.type === 'text' && el.fontFamily) {\n fonts.add(el.fontFamily);\n }\n if (el.children) {\n collectFromChildren(el.children);\n }\n });\n };\n\n if (data.pages) {\n data.pages.forEach((page) => {\n collectFromChildren(page.children);\n });\n }\n\n // Also load fonts from the fonts array in the JSON\n if (data.fonts) {\n data.fonts.forEach((f) => {\n if (f.fontFamily) fonts.add(f.fontFamily);\n });\n }\n\n // Load each unique font\n fonts.forEach((fontFamily) => {\n self.loadFont(fontFamily);\n });\n },\n\n validate(json) {\n const errors = [];\n if (!json) {\n errors.push({ path: '', message: 'JSON is empty' });\n return errors;\n }\n if (typeof json.width !== 'number') {\n errors.push({ path: 'width', message: 'width must be a number' });\n }\n if (typeof json.height !== 'number') {\n errors.push({ path: 'height', message: 'height must be a number' });\n }\n if (!Array.isArray(json.pages)) {\n errors.push({ path: 'pages', message: 'pages must be an array' });\n }\n return errors;\n },\n\n checkActivePage() {\n if (self.pages.length > 0 && !self.activePage) {\n self._activePageId = self.pages[0].id;\n }\n },\n\n setCurrentTime(time) {\n self.currentTime = time;\n },\n\n _togglePlaying(playing = true) {\n self.isPlaying = playing;\n },\n\n play() {\n self._togglePlaying(true);\n },\n\n stop() {\n self._togglePlaying(false);\n },\n\n seek() {\n // placeholder\n },\n _initConfig(key, showCredit) {\n self._key = key;\n self._showCredit = showCredit;\n },\n }));\n\nexport function createStore({ key = '', showCredit = false } = {}) {\n const store = Store.create({});\n store._initConfig(key, showCredit);\n return store;\n}\n\nexport default createStore;\n","import React from 'react';\nimport { Box, ButtonBase, Typography } from '@mui/material';\n\nexport function SectionTab({ name, onClick, active, children, ...rest }) {\n return (\n <ButtonBase\n onClick={onClick}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px 4px',\n width: '100%',\n minHeight: 64,\n borderRadius: '4px',\n color: active ? '#0d83cd' : '#666',\n backgroundColor: active ? 'rgba(13,131,205,0.08)' : 'transparent',\n '&:hover': {\n backgroundColor: active\n ? 'rgba(13,131,205,0.12)'\n : 'rgba(0,0,0,0.04)',\n },\n transition: 'all 0.15s ease',\n }}\n {...rest}\n >\n <Box\n sx={{\n fontSize: 24,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n mb: 0.5,\n }}\n >\n {children}\n </Box>\n <Typography\n variant=\"caption\"\n sx={{\n fontSize: '10px',\n lineHeight: 1.2,\n textTransform: 'none',\n fontWeight: active ? 600 : 400,\n }}\n >\n {name}\n </Typography>\n </ButtonBase>\n );\n}\n\nexport default SectionTab;\n","// Use a window-level singleton so that all Rollup bundles (config, toolbar,\n// side-panel, canvas) share the same translations object. Without this each\n// bundle gets its own copy of this module with a separate local variable.\nconst GLOBAL_KEY = '__labellife_translations__';\nif (typeof window !== 'undefined' && !window[GLOBAL_KEY]) {\n window[GLOBAL_KEY] = {};\n}\n\nfunction _get() {\n return (typeof window !== 'undefined' && window[GLOBAL_KEY]) || {};\n}\n\nfunction deepMerge(target, source) {\n const result = { ...target };\n for (const key of Object.keys(source)) {\n if (\n source[key] &&\n typeof source[key] === 'object' &&\n !Array.isArray(source[key]) &&\n target[key] &&\n typeof target[key] === 'object' &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(target[key], source[key]);\n } else {\n result[key] = source[key];\n }\n }\n return result;\n}\n\nexport function setTranslations(newTranslations) {\n if (typeof window !== 'undefined') {\n window[GLOBAL_KEY] = deepMerge(_get(), newTranslations);\n }\n}\n\nexport function getTranslations() {\n return _get();\n}\n\nexport function t(key, defaultValue) {\n // Support dot-notation paths like 'toolbar.duration'\n const parts = key.split('.');\n let current = _get();\n for (const part of parts) {\n if (current == null || typeof current !== 'object') {\n return defaultValue || key;\n }\n current = current[part];\n }\n if (current !== undefined && current !== null && typeof current !== 'object') {\n return current;\n }\n return defaultValue || key;\n}\n","import { setTranslations as _setTranslations, getTranslations, t } from './utils/l10n';\n\nlet _theme = 'light';\nlet _customTheme = {};\n\nexport function setTranslations(translations) {\n _setTranslations(translations);\n}\n\nexport { getTranslations, t };\n\nexport function setTheme(theme) {\n _theme = theme;\n}\n\nexport function getTheme() {\n return _theme;\n}\n\nexport function setCustomTheme(customTheme) {\n _customTheme = { ..._customTheme, ...customTheme };\n}\n\nexport function getCustomTheme() {\n return _customTheme;\n}\n\n// ── Input Fields Dialog Config ───────────────────────────────────────\nconst INPUT_FIELDS_CONFIG_KEY = '__labellife_input_fields_config__';\nif (typeof window !== 'undefined' && !window[INPUT_FIELDS_CONFIG_KEY]) {\n window[INPUT_FIELDS_CONFIG_KEY] = {};\n}\n\nexport function setInputFieldsConfig(config) {\n if (typeof window !== 'undefined') {\n window[INPUT_FIELDS_CONFIG_KEY] = { ...window[INPUT_FIELDS_CONFIG_KEY], ...config };\n }\n}\n\nexport function getInputFieldsConfig() {\n return (typeof window !== 'undefined' && window[INPUT_FIELDS_CONFIG_KEY]) || {};\n}\n","import React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Button, Typography, IconButton } from '@mui/material';\nimport TextFieldsIcon from '@mui/icons-material/TextFields';\nimport FileUploadOutlinedIcon from '@mui/icons-material/FileUploadOutlined';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\n// ── Shared helper: add a text element to canvas ──\nconst addTextToCanvas = (store, opts) => {\n const page = store.activePage;\n if (!page) return;\n\n const scaleFactor = Math.max(store.width / 500, 0.5);\n const fontSize = Math.round((opts.fontSize || 36) * scaleFactor);\n const width = Math.round((opts.width || 350) * scaleFactor);\n\n const defaults = {\n type: 'text',\n x: store.width / 2 - width / 2,\n y: store.height / 2 - fontSize / 2,\n width,\n text: opts.text || 'Cool text',\n fontSize,\n fontFamily: opts.fontFamily || 'Roboto',\n fontWeight: opts.fontWeight || 'normal',\n fontStyle: opts.fontStyle || 'normal',\n fill: '#000000',\n align: 'center',\n };\n defaults.height = Math.max(fontSize * 1.5, 40);\n\n page.addElement(defaults);\n store.history.addUndoState();\n};\n\n// ── Predefined text templates (json = element data, preview = thumbnail image) ──\nconst TEXT_TEMPLATES = [\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-adventure-fun-cursive.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-adventure-fun-cursive.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-celebration-birthday-cursive-handwritting.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-celebration-birthday-cursive-handwritting.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-corporate-business-clean-simple-modern.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-corporate-business-clean-simple-modern.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-corporate-hiring-simple-clean-modern.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-corporate-hiring-simple-clean-modern.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-fashion-sale-brand-clothes.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-fashion-sale-brand-clothes.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-modern-minamalistic-simple.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-modern-minamalistic-simple.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-party-invitation.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-party-invitation.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-price-package-corporate-list.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-price-package-corporate-list.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-quote-contemporary.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-quote-contemporary.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-quote-quotation-motivation-inspiring.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-quote-quotation-motivation-inspiring.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-romantic-handwrittern-cursive-elegant-celebration.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-romantic-handwrittern-cursive-elegant-celebration.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-sale-fashion-brand.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-sale-fashion-brand.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-sassy-fun-feminine.json', preview: 'https://api.polotno.com/text-templates/2021-06-01-text-plain-sassy-fun-feminine.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-ancient-old-roman-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-ancient-old-roman-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-awesome-fun-intresting-funky-playful.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-awesome-fun-intresting-funky-playful.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-beautiful-decorative-love-elgant-cursive-emotion-famenine.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-beautiful-decorative-love-elgant-cursive-emotion-famenine.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-buy-corporate-urgent-now-marketing.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-buy-corporate-urgent-now-marketing.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-classic-west-cowboy-wildwest-country-classic.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-classic-west-cowboy-wildwest-country-classic.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-future-ftureistic-trendy-funky-fun-cool.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-future-ftureistic-trendy-funky-fun-cool.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-halloween-celeration-horror-spooky.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-halloween-celeration-horror-spooky.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-marry-christmas-celebration.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-marry-christmas-celebration.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-motivating-motivational-inspiring-inspirational-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-motivating-motivational-inspiring-inspirational-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-motivation-inspiration-cursive-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-motivation-inspiration-cursive-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-orange-fruity-fruit-food-fuun-happy.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-orange-fruity-fruit-food-fuun-happy.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-color-romantic-elegant-love.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-color-romantic-elegant-love.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-data-stat-statistics-numeric-figures-reports-charts.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-data-stat-statistics-numeric-figures-reports-charts.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-list-colum-modern-point-fact.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-list-colum-modern-point-fact.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-recipe-food-list.json', preview: 'https://api.polotno.com/text-templates/2021-06-02-text-plain-recipe-food-list.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-ancient-medieval-old-roman-kind-royal.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-ancient-medieval-old-roman-kind-royal.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-anonymous-mystery-suspense.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-anonymous-mystery-suspense.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-autumn-red-orange-season-cursive-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-autumn-red-orange-season-cursive-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-colorful-color-fun-beads-game-themed-videogames.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-colorful-color-fun-beads-game-themed-videogames.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-decorative-hollow-effect.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-decorative-hollow-effect.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-decorative-message-line-lineart.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-decorative-message-line-lineart.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-fairytale-fanatcy-magic-magical.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-fairytale-fanatcy-magic-magical.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-happy-easter-festive-holiday.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-happy-easter-festive-holiday.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-happy-fun-joy-celebration.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-happy-fun-joy-celebration.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-horror-scary-fun-celebration-halloween.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-horror-scary-fun-celebration-halloween.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-inivitation-rsvp-event-celebration-weeding.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-inivitation-rsvp-event-celebration-weeding.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-motivation-hope-never-giveup-win-wivtory-cool-funky.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-motivation-hope-never-giveup-win-wivtory-cool-funky.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-murder-horror-scary-temed-holloween-haunted-suspence.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-murder-horror-scary-temed-holloween-haunted-suspence.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-music-simple-straight-jazzy-simple.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-music-simple-straight-jazzy-simple.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-numeric-number-figure-chalk-written-writting.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-numeric-number-figure-chalk-written-writting.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-save-the-date-celebration-calander-inviation-event.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-save-the-date-celebration-calander-inviation-event.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-save-the-date-invitation-party-invited-cool-.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-save-the-date-invitation-party-invited-cool-.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-signature-sign-elegant-royal.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-signature-sign-elegant-royal.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-spring-season-nature-leaf-flower-decorative.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-spring-season-nature-leaf-flower-decorative.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-summer-sunny-hot-sea-season.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-summer-sunny-hot-sea-season.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-treandu-cool-funky-hip.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-treandu-cool-funky-hip.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-what-when-where-column-fun-cool-question.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-what-when-where-column-fun-cool-question.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-04-text-color-winter-cold-wonderland-decorative-season.json', preview: 'https://api.polotno.com/text-templates/2021-06-04-text-color-winter-cold-wonderland-decorative-season.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-alert-sale-brand-clearance-shop-now-sjopping-discount.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-alert-sale-brand-clearance-shop-now-sjopping-discount.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-chalk-drawing-chalkboard-pencil-marker-color-fill-hand-drawn-drawing.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-chalk-drawing-chalkboard-pencil-marker-color-fill-hand-drawn-drawing.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-code-matrix-numbers-numeric-data-sale.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-code-matrix-numbers-numeric-data-sale.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-fun-cool-cartoon-animated-game.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-fun-cool-cartoon-animated-game.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-funky-cool-hashtag-young-fun.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-funky-cool-hashtag-young-fun.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-instagram-tag-tagging-cool-unique.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-instagram-tag-tagging-cool-unique.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-s-sle-black-friday-shopping-buy.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-s-sle-black-friday-shopping-buy.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-speed-fast-run-running-cool-themed-cartoon-lines-waves-move-movement.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-speed-fast-run-running-cool-themed-cartoon-lines-waves-move-movement.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-sweat-candy.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-sweat-candy.png' },\n { json: 'https://api.polotno.com/text-templates/2021-06-05-text-color-themed-ink-bubble-fun-cool-cartoon-comic.json', preview: 'https://api.polotno.com/text-templates/2021-06-05-text-color-themed-ink-bubble-fun-cool-cartoon-comic.png' },\n];\n\n// ── Preload all template fonts in background (runs once) ──\nlet _fontsPreloaded = false;\nfunction preloadTemplateFonts(store) {\n if (_fontsPreloaded) return;\n _fontsPreloaded = true;\n // Fetch all JSONs in parallel, collect font families, load them\n Promise.all(\n TEXT_TEMPLATES.map((t) =>\n fetch(t.json).then((r) => r.json()).catch(() => null)\n )\n ).then((results) => {\n const fonts = new Set();\n results.forEach((data) => {\n if (!data?.pages?.[0]?.children) return;\n data.pages[0].children.forEach((child) => {\n if (child.fontFamily) fonts.add(child.fontFamily);\n });\n });\n fonts.forEach((f) => store.loadFont(f));\n });\n}\n\n// ── Tab 1: Text presets + predefined templates ──\nconst TextTab = observer(({ store }) => {\n const [loadingIdx, setLoadingIdx] = useState(null);\n\n // Preload all template fonts on first mount\n useEffect(() => { preloadTemplateFonts(store); }, [store]);\n\n const presets = [\n {\n label: t('sidePanel.headerText', 'Create header'),\n text: t('sidePanel.headerText', 'Create header'),\n fontSize: 48,\n width: 400,\n fontWeight: 'bold',\n fontFamily: 'Roboto',\n },\n {\n label: t('sidePanel.subHeaderText', 'Create sub header'),\n text: t('sidePanel.subHeaderText', 'Create sub header'),\n fontSize: 28,\n width: 350,\n fontWeight: '500',\n fontFamily: 'Roboto',\n },\n {\n label: t('sidePanel.bodyText', 'Create body text'),\n text: t('sidePanel.bodyText', 'Create body text'),\n fontSize: 16,\n width: 300,\n fontWeight: 'normal',\n fontFamily: 'Roboto',\n },\n ];\n\n const handleTemplateClick = useCallback(async (tmpl, idx) => {\n const page = store.activePage;\n if (!page) return;\n setLoadingIdx(idx);\n try {\n const res = await fetch(tmpl.json);\n const data = await res.json();\n const templateChildren = data?.pages?.[0]?.children || [];\n\n // Add elements immediately so the user sees instant feedback\n const newIds = [];\n const fonts = new Set();\n templateChildren.forEach((child) => {\n const { id: _omit, ...childData } = child;\n const el = page.addElement(childData, { skipSelect: true });\n if (el) newIds.push(el.id);\n if (child.fontFamily) fonts.add(child.fontFamily);\n });\n if (newIds.length > 0) {\n store.selectElements(newIds);\n }\n store.history.addUndoState();\n\n // Load fonts in background — text-element's loadingdone handler\n // will reflow text once each font arrives\n [...fonts].forEach((f) => store.loadFont(f));\n } catch (err) {\n console.error('Failed to load text template:', err);\n } finally {\n setLoadingIdx(null);\n }\n }, [store]);\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column' }}>\n {presets.map((preset, idx) => (\n <Button\n key={idx}\n fullWidth\n onClick={() => addTextToCanvas(store, preset)}\n sx={{\n justifyContent: 'center',\n textTransform: 'none',\n py: 0,\n px: 0,\n fontSize: preset.fontSize > 30 ? 30 : preset.fontSize > 20 ? 20 : 16,\n fontWeight: preset.fontWeight,\n fontFamily: preset.fontFamily,\n color: '#333',\n '&:hover': {\n backgroundColor: 'rgba(13,131,205,0.04)',\n },\n }}\n >\n {preset.label}\n </Button>\n ))}\n\n {/* Predefined text templates grid */}\n <Typography\n variant=\"caption\"\n sx={{ mt: 2, mb: 1, color: '#888', fontSize: 11, fontWeight: 500 }}\n >\n {t('sidePanel.textTemplates', 'Text templates')}\n </Typography>\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: 1,\n }}\n >\n {TEXT_TEMPLATES.map((tmpl, idx) => (\n <Box\n key={idx}\n onClick={() => handleTemplateClick(tmpl, idx)}\n sx={{\n cursor: loadingIdx === idx ? 'wait' : 'pointer',\n borderRadius: '4px',\n overflow: 'hidden',\n border: '1px solid transparent',\n opacity: loadingIdx === idx ? 0.5 : 1,\n transition: 'border-color 0.15s, box-shadow 0.15s, opacity 0.15s',\n '&:hover': {\n borderColor: '#0d83cd',\n boxShadow: '0 1px 4px rgba(13,131,205,0.15)',\n },\n }}\n >\n <img\n src={tmpl.preview}\n alt=\"Text template\"\n loading=\"lazy\"\n crossOrigin=\"anonymous\"\n draggable={false}\n style={{\n width: '100%',\n height: 'auto',\n display: 'block',\n }}\n />\n </Box>\n ))}\n </Box>\n </Box>\n );\n});\n\n// ── Module-level font storage (persists until page refresh) ──\nlet _uploadedFonts = [];\nlet _fontIdCounter = 0;\n\nconst registerFont = (displayName, blobUrl) => {\n const style = document.createElement('style');\n style.textContent = `@font-face { font-family: '${displayName}'; src: url('${blobUrl}'); }`;\n document.head.appendChild(style);\n return { familyName: displayName, styleEl: style };\n};\n\n// ── Tab 2: My Fonts ──\nconst MyFontsTab = observer(({ store }) => {\n const [, setRenderKey] = useState(0);\n const forceUpdate = useCallback(() => setRenderKey((k) => k + 1), []);\n const fileInputRef = useRef(null);\n\n const fonts = _uploadedFonts;\n\n const handleUpload = useCallback((e) => {\n const file = e.target.files?.[0];\n if (!file) return;\n e.target.value = '';\n\n const rawName = file.name.replace(/\\.(ttf|otf|woff2?|eot)$/i, '');\n const blobUrl = URL.createObjectURL(file);\n const { familyName, styleEl } = registerFont(rawName, blobUrl);\n\n _uploadedFonts = [\n ..._uploadedFonts,\n { id: `${Date.now()}_${++_fontIdCounter}`, displayName: rawName, familyName, blobUrl, styleEl },\n ];\n forceUpdate();\n }, [forceUpdate]);\n\n const handleDelete = useCallback((id) => {\n const font = _uploadedFonts.find((f) => f.id === id);\n if (font) {\n if (font.styleEl?.parentNode) font.styleEl.parentNode.removeChild(font.styleEl);\n URL.revokeObjectURL(font.blobUrl);\n }\n _uploadedFonts = _uploadedFonts.filter((f) => f.id !== id);\n forceUpdate();\n }, [forceUpdate]);\n\n const handleFontClick = useCallback((font) => {\n addTextToCanvas(store, {\n text: 'Cool text',\n fontSize: 36,\n width: 350,\n fontFamily: font.familyName,\n fontWeight: 'normal',\n });\n }, [store]);\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>\n {/* Upload button */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\".ttf,.otf,.woff,.woff2,.eot\"\n style={{ display: 'none' }}\n onChange={handleUpload}\n />\n <Button\n fullWidth\n variant=\"outlined\"\n onClick={() => fileInputRef.current?.click()}\n startIcon={<FileUploadOutlinedIcon />}\n sx={{\n textTransform: 'none',\n borderColor: '#ccc',\n color: '#333',\n fontWeight: 400,\n fontSize: 13,\n py: 0.8,\n '&:hover': { borderColor: '#999', backgroundColor: 'rgba(0,0,0,0.02)' },\n }}\n >\n {t('sidePanel.uploadFont', 'Upload font')}\n </Button>\n\n {/* Uploaded fonts list */}\n {fonts.map((font) => (\n <Box\n key={font.id}\n onClick={() => handleFontClick(font)}\n sx={{\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#b0b0b0',\n borderRadius: '6px',\n py: 2.5,\n px: 2,\n cursor: 'pointer',\n minHeight: 60,\n '&:hover': { backgroundColor: '#a0a0a0' },\n }}\n >\n <Typography\n sx={{\n fontFamily: `'${font.familyName}', sans-serif`,\n fontSize: 20,\n color: '#fff',\n textAlign: 'center',\n userSelect: 'none',\n lineHeight: 1.3,\n }}\n >\n {font.displayName} text\n </Typography>\n <IconButton\n size=\"small\"\n onClick={(e) => { e.stopPropagation(); handleDelete(font.id); }}\n sx={{\n position: 'absolute',\n bottom: 4,\n right: 4,\n color: 'rgba(255,255,255,0.7)',\n '&:hover': { color: '#fff', backgroundColor: 'rgba(255,255,255,0.15)' },\n }}\n >\n <DeleteOutlineIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n ))}\n </Box>\n );\n});\n\n// ── Main panel with tabs ──\nconst TextPanelContent = observer(({ store }) => {\n const [activeTab, setActiveTab] = useState('text');\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', height: '100%' }}>\n {/* Tab bar */}\n <Box sx={{ display: 'flex', borderBottom: '1px solid #e0e0e0' }}>\n {[\n { key: 'text', label: t('sidePanel.textTab', 'Text') },\n { key: 'myfonts', label: t('sidePanel.myFontsTab', 'My fonts') },\n ].map((tab) => (\n <Box\n key={tab.key}\n onClick={() => setActiveTab(tab.key)}\n sx={{\n flex: 1,\n textAlign: 'center',\n py: 1,\n fontSize: 13,\n fontWeight: activeTab === tab.key ? 600 : 400,\n color: activeTab === tab.key ? '#0d83cd' : '#666',\n borderBottom: activeTab === tab.key ? '2px solid #0d83cd' : '2px solid transparent',\n cursor: 'pointer',\n userSelect: 'none',\n transition: 'color 0.15s, border-color 0.15s',\n '&:hover': { color: '#0d83cd' },\n }}\n >\n {tab.label}\n </Box>\n ))}\n </Box>\n\n {/* Tab content */}\n <Box sx={{ p: 2, flex: 1, overflowY: 'auto' }}>\n {activeTab === 'text' && <TextTab store={store} />}\n {activeTab === 'myfonts' && <MyFontsTab store={store} />}\n </Box>\n </Box>\n );\n});\n\nexport const TextSection = {\n name: 'text',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.text', 'Text')} {...props}>\n <TextFieldsIcon />\n </SectionTab>\n ),\n Panel: TextPanelContent,\n};\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, TextField, InputAdornment, Paper, ClickAwayListener } from '@mui/material';\nimport WallpaperIcon from '@mui/icons-material/Wallpaper';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\n// ─── Color conversion utilities ──────────────────────────────────────\n\nfunction hsvToRgb(h, s, v) {\n const i = Math.floor(h / 60) % 6;\n const f = h / 60 - Math.floor(h / 60);\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const tt = v * (1 - (1 - f) * s);\n let r, g, b;\n switch (i) {\n case 0: r = v; g = tt; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = tt; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = tt; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n}\n\nfunction rgbToHsv(r, g, b) {\n r /= 255; g /= 255; b /= 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n const d = max - min;\n let h = 0, s = max === 0 ? 0 : d / max, v = max;\n if (d !== 0) {\n if (max === r) h = ((g - b) / d + 6) % 6 * 60;\n else if (max === g) h = ((b - r) / d + 2) * 60;\n else h = ((r - g) / d + 4) * 60;\n }\n return [h, s, v];\n}\n\nfunction hexToRgb(hex) {\n hex = (hex || '000000').replace('#', '');\n if (hex.length === 3) hex = hex.split('').map(c => c + c).join('');\n if (hex.length !== 6) return [0, 0, 0];\n return [parseInt(hex.substr(0, 2), 16) || 0, parseInt(hex.substr(2, 2), 16) || 0, parseInt(hex.substr(4, 2), 16) || 0];\n}\n\nfunction rgbToHex(r, g, b) {\n return '#' + [r, g, b].map(x => Math.max(0, Math.min(255, Math.round(x))).toString(16).padStart(2, '0')).join('');\n}\n\nfunction hueToColor(h) { return rgbToHex(...hsvToRgb(h, 1, 1)); }\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst UNSPLASH_KEY = 'zwiE802FyRjTmLhZjXqW';\nconst UNSPLASH_BASE = 'https://api.polotno.com/api/get-unsplash';\n\nconst SWATCH_COLORS = ['#ffffff', '#1a237e', '#ff6d00', '#2e7d32', '#fdd835', '#9c27b0'];\n\nconst PICKER_PRESETS = [\n '#f44336', '#ff9800', '#ffeb3b', '#4caf50', '#2196f3', '#9c27b0',\n '#00bcd4', '#8bc34a', '#cddc39', '#000000', '#607d8b', '#ffffff',\n];\n\nconst CHECKER_SVG = \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Crect width='8' height='8' fill='%23ccc'/%3E%3Crect x='8' y='8' width='8' height='8' fill='%23ccc'/%3E%3Crect x='8' width='8' height='8' fill='%23fff'/%3E%3Crect y='8' width='8' height='8' fill='%23fff'/%3E%3C/svg%3E\";\n\n// ─── Saturation / Brightness Square ─────────────────────────────────\n\nconst SatBrightSquare = ({ hue, sat, bright, onChange, size = 220 }) => {\n const ref = useRef(null);\n const dragging = useRef(false);\n\n const update = useCallback((e) => {\n const rect = ref.current?.getBoundingClientRect();\n if (!rect) return;\n const x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));\n const y = Math.max(0, Math.min(1, (e.clientY - rect.top) / rect.height));\n onChange(x, 1 - y);\n }, [onChange]);\n\n useEffect(() => {\n const onMove = (e) => { if (dragging.current) { e.preventDefault(); update(e); } };\n const onUp = () => { dragging.current = false; };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n return () => { document.removeEventListener('mousemove', onMove); document.removeEventListener('mouseup', onUp); };\n }, [update]);\n\n return (\n <Box\n ref={ref}\n onMouseDown={(e) => { dragging.current = true; update(e); }}\n sx={{\n width: size, height: Math.round(size * 0.7), position: 'relative', cursor: 'crosshair',\n borderRadius: '4px', userSelect: 'none',\n background: `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, ${hueToColor(hue)})`,\n }}\n >\n <Box sx={{\n position: 'absolute', left: `${sat * 100}%`, top: `${(1 - bright) * 100}%`,\n width: 12, height: 12, borderRadius: '50%',\n border: '2px solid #fff', boxShadow: '0 0 3px rgba(0,0,0,0.6)',\n transform: 'translate(-50%, -50%)', pointerEvents: 'none',\n }} />\n </Box>\n );\n};\n\n// ─── Hue Bar ─────────────────────────────────────────────────────────\n\nconst HueBar = ({ hue, onChange, width = 220 }) => {\n const ref = useRef(null);\n const dragging = useRef(false);\n\n const update = useCallback((e) => {\n const rect = ref.current?.getBoundingClientRect();\n if (!rect) return;\n onChange(Math.max(0, Math.min(360, ((e.clientX - rect.left) / rect.width) * 360)));\n }, [onChange]);\n\n useEffect(() => {\n const onMove = (e) => { if (dragging.current) { e.preventDefault(); update(e); } };\n const onUp = () => { dragging.current = false; };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n return () => { document.removeEventListener('mousemove', onMove); document.removeEventListener('mouseup', onUp); };\n }, [update]);\n\n return (\n <Box\n ref={ref}\n onMouseDown={(e) => { dragging.current = true; update(e); }}\n sx={{\n width, height: 14, borderRadius: '7px', position: 'relative', cursor: 'pointer',\n background: 'linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)',\n userSelect: 'none', mt: 1,\n }}\n >\n <Box sx={{\n position: 'absolute', left: `${(hue / 360) * 100}%`, top: '50%',\n width: 14, height: 14, borderRadius: '50%',\n border: '2px solid #fff', boxShadow: '0 0 2px rgba(0,0,0,0.5)',\n transform: 'translate(-50%, -50%)', pointerEvents: 'none',\n backgroundColor: hueToColor(hue),\n }} />\n </Box>\n );\n};\n\n// ─── Color Picker (used inside Solid & Linear tabs) ──────────────────\n\nconst ColorPicker = ({ color, onChange }) => {\n const [hsv, setHsv] = useState(() => rgbToHsv(...hexToRgb(color)));\n const [rgb, setRgb] = useState(() => hexToRgb(color));\n const [hexInput, setHexInput] = useState((color || '#000000').replace('#', ''));\n\n useEffect(() => {\n const r = hexToRgb(color || '#000000');\n const h = rgbToHsv(...r);\n setRgb(r);\n setHsv(h);\n setHexInput((color || '#000000').replace('#', ''));\n }, [color]);\n\n const emit = (h, s, v) => {\n const newRgb = hsvToRgb(h, s, v);\n const hex = rgbToHex(...newRgb);\n setHsv([h, s, v]);\n setRgb(newRgb);\n setHexInput(hex.replace('#', ''));\n onChange(hex);\n };\n\n const handleHex = (val) => {\n setHexInput(val);\n if (/^[0-9a-fA-F]{6}$/.test(val)) {\n const r = hexToRgb(val);\n setRgb(r);\n setHsv(rgbToHsv(...r));\n onChange('#' + val);\n }\n };\n\n const handleRgb = (idx, val) => {\n const v = parseInt(val);\n if (isNaN(v) || v < 0 || v > 255) return;\n const newRgb = [...rgb]; newRgb[idx] = v;\n setRgb(newRgb);\n setHsv(rgbToHsv(...newRgb));\n const hex = rgbToHex(...newRgb);\n setHexInput(hex.replace('#', ''));\n onChange(hex);\n };\n\n const smallSx = { width: 38, '& .MuiInputBase-input': { fontSize: 11, py: 0.3, px: 0.3, textAlign: 'center' } };\n\n return (\n <Box>\n <SatBrightSquare hue={hsv[0]} sat={hsv[1]} bright={hsv[2]} onChange={(s, v) => emit(hsv[0], s, v)} />\n <HueBar hue={hsv[0]} onChange={(h) => emit(h, hsv[1], hsv[2])} />\n\n <Box sx={{ display: 'flex', gap: 0.5, mt: 1.5, alignItems: 'center' }}>\n <TextField size=\"small\" value={hexInput} onChange={(e) => handleHex(e.target.value)}\n onFocus={(e) => e.target.select()}\n sx={{ width: 60, '& .MuiInputBase-input': { fontSize: 11, py: 0.3, px: 0.5 } }} />\n {[0, 1, 2].map((i) => (\n <TextField key={i} size=\"small\" type=\"number\" value={rgb[i]}\n onChange={(e) => handleRgb(i, e.target.value)} onFocus={(e) => e.target.select()} sx={smallSx} inputProps={{ min: 0, max: 255 }} />\n ))}\n <TextField size=\"small\" type=\"number\" value={100} disabled sx={smallSx} />\n </Box>\n <Box sx={{ display: 'flex', gap: 0.5, mt: 0.3 }}>\n {['Hex', 'R', 'G', 'B', 'A'].map((label, i) => (\n <Typography key={label} variant=\"caption\" sx={{ width: i === 0 ? 60 : 38, textAlign: 'center', color: '#888', fontSize: 10 }}>\n {label}\n </Typography>\n ))}\n </Box>\n\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5, mt: 1 }}>\n {PICKER_PRESETS.map((c) => (\n <Box key={c} onClick={() => onChange(c)} sx={{\n width: 18, height: 18, borderRadius: '3px', backgroundColor: c,\n border: '1px solid #ddd', cursor: 'pointer',\n '&:hover': { transform: 'scale(1.2)' }, transition: 'transform 0.1s',\n }} />\n ))}\n </Box>\n </Box>\n );\n};\n\n// ─── Color Popup (Solid / Linear tabs) ───────────────────────────────\n\nconst ColorPopup = ({ open, onClose, background, onBackgroundChange }) => {\n const [tab, setTab] = useState('solid');\n const [solidColor, setSolidColor] = useState('#000000');\n const [gradColors, setGradColors] = useState(['#000000', '#ffffff']);\n const [gradAngle, setGradAngle] = useState(0);\n const [activeStop, setActiveStop] = useState(0);\n\n useEffect(() => {\n if (!open) return;\n if (background && background.startsWith('{')) {\n try {\n const g = JSON.parse(background);\n if (g.type === 'linear') {\n setTab('linear');\n setGradColors(g.colors || ['#000000', '#ffffff']);\n setGradAngle(g.angle || 0);\n return;\n }\n } catch (e) {}\n }\n setTab('solid');\n if (background && background.startsWith('#')) setSolidColor(background);\n }, [open]);\n\n const handleSolid = (c) => { setSolidColor(c); onBackgroundChange(c); };\n\n const handleGradColor = (c) => {\n const nc = [...gradColors]; nc[activeStop] = c; setGradColors(nc);\n onBackgroundChange(JSON.stringify({ type: 'linear', colors: nc, angle: gradAngle }));\n };\n\n const handleAngle = (a) => {\n setGradAngle(a);\n onBackgroundChange(JSON.stringify({ type: 'linear', colors: gradColors, angle: a }));\n };\n\n if (!open) return null;\n\n const tabStyle = (active) => ({\n cursor: 'pointer', fontWeight: active ? 600 : 400,\n color: active ? '#1976d2' : '#666',\n borderBottom: active ? '2px solid #1976d2' : '2px solid transparent',\n pb: 0.3, px: 0.5, userSelect: 'none',\n });\n\n return (\n <ClickAwayListener onClickAway={onClose}>\n <Paper elevation={4} sx={{ position: 'absolute', top: 52, left: 0, zIndex: 1000, p: 1.5, width: 252, borderRadius: '8px' }}>\n <Box sx={{ display: 'flex', gap: 2, mb: 1.5, borderBottom: '1px solid #e0e0e0', pb: 0.5 }}>\n <Typography variant=\"body2\" onClick={() => setTab('solid')} sx={tabStyle(tab === 'solid')}>Solid</Typography>\n <Typography variant=\"body2\" onClick={() => {\n setTab('linear');\n onBackgroundChange(JSON.stringify({ type: 'linear', colors: gradColors, angle: gradAngle }));\n }} sx={tabStyle(tab === 'linear')}>Linear</Typography>\n </Box>\n\n {tab === 'solid' && <ColorPicker color={solidColor} onChange={handleSolid} />}\n\n {tab === 'linear' && (\n <>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n {gradColors.map((c, i) => (\n <Box key={i} onClick={() => setActiveStop(i)} sx={{\n width: 32, height: 32, borderRadius: '4px', backgroundColor: c,\n border: activeStop === i ? '2px solid #1976d2' : '2px solid #ccc', cursor: 'pointer',\n }} />\n ))}\n </Box>\n\n <Box sx={{\n width: '100%', height: 12, borderRadius: '6px', mb: 1,\n background: `linear-gradient(${gradAngle}deg, ${gradColors[0]}, ${gradColors[1]})`,\n border: '1px solid #e0e0e0',\n }} />\n\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1.5 }}>\n <Box sx={{\n width: 24, height: 24, borderRadius: '50%', border: '1px solid #ccc',\n position: 'relative', flexShrink: 0,\n }}>\n <Box sx={{\n width: 1, height: 10, backgroundColor: '#333',\n transformOrigin: 'bottom center', transform: `rotate(${gradAngle}deg)`,\n position: 'absolute', left: '50%', bottom: '50%', ml: '-0.5px',\n }} />\n </Box>\n <input type=\"range\" min={0} max={360} value={gradAngle}\n onChange={(e) => handleAngle(parseInt(e.target.value))}\n style={{ flex: 1, cursor: 'pointer' }} />\n <Typography variant=\"caption\" sx={{ width: 32, textAlign: 'right', flexShrink: 0 }}>{gradAngle}°</Typography>\n </Box>\n\n <ColorPicker color={gradColors[activeStop]} onChange={handleGradColor} />\n </>\n )}\n </Paper>\n </ClickAwayListener>\n );\n};\n\n// ─── Main Background Panel ───────────────────────────────────────────\n\nconst BackgroundPanelContent = observer(({ store }) => {\n const page = store.activePage;\n const [pickerOpen, setPickerOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [photos, setPhotos] = useState([]);\n const [loading, setLoading] = useState(false);\n const [lastSolidColor, setLastSolidColor] = useState('#ffffff');\n const [hasMore, setHasMore] = useState(true);\n const [pageNum, setPageNum] = useState(1);\n\n const hasMoreRef = useRef(true);\n const pageNumRef = useRef(1);\n const currentQueryRef = useRef('gradient');\n const debounceRef = useRef(null);\n const isFirstRender = useRef(true);\n const requestIdRef = useRef(0);\n const observerRef = useRef(null);\n const fetchingRef = useRef(false);\n\n useEffect(() => {\n const bg = page?.background || '';\n if (bg && bg.startsWith('#')) setLastSolidColor(bg);\n }, [page?.background]);\n\n const fetchPhotos = useCallback(async (query, pg = 1) => {\n // For pagination (pg > 1), skip if already fetching to avoid duplicates\n if (pg > 1 && fetchingRef.current) return;\n const id = ++requestIdRef.current;\n fetchingRef.current = true;\n setLoading(true);\n try {\n const q = query || 'gradient';\n const res = await fetch(`${UNSPLASH_BASE}?query=${encodeURIComponent(q)}&per_page=20&page=${pg}&KEY=${UNSPLASH_KEY}`);\n const data = await res.json();\n if (requestIdRef.current !== id) return; // Stale response, ignore\n const results = data.results || (Array.isArray(data) ? data : []);\n const totalPages = data.total_pages || 0;\n if (pg === 1) { setPhotos(results); } else { setPhotos(prev => [...prev, ...results]); }\n const more = pg < totalPages;\n setHasMore(more); hasMoreRef.current = more;\n setPageNum(pg); pageNumRef.current = pg;\n currentQueryRef.current = q;\n } catch (e) {\n if (requestIdRef.current !== id) return;\n console.warn('Unsplash fetch failed:', e);\n }\n fetchingRef.current = false;\n setLoading(false);\n }, []);\n\n // Initial load\n useEffect(() => { fetchPhotos('gradient', 1); }, [fetchPhotos]);\n\n // Debounced auto-search (500ms)\n useEffect(() => {\n if (isFirstRender.current) { isFirstRender.current = false; return; }\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n const q = searchQuery.trim() || 'gradient';\n hasMoreRef.current = true; pageNumRef.current = 1;\n setHasMore(true); setPageNum(1);\n fetchPhotos(q, 1);\n }, 500);\n return () => { if (debounceRef.current) clearTimeout(debounceRef.current); };\n }, [searchQuery, fetchPhotos]);\n\n // Callback ref for infinite scroll sentinel — reconnects observer on every mount/remount\n const sentinelRef = useCallback((node) => {\n if (observerRef.current) { observerRef.current.disconnect(); observerRef.current = null; }\n if (!node) return;\n observerRef.current = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && !fetchingRef.current && hasMoreRef.current) {\n fetchPhotos(currentQueryRef.current, pageNumRef.current + 1);\n }\n }, { threshold: 0.1 });\n observerRef.current.observe(node);\n }, [fetchPhotos]);\n\n const setBackground = useCallback((value) => {\n if (!page) return;\n page.set({ background: value });\n store.history.addUndoState();\n }, [page, store]);\n\n const bg = page?.background || '';\n const isGradient = bg.startsWith('{');\n const isImage = bg.startsWith('http');\n const displayColor = isGradient || isImage ? lastSolidColor : (bg || '#ffffff');\n\n return (\n <Box sx={{ p: 1.5, position: 'relative' }}>\n {/* ── Color Swatches Row ── */}\n <Box sx={{ display: 'flex', gap: '6px', mb: 1.5, alignItems: 'center', flexWrap: 'nowrap', overflowX: 'hidden', '&::-webkit-scrollbar': { display: 'none' } }}>\n {/* Palette / color picker trigger */}\n <Box onClick={() => setPickerOpen(!pickerOpen)} sx={{\n width: 30, height: 30, minWidth: 30, borderRadius: '50%', cursor: 'pointer',\n border: pickerOpen ? '2px solid #1976d2' : '2px solid #e0e0e0',\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n background: 'conic-gradient(#f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)',\n '&:hover': { borderColor: '#1976d2' }, transition: 'border-color 0.15s',\n }}>\n <Box sx={{ width: 16, height: 16, borderRadius: '50%', backgroundColor: '#fff' }} />\n </Box>\n\n {/* Preset color swatches */}\n {SWATCH_COLORS.map((c) => (\n <Box key={c} onClick={() => { setBackground(c); setPickerOpen(false); }} sx={{\n width: 30, height: 30, minWidth: 30, borderRadius: '50%', backgroundColor: c, cursor: 'pointer',\n border: bg === c ? '2px solid #1976d2' : '2px solid #e0e0e0',\n '&:hover': { transform: 'scale(1.1)' }, transition: 'all 0.15s',\n }} />\n ))}\n\n {/* Transparent / remove background */}\n <Box onClick={() => { setBackground('transparent'); setPickerOpen(false); }} sx={{\n width: 30, height: 30, minWidth: 30, borderRadius: '50%', cursor: 'pointer',\n backgroundImage: `url(\"${CHECKER_SVG}\")`, backgroundSize: '8px 8px',\n border: bg === 'transparent' ? '2px solid #1976d2' : '2px solid #e0e0e0',\n '&:hover': { transform: 'scale(1.1)' }, transition: 'all 0.15s',\n }} />\n </Box>\n\n {/* ── Color Picker Popup ── */}\n <ColorPopup open={pickerOpen} onClose={() => setPickerOpen(false)} background={bg} onBackgroundChange={setBackground} />\n\n {/* ── Search Input ── */}\n <TextField\n size=\"small\" fullWidth\n placeholder={t('sidePanel.search', 'Search...')}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ fontSize: 18, color: '#999' }} />\n </InputAdornment>\n ),\n }}\n sx={{ mb: 1.5, '& .MuiInputBase-input': { fontSize: 13, py: 0.8 } }}\n />\n\n {/* ── Unsplash Attribution ── */}\n <Typography variant=\"caption\" sx={{ display: 'block', textAlign: 'center', mb: 1, color: '#888' }}>\n Photos by{' '}\n <a href=\"https://unsplash.com\" target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: '#1976d2', textDecoration: 'none' }}>\n Unsplash\n </a>\n </Typography>\n\n {/* ── Photo Grid ── */}\n <Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 1 }}>\n {photos.map((photo, idx) => {\n const thumb = photo.urls?.small || photo.urls?.thumb || photo.src;\n if (!thumb) return null;\n return (\n <Box key={photo.id || idx} onClick={() => {\n const url = photo.urls?.regular || photo.urls?.small || photo.src;\n if (url) setBackground(url);\n }} sx={{\n cursor: 'pointer', borderRadius: '8px', overflow: 'hidden', aspectRatio: '4/3',\n '&:hover': { opacity: 0.85 }, transition: 'opacity 0.15s',\n }}>\n <img src={thumb} alt={photo.alt_description || 'Background'}\n style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }} loading=\"lazy\" />\n </Box>\n );\n })}\n </Box>\n\n {/* Sentinel for infinite scroll */}\n {hasMore && <Box ref={sentinelRef} sx={{ height: 20 }} />}\n\n {loading && (\n <Typography variant=\"caption\" sx={{ display: 'block', textAlign: 'center', mt: 2, color: '#888' }}>\n Loading...\n </Typography>\n )}\n {!loading && photos.length === 0 && (\n <Typography variant=\"caption\" sx={{ display: 'block', textAlign: 'center', mt: 2, color: '#888' }}>\n No photos found\n </Typography>\n )}\n </Box>\n );\n});\n\nexport const BackgroundSection = {\n name: 'background',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.background', 'Background')} {...props}>\n <WallpaperIcon />\n </SectionTab>\n ),\n Panel: BackgroundPanelContent,\n};\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, IconButton, List, ListItem, ListItemText, ListItemIcon } from '@mui/material';\nimport LayersIcon from '@mui/icons-material/Layers';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport VisibilityOffIcon from '@mui/icons-material/VisibilityOff';\nimport LockIcon from '@mui/icons-material/Lock';\nimport LockOpenIcon from '@mui/icons-material/LockOpen';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\nimport ImageIcon from '@mui/icons-material/Image';\nimport TextFieldsIcon from '@mui/icons-material/TextFields';\nimport CategoryIcon from '@mui/icons-material/Category';\nimport TimelineIcon from '@mui/icons-material/Timeline';\nimport CodeIcon from '@mui/icons-material/Code';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\nconst ELEMENT_ICONS = {\n image: ImageIcon,\n text: TextFieldsIcon,\n figure: CategoryIcon,\n line: TimelineIcon,\n svg: CodeIcon,\n};\n\nconst LayerItem = observer(({ element, store, index }) => {\n const isSelected = store.selectedElementsIds.includes(element.id);\n const Icon = ELEMENT_ICONS[element.type] || CategoryIcon;\n const isLocked = element.locked;\n\n const handleSelect = () => {\n store.selectElements([element.id]);\n };\n\n const handleToggleVisibility = (e) => {\n e.stopPropagation();\n element.set({ visible: !element.visible });\n store.history.addUndoState();\n };\n\n const handleToggleLock = (e) => {\n e.stopPropagation();\n if (isLocked) {\n element.set({\n draggable: true,\n resizable: true,\n contentEditable: true,\n styleEditable: true,\n });\n } else {\n element.set({\n draggable: false,\n resizable: false,\n contentEditable: false,\n styleEditable: false,\n });\n }\n store.history.addUndoState();\n };\n\n const handleMoveUp = (e) => {\n e.stopPropagation();\n element.moveUp();\n store.history.addUndoState();\n };\n\n const handleMoveDown = (e) => {\n e.stopPropagation();\n element.moveDown();\n store.history.addUndoState();\n };\n\n const handleDelete = (e) => {\n e.stopPropagation();\n store.deleteElements([element.id]);\n store.history.addUndoState();\n };\n\n const displayName =\n element.name ||\n `${element.type}${element.text ? `: ${element.text.substring(0, 20)}` : ''}`;\n\n return (\n <ListItem\n onClick={handleSelect}\n sx={{\n cursor: 'pointer',\n borderRadius: '4px',\n mb: 0.5,\n py: 0.5,\n px: 1,\n backgroundColor: isSelected ? 'rgba(13,131,205,0.1)' : 'transparent',\n border: isSelected ? '1px solid rgba(13,131,205,0.3)' : '1px solid transparent',\n opacity: element.visible ? 1 : 0.5,\n '&:hover': {\n backgroundColor: isSelected\n ? 'rgba(13,131,205,0.15)'\n : 'rgba(0,0,0,0.04)',\n },\n }}\n >\n <ListItemIcon sx={{ minWidth: 32 }}>\n <Icon sx={{ fontSize: 18, color: isSelected ? '#0d83cd' : '#666' }} />\n </ListItemIcon>\n <ListItemText\n primary={displayName}\n primaryTypographyProps={{\n variant: 'body2',\n noWrap: true,\n sx: { fontSize: '12px' },\n }}\n />\n <Box sx={{ display: 'flex', gap: 0, ml: 1 }}>\n <IconButton size=\"small\" onClick={handleMoveUp} sx={{ p: 0.3 }}>\n <ArrowUpwardIcon sx={{ fontSize: 14 }} />\n </IconButton>\n <IconButton size=\"small\" onClick={handleMoveDown} sx={{ p: 0.3 }}>\n <ArrowDownwardIcon sx={{ fontSize: 14 }} />\n </IconButton>\n <IconButton size=\"small\" onClick={handleToggleVisibility} sx={{ p: 0.3 }}>\n {element.visible ? (\n <VisibilityIcon sx={{ fontSize: 14 }} />\n ) : (\n <VisibilityOffIcon sx={{ fontSize: 14 }} />\n )}\n </IconButton>\n <IconButton size=\"small\" onClick={handleToggleLock} sx={{ p: 0.3 }}>\n {isLocked ? (\n <LockIcon sx={{ fontSize: 14 }} />\n ) : (\n <LockOpenIcon sx={{ fontSize: 14 }} />\n )}\n </IconButton>\n <IconButton size=\"small\" onClick={handleDelete} sx={{ p: 0.3 }}>\n <DeleteOutlineIcon sx={{ fontSize: 14, color: '#d32f2f' }} />\n </IconButton>\n </Box>\n </ListItem>\n );\n});\n\nconst LayersPanelContent = observer(({ store }) => {\n const page = store.activePage;\n\n if (!page || page.children.length === 0) {\n return (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {t('sidePanel.noLayers', 'No layers on this page')}\n </Typography>\n </Box>\n );\n }\n\n // Show in reverse order (top layer first)\n const elements = [...page.children].reverse();\n\n return (\n <Box sx={{ p: 1, overflowY: 'auto', height: '100%' }}>\n <Typography variant=\"subtitle2\" sx={{ px: 1, mb: 1 }}>\n {t('sidePanel.layers', 'Layers')} ({page.children.length})\n </Typography>\n <List dense disablePadding>\n {elements.map((element, index) => (\n <LayerItem\n key={element.id}\n element={element}\n store={store}\n index={index}\n />\n ))}\n </List>\n </Box>\n );\n});\n\nexport const LayersSection = {\n name: 'layers',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.layers', 'Layers')} {...props}>\n <LayersIcon />\n </SectionTab>\n ),\n Panel: LayersPanelContent,\n};\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography } from '@mui/material';\nimport CategoryIcon from '@mui/icons-material/Category';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\n// ── Line definitions ────────────────────────────────────────────────\nconst LINES = [\n { name: 'Solid', endHead: '', dash: [], svgLine: { strokeDasharray: 'none' } },\n { name: 'Dashed', endHead: '', dash: [10, 5], svgLine: { strokeDasharray: '8 4' } },\n { name: 'Dotted', endHead: '', dash: [2, 4], svgLine: { strokeDasharray: '2 4' } },\n { name: 'Arrow', endHead: 'arrow', dash: [], svgLine: { strokeDasharray: 'none', marker: true } },\n { name: 'Dot Arrow', endHead: 'arrow', startHead: 'circle', dash: [], svgLine: { strokeDasharray: 'none', marker: true, startDot: true } },\n { name: 'Dash Arrow', endHead: 'arrow', startHead: 'square', dash: [8, 4], svgLine: { strokeDasharray: '6 3', marker: true, startSquare: true } },\n];\n\n// ── Shape definitions (100×100 viewBox paths) ───────────────────────\nconst SHAPES = [\n // Row 1 — basic\n { name: 'Rectangle', subType: 'rect' },\n { name: 'Circle', subType: 'circle' },\n { name: 'Star', subType: 'star' },\n { name: 'Triangle', subType: 'triangle' },\n // Row 2\n { name: 'Parallelogram', subType: 'path', path: 'M20 90 L0 10 L80 10 L100 90 Z' },\n { name: 'Diamond', subType: 'diamond' },\n { name: 'Pentagon', subType: 'polygon' },\n { name: 'Hexagon', subType: 'hexagon' },\n // Row 3\n { name: 'Speech Bubble', subType: 'path', path: 'M10 5 H90 Q95 5 95 10 V55 Q95 60 90 60 H35 L15 80 L25 60 H10 Q5 60 5 55 V10 Q5 5 10 5 Z' },\n { name: 'Cross', subType: 'path', path: 'M35 0 H65 V35 H100 V65 H65 V100 H35 V65 H0 V35 H35 Z' },\n { name: 'Egg', subType: 'path', path: 'M50 5 C75 5 95 30 95 55 C95 80 75 95 50 95 C25 95 5 80 5 55 C5 30 25 5 50 5 Z' },\n { name: 'Cloud', subType: 'path', path: 'M25 80 C10 80 0 70 5 60 C0 50 10 40 22 42 C20 30 30 20 45 20 C55 15 70 20 75 32 C85 28 100 38 95 52 C105 62 95 78 80 78 Z' },\n // Row 4 — arrows\n { name: 'Right Arrow', subType: 'path', path: 'M0 30 H60 V10 L100 50 L60 90 V70 H0 Z' },\n { name: 'Left Arrow', subType: 'path', path: 'M100 30 H40 V10 L0 50 L40 90 V70 H100 Z' },\n { name: 'Down Arrow', subType: 'path', path: 'M30 0 V60 H10 L50 100 L90 60 H70 V0 Z' },\n { name: 'Up Arrow', subType: 'path', path: 'M30 100 V40 H10 L50 0 L90 40 H70 V100 Z' },\n // Row 5 — decorative\n { name: 'Flower 5', subType: 'path', path: 'M50 10 C60 0 75 5 70 20 C85 15 90 30 80 40 C95 45 90 65 75 60 C80 75 65 85 55 70 C50 85 35 80 35 65 C20 75 10 65 20 55 C5 50 10 35 25 35 C15 20 25 10 40 15 C35 0 45 0 50 10 Z' },\n { name: 'Asterisk', subType: 'path', path: 'M50 0 L58 35 L90 15 L65 42 L100 50 L65 58 L90 85 L58 65 L50 100 L42 65 L10 85 L35 58 L0 50 L35 42 L10 15 L42 35 Z' },\n { name: 'Bowtie', subType: 'path', path: 'M0 0 L45 40 L45 0 L55 0 L55 40 L100 0 L100 100 L55 60 L55 100 L45 100 L45 60 L0 100 Z' },\n { name: 'Half Circle', subType: 'path', path: 'M50 0 A50 50 0 0 1 50 100 Z' },\n // Row 6\n { name: 'Rounded Square', subType: 'path', path: 'M20 5 H80 Q95 5 95 20 V80 Q95 95 80 95 H20 Q5 95 5 80 V20 Q5 5 20 5 Z' },\n { name: 'Gem', subType: 'path', path: 'M50 0 L95 35 L50 100 L5 35 Z' },\n { name: 'Arch', subType: 'path', path: 'M5 95 V40 Q5 5 50 5 Q95 5 95 40 V95 H70 V45 Q70 25 50 25 Q30 25 30 45 V95 Z' },\n { name: 'Teardrop', subType: 'path', path: 'M50 5 C70 5 90 25 90 50 C90 75 70 95 50 95 C30 95 10 75 10 50 C10 25 30 5 50 5 Z' },\n // Row 7\n { name: 'Drop', subType: 'path', path: 'M50 0 C55 20 90 40 90 65 C90 85 72 100 50 100 C28 100 10 85 10 65 C10 40 45 20 50 0 Z' },\n { name: 'Starburst', subType: 'path', path: 'M50 0 L56 30 L80 8 L62 34 L100 25 L70 44 L100 50 L70 56 L100 75 L62 66 L80 92 L56 70 L50 100 L44 70 L20 92 L38 66 L0 75 L30 56 L0 50 L30 44 L0 25 L38 34 L20 8 L44 30 Z' },\n { name: 'Wave', subType: 'path', path: 'M0 20 C25 0 25 40 50 20 C75 0 75 40 100 20 V80 C75 100 75 60 50 80 C25 100 25 60 0 80 Z' },\n { name: 'Flower 6', subType: 'path', path: 'M50 5 C55 20 65 15 68 25 C78 18 82 28 75 35 C85 35 88 48 78 50 C88 52 85 65 75 65 C82 72 78 82 68 75 C65 85 55 80 50 95 C45 80 35 85 32 75 C22 82 18 72 25 65 C15 65 12 52 22 50 C12 48 15 35 25 35 C18 28 22 18 32 25 C35 15 45 20 50 5 Z' },\n // Row 8\n { name: 'Hourglass', subType: 'path', path: 'M10 0 H90 L55 45 L55 55 L90 100 H10 L45 55 L45 45 Z' },\n { name: 'Heart', subType: 'path', path: 'M50 90 C25 70 0 55 0 30 C0 10 15 0 30 0 C40 0 48 5 50 15 C52 5 60 0 70 0 C85 0 100 10 100 30 C100 55 75 70 50 90 Z' },\n { name: 'House', subType: 'path', path: 'M50 5 L95 45 V95 H5 V45 Z' },\n { name: 'Arrow Up', subType: 'path', path: 'M50 0 L90 35 H65 V100 H35 V35 H10 Z' },\n // Row 9\n { name: 'Hourglass V', subType: 'path', path: 'M0 0 L100 0 L55 45 L55 55 L100 100 L0 100 L45 55 L45 45 Z' },\n { name: 'Barn', subType: 'path', path: 'M50 0 L95 30 V95 H5 V30 Z' },\n { name: 'Mushroom', subType: 'path', path: 'M5 55 C5 20 30 0 50 0 C70 0 95 20 95 55 H65 V95 H35 V55 Z' },\n { name: 'Lips', subType: 'path', path: 'M10 50 C10 25 30 15 50 25 C70 15 90 25 90 50 C90 75 70 85 50 75 C30 85 10 75 10 50 Z' },\n // Row 10\n { name: 'Leaf', subType: 'path', path: 'M10 90 Q10 10 90 10 Q90 90 10 90 Z' },\n { name: 'Lightning', subType: 'path', path: 'M60 0 L25 45 H50 L15 100 L80 50 H55 L85 0 Z' },\n { name: 'Bolt', subType: 'path', path: 'M55 0 L20 42 H45 L10 100 L80 55 H52 L90 0 Z' },\n { name: 'D Shape', subType: 'path', path: 'M10 5 H60 C90 5 95 30 95 50 C95 70 90 95 60 95 H10 Z' },\n // Row 11\n { name: 'Peanut', subType: 'path', path: 'M35 10 C55 0 80 10 80 30 C95 40 95 60 80 70 C80 90 55 100 35 90 C20 100 5 90 5 70 C-5 60 -5 40 5 30 C5 10 20 0 35 10 Z' },\n { name: 'L Shape', subType: 'path', path: 'M10 0 H50 V60 H90 V100 H10 Z' },\n { name: 'Sun', subType: 'path', path: 'M50 0 L54 35 L75 8 L58 37 L95 20 L63 42 L100 40 L65 48 L98 62 L62 54 L85 80 L56 58 L68 95 L52 62 L50 100 L48 62 L32 95 L44 58 L15 80 L38 54 L2 62 L35 48 L0 40 L37 42 L5 20 L42 37 L25 8 L46 35 Z' },\n { name: 'Concave Rect', subType: 'path', path: 'M0 0 C35 15 65 15 100 0 V100 C65 85 35 85 0 100 Z' },\n // Row 12\n { name: 'Hexagon 2', subType: 'path', path: 'M25 5 H75 L95 50 L75 95 H25 L5 50 Z' },\n { name: 'U Shape', subType: 'path', path: 'M5 0 H30 V65 C30 80 42 90 50 90 C58 90 70 80 70 65 V0 H95 V65 C95 90 75 100 50 100 C25 100 5 90 5 65 Z' },\n { name: 'Corner', subType: 'path', path: 'M0 0 H55 V55 H100 V100 H0 Z' },\n { name: 'T Shape', subType: 'path', path: 'M0 0 H100 V40 H65 V100 H35 V40 H0 Z' },\n // Row 13\n { name: 'Shield', subType: 'path', path: 'M50 95 C20 80 5 60 5 30 V10 H95 V30 C95 60 80 80 50 95 Z' },\n { name: 'Shield 2', subType: 'path', path: 'M50 95 C15 75 5 55 5 25 V5 H95 V25 C95 55 85 75 50 95 Z' },\n { name: 'Parallelogram 2', subType: 'path', path: 'M20 0 H100 L80 100 H0 Z' },\n { name: 'Clover', subType: 'path', path: 'M50 40 C40 30 25 20 25 35 C15 25 0 30 10 45 C0 50 5 65 20 60 C15 75 25 85 40 75 L50 95 L60 75 C75 85 85 75 80 60 C95 65 100 50 90 45 C100 30 85 25 75 35 C75 20 60 30 50 40 Z' },\n // Row 14\n { name: '4-Point Star', subType: 'path', path: 'M50 0 L58 38 L100 50 L58 62 L50 100 L42 62 L0 50 L42 38 Z' },\n { name: 'L Step', subType: 'path', path: 'M0 0 H50 V50 H100 V100 H0 Z' },\n { name: 'Steps', subType: 'path', path: 'M0 0 H35 V35 H65 V65 H100 V100 H0 Z' },\n { name: 'Steps 2', subType: 'path', path: 'M0 0 H30 V30 H50 V0 H80 V50 H100 V100 H0 Z' },\n // Row 15 — organic blobs\n { name: 'Blob 1', subType: 'path', path: 'M60 10 C85 10 95 30 90 50 C95 75 80 95 55 90 C30 95 10 80 10 55 C5 30 30 10 60 10 Z' },\n { name: 'Blob 2', subType: 'path', path: 'M55 5 C80 5 100 25 95 50 C100 75 80 95 55 95 C30 100 5 80 10 55 C0 30 25 5 55 5 Z' },\n { name: 'Blob 3', subType: 'path', path: 'M50 5 C75 0 100 20 95 45 C100 70 80 100 50 95 C20 100 0 75 5 50 C0 25 25 5 50 5 Z' },\n { name: 'Blob 4', subType: 'path', path: 'M60 5 C90 10 100 35 85 60 C95 85 70 100 45 95 C20 95 0 70 10 45 C5 20 30 0 60 5 Z' },\n];\n\n// ── SVG thumbnail for shapes ────────────────────────────────────────\nconst FILL_COLOR = '#BFBFBF';\n\n// Built-in shape → SVG path mapping for thumbnails\nconst builtInPaths = {\n rect: 'M5 5 H95 V95 H5 Z',\n circle: 'M50 5 A45 45 0 1 1 50 95 A45 45 0 1 1 50 5 Z',\n star: 'M50 5 L62 38 L97 38 L68 60 L79 93 L50 73 L21 93 L32 60 L3 38 L38 38 Z',\n triangle: 'M50 5 L95 90 H5 Z',\n diamond: 'M50 5 L95 50 L50 95 L5 50 Z',\n hexagon: 'M25 10 H75 L95 50 L75 90 H25 L5 50 Z',\n polygon: 'M50 5 L95 38 L80 90 H20 L5 38 Z',\n};\n\nconst ShapeThumbnail = ({ shape }) => {\n const svgPath = shape.path || builtInPaths[shape.subType] || builtInPaths.rect;\n return (\n <svg viewBox=\"0 0 100 100\" width=\"100%\" height=\"100%\" style={{ display: 'block' }}>\n <path d={svgPath} fill={FILL_COLOR} />\n </svg>\n );\n};\n\n// ── Line thumbnail ──────────────────────────────────────────────────\nconst LineThumbnail = ({ line }) => {\n const s = line.svgLine || {};\n return (\n <svg viewBox=\"0 0 80 20\" width=\"100%\" height=\"20\" style={{ display: 'block' }}>\n {s.startDot && <circle cx=\"6\" cy=\"10\" r=\"4\" fill={FILL_COLOR} />}\n {s.startSquare && <rect x=\"2\" y=\"6\" width=\"8\" height=\"8\" fill={FILL_COLOR} />}\n <line\n x1={s.startDot || s.startSquare ? 12 : 2}\n y1=\"10\"\n x2={s.marker ? 65 : 78}\n y2=\"10\"\n stroke={FILL_COLOR}\n strokeWidth=\"2.5\"\n strokeDasharray={s.strokeDasharray === 'none' ? undefined : s.strokeDasharray}\n strokeLinecap=\"round\"\n />\n {s.marker && (\n <polygon points=\"62,4 78,10 62,16\" fill={FILL_COLOR} />\n )}\n </svg>\n );\n};\n\n// ── Panel ───────────────────────────────────────────────────────────\nconst ElementsPanelContent = observer(({ store }) => {\n const addShape = (shape) => {\n const page = store.activePage;\n if (!page) return;\n\n const size = Math.min(store.width, store.height) * 0.2;\n const isRect = shape.subType === 'rect';\n const w = isRect ? size * 1.5 : size;\n const h = isRect ? size * 0.8 : size;\n\n const props = {\n type: 'figure',\n subType: shape.subType,\n x: store.width / 2 - w / 2,\n y: store.height / 2 - h / 2,\n width: w,\n height: h,\n fill: FILL_COLOR,\n stroke: '',\n strokeWidth: 0,\n };\n if (shape.path) {\n props.pathData = shape.path;\n }\n page.addElement(props);\n store.history.addUndoState();\n };\n\n const addLine = (line) => {\n const page = store.activePage;\n if (!page) return;\n\n const lineWidth = Math.min(store.width, store.height) * 0.4;\n page.addElement({\n type: 'line',\n x: store.width / 2 - lineWidth / 2,\n y: store.height / 2,\n width: lineWidth,\n height: 4,\n color: '#000000',\n endHead: line.endHead || '',\n startHead: line.startHead || '',\n dash: line.dash || [],\n });\n store.history.addUndoState();\n };\n\n const shapeBoxSx = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n aspectRatio: '1',\n borderRadius: '8px',\n cursor: 'pointer',\n padding: '10px',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n transition: 'background 0.15s ease',\n };\n\n const lineBoxSx = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '8px',\n cursor: 'pointer',\n padding: '12px 8px',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n transition: 'background 0.15s ease',\n };\n\n return (\n <Box sx={{ p: 1.5, overflowY: 'auto' }}>\n {/* Lines */}\n <Typography variant=\"subtitle2\" sx={{ mb: 1, color: '#555', fontSize: '13px' }}>\n {t('sidePanel.lines', 'Lines')}\n </Typography>\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'repeat(3, 1fr)',\n gap: '4px',\n mb: 2.5,\n }}\n >\n {LINES.map((line, idx) => (\n <Box key={idx} onClick={() => addLine(line)} sx={lineBoxSx}>\n <LineThumbnail line={line} />\n </Box>\n ))}\n </Box>\n\n {/* Shapes */}\n <Typography variant=\"subtitle2\" sx={{ mb: 1, color: '#555', fontSize: '13px' }}>\n {t('sidePanel.shapes', 'Shapes')}\n </Typography>\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'repeat(4, 1fr)',\n gap: '4px',\n }}\n >\n {SHAPES.map((shape, idx) => (\n <Box key={idx} onClick={() => addShape(shape)} sx={shapeBoxSx}>\n <ShapeThumbnail shape={shape} />\n </Box>\n ))}\n </Box>\n </Box>\n );\n});\n\nexport const ElementsSection = {\n name: 'elements',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.elements', 'Elements')} {...props}>\n <CategoryIcon />\n </SectionTab>\n ),\n Panel: ElementsPanelContent,\n};\n","export function getImageSize(url) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.naturalWidth, height: img.naturalHeight });\n };\n img.onerror = (err) => {\n reject(err || new Error('Failed to load image'));\n };\n img.crossOrigin = 'anonymous';\n img.src = url;\n });\n}\n\nexport function loadImage(url) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = (err) => reject(err || new Error('Failed to load image'));\n img.crossOrigin = 'anonymous';\n img.src = url;\n });\n}\n\nexport function cropImage({ src, x, y, width, height, outputWidth, outputHeight }) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = outputWidth || width;\n canvas.height = outputHeight || height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(\n img,\n x,\n y,\n width,\n height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n resolve(canvas.toDataURL('image/png'));\n };\n img.onerror = (err) => reject(err || new Error('Failed to crop image'));\n img.crossOrigin = 'anonymous';\n img.src = src;\n });\n}\n","import React, { useState, useCallback, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, Button, IconButton } from '@mui/material';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { SectionTab } from './tab-button';\nimport { getImageSize } from '../utils/image';\nimport { t } from '../config';\n\nconst UploadPanelContent = observer(({ store }) => {\n const [images, setImages] = useState([]);\n const [isDragging, setIsDragging] = useState(false);\n const fileInputRef = useRef(null);\n\n const processFiles = useCallback(\n async (files) => {\n const newImages = [];\n for (const file of files) {\n if (!file.type.startsWith('image/')) continue;\n const url = URL.createObjectURL(file);\n try {\n const { width, height } = await getImageSize(url);\n newImages.push({\n id: `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n src: url,\n name: file.name,\n width,\n height,\n });\n } catch {\n URL.revokeObjectURL(url);\n }\n }\n setImages((prev) => [...prev, ...newImages]);\n },\n []\n );\n\n const handleDrop = useCallback(\n (e) => {\n e.preventDefault();\n setIsDragging(false);\n if (e.dataTransfer.files?.length) {\n processFiles(Array.from(e.dataTransfer.files));\n }\n },\n [processFiles]\n );\n\n const handleDragOver = useCallback((e) => {\n e.preventDefault();\n setIsDragging(true);\n }, []);\n\n const handleDragLeave = useCallback((e) => {\n e.preventDefault();\n setIsDragging(false);\n }, []);\n\n const handleFileInput = useCallback(\n (e) => {\n if (e.target.files?.length) {\n processFiles(Array.from(e.target.files));\n }\n e.target.value = '';\n },\n [processFiles]\n );\n\n const addImageToCanvas = useCallback(\n (img) => {\n const page = store.activePage;\n if (!page) return;\n\n const scale = Math.min(\n store.width / img.width,\n store.height / img.height,\n 1\n );\n const w = img.width * scale;\n const h = img.height * scale;\n\n page.addElement({\n type: 'image',\n src: img.src,\n x: store.width / 2 - w / 2,\n y: store.height / 2 - h / 2,\n width: w,\n height: h,\n });\n store.history.addUndoState();\n },\n [store]\n );\n\n const removeImage = useCallback((id) => {\n setImages((prev) => {\n const img = prev.find((i) => i.id === id);\n if (img) URL.revokeObjectURL(img.src);\n return prev.filter((i) => i.id !== id);\n });\n }, []);\n\n return (\n <Box sx={{ p: 1.5, display: 'flex', flexDirection: 'column', height: '100%' }}>\n {/* Drop zone */}\n <Box\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onClick={() => fileInputRef.current?.click()}\n sx={{\n border: '2px dashed',\n borderColor: isDragging ? '#0d83cd' : '#ccc',\n borderRadius: '8px',\n p: 3,\n textAlign: 'center',\n cursor: 'pointer',\n backgroundColor: isDragging ? 'rgba(13,131,205,0.06)' : 'transparent',\n transition: 'all 0.2s ease',\n mb: 2,\n '&:hover': {\n borderColor: '#0d83cd',\n backgroundColor: 'rgba(13,131,205,0.04)',\n },\n }}\n >\n <CloudUploadIcon sx={{ fontSize: 36, color: '#999', mb: 1 }} />\n <Typography variant=\"body2\" sx={{ color: '#666', fontSize: '13px' }}>\n {t('sidePanel.uploadTip', 'Drop images here or click to upload')}\n </Typography>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n multiple\n onChange={handleFileInput}\n style={{ display: 'none' }}\n />\n </Box>\n\n {/* Uploaded images grid */}\n {images.length > 0 && (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gap: '8px',\n overflowY: 'auto',\n flex: 1,\n }}\n >\n {images.map((img) => (\n <Box\n key={img.id}\n sx={{\n position: 'relative',\n paddingTop: '100%',\n borderRadius: '6px',\n overflow: 'hidden',\n cursor: 'pointer',\n border: '1px solid #e0e0e0',\n '&:hover .upload-delete-btn': {\n opacity: 1,\n },\n '&:hover': {\n borderColor: '#0d83cd',\n },\n }}\n onClick={() => addImageToCanvas(img)}\n >\n <Box\n sx={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#f5f5f5',\n }}\n >\n <img\n src={img.src}\n alt={img.name}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n </Box>\n <IconButton\n className=\"upload-delete-btn\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n removeImage(img.id);\n }}\n sx={{\n position: 'absolute',\n top: 2,\n right: 2,\n opacity: 0,\n backgroundColor: 'rgba(255,255,255,0.85)',\n transition: 'opacity 0.15s ease',\n '&:hover': {\n backgroundColor: 'rgba(255,255,255,1)',\n },\n }}\n >\n <DeleteIcon sx={{ fontSize: 16 }} />\n </IconButton>\n </Box>\n ))}\n </Box>\n )}\n </Box>\n );\n});\n\nexport const UploadSection = {\n name: 'upload',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.upload', 'Upload')} {...props}>\n <CloudUploadIcon />\n </SectionTab>\n ),\n Panel: UploadPanelContent,\n};\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport {\n Box,\n Typography,\n IconButton,\n Switch,\n Slider,\n TextField,\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { t } from '../config';\n\nconst FILTER_PRESETS = [\n { name: 'Grayscale', key: 'grayscale', bg: '#e0e0e0', color: '#888' },\n { name: 'Sepia', key: 'sepia', bg: '#f5e6c8', color: '#a67c52' },\n { name: 'Cold', key: 'cold', bg: '#d0e4f7', color: '#6a9fd8' },\n { name: 'Natural', key: 'natural', bg: '#f0f0f0', color: '#777' },\n { name: 'Warm', key: 'warm', bg: '#fbe8d3', color: '#c08050' },\n];\n\nconst EffectRow = ({ label, enabled, onToggle, value, onChange, min, max, step, children }) => (\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{label}</Typography>\n <Switch size=\"small\" checked={enabled} onChange={(e) => onToggle(e.target.checked)} />\n </Box>\n {enabled && (\n <>\n {children}\n {value !== undefined && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Slider\n size=\"small\"\n value={value}\n onChange={(_, v) => onChange(v)}\n min={min || 0}\n max={max || 100}\n step={step || 1}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={typeof value === 'number' ? Math.round(value * 10) / 10 : value}\n onChange={(e) => {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) onChange(v);\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min, max, step }}\n />\n </Box>\n )}\n </>\n )}\n </Box>\n);\n\nconst ImageEffectsPanel = observer(({ store }) => {\n const panel = store._toolbarPanel;\n if (!panel || panel.type !== 'effects') return null;\n\n const element = store.getElementById(panel.elementId);\n if (!element) return null;\n\n const handleClose = () => store.closeToolbarPanel();\n\n const commit = () => store.history.addUndoState();\n\n const resetAll = { grayscaleEnabled: false, sepiaEnabled: false, warmEnabled: false, coldEnabled: false, brightnessEnabled: false, brightness: 0, blurEnabled: false };\n\n const applyPreset = (key) => {\n const presets = {\n grayscale: { ...resetAll, grayscaleEnabled: true },\n sepia: { ...resetAll, sepiaEnabled: true },\n cold: { ...resetAll, coldEnabled: true },\n natural: { ...resetAll },\n warm: { ...resetAll, warmEnabled: true },\n };\n element.set(presets[key] || resetAll);\n commit();\n };\n\n const getActivePreset = () => {\n if (element.grayscaleEnabled) return 'grayscale';\n if (element.sepiaEnabled) return 'sepia';\n if (element.warmEnabled) return 'warm';\n if (element.coldEnabled) return 'cold';\n return null;\n };\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.effects', 'Effects')}</Typography>\n <IconButton size=\"small\" onClick={handleClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n {/* Filter presets */}\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 1, mb: 3 }}>\n {FILTER_PRESETS.map((preset) => {\n const isActive = getActivePreset() === preset.key;\n return (\n <Box\n key={preset.key}\n onClick={() => applyPreset(preset.key)}\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 borderRadius: '6px',\n backgroundColor: preset.bg,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n mb: 0.5,\n overflow: 'hidden',\n }}\n >\n {element.src ? (\n <img\n src={element.src}\n alt={preset.name}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n filter:\n preset.key === 'grayscale' ? 'grayscale(1)' :\n preset.key === 'sepia' ? 'sepia(1)' :\n preset.key === 'cold' ? 'saturate(0.5) hue-rotate(180deg)' :\n preset.key === 'warm' ? 'saturate(1.3) sepia(0.2)' :\n 'none',\n }}\n />\n ) : (\n <Typography variant=\"caption\" sx={{ color: preset.color, fontSize: 10 }}>\n {preset.name[0]}\n </Typography>\n )}\n </Box>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{preset.name}</Typography>\n </Box>\n );\n })}\n </Box>\n\n {/* Blur */}\n <EffectRow\n label={t('toolbar.blur', 'Blur')}\n enabled={element.blurEnabled}\n onToggle={(v) => { element.set({ blurEnabled: v }); commit(); }}\n value={element.blurRadius}\n onChange={(v) => element.set({ blurRadius: v })}\n min={0}\n max={40}\n step={1}\n />\n\n {/* Brightness */}\n <EffectRow\n label={t('toolbar.brightness', 'Brightness')}\n enabled={element.brightnessEnabled}\n onToggle={(v) => { element.set({ brightnessEnabled: v }); commit(); }}\n value={Math.round(element.brightness * 100)}\n onChange={(v) => element.set({ brightness: v / 100 })}\n min={-100}\n max={100}\n step={1}\n />\n\n {/* Border */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.border', 'Border')}</Typography>\n <Switch\n size=\"small\"\n checked={element.borderSize > 0}\n onChange={(e) => {\n element.set({ borderSize: e.target.checked ? 2 : 0 });\n commit();\n }}\n />\n </Box>\n {element.borderSize > 0 && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <input\n type=\"color\"\n value={element.borderColor || '#000000'}\n onChange={(e) => { element.set({ borderColor: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.borderSize}\n onChange={(e) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v) && v >= 0) { element.set({ borderSize: v }); commit(); }\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 0 }}\n />\n </Box>\n )}\n </Box>\n\n {/* Corner Radius */}\n <EffectRow\n label={t('toolbar.cornerRadius', 'Corner Radius')}\n enabled={element.cornerRadius > 0}\n onToggle={(v) => { element.set({ cornerRadius: v ? 10 : 0 }); commit(); }}\n value={element.cornerRadius}\n onChange={(v) => element.set({ cornerRadius: v })}\n min={0}\n max={Math.min(element.width, element.height) / 2}\n step={1}\n />\n\n {/* Shadow */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.shadow', 'Shadow')}</Typography>\n <Switch\n size=\"small\"\n checked={element.shadowEnabled}\n onChange={(e) => { element.set({ shadowEnabled: e.target.checked }); commit(); }}\n />\n </Box>\n {element.shadowEnabled && (\n <>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.blur', 'Blur')}</Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n <Slider\n size=\"small\"\n value={element.shadowBlur}\n onChange={(_, v) => element.set({ shadowBlur: v })}\n min={0}\n max={50}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.shadowBlur}\n onChange={(e) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) element.set({ shadowBlur: v });\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.offsetX', 'Offset X')}</Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n <Slider\n size=\"small\"\n value={element.shadowOffsetX}\n onChange={(_, v) => element.set({ shadowOffsetX: v })}\n min={-50}\n max={50}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.shadowOffsetX}\n onChange={(e) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) element.set({ shadowOffsetX: v });\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.offsetY', 'Offset Y')}</Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n <Slider\n size=\"small\"\n value={element.shadowOffsetY}\n onChange={(_, v) => element.set({ shadowOffsetY: v })}\n min={-50}\n max={50}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.shadowOffsetY}\n onChange={(e) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) element.set({ shadowOffsetY: v });\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.color', 'Color')}</Typography>\n <input\n type=\"color\"\n value={element.shadowColor || '#000000'}\n onChange={(e) => { element.set({ shadowColor: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </>\n )}\n </Box>\n </Box>\n );\n});\n\nImageEffectsPanel.displayName = 'ImageEffectsPanel';\nexport { ImageEffectsPanel };\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 from 'react';\nimport { observer } from 'mobx-react-lite';\nimport {\n Box,\n Typography,\n IconButton,\n Switch,\n Slider,\n TextField,\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { t } from '../config';\n\nconst SliderRow = ({ label, value, onChange, min = 0, max = 100, step = 1 }) => (\n <Box sx={{ mb: 1 }}>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{label}</Typography>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Slider\n size=\"small\"\n value={value}\n onChange={(_, v) => onChange(v)}\n min={min}\n max={max}\n step={step}\n sx={{ flex: 1 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={typeof value === 'number' ? Math.round(value * 10) / 10 : value}\n onChange={(e) => {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) onChange(v);\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min, max, step }}\n />\n </Box>\n </Box>\n);\n\nconst TextEffectsPanel = observer(({ store }) => {\n const panel = store._toolbarPanel;\n if (!panel || panel.type !== 'effects') return null;\n\n const element = store.getElementById(panel.elementId);\n if (!element || element.type !== 'text') return null;\n\n const handleClose = () => store.closeToolbarPanel();\n const commit = () => store.history.addUndoState();\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 }}>\n {t('toolbar.textEffects', 'Text Effects')}\n </Typography>\n <IconButton size=\"small\" onClick={handleClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n {/* Blur */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.blur', 'Blur')}</Typography>\n <Switch\n size=\"small\"\n checked={element.blurEnabled}\n onChange={(e) => { element.set({ blurEnabled: e.target.checked }); commit(); }}\n />\n </Box>\n {element.blurEnabled && (\n <SliderRow\n label={t('toolbar.blur', 'Blur')}\n value={element.blurRadius}\n onChange={(v) => element.set({ blurRadius: v })}\n min={0}\n max={40}\n />\n )}\n </Box>\n\n {/* Text Stroke */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.textStroke', 'Text Stroke')}</Typography>\n <Switch\n size=\"small\"\n checked={element.strokeWidth > 0}\n onChange={(e) => {\n element.set({\n strokeWidth: e.target.checked ? 2 : 0,\n stroke: element.stroke || '#000000',\n });\n commit();\n }}\n />\n </Box>\n {element.strokeWidth > 0 && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <input\n type=\"color\"\n value={element.stroke || '#000000'}\n onChange={(e) => { element.set({ stroke: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.strokeWidth}\n onChange={(e) => {\n const v = parseFloat(e.target.value);\n if (!isNaN(v) && v >= 0) { element.set({ strokeWidth: v }); commit(); }\n }}\n onFocus={(e) => e.target.select()}\n sx={{ width: 65, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 0, max: 20, step: 0.5 }}\n />\n </Box>\n )}\n </Box>\n\n {/* Background */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.background', 'Background')}</Typography>\n <Switch\n size=\"small\"\n checked={element.backgroundEnabled}\n onChange={(e) => { element.set({ backgroundEnabled: e.target.checked }); commit(); }}\n />\n </Box>\n {element.backgroundEnabled && (\n <>\n <SliderRow\n label={t('toolbar.cornerRadius', 'Corner radius')}\n value={element.backgroundCornerRadius}\n onChange={(v) => element.set({ backgroundCornerRadius: v })}\n min={0}\n max={50}\n step={0.5}\n />\n <SliderRow\n label={t('toolbar.padding', 'Padding')}\n value={element.backgroundPadding}\n onChange={(v) => element.set({ backgroundPadding: v })}\n min={0}\n max={100}\n />\n <SliderRow\n label={t('toolbar.opacity', 'Opacity')}\n value={Math.round(element.backgroundOpacity * 100)}\n onChange={(v) => element.set({ backgroundOpacity: v / 100 })}\n min={0}\n max={100}\n />\n <Box sx={{ mt: 1 }}>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.color', 'Color')}</Typography>\n <input\n type=\"color\"\n value={element.backgroundColor || '#ffffff'}\n onChange={(e) => { element.set({ backgroundColor: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </>\n )}\n </Box>\n\n {/* Shadow */}\n <Box sx={{ mb: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{t('toolbar.shadow', 'Shadow')}</Typography>\n <Switch\n size=\"small\"\n checked={element.shadowEnabled}\n onChange={(e) => { element.set({ shadowEnabled: e.target.checked }); commit(); }}\n />\n </Box>\n {element.shadowEnabled && (\n <>\n <SliderRow\n label={t('toolbar.blur', 'Blur')}\n value={element.shadowBlur}\n onChange={(v) => element.set({ shadowBlur: v })}\n min={0}\n max={50}\n />\n <SliderRow\n label={t('toolbar.offsetX', 'Offset X')}\n value={element.shadowOffsetX}\n onChange={(v) => element.set({ shadowOffsetX: v })}\n min={-50}\n max={50}\n />\n <SliderRow\n label={t('toolbar.offsetY', 'Offset Y')}\n value={element.shadowOffsetY}\n onChange={(v) => element.set({ shadowOffsetY: v })}\n min={-50}\n max={50}\n />\n <SliderRow\n label={t('toolbar.opacity', 'Opacity')}\n value={Math.round(element.shadowOpacity * 100)}\n onChange={(v) => element.set({ shadowOpacity: v / 100 })}\n min={0}\n max={100}\n />\n <Box sx={{ mt: 1 }}>\n <Typography variant=\"caption\" sx={{ color: '#888', display: 'block', mb: 0.5 }}>{t('toolbar.color', 'Color')}</Typography>\n <input\n type=\"color\"\n value={element.shadowColor || '#000000'}\n onChange={(e) => { element.set({ shadowColor: e.target.value }); commit(); }}\n style={{ width: 32, height: 32, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </>\n )}\n </Box>\n </Box>\n );\n});\n\nTextEffectsPanel.displayName = 'TextEffectsPanel';\nexport { TextEffectsPanel };\n","import React, { useState, useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, IconButton } from '@mui/material';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport { TextSection } from './text-panel';\nimport { BackgroundSection } from './background-panel';\nimport { LayersSection } from './layers-panel';\nimport { ElementsSection } from './elements-panel';\nimport { UploadSection } from './upload-panel';\nimport { ImageEffectsPanel } from '../toolbar/image-effects-panel';\nimport { ImageMaskPanel } from '../toolbar/image-mask-panel';\nimport { TextEffectsPanel } from '../toolbar/text-effects-panel';\n\nexport const DEFAULT_SECTIONS = [\n TextSection,\n ElementsSection,\n UploadSection,\n BackgroundSection,\n LayersSection,\n];\n\nconst SidePanel = observer(({ store, sections, defaultSection }) => {\n const sectionsList = sections || DEFAULT_SECTIONS;\n const [activeSection, setActiveSection] = useState(null);\n\n // Sync with store.openedSidePanel\n useEffect(() => {\n if (store.openedSidePanel) {\n const section = sectionsList.find((s) => s.name === store.openedSidePanel);\n if (section) {\n setActiveSection(section.name);\n } else if (store.openedSidePanel === '') {\n setActiveSection(null);\n }\n }\n }, [store.openedSidePanel]);\n\n // Set initial active section\n useEffect(() => {\n if (defaultSection) {\n const section = sectionsList.find((s) => s.name === defaultSection);\n if (section) {\n setActiveSection(section.name);\n }\n } else if (!activeSection && sectionsList.length > 0) {\n setActiveSection(sectionsList[0].name);\n }\n }, []);\n\n const handleTabClick = (sectionName) => {\n if (activeSection === sectionName) {\n // Toggle off\n setActiveSection(null);\n store.openSidePanel('');\n } else {\n setActiveSection(sectionName);\n store.openSidePanel(sectionName);\n }\n };\n\n const activeSectionObj = sectionsList.find((s) => s.name === activeSection);\n\n return (\n <Box\n sx={{\n display: 'flex',\n height: '100%',\n borderRight: '1px solid #e0e0e0',\n position: 'relative',\n }}\n >\n {/* Tab strip */}\n <Box\n sx={{\n width: 72,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n py: 1,\n gap: 0.5,\n borderRight: '1px solid #e0e0e0',\n backgroundColor: '#fafafa',\n overflowY: 'auto',\n flexShrink: 0,\n }}\n >\n {sectionsList.map((section) => {\n const isActive = activeSection === section.name;\n const TabComponent = section.Tab;\n if (section.visibleInList === false) return null;\n return (\n <Box key={section.name} sx={{ width: '100%', px: 0.5 }}>\n <TabComponent\n onClick={() => handleTabClick(section.name)}\n active={isActive}\n />\n </Box>\n );\n })}\n </Box>\n\n {/* Toolbar panel overlay (Effects / Mask) */}\n {store._toolbarPanel ? (\n store._toolbarPanel.type === 'effects' ? (\n (() => {\n const el = store.getElementById(store._toolbarPanel.elementId);\n if (el && el.type === 'text') return <TextEffectsPanel store={store} />;\n return <ImageEffectsPanel store={store} />;\n })()\n ) : store._toolbarPanel.type === 'mask' ? (\n <ImageMaskPanel store={store} />\n ) : null\n ) : (\n /* Normal panel content */\n activeSectionObj && (\n <Box\n sx={{\n width: 325,\n overflowY: 'auto',\n overflowX: 'hidden',\n backgroundColor: '#ffffff',\n flexShrink: 0,\n position: 'relative',\n }}\n >\n <activeSectionObj.Panel store={store} />\n </Box>\n )\n )}\n\n {/* Close / collapse button — rounded pill on right edge */}\n {activeSectionObj && (\n <Box\n onClick={() => { setActiveSection(null); store.openSidePanel(''); }}\n sx={{\n position: 'absolute',\n right: -16,\n top: '50%',\n transform: 'translateY(-50%)',\n width: 16,\n height: 52,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n backgroundColor: '#fff',\n border: '1px solid #e0e0e0',\n borderLeft: 'none',\n borderRadius: '0 10px 10px 0',\n boxShadow: '2px 0 6px rgba(0,0,0,0.06)',\n zIndex: 10,\n '&:hover': { backgroundColor: '#f5f5f5' },\n transition: 'background-color 0.15s',\n }}\n >\n <ChevronLeftIcon sx={{ fontSize: 14, color: '#aaa' }} />\n </Box>\n )}\n </Box>\n );\n});\n\nSidePanel.displayName = 'SidePanel';\nexport default SidePanel;\nexport { SidePanel };\n\n// Re-export sections for polotno-compatible import path:\n// import { TextSection } from 'labellife-design-tool/side-panel/side-panel'\nexport { TextSection } from './text-panel';\nexport { BackgroundSection } from './background-panel';\nexport { LayersSection } from './layers-panel';\nexport { ElementsSection } from './elements-panel';\nexport { UploadSection } from './upload-panel';\nexport { SectionTab } from './tab-button';\n","import React from 'react';\nimport { Box, CircularProgress, Typography } from '@mui/material';\n\nexport function ImagesGrid({\n images = [],\n getPreview,\n onSelect,\n rowsNumber = 2,\n isLoading = false,\n loadMore = false,\n itemHeight,\n}) {\n if (isLoading) {\n return (\n <Box sx={{ display: 'flex', justifyContent: 'center', py: 4 }}>\n <CircularProgress size={32} />\n </Box>\n );\n }\n\n if (!images || images.length === 0) {\n return (\n <Box sx={{ py: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n No items found\n </Typography>\n </Box>\n );\n }\n\n const columns = rowsNumber;\n const gap = 8;\n\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap}px`,\n overflowY: 'auto',\n flex: 1,\n }}\n >\n {images.map((item, index) => {\n const preview = getPreview ? getPreview(item) : item.src || item.url || item;\n return (\n <Box\n key={index}\n onClick={(e) => {\n if (onSelect) {\n const rect = e.currentTarget.getBoundingClientRect();\n onSelect(item, {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height,\n });\n }\n }}\n sx={{\n cursor: 'pointer',\n borderRadius: '4px',\n overflow: 'hidden',\n border: '1px solid #e0e0e0',\n aspectRatio: '1',\n height: itemHeight || 'auto',\n '&:hover': {\n borderColor: '#0d83cd',\n boxShadow: '0 0 0 1px #0d83cd',\n },\n transition: 'all 0.15s ease',\n }}\n >\n <img\n src={preview}\n alt=\"\"\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n display: 'block',\n }}\n loading=\"lazy\"\n />\n </Box>\n );\n })}\n </Box>\n );\n}\n\nexport default ImagesGrid;\n","import React, { useState, useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, Select, MenuItem, FormControl, InputLabel, TextField, FormControlLabel, Checkbox, Divider, Chip, Alert, Button } from '@mui/material';\nimport InputIcon from '@mui/icons-material/Input';\nimport TextFieldsIcon from '@mui/icons-material/TextFields';\nimport CalendarTodayIcon from '@mui/icons-material/CalendarToday';\nimport NumbersIcon from '@mui/icons-material/Numbers';\nimport ImageIcon from '@mui/icons-material/Image';\nimport { SectionTab } from './tab-button';\nimport { t } from '../config';\n\n// ── Image input placeholder ──────────────────────────────────────────\nconst IMAGE_PLACEHOLDER_SRC = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400\" height=\"400\" viewBox=\"0 0 400 400\">\n <rect width=\"400\" height=\"400\" fill=\"#f0f2f5\" rx=\"12\"/>\n <rect x=\"110\" y=\"90\" width=\"180\" height=\"145\" rx=\"10\" fill=\"#dde1e7\"/>\n <circle cx=\"158\" cy=\"135\" r=\"22\" fill=\"#f0f2f5\"/>\n <polygon points=\"110,235 168,163 210,205 250,163 290,235\" fill=\"#c8cdd6\"/>\n <rect x=\"140\" y=\"268\" width=\"120\" height=\"14\" rx=\"7\" fill=\"#c8cdd6\"/>\n <rect x=\"160\" y=\"292\" width=\"80\" height=\"10\" rx=\"5\" fill=\"#dde1e7\"/>\n </svg>`\n)}`;\n\n// ── Date formatting helpers ──────────────────────────────────────────\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nconst DATE_FORMATS = [\n { key: 'MM-DD-YYYY', label: 'MM-DD-YYYY' },\n { key: 'MMMM-DD-YYYY', label: 'Month Name-DD-YYYY' },\n { key: 'MMMM-DD', label: 'Month Name-DD' },\n { key: 'YYYY', label: 'YYYY' },\n { key: 'MM-DD', label: 'MM-DD' },\n];\n\nfunction formatDate(date, format) {\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const yyyy = String(date.getFullYear());\n const monthName = MONTH_NAMES[date.getMonth()];\n\n switch (format) {\n case 'MM-DD-YYYY':\n return `${mm}-${dd}-${yyyy}`;\n case 'MMMM-DD-YYYY':\n return `${monthName}-${dd}-${yyyy}`;\n case 'MMMM-DD':\n return `${monthName}-${dd}`;\n case 'YYYY':\n return yyyy;\n case 'MM-DD':\n return `${mm}-${dd}`;\n default:\n return `${mm}-${dd}-${yyyy}`;\n }\n}\n\n// ── Card component ───────────────────────────────────────────────────\nconst InputFieldCard = ({ icon, label, description, onClick }) => (\n <Box\n onClick={onClick}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n p: 1.5,\n borderRadius: '8px',\n border: '1px solid #e0e0e0',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: 'rgba(13,131,205,0.06)',\n borderColor: '#0d83cd',\n },\n transition: 'all 0.15s ease',\n }}\n >\n <Box\n sx={{\n width: 40,\n height: 40,\n borderRadius: '8px',\n backgroundColor: 'rgba(13,131,205,0.08)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n color: '#0d83cd',\n }}\n >\n {icon}\n </Box>\n <Box sx={{ minWidth: 0 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 600, fontSize: 13, lineHeight: 1.3 }}>\n {label}\n </Typography>\n {description && (\n <Typography variant=\"caption\" sx={{ color: '#888', fontSize: 11, lineHeight: 1.2 }}>\n {description}\n </Typography>\n )}\n </Box>\n </Box>\n);\n\n// ── Panel content ────────────────────────────────────────────────────\nconst InputFieldsPanelContent = observer(({ store }) => {\n const [dateFormat, setDateFormat] = useState('MM-DD-YYYY');\n const [textPrompt, setTextPrompt] = useState('');\n const [datePrompt, setDatePrompt] = useState('');\n const [integerPrompt, setIntegerPrompt] = useState('');\n const [imagePrompt, setImagePrompt] = useState('');\n const [textRequired, setTextRequired] = useState(false);\n const [dateRequired, setDateRequired] = useState(false);\n const [integerRequired, setIntegerRequired] = useState(false);\n const [imageRequired, setImageRequired] = useState(false);\n\n const addInputElement = (inputType, extra = {}) => {\n const page = store.activePage;\n if (!page) return;\n\n const scaleFactor = Math.min(store.width, store.height) / 500;\n\n if (inputType === 'image') {\n const size = Math.min(store.width, store.height) * 0.3;\n page.addElement({\n type: 'image',\n x: store.width / 2 - size / 2,\n y: store.height / 2 - size / 2,\n width: size,\n height: size,\n src: IMAGE_PLACEHOLDER_SRC,\n custom: {\n inputField: true,\n inputType: 'image',\n placeholder: t('sidePanel.inputFields.imagePlaceholder', 'Upload image'),\n promptText: extra.promptText || t('sidePanel.inputFields.defaultImagePrompt', 'Please upload an image'),\n required: extra.required || false,\n },\n });\n } else {\n let dummyText = '';\n let placeholder = '';\n\n let defaultPrompt = '';\n\n switch (inputType) {\n case 'text':\n dummyText = t('sidePanel.inputFields.sampleText', 'Sample Text');\n placeholder = t('sidePanel.inputFields.textPlaceholder', 'Enter text');\n defaultPrompt = t('sidePanel.inputFields.defaultTextPrompt', 'Please enter your text');\n break;\n case 'date':\n dummyText = formatDate(new Date(), extra.dateFormat || 'MM-DD-YYYY');\n placeholder = t('sidePanel.inputFields.datePlaceholder', 'Select date');\n defaultPrompt = t('sidePanel.inputFields.defaultDatePrompt', 'Please select a date');\n break;\n case 'integer':\n dummyText = '0';\n placeholder = t('sidePanel.inputFields.integerPlaceholder', 'Enter number');\n defaultPrompt = t('sidePanel.inputFields.defaultIntegerPrompt', 'Please enter a number');\n break;\n default:\n dummyText = 'Input';\n placeholder = 'Input';\n defaultPrompt = 'Please provide input';\n }\n\n const fontSize = Math.round(20 * scaleFactor);\n const textWidth = Math.round(250 * scaleFactor);\n\n page.addElement({\n type: 'text',\n x: store.width / 2 - textWidth / 2,\n y: store.height / 2 - fontSize,\n width: textWidth,\n height: fontSize * 2,\n text: dummyText,\n fontSize: fontSize,\n fontFamily: 'Roboto',\n align: 'center',\n fill: '#333333',\n custom: {\n inputField: true,\n inputType: inputType,\n placeholder: placeholder,\n promptText: extra.promptText || defaultPrompt,\n required: extra.required || false,\n ...(inputType === 'date' ? { dateFormat: extra.dateFormat || 'MM-DD-YYYY' } : {}),\n },\n });\n }\n\n store.history.addUndoState();\n };\n\n return (\n <Box sx={{ p: 2, overflowY: 'auto', height: '100%' }}>\n <Typography variant=\"subtitle2\" sx={{ mb: 2, color: '#555', fontSize: 13 }}>\n {t('sidePanel.inputFields.title', 'Input Fields')}\n </Typography>\n <Typography variant=\"caption\" sx={{ display: 'block', mb: 2, color: '#999', fontSize: 11 }}>\n {t('sidePanel.inputFields.description', 'Add placeholder elements that require user input when the template is used.')}\n </Typography>\n\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>\n {/* Text input */}\n <InputFieldCard\n icon={<TextFieldsIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.textInput', 'Text Input')}\n description={t('sidePanel.inputFields.textInputDesc', 'Free text entry')}\n onClick={() => addInputElement('text', { promptText: textPrompt, required: textRequired })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={textPrompt}\n onChange={(e) => setTextPrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={textRequired} onChange={(e) => setTextRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n\n {/* Date input */}\n <InputFieldCard\n icon={<CalendarTodayIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.dateInput', 'Date Input')}\n description={t('sidePanel.inputFields.dateInputDesc', 'Date value with format')}\n onClick={() => addInputElement('date', { dateFormat, promptText: datePrompt, required: dateRequired })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={datePrompt}\n onChange={(e) => setDatePrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={dateRequired} onChange={(e) => setDateRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n\n {/* Date format selector */}\n <FormControl size=\"small\" sx={{ ml: 6.5, mr: 1 }}>\n <InputLabel sx={{ fontSize: 12 }}>\n {t('sidePanel.inputFields.dateFormat', 'Date format')}\n </InputLabel>\n <Select\n value={dateFormat}\n onChange={(e) => setDateFormat(e.target.value)}\n label={t('sidePanel.inputFields.dateFormat', 'Date format')}\n sx={{ fontSize: 12 }}\n >\n {DATE_FORMATS.map((fmt) => (\n <MenuItem key={fmt.key} value={fmt.key} sx={{ fontSize: 12 }}>\n {fmt.label} — {formatDate(new Date(), fmt.key)}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n {/* Integer input */}\n <InputFieldCard\n icon={<NumbersIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.integerInput', 'Integer Input')}\n description={t('sidePanel.inputFields.integerInputDesc', 'Numeric value')}\n onClick={() => addInputElement('integer', { promptText: integerPrompt, required: integerRequired })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={integerPrompt}\n onChange={(e) => setIntegerPrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={integerRequired} onChange={(e) => setIntegerRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n\n {/* Image input */}\n <InputFieldCard\n icon={<ImageIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.imageInput', 'Image Input')}\n description={t('sidePanel.inputFields.imageInputDesc', 'Image placeholder')}\n onClick={() => addInputElement('image', { promptText: imagePrompt, required: imageRequired })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={imagePrompt}\n onChange={(e) => setImagePrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={imageRequired} onChange={(e) => setImageRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n </Box>\n\n {/* ── Mark existing element as variable ─────────────────────── */}\n <Divider sx={{ my: 2 }} />\n <Typography variant=\"subtitle2\" sx={{ mb: 1, color: '#555', fontSize: 13 }}>\n {t('sidePanel.inputFields.markTitle', 'Mark Selected as Variable')}\n </Typography>\n <Typography variant=\"caption\" sx={{ display: 'block', mb: 2, color: '#999', fontSize: 11 }}>\n {t('sidePanel.inputFields.markDescription', 'Convert any selected text or image element into a variable, preserving its existing style.')}\n </Typography>\n <MarkAsVariableForm store={store} />\n </Box>\n );\n});\n\n// ── Mark-as-variable sub-form ─────────────────────────────────────────\nconst MarkAsVariableForm = observer(({ store }) => {\n const [markLabel, setMarkLabel] = useState('');\n const [markRequired, setMarkRequired] = useState(false);\n const [markInputType, setMarkInputType] = useState('text');\n\n const selectedIds = store.selectedElementsIds || [];\n const selectedElement =\n selectedIds.length === 1 ? store.getElementById(selectedIds[0]) : null;\n\n const isImageElement = selectedElement?.type === 'image';\n const isTextElement = selectedElement?.type === 'text';\n const isSupportedElement = isImageElement || isTextElement;\n const isAlreadyVariable = !!selectedElement?.custom?.inputField;\n\n useEffect(() => {\n if (selectedElement && isSupportedElement) {\n setMarkLabel(selectedElement.custom?.promptText || '');\n setMarkRequired(!!selectedElement.custom?.required);\n setMarkInputType(\n isImageElement ? 'image' : (selectedElement.custom?.inputType || 'text')\n );\n } else {\n setMarkLabel('');\n setMarkRequired(false);\n setMarkInputType('text');\n }\n }, [selectedElement?.id]);\n\n const handleMark = () => {\n if (!selectedElement || !markLabel.trim()) return;\n selectedElement.set({\n custom: {\n ...selectedElement.custom,\n inputField: true,\n promptText: markLabel.trim(),\n inputType: isImageElement ? 'image' : markInputType,\n required: markRequired,\n },\n });\n store.history.addUndoState();\n };\n\n const handleUnmark = () => {\n if (!selectedElement) return;\n const {\n inputField: _f,\n promptText: _p,\n inputType: _it,\n required: _r,\n placeholder: _pl,\n ...rest\n } = selectedElement.custom || {};\n selectedElement.set({ custom: rest });\n store.history.addUndoState();\n };\n\n if (!selectedElement) {\n return (\n <Typography variant=\"caption\" sx={{ color: '#bbb', display: 'block', textAlign: 'center', py: 1 }}>\n {t('sidePanel.inputFields.noSelection', 'Select a text or image element on the canvas')}\n </Typography>\n );\n }\n\n if (!isSupportedElement) {\n return (\n <Alert severity=\"info\" sx={{ fontSize: 11, py: 0.5 }}>\n {t('sidePanel.inputFields.unsupportedType', 'Only text and image elements can be marked as variables.')}\n </Alert>\n );\n }\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>\n {isAlreadyVariable && (\n <Alert severity=\"success\" sx={{ fontSize: 11, py: 0.5 }}>\n {t('sidePanel.inputFields.alreadyVariable', 'Variable')}{': '}\n <strong>{selectedElement.custom.promptText}</strong>\n <Chip label={selectedElement.custom.inputType} size=\"small\" sx={{ ml: 1, fontSize: 10 }} />\n </Alert>\n )}\n\n <Box sx={{ bgcolor: '#f5f5f5', borderRadius: 1, p: 1.5 }}>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {t('sidePanel.inputFields.selectedElement', 'Selected')}:{' '}\n <strong style={{ textTransform: 'capitalize' }}>{selectedElement.type}</strong>\n </Typography>\n {isTextElement && selectedElement.text && (\n <Typography variant=\"body2\" sx={{ mt: 0.5, fontStyle: 'italic', fontSize: 11, color: '#555' }} noWrap>\n &ldquo;{selectedElement.text}&rdquo;\n </Typography>\n )}\n </Box>\n\n <TextField\n size=\"small\"\n label={t('sidePanel.inputFields.variableLabel', 'Variable Label')}\n placeholder={t('sidePanel.inputFields.variableLabelHint', 'e.g. First Name, Photo...')}\n value={markLabel}\n onChange={(e) => setMarkLabel(e.target.value)}\n fullWidth\n sx={{ '& .MuiInputBase-input': { fontSize: 12 } }}\n />\n\n {isTextElement && (\n <FormControl size=\"small\" fullWidth>\n <InputLabel sx={{ fontSize: 12 }}>\n {t('sidePanel.inputFields.inputType', 'Input Type')}\n </InputLabel>\n <Select\n value={markInputType}\n onChange={(e) => setMarkInputType(e.target.value)}\n label={t('sidePanel.inputFields.inputType', 'Input Type')}\n sx={{ fontSize: 12 }}\n >\n <MenuItem value=\"text\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.textInput', 'Text Input')}</MenuItem>\n <MenuItem value=\"integer\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.integerInput', 'Integer Input')}</MenuItem>\n <MenuItem value=\"date\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.dateInput', 'Date Input')}</MenuItem>\n </Select>\n </FormControl>\n )}\n\n <FormControlLabel\n control={\n <Checkbox\n size=\"small\"\n checked={markRequired}\n onChange={(e) => setMarkRequired(e.target.checked)}\n />\n }\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n />\n\n <Button\n variant=\"contained\"\n size=\"small\"\n fullWidth\n disabled={!markLabel.trim()}\n onClick={handleMark}\n sx={{ textTransform: 'none', fontSize: 12 }}\n >\n {isAlreadyVariable\n ? t('sidePanel.inputFields.updateVariable', 'Update Variable')\n : t('sidePanel.inputFields.markAsVariable', 'Mark as Variable')}\n </Button>\n\n {isAlreadyVariable && (\n <Button\n variant=\"outlined\"\n color=\"error\"\n size=\"small\"\n fullWidth\n onClick={handleUnmark}\n sx={{ textTransform: 'none', fontSize: 12 }}\n >\n {t('sidePanel.inputFields.removeVariable', 'Remove Variable')}\n </Button>\n )}\n </Box>\n );\n});\n\nexport const InputFieldsSection = {\n name: 'inputFields',\n Tab: (props) => (\n <SectionTab name={t('sidePanel.inputFields.tab', 'Input Fields')} {...props}>\n <InputIcon />\n </SectionTab>\n ),\n Panel: InputFieldsPanelContent,\n};\n","const GOOGLE_FONTS_API = 'https://www.googleapis.com/webfonts/v1/webfonts';\n\nlet cachedFonts = null;\n\nexport async function fetchGoogleFonts(apiKey) {\n if (cachedFonts) return cachedFonts;\n\n try {\n const url = apiKey\n ? `${GOOGLE_FONTS_API}?key=${apiKey}&sort=popularity`\n : `${GOOGLE_FONTS_API}?sort=popularity`;\n const response = await fetch(url);\n const data = await response.json();\n cachedFonts = (data.items || []).map((font) => ({\n fontFamily: font.family,\n variants: font.variants || [],\n category: font.category,\n url: `https://fonts.googleapis.com/css2?family=${encodeURIComponent(\n font.family\n )}&display=swap`,\n }));\n return cachedFonts;\n } catch (e) {\n console.warn('Failed to fetch Google Fonts list', e);\n return [];\n }\n}\n\nexport async function loadGoogleFont(fontFamily) {\n const id = `google-font-${fontFamily.replace(/\\s+/g, '-').toLowerCase()}`;\n const existing = document.getElementById(id);\n\n if (!existing) {\n // Add the stylesheet and wait for it to load before checking fonts\n await new Promise((resolve) => {\n const link = document.createElement('link');\n link.id = id;\n link.href = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(\n fontFamily\n )}:wght@100;200;300;400;500;600;700;800;900&display=swap`;\n link.rel = 'stylesheet';\n link.onload = () => resolve();\n link.onerror = () => resolve();\n document.head.appendChild(link);\n });\n }\n\n // Now that the CSS is loaded, wait for the actual font files to download\n try {\n await document.fonts.load(`16px \"${fontFamily}\"`);\n await document.fonts.load(`bold 16px \"${fontFamily}\"`);\n await document.fonts.ready;\n } catch (e) {\n console.warn(`Font \"${fontFamily}\" may not have loaded correctly.`, e);\n }\n}\n\nexport function clearFontCache() {\n cachedFonts = null;\n}\n\n// Comprehensive list of Google Fonts matching Polotno's font library\nexport const DEFAULT_FONTS = [\n 'ABeeZee','Abel','Abhaya Libre','Abril Fatface','Aclonica','Acme','Actor',\n 'Adamina','Advent Pro','Aguafina Script','Akronim','Aladin','Alata','Alatsi',\n 'Albert Sans','Aldrich','Alef','Alegreya','Alegreya Sans','Alegreya Sans SC',\n 'Alegreya SC','Aleo','Alex Brush','Alfa Slab One','Alice','Alike',\n 'Alike Angular','Allan','Allerta','Allerta Stencil','Allison','Allura',\n 'Almarai','Almendra','Almendra Display','Almendra SC','Alumni Sans',\n 'Alumni Sans Inline One','Amarante','Amaranth','Amatic SC','Amethysta',\n 'Amiko','Amiri','Amita','Anaheim','Andada Pro','Andika','Anek Bangla',\n 'Anek Devanagari','Anek Gujarati','Anek Gurmukhi','Anek Kannada',\n 'Anek Latin','Anek Malayalam','Anek Odia','Anek Tamil','Anek Telugu',\n 'Angkor','Annie Use Your Telescope','Anonymous Pro','Antic','Antic Didone',\n 'Antic Slab','Anton','Antonio','Anybody','Arapey','Arbutus','Arbutus Slab',\n 'Architects Daughter','Archivo','Archivo Black','Archivo Narrow','Are You Serious',\n 'Aref Ruqaa','Arima','Arimo','Arizonia','Armata','Arsenal','Artifika',\n 'Arvo','Arya','Asap','Asap Condensed','Asar','Asset','Assistant',\n 'Astloch','Asul','Athiti','Atkinson Hyperlegible','Atma','Atomic Age',\n 'Aubrey','Audiowide','Autour One','Average','Average Sans','Averia Gruesa Libre',\n 'Averia Libre','Averia Sans Libre','Averia Serif Libre',\n 'Azeret Mono','B612','B612 Mono','Bad Script','Bahiana','Bahianita',\n 'Bai Jamjuree','Bakbak One','Ballet','Baloo 2','Baloo Bhai 2',\n 'Baloo Bhaijaan 2','Baloo Bhaina 2','Baloo Chettan 2','Baloo Da 2',\n 'Baloo Paaji 2','Baloo Tamma 2','Baloo Tammudu 2','Baloo Thambi 2',\n 'Balsamiq Sans','Balthazar','Bangers','Barlow','Barlow Condensed',\n 'Barlow Semi Condensed','Barriecito','Barrio','Basic','Baskervville',\n 'Battambang','Baumans','Bayon','Be Vietnam Pro','Beau Rivage',\n 'Bebas Neue','Belgrano','Bellefair','Belleza','Bellota','Bellota Text',\n 'BenchNine','Benne','Bentham','Berkshire Swash','Besley','Beth Ellen',\n 'Bevan','BIZ UDGothic','BIZ UDMincho','BIZ UDPGothic','BIZ UDPMincho',\n 'Big Shoulders Display','Big Shoulders Inline Display',\n 'Big Shoulders Inline Text','Big Shoulders Stencil Display',\n 'Big Shoulders Stencil Text','Big Shoulders Text','Bigelow Rules',\n 'Bigshot One','Bilbo','Bilbo Swash Caps','BioRhyme','BioRhyme Expanded',\n 'Birthstone','Birthstone Bounce','Bitter','Black And White Picture',\n 'Black Han Sans','Black Ops One','Blaka','Blaka Hollow','Blaka Ink',\n 'Blinker','Bodoni Moda','Bokor','Bona Nova','Bonbon','Bonheur Royale',\n 'Boogaloo','Bowlby One','Bowlby One SC','Brawler','Bree Serif',\n 'Brygada 1918','Bubblegum Sans','Bubbler One','Buda','Buenard',\n 'Bungee','Bungee Hairline','Bungee Inline','Bungee Outline',\n 'Bungee Shade','Bungee Spice','Butcherman','Butterfly Kids',\n 'Cabin','Cabin Condensed','Cabin Sketch','Caesar Dressing','Cagliostro',\n 'Cairo','Cairo Play','Caladea','Calistoga','Calligraffitti','Cambay',\n 'Cambo','Candal','Cantarell','Cantata One','Cantora One','Caprasimo',\n 'Capriola','Caramel','Carattere','Cardo','Carlito','Carme','Carrois Gothic',\n 'Carrois Gothic SC','Carter One','Castoro','Catamaran','Caudex','Caveat',\n 'Caveat Brush','Cedarville Cursive','Ceviche One','Chakra Petch',\n 'Changa','Changa One','Chango','Charis SIL','Charm','Charmonman',\n 'Chathura','Chau Philomene One','Chela One','Chelsea Market',\n 'Chenla','Cherry Bomb One','Cherry Cream Soda','Cherry Swash',\n 'Chewy','Chicle','Chilanka','Chivo','Chivo Mono','Chonburi',\n 'Cinzel','Cinzel Decorative','Clicker Script','Coda','Coda Caption',\n 'Codystar','Coiny','Combo','Comfortaa','Comforter','Comforter Brush',\n 'Comic Neue','Coming Soon','Commissioner','Concert One','Condiment',\n 'Content','Contrail One','Convergence','Cookie','Copse','Corben',\n 'Corinthia','Cormorant','Cormorant Garamond','Cormorant Infant',\n 'Cormorant SC','Cormorant Unicase','Cormorant Upright','Courgette',\n 'Courier Prime','Cousine','Coustard','Covered By Your Grace',\n 'Crafty Girls','Creepster','Crete Round','Crimson Pro','Crimson Text',\n 'Croissant One','Crushed','Cuprum','Cute Font','Cutive','Cutive Mono',\n 'DM Mono','DM Sans','DM Serif Display','DM Serif Text',\n 'Damion','Dancing Script','Dangrek','Darker Grotesque','David Libre',\n 'Dawning of a New Day','Days One','Dekko','Dela Gothic One','Delius',\n 'Delius Swash Caps','Delius Unicase','Della Respira','Denk One',\n 'Devonshire','Dhurjati','Didact Gothic','Diplomata','Diplomata SC',\n 'Do Hyeon','Dokdo','Domine','Donegal One','Dongle','Doppio One',\n 'Dorsa','Dosis','DotGothic16','Dr Sugiyama','Duru Sans',\n 'DynaPuff','Dynalight',\n 'EB Garamond','Eagle Lake','East Sea Dokdo','Eater','Economica',\n 'Eczar','El Messiri','Electrolize','Elsie','Elsie Swash Caps',\n 'Emblema One','Emilys Candy','Encode Sans','Encode Sans Condensed',\n 'Encode Sans Expanded','Encode Sans SC','Encode Sans Semi Condensed',\n 'Encode Sans Semi Expanded','Engagement','Englebert','Enriqueta',\n 'Ephesis','Epilogue','Erica One','Esteban','Estonia','Euphoria Script',\n 'Ewert','Exo','Exo 2','Expletus Sans','Explora',\n 'Fahkwang','Familjen Grotesk','Fanwood Text','Farro','Farsan',\n 'Fascinate','Fascinate Inline','Faster One','Fasthand','Fauna One',\n 'Faustina','Federant','Federo','Felipa','Fenix','Festive',\n 'Finger Paint','Finlandica','Fira Code','Fira Mono','Fira Sans',\n 'Fira Sans Condensed','Fira Sans Extra Condensed','Fjalla One',\n 'Fjord One','Flamenco','Flavors','Fleur De Leah','Flow Block',\n 'Flow Circular','Flow Rounded','Fondamento','Fontdiner Swanky',\n 'Forum','Fragment Mono','Francois One','Frank Ruhl Libre',\n 'Fraunces','Freckle Face','Fredericka the Great','Fredoka',\n 'Freehand','Fresca','Frijole','Fruktur','Fugaz One','Fuggles',\n 'Fuzzy Bubbles',\n 'GFS Didot','GFS Neohellenic','Gabriela','Gaegu','Gafata',\n 'Galada','Galdeano','Galindo','Gamja Flower','Gantari',\n 'Gas','Gayathri','Gelasio','Gemunu Libre','Genos',\n 'Gentium Book Plus','Gentium Plus','Geo','Georama','Geostar',\n 'Geostar Fill','Germania One','Gideon Roman','Gidugu',\n 'Gilda Display','Girassol','Give You Glory','Glass Antiqua',\n 'Glegoo','Gloria Hallelujah','Glory','Gluten','Goblin One',\n 'Gochi Hand','Goldman','Goldplay','Golos Text','Gorditas',\n 'Gothic A1','Gotu','Goudy Bookletter 1911','Gowun Batang',\n 'Gowun Dodum','Graduate','Grand Hotel','Grandstander',\n 'Grape Nuts','Gravitas One','Great Vibes','Grechen Fuemen',\n 'Grenze','Grenze Gotisch','Grey Qo','Griffy','Gruppo',\n 'Gudea','Gugi','Gulzar','Gupter','Gurajada','Gwendolyn',\n 'Habibi','Hachi Maru Pop','Hahmlet','Halant','Hammersmith One',\n 'Hanalei','Hanalei Fill','Handlee','Hanken Grotesk','Hanuman',\n 'Happy Monkey','Harmattan','Headland One','Heebo','Henny Penny',\n 'Hepta Slab','Herr Von Muellerhoff','Hi Melody','Hina Mincho',\n 'Hind','Hind Guntur','Hind Madurai','Hind Siliguri','Hind Vadodara',\n 'Holtwood One SC','Homemade Apple','Homenaje','Hubballi',\n 'Hurricane','IBM Plex Mono','IBM Plex Sans','IBM Plex Sans Arabic',\n 'IBM Plex Sans Condensed','IBM Plex Sans Devanagari','IBM Plex Sans Hebrew',\n 'IBM Plex Sans JP','IBM Plex Sans KR','IBM Plex Sans Thai',\n 'IBM Plex Sans Thai Looped','IBM Plex Serif','Iceberg','Iceland',\n 'Imbue','Imperial Script','Imprima','Inconsolata','Inder',\n 'Indie Flower','Ingrid Darling','Inika','Inknut Antiqua',\n 'Inria Sans','Inria Serif','Inspiration','Inter','Inter Tight',\n 'Irish Grover','Island Moments','Istok Web','Italiana','Italianno',\n 'Itim','Jacques Francois','Jacques Francois Shadow',\n 'Jaldi','JetBrains Mono','Jim Nightshade','Joan','Jockey One',\n 'Jolly Lodger','Jomhuria','Jomolhari','Josefin Sans','Josefin Slab',\n 'Jost','Joti One','Jua','Judson','Julee','Julius Sans One',\n 'Junge','Jura',\n 'K2D','Kadwa','Kaisei Decol','Kaisei HarunoUmi','Kaisei Opti',\n 'Kaisei Tokumin','Kalam','Kameron','Kanit','Kantumruy Pro',\n 'Karantina','Karla','Karma','Katibeh','Kaushan Script','Kavivanar',\n 'Kavoon','Kdam Thmor Pro','Keania One','Kelly Slab','Kenia',\n 'Khand','Khmer','Khula','Kings','Kirang Haerang','Kite One',\n 'Kiwi Maru','Klee One','Knewave','KoHo','Kodchasan','Koh Santepheap',\n 'Kolker Brush','Konkhmer Sleokchher','Kosugi','Kosugi Maru',\n 'Kotta One','Koulen','Kranky','Kreon','Kristi','Krona One',\n 'Krub','Kufam','Kulim Park','Kumar One','Kumar One Outline',\n 'Kumbh Sans','Kurale',\n 'La Belle Aurore','Lacquer','Laila','Lakki Reddy','Lalezar',\n 'Lancelot','Langar','Lango','Lateef','Lato','Lavishly Yours',\n 'League Gothic','League Script','League Spartan','Leckerli One',\n 'Ledger','Lekton','Lemon','Lemonada','Lexend','Lexend Deca',\n 'Lexend Exa','Lexend Giga','Lexend Mega','Lexend Peta',\n 'Lexend Tera','Lexend Zetta','Libre Barcode 128',\n 'Libre Barcode 128 Text','Libre Barcode 39','Libre Barcode 39 Extended',\n 'Libre Barcode 39 Extended Text','Libre Barcode 39 Text',\n 'Libre Barcode EAN13 Text','Libre Baskerville','Libre Bodoni',\n 'Libre Caslon Display','Libre Caslon Text','Libre Franklin',\n 'Licorice','Life Savers','Lilita One','Lily Script One',\n 'Limelight','Linden Hill','Lingua Franca','Literata','Liu Jian Mao Cao',\n 'Livvic','Lobster','Lobster Two','Londrina Outline',\n 'Londrina Shadow','Londrina Sketch','Londrina Solid','Long Cang',\n 'Lora','Love Light','Love Ya Like A Sister','Loved by the King',\n 'Lovers Quarrel','Luckiest Guy','Lusitana','Lustria','Luxurious Roman',\n 'Luxurious Script',\n 'M PLUS 1','M PLUS 1 Code','M PLUS 1p','M PLUS 2','M PLUS Code Latin',\n 'M PLUS Rounded 1c','Ma Shan Zheng','Macondo','Macondo Swash Caps',\n 'Mada','Magra','Maiden Orange','Maitree','Major Mono Display',\n 'Mako','Mali','Mallanna','Mandali','Manjari','Manrope','Mansalva',\n 'Manuale','Marcellus','Marcellus SC','Marck Script','Margarine',\n 'Marhey','Markazi Text','Marko One','Marmelad','Martel',\n 'Martel Sans','Marvel','Mate','Mate SC','Maven Pro',\n 'McLaren','Mea Culpa','Meddon','MedievalSharp','Medula One',\n 'Meera Inimai','Megrim','Meie Script','Meow Script','Merienda',\n 'Merriweather','Merriweather Sans','Metal','Metal Mania',\n 'Metamorphous','Metrophobic','Michroma','Milonga','Miltonian',\n 'Miltonian Tattoo','Mina','Miniver','Miriam Libre','Mirza',\n 'Miss Fajardose','Mitr','Mochiy Pop One','Mochiy Pop P One',\n 'Modak','Modern Antiqua','Mogra','Mohave','Moirai One','Molengo',\n 'Molle','Monda','Monofett','Monoton','Monsieur La Doulaise',\n 'Montaga','Montagu Slab','MonteCarlo','Montez','Montserrat',\n 'Montserrat Alternates','Montserrat Subrayada','Moon Dance',\n 'Moul','Moulpali','Mountains of Christmas','Mouse Memoirs',\n 'Mr Bedfort','Mr Dafoe','Mr De Haviland','Mrs Saint Delafield',\n 'Mrs Sheppards','Mukta','Mukta Mahee','Mukta Malar','Mukta Vaani',\n 'Mulish','Murecho','MuseoModerno','My Soul','Mynerve','Mystery Quest',\n 'NTR','Nabla','Nanum Brush Script','Nanum Gothic',\n 'Nanum Gothic Coding','Nanum Myeongjo','Nanum Pen Script',\n 'Neonderthaw','Nerko One','Neucha','Neuton','New Rocker',\n 'New Tegomin','News Cycle','Newsreader','Niconne','Niramit',\n 'Nixie One','Nobile','Nokora','Norican','Nosifer',\n 'Notable','Nothing You Could Do','Noticia Text','Noto Color Emoji',\n 'Noto Emoji','Noto Kufi Arabic','Noto Music','Noto Naskh Arabic',\n 'Noto Nastaliq Urdu','Noto Sans','Noto Sans Arabic',\n 'Noto Sans Display','Noto Sans Mono','Noto Serif',\n 'Noto Serif Display','Nova Cut','Nova Flat','Nova Mono',\n 'Nova Oval','Nova Round','Nova Script','Nova Slim','Nova Square',\n 'Numans','Nunito','Nunito Sans',\n 'Odibee Sans','Odor Mean Chey','Offside','Oi','Old Standard TT',\n 'Oldenburg','Ole','Oleo Script','Oleo Script Swash Caps',\n 'Oooh Baby','Open Sans','Oranienbaum','Orbit','Orbitron',\n 'Oregano','Orelega One','Orienta','Original Surfer','Oswald',\n 'Outfit','Over the Rainbow','Overlock','Overlock SC','Overpass',\n 'Overpass Mono','Ovo','Oxanium','Oxygen','Oxygen Mono',\n 'PT Mono','PT Sans','PT Sans Caption','PT Sans Narrow','PT Serif',\n 'PT Serif Caption','Pacifico','Padauk','Padyakke Expanded One',\n 'Palanquin','Palanquin Dark','Palette Mosaic','Pangolin','Paprika',\n 'Parisienne','Passero One','Passion One','Passions Conflict',\n 'Pathway Extreme','Pathway Gothic One','Patrick Hand','Patrick Hand SC',\n 'Pattaya','Patua One','Pavanam','Paytone One','Peddana',\n 'Peralta','Permanent Marker','Petit Formal Script','Petrona',\n 'Philosopher','Phudu','Piazzolla','Piedra','Pinyon Script',\n 'Pirata One','Plaster','Play','Playball','Playfair Display',\n 'Playfair Display SC','Playpen Sans','Plus Jakarta Sans',\n 'Podkova','Poiret One','Poller One','Poltawski Nowy','Poly',\n 'Pompiere','Pontano Sans','Poor Story','Poppins','Port Lligat Sans',\n 'Port Lligat Slab','Potta One','Pragati Narrow','Praise',\n 'Prata','Preahvihear','Press Start 2P','Pridi','Princess Sofia',\n 'Prociono','Prompt','Prosto One','Proza Libre','Public Sans',\n 'Puppies Play','Puritan','Purple Purse','Pushster',\n 'Quando','Quantico','Quattrocento','Quattrocento Sans',\n 'Questrial','Quicksand','Quintessential','Qwigley','Qwitcher Grypen',\n 'REM','Racing Sans One','Radio Canada','Radley','Rajdhani',\n 'Rakkas','Raleway','Raleway Dots','Ramabhadra','Ramaraja',\n 'Rambla','Rammetto One','Rampart One','Ranchers','Rancho',\n 'Ranga','Rasa','Rationale','Ravi Prakash','Readex Pro',\n 'Recursive','Red Hat Display','Red Hat Mono','Red Hat Text',\n 'Red Rose','Redacted','Redacted Script','Redressed','Reem Kufi',\n 'Reem Kufi Fun','Reem Kufi Ink','Reenie Beanie','Reggae One',\n 'Revalia','Rhodium Libre','Ribeye','Ribeye Marrow','Righteous',\n 'Risque','Road Rage','RocknRoll One','Rokkitt','Romanesco',\n 'Ropa Sans','Rosario','Rosarivo','Rouge Script','Rowdies',\n 'Rozha One','Rubik','Rubik Beastly','Rubik Bubbles',\n 'Rubik Burned','Rubik Dirt','Rubik Distressed','Rubik Gemstones',\n 'Rubik Glitch','Rubik Iso','Rubik Marker Hatch','Rubik Maze',\n 'Rubik Microbe','Rubik Mono One','Rubik Moonrocks',\n 'Rubik Pixels','Rubik Puddles','Rubik Spray Paint',\n 'Rubik Storm','Rubik Vinyl','Rubik Wet Paint','Ruda','Rufina',\n 'Ruge Boogie','Ruluko','Rum Raisin','Ruslan Display',\n 'Russo One','Ruthie','Rye',\n 'STIX Two Text','Sacramento','Sahitya','Sail','Saira',\n 'Saira Condensed','Saira Extra Condensed','Saira Semi Condensed',\n 'Saira Stencil One','Salsa','Sanchez','Sancreek','Sansita',\n 'Sansita Swashed','Sarabun','Sarala','Sarina','Sarpanch',\n 'Sassybold','Satisfy','Sawarabi Gothic','Sawarabi Mincho',\n 'Scada','Scheherazade New','Schoolbell','Scope One',\n 'Seaweed Script','Secular One','Sedgwick Ave','Sedgwick Ave Display',\n 'Sen','Send Flowers','Sevillana','Seymour One','Shadows Into Light',\n 'Shadows Into Light Two','Shalimar','Shanti','Share',\n 'Share Tech','Share Tech Mono','Shippori Antique','Shippori Antique B1',\n 'Shippori Mincho','Shippori Mincho B1','Shizuru','Shojumaru',\n 'Short Stack','Shrikhand','Siemreap','Sigmar One','Signika',\n 'Signika Negative','Silkscreen','Simonetta','Single Day',\n 'Sintony','Sirin Stencil','Six Caps','Skranji','Slabo 13px',\n 'Slabo 27px','Slackey','Smokum','Smooch','Smooch Sans',\n 'Smythe','Sniglet','Snippet','Snowburst One','Sofadi One',\n 'Sofia','Sofia Sans','Sofia Sans Condensed','Sofia Sans Extra Condensed',\n 'Sofia Sans Semi Condensed','Solitreo','Solway','Song Myung',\n 'Sono','Sonsie One','Sora','Sorts Mill Goudy','Source Code Pro',\n 'Source Sans 3','Source Sans Pro','Source Serif 4','Source Serif Pro',\n 'Space Grotesk','Space Mono','Special Elite','Spectral',\n 'Spectral SC','Spicy Rice','Spinnaker','Spirax','Splash',\n 'Spline Sans','Spline Sans Mono','Squada One','Square Peg',\n 'Sree Krushnadevaraya','Sriracha','Srisakdi','Staatliches',\n 'Stalemate','Stalinist One','Stardos Stencil','Stick',\n 'Stick No Bills','Stint Ultra Condensed','Stint Ultra Expanded',\n 'Stoke','Strait','Style Script','Stylish','Sue Ellen Francisco',\n 'Suez One','Sulphur Point','Sumana','Sunflower','Sunshiney',\n 'Supermercado One','Sura','Suranna','Suravaram','Suwannaphum',\n 'Swanky and Moo Moo','Syncopate','Syne','Syne Mono','Syne Tactile',\n 'Tac One','Tai Heritage Pro','Tajawal','Tangerine','Tapestry',\n 'Taprom','Tauri','Taviraj','Teko','Telex','Tenali Ramakrishna',\n 'Tenor Sans','Text Me One','Texturina','Thasadith',\n 'The Girl Next Door','The Nautigal','Tienne','Tillana',\n 'Tilt Neon','Tilt Prism','Tilt Warp','Timmana','Tinos',\n 'Tiro Bangla','Tiro Devanagari Marathi','Tiro Devanagari Sanskrit',\n 'Tiro Gurmukhi','Tiro Kannada','Tiro Tamil','Tiro Telugu',\n 'Titan One','Titillium Web','Tomorrow','Tourney','Trade Winds',\n 'Train One','Trirong','Trispace','Trocchi','Trochut','Truculenta',\n 'Trykker','Tsukimi Rounded','Tulpen One','Turret Road',\n 'Twinkle Star','Ubuntu','Ubuntu Condensed','Ubuntu Mono','Uchen',\n 'Ultra','Unbounded','Uncial Antiqua','Underdog','Unica One',\n 'UnifrakturCook','UnifrakturMaguntia','Unkempt','Unlock',\n 'Unna','Updock','Urbanist','Vast Shadow','Vazirmatn',\n 'Vesper Libre','Viaoda Libre','Vibes','Vibur',\n 'Vidaloka','Viga','Voces','Volkhov','Vollkorn','Vollkorn SC',\n 'Voltaire','Vujahday Script',\n 'Waiting for the Sunrise','Wallpoet','Walter Turncoat',\n 'Warnes','Waterfall','Wavefont','Wellfleet','Wendy One',\n 'Whisper','WindSong','Wire One','Work Sans','Wix Madefor Display',\n 'Wix Madefor Text',\n 'Xanh Mono','Yaldevi','Yanone Kaffeesatz','Yantramanav',\n 'Yatra One','Yellowtail','Yeon Sung','Yeseva One','Yesteryear',\n 'Yomogi','Yrsa','Ysabeau','Ysabeau Infant','Ysabeau Office',\n 'Ysabeau SC','Yuji Boku','Yuji Hentaigana Akari',\n 'Yuji Hentaigana Akebono','Yuji Mai','Yuji Syuku','Yusei Magic',\n 'ZCOOL KuaiLe','ZCOOL QingKe HuangYou','ZCOOL XiaoWei',\n 'Zen Antique','Zen Antique Soft','Zen Dots','Zen Kaku Gothic Antique',\n 'Zen Kaku Gothic New','Zen Kurenaido','Zen Loop','Zen Maru Gothic',\n 'Zen Old Mincho','Zen Tokyo Zoo','Zeyada','Zhi Mang Xing',\n 'Zilla Slab','Zilla Slab Highlight',\n];\n","import React, { useState, useCallback, useEffect, useRef, memo } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, IconButton, Divider, Tooltip, TextField, Slider, Typography, ToggleButton, ToggleButtonGroup, Button, Popover, Select, MenuItem, CircularProgress, Menu, ListItemIcon, ListItemText, Autocomplete } from '@mui/material';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport FileUploadIcon from '@mui/icons-material/FileUpload';\nimport { DEFAULT_FONTS } from '../utils/fonts';\nimport { t } from '../config';\nimport UndoIcon from '@mui/icons-material/Undo';\nimport RedoIcon from '@mui/icons-material/Redo';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport LockIcon from '@mui/icons-material/Lock';\nimport LockOpenIcon from '@mui/icons-material/LockOpen';\nimport FormatBoldIcon from '@mui/icons-material/FormatBold';\nimport FormatItalicIcon from '@mui/icons-material/FormatItalic';\nimport FormatUnderlinedIcon from '@mui/icons-material/FormatUnderlined';\nimport StrikethroughSIcon from '@mui/icons-material/StrikethroughS';\nimport FormatAlignLeftIcon from '@mui/icons-material/FormatAlignLeft';\nimport FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter';\nimport FormatAlignRightIcon from '@mui/icons-material/FormatAlignRight';\nimport OpacityIcon from '@mui/icons-material/Opacity';\nimport CropIcon from '@mui/icons-material/Crop';\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\nimport AutoAwesomeIcon from '@mui/icons-material/AutoAwesome';\nimport SwapHorizIcon from '@mui/icons-material/SwapHoriz';\nimport SwapVertIcon from '@mui/icons-material/SwapVert';\n\n// ── Font preview: lightweight Google Font subsets for dropdown ──\nconst _fontPreviewLoaded = new Set();\nfunction loadFontPreview(fontFamily) {\n if (_fontPreviewLoaded.has(fontFamily)) return;\n _fontPreviewLoaded.add(fontFamily);\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(fontFamily)}&text=${encodeURIComponent(fontFamily)}&display=swap`;\n document.head.appendChild(link);\n}\n\nconst FontPreviewOption = memo(function FontPreviewOption({ fontFamily, ...liProps }) {\n const ref = useRef(null);\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const io = new IntersectionObserver(\n ([entry]) => { if (entry.isIntersecting) { loadFontPreview(fontFamily); io.disconnect(); } },\n { rootMargin: '200px' }\n );\n io.observe(el);\n return () => io.disconnect();\n }, [fontFamily]);\n return (\n <li ref={ref} {...liProps}>\n <span style={{ fontFamily: `'${fontFamily}', sans-serif`, fontSize: 14 }}>{fontFamily}</span>\n </li>\n );\n});\n\n// Text-specific toolbar\nconst TextToolbar = observer(({ element, store }) => {\n const handleFontSizeChange = (e) => {\n const val = parseInt(e.target.value);\n if (!isNaN(val) && val > 0) {\n element.set({ fontSize: val });\n store.history.addUndoState();\n }\n };\n\n const toggleBold = () => {\n element.set({ fontWeight: element.fontWeight === 'bold' ? 'normal' : 'bold' });\n store.history.addUndoState();\n };\n\n const toggleItalic = () => {\n element.set({ fontStyle: element.fontStyle === 'italic' ? 'normal' : 'italic' });\n store.history.addUndoState();\n };\n\n const toggleUnderline = () => {\n element.set({\n textDecoration: element.textDecoration === 'underline' ? '' : 'underline',\n });\n store.history.addUndoState();\n };\n\n const toggleStrikethrough = () => {\n element.set({\n textDecoration: element.textDecoration === 'line-through' ? '' : 'line-through',\n });\n store.history.addUndoState();\n };\n\n const handleAlignChange = (_, value) => {\n if (value) {\n element.set({ align: value });\n store.history.addUndoState();\n }\n };\n\n const handleColorChange = (e) => {\n element.set({ fill: e.target.value });\n store.history.addUndoState();\n };\n\n return (\n <>\n {/* Font family */}\n <Autocomplete\n size=\"small\"\n value={element.fontFamily}\n onChange={(_, value) => {\n if (value) {\n element.set({ fontFamily: value });\n store.loadFont(value);\n store.history.addUndoState();\n }\n }}\n options={(() => {\n const fonts = [...DEFAULT_FONTS];\n if (element.fontFamily && !fonts.includes(element.fontFamily)) {\n fonts.unshift(element.fontFamily);\n }\n return fonts;\n })()}\n disableClearable\n renderOption={(props, option) => (\n <FontPreviewOption key={option} fontFamily={option} {...props} />\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n sx={{ width: 170, '& .MuiInputBase-input': { fontSize: 12, py: 0.5, fontFamily: `'${element.fontFamily}', sans-serif` } }}\n />\n )}\n ListboxProps={{ style: { maxHeight: 300 } }}\n sx={{ width: 170 }}\n />\n\n {/* Font size */}\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.fontSize}\n onChange={handleFontSizeChange}\n onFocus={(e) => e.target.select()}\n sx={{ width: 85, '& .MuiInputBase-input': { fontSize: 13, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 1, max: 500 }}\n />\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Color */}\n <Tooltip title=\"Text color\">\n <input\n type=\"color\"\n value={element.fill || '#000000'}\n onChange={handleColorChange}\n style={{ width: 28, height: 28, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Bold, Italic, Underline, Strikethrough */}\n <Tooltip title=\"Bold\">\n <IconButton size=\"small\" onClick={toggleBold} color={element.fontWeight === 'bold' ? 'primary' : 'default'}>\n <FormatBoldIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Italic\">\n <IconButton size=\"small\" onClick={toggleItalic} color={element.fontStyle === 'italic' ? 'primary' : 'default'}>\n <FormatItalicIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Underline\">\n <IconButton size=\"small\" onClick={toggleUnderline} color={element.textDecoration === 'underline' ? 'primary' : 'default'}>\n <FormatUnderlinedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Strikethrough\">\n <IconButton size=\"small\" onClick={toggleStrikethrough} color={element.textDecoration === 'line-through' ? 'primary' : 'default'}>\n <StrikethroughSIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Alignment */}\n <ToggleButtonGroup size=\"small\" value={element.align} exclusive onChange={handleAlignChange}>\n <ToggleButton value=\"left\" sx={{ p: 0.5 }}>\n <FormatAlignLeftIcon sx={{ fontSize: 16 }} />\n </ToggleButton>\n <ToggleButton value=\"center\" sx={{ p: 0.5 }}>\n <FormatAlignCenterIcon sx={{ fontSize: 16 }} />\n </ToggleButton>\n <ToggleButton value=\"right\" sx={{ p: 0.5 }}>\n <FormatAlignRightIcon sx={{ fontSize: 16 }} />\n </ToggleButton>\n </ToggleButtonGroup>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n <Button\n size=\"small\"\n sx={{\n textTransform: 'none', fontSize: 12, whiteSpace: 'nowrap', px: 1.5, minWidth: 'auto',\n ...(store._toolbarPanel?.type === 'effects' ? { backgroundColor: '#e3f2fd', color: '#0d83cd' } : {}),\n }}\n startIcon={<AutoAwesomeIcon sx={{ fontSize: '16px !important' }} />}\n onClick={() => {\n if (store._toolbarPanel?.type === 'effects') {\n store.closeToolbarPanel();\n } else {\n store.openToolbarPanel('effects');\n }\n }}\n >\n {t('toolbar.effects', 'Effects')}\n </Button>\n </>\n );\n});\n\n// Toolbar text button style (matches Polotno)\nconst toolbarBtnSx = {\n textTransform: 'none',\n fontWeight: 500,\n fontSize: '13px',\n color: '#333',\n minWidth: 'auto',\n px: 1.5,\n py: 0.5,\n borderRadius: '6px',\n '&:hover': { backgroundColor: '#f0f0f0' },\n};\n\n// Image-specific toolbar\nconst ImageToolbar = observer(({ element, store }) => {\n const [flipAnchor, setFlipAnchor] = useState(null);\n\n const handleFlipX = () => {\n element.set({ flipX: !element.flipX });\n store.history.addUndoState();\n setFlipAnchor(null);\n };\n\n const handleFlipY = () => {\n element.set({ flipY: !element.flipY });\n store.history.addUndoState();\n setFlipAnchor(null);\n };\n\n const handleCrop = () => {\n if (element.toggleCropMode) {\n element.toggleCropMode();\n }\n };\n\n const handleFitToPage = () => {\n element.set({\n x: 0,\n y: 0,\n width: store.width,\n height: store.height,\n });\n store.history.addUndoState();\n };\n\n const handleEffects = () => {\n if (store._toolbarPanel?.type === 'effects') {\n store.closeToolbarPanel();\n } else {\n store.openToolbarPanel('effects');\n }\n };\n\n const handleMask = () => {\n if (element.clipSrc) {\n element.set({ clipSrc: '' });\n store.history.addUndoState();\n } else {\n if (store._toolbarPanel?.type === 'mask') {\n store.closeToolbarPanel();\n } else {\n store.openToolbarPanel('mask');\n }\n }\n };\n\n const hasMask = !!element.clipSrc;\n\n return (\n <>\n {/* Flip dropdown */}\n <Button\n size=\"small\"\n sx={toolbarBtnSx}\n onClick={(e) => setFlipAnchor(e.currentTarget)}\n >\n {t('toolbar.flip', 'Flip')}\n </Button>\n <Menu\n anchorEl={flipAnchor}\n open={Boolean(flipAnchor)}\n onClose={() => setFlipAnchor(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{ paper: { sx: { mt: 0.5, borderRadius: '8px', minWidth: 200 } } }}\n >\n <MenuItem onClick={handleFlipX} sx={{ py: 1 }}>\n <ListItemIcon><SwapHorizIcon fontSize=\"small\" sx={{ color: '#555' }} /></ListItemIcon>\n <ListItemText primaryTypographyProps={{ fontSize: 13 }}>{t('toolbar.flipHorizontally', 'Flip horizontally')}</ListItemText>\n </MenuItem>\n <MenuItem onClick={handleFlipY} sx={{ py: 1 }}>\n <ListItemIcon><SwapVertIcon fontSize=\"small\" sx={{ color: '#555' }} /></ListItemIcon>\n <ListItemText primaryTypographyProps={{ fontSize: 13 }}>{t('toolbar.flipVertically', 'Flip vertically')}</ListItemText>\n </MenuItem>\n </Menu>\n\n {/* Effects */}\n <Button\n size=\"small\"\n sx={{\n ...toolbarBtnSx,\n ...(store._toolbarPanel?.type === 'effects' ? { backgroundColor: '#e3f2fd', color: '#0d83cd' } : {}),\n }}\n startIcon={<AutoAwesomeIcon sx={{ fontSize: '16px !important' }} />}\n onClick={handleEffects}\n >\n {t('toolbar.effects', 'Effects')}\n </Button>\n\n {/* Fit to page */}\n <Button size=\"small\" sx={toolbarBtnSx} onClick={handleFitToPage}>\n {t('toolbar.fitToBackground', 'Fit to page')}\n </Button>\n\n {/* Apply mask / Remove mask */}\n <Button\n size=\"small\"\n sx={{\n ...toolbarBtnSx,\n ...(hasMask ? { color: '#d32f2f' } : {}),\n ...(store._toolbarPanel?.type === 'mask' ? { backgroundColor: '#e3f2fd', color: '#0d83cd' } : {}),\n }}\n onClick={handleMask}\n >\n {hasMask ? t('toolbar.removeMask', 'Remove mask') : t('toolbar.clip', 'Apply mask')}\n </Button>\n\n {/* Crop */}\n {/* <Tooltip title={t('toolbar.crop', 'Crop')}>\n <IconButton size=\"small\" onClick={handleCrop}>\n <CropIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip> */}\n </>\n );\n});\n\n// Figure-specific toolbar\nconst FigureToolbar = observer(({ element, store }) => {\n const handleFillChange = (e) => {\n element.set({ fill: e.target.value });\n store.history.addUndoState();\n };\n\n const handleStrokeChange = (e) => {\n element.set({ stroke: e.target.value });\n store.history.addUndoState();\n };\n\n const handleStrokeWidthChange = (e) => {\n const val = parseInt(e.target.value);\n if (!isNaN(val) && val >= 0) {\n element.set({ strokeWidth: val });\n store.history.addUndoState();\n }\n };\n\n const handleCornerRadiusChange = (e) => {\n const val = parseInt(e.target.value);\n if (!isNaN(val) && val >= 0) {\n element.set({ cornerRadius: val });\n store.history.addUndoState();\n }\n };\n\n return (\n <>\n <Tooltip title={t('toolbar.fill', 'Fill color')}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.fill', 'Fill')}</Typography>\n <input\n type=\"color\"\n value={element.fill || '#000000'}\n onChange={handleFillChange}\n style={{ width: 28, height: 28, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </Tooltip>\n <Tooltip title={t('toolbar.textStroke', 'Stroke color')}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.textStroke', 'Stroke')}</Typography>\n <input\n type=\"color\"\n value={element.stroke || '#000000'}\n onChange={handleStrokeChange}\n style={{ width: 28, height: 28, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </Tooltip>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.border', 'Border')}</Typography>\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.strokeWidth || 0}\n onChange={handleStrokeWidthChange}\n onFocus={(e) => e.target.select()}\n sx={{ width: 50, '& .MuiInputBase-input': { fontSize: 11, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 0 }}\n />\n </Box>\n {element.subType === 'rect' && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.cornerRadius', 'Radius')}</Typography>\n <TextField\n size=\"small\"\n type=\"number\"\n value={element.cornerRadius || 0}\n onChange={handleCornerRadiusChange}\n onFocus={(e) => e.target.select()}\n sx={{ width: 50, '& .MuiInputBase-input': { fontSize: 11, py: 0.5, textAlign: 'center' } }}\n inputProps={{ min: 0 }}\n />\n </Box>\n )}\n </>\n );\n});\n\n// Line-specific toolbar\nconst LineToolbar = observer(({ element, store }) => {\n const handleColorChange = (e) => {\n element.set({ color: e.target.value });\n store.history.addUndoState();\n };\n\n return (\n <>\n <Tooltip title={t('toolbar.color', 'Line color')}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{t('toolbar.color', 'Color')}</Typography>\n <input\n type=\"color\"\n value={element.color || '#000000'}\n onChange={handleColorChange}\n style={{ width: 28, height: 28, border: '1px solid #ccc', borderRadius: 4, cursor: 'pointer', padding: 0 }}\n />\n </Box>\n </Tooltip>\n </>\n );\n});\n\n// Common controls for all element types\nconst CommonControls = observer(({ element, store }) => {\n const isLocked = element.locked;\n\n const handleDuplicate = () => {\n if (element.clone) {\n element.clone({ x: (element.x || 0) + 20, y: (element.y || 0) + 20 });\n store.history.addUndoState();\n }\n };\n\n const handleDelete = () => {\n store.deleteElements([element.id]);\n store.history.addUndoState();\n };\n\n const handleToggleLock = () => {\n if (isLocked) {\n element.set({ draggable: true, resizable: true, contentEditable: true, styleEditable: true });\n } else {\n element.set({ draggable: false, resizable: false, contentEditable: false, styleEditable: false });\n }\n store.history.addUndoState();\n };\n\n const handleOpacityChange = (_, value) => {\n element.set({ opacity: value });\n };\n\n const handleOpacityCommit = () => {\n store.history.addUndoState();\n };\n\n const handleMoveUp = () => {\n element.moveUp();\n store.history.addUndoState();\n };\n\n const handleMoveDown = () => {\n element.moveDown();\n store.history.addUndoState();\n };\n\n return (\n <>\n {/* Opacity */}\n <Tooltip title={t('toolbar.opacity', 'Opacity')}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, width: 100 }}>\n <OpacityIcon sx={{ fontSize: 16, color: '#666' }} />\n <Slider\n size=\"small\"\n value={element.opacity}\n onChange={handleOpacityChange}\n onChangeCommitted={handleOpacityCommit}\n min={0}\n max={1}\n step={0.01}\n sx={{ py: 0 }}\n />\n </Box>\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Z-order */}\n <Tooltip title={t('toolbar.up', 'Move up')}>\n <IconButton size=\"small\" onClick={handleMoveUp}>\n <ArrowUpwardIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title={t('toolbar.down', 'Move down')}>\n <IconButton size=\"small\" onClick={handleMoveDown}>\n <ArrowDownwardIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Lock */}\n <Tooltip title={isLocked ? t('toolbar.unlockedDescription', 'Unlock') : t('toolbar.lockedDescription', 'Lock')}>\n <IconButton size=\"small\" onClick={handleToggleLock}>\n {isLocked ? <LockIcon fontSize=\"small\" /> : <LockOpenIcon fontSize=\"small\" />}\n </IconButton>\n </Tooltip>\n\n {/* Duplicate */}\n <Tooltip title={t('toolbar.duplicateElements', 'Duplicate')}>\n <IconButton size=\"small\" onClick={handleDuplicate}>\n <ContentCopyIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n {/* Delete */}\n <Tooltip title={t('toolbar.removeElements', 'Delete')}>\n <IconButton size=\"small\" onClick={handleDelete}>\n <DeleteOutlineIcon fontSize=\"small\" sx={{ color: '#d32f2f' }} />\n </IconButton>\n </Tooltip>\n </>\n );\n});\n\n// Download button with format/quality popover\nconst DefaultDownloadButton = observer(({ store }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [fileType, setFileType] = useState('png');\n // Default quality so pixelRatio=1 (output = template's own pixel size).\n // qualityToPixelRatio(q) = q * 3, so q = 1/3 → pixelRatio = 1.\n const [quality, setQuality] = useState(1 / 3);\n const [exporting, setExporting] = useState(false);\n\n const open = Boolean(anchorEl);\n\n const handleClick = (e) => {\n setAnchorEl(e.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const qualityToPixelRatio = (q) => Math.max(0.5, q * 3);\n\n const resWidth = Math.round(store.width * qualityToPixelRatio(quality));\n const resHeight = Math.round(store.height * qualityToPixelRatio(quality));\n\n const handleDownload = useCallback(async () => {\n setExporting(true);\n try {\n const pixelRatio = qualityToPixelRatio(quality);\n switch (fileType) {\n case 'png':\n await store.saveAsImage({\n fileName: 'design.png',\n mimeType: 'image/png',\n pixelRatio,\n });\n break;\n case 'jpeg':\n await store.saveAsImage({\n fileName: 'design.jpg',\n mimeType: 'image/jpeg',\n quality,\n pixelRatio,\n });\n break;\n case 'pdf':\n await store.saveAsPDF({\n fileName: 'design.pdf',\n pixelRatio,\n });\n break;\n case 'json':\n store.saveAsJSON({ fileName: 'design.json' });\n break;\n default:\n break;\n }\n } catch (err) {\n console.error('Export failed:', err);\n } finally {\n setExporting(false);\n handleClose();\n }\n }, [store, fileType, quality]);\n\n const fileTypeLabel = {\n png: 'PNG',\n jpeg: 'JPEG',\n pdf: 'PDF',\n json: 'JSON',\n };\n\n return (\n <>\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={handleClick}\n endIcon={<ArrowDropDownIcon />}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: '13px',\n px: 2,\n py: 0.5,\n borderRadius: '6px',\n backgroundColor: '#3d5afe',\n '&:hover': { backgroundColor: '#304ffe' },\n }}\n >\n {t('toolbar.download', 'Download')}\n </Button>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: {\n mt: 1,\n p: 2,\n width: 260,\n borderRadius: '10px',\n backgroundColor: '#2b2d31',\n color: '#e0e0e0',\n },\n },\n }}\n >\n {/* File type */}\n <Typography variant=\"caption\" sx={{ color: '#aaa', mb: 0.5, display: 'block' }}>\n {t('toolbar.fileType', 'File type')}\n </Typography>\n <Select\n value={fileType}\n onChange={(e) => setFileType(e.target.value)}\n size=\"small\"\n fullWidth\n sx={{\n mb: 2,\n color: '#fff',\n backgroundColor: '#1e1f22',\n borderRadius: '6px',\n '& .MuiSelect-icon': { color: '#aaa' },\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: '#555',\n },\n '&:hover .MuiOutlinedInput-notchedOutline': {\n borderColor: '#777',\n },\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: '#3d5afe',\n },\n }}\n >\n <MenuItem value=\"png\">PNG</MenuItem>\n <MenuItem value=\"jpeg\">JPEG</MenuItem>\n <MenuItem value=\"pdf\">PDF</MenuItem>\n <MenuItem value=\"json\">JSON</MenuItem>\n </Select>\n\n {/* Quality slider (only for image/pdf) */}\n {fileType !== 'json' && (\n <>\n <Typography variant=\"caption\" sx={{ color: '#aaa', mb: 0.5, display: 'block' }}>\n {t('toolbar.quality', 'Quality')}\n </Typography>\n <Slider\n value={quality}\n onChange={(_, v) => setQuality(v)}\n min={0.1}\n max={1}\n step={0.05}\n size=\"small\"\n sx={{\n color: '#3d5afe',\n mb: 1,\n '& .MuiSlider-thumb': { width: 14, height: 14 },\n }}\n />\n <Typography variant=\"caption\" sx={{ color: '#888', mb: 2, display: 'block' }}>\n {resWidth} x {resHeight} px\n </Typography>\n </>\n )}\n\n {/* Download action */}\n <Button\n variant=\"contained\"\n fullWidth\n onClick={handleDownload}\n disabled={exporting}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: '14px',\n py: 1,\n borderRadius: '8px',\n backgroundColor: '#3d5afe',\n '&:hover': { backgroundColor: '#304ffe' },\n }}\n >\n {exporting ? (\n <CircularProgress size={20} sx={{ color: '#fff' }} />\n ) : (\n `${t('toolbar.download', 'Download')} ${fileTypeLabel[fileType]}`\n )}\n </Button>\n </Popover>\n </>\n );\n});\n\n// Import button — loads a JSON template file into the store\nconst DefaultImportButton = observer(({ store }) => {\n const [importing, setImporting] = useState(false);\n const fileInputRef = React.useRef(null);\n\n const handleFileChange = useCallback(\n async (e) => {\n const file = e.target.files?.[0];\n if (!file) return;\n\n setImporting(true);\n try {\n const text = await file.text();\n const jsonData = JSON.parse(text);\n store.loadJSON(jsonData);\n } catch (err) {\n console.error('Error loading template JSON:', err);\n } finally {\n setImporting(false);\n if (fileInputRef.current) fileInputRef.current.value = '';\n }\n },\n [store]\n );\n\n return (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\".json,application/json\"\n onChange={handleFileChange}\n style={{ display: 'none' }}\n />\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => fileInputRef.current?.click()}\n disabled={importing}\n startIcon={\n importing ? (\n <CircularProgress size={16} />\n ) : (\n <FileUploadIcon sx={{ fontSize: 18 }} />\n )\n }\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: '13px',\n px: 2,\n py: 0.5,\n mr: 1,\n borderRadius: '6px',\n borderColor: '#3d5afe',\n color: '#3d5afe',\n '&:hover': {\n borderColor: '#304ffe',\n backgroundColor: 'rgba(61,90,254,0.04)',\n },\n }}\n >\n {t('toolbar.import', 'Import')}\n </Button>\n </>\n );\n});\n\nconst TYPE_TOOLBARS = {\n text: TextToolbar,\n image: ImageToolbar,\n figure: FigureToolbar,\n line: LineToolbar,\n svg: ImageToolbar, // SVG uses same toolbar as image\n};\n\nconst rowSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n px: 1.5,\n py: 0.75,\n overflowX: 'auto',\n overflowY: 'hidden',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': { display: 'none' },\n};\n\nconst Toolbar = observer(({ store, components = {} }) => {\n const { ActionControls } = components;\n const ImportButton =\n 'ImportButton' in components\n ? components.ImportButton\n : DefaultImportButton;\n const DownloadButton =\n 'DownloadButton' in components\n ? components.DownloadButton\n : DefaultDownloadButton;\n\n const selectedElements = store.selectedElements;\n const element = selectedElements.length === 1 ? selectedElements[0] : null;\n\n const TypeToolbar = element ? TYPE_TOOLBARS[element.type] : null;\n\n return (\n <Box\n sx={{\n borderBottom: '1px solid #e0e0e0',\n backgroundColor: '#ffffff',\n flexShrink: 0,\n }}\n >\n {/* ── Row 1: undo/redo + type-specific tools + right-side actions ── */}\n <Box sx={{ ...rowSx, minHeight: 52, borderBottom: '1px solid #f0f0f0' }}>\n {/* Undo / Redo */}\n <Tooltip title={t('toolbar.undo', 'Undo')}>\n <span>\n <IconButton\n size=\"small\"\n onClick={() => store.history.undo()}\n disabled={!store.history.canUndo}\n >\n <UndoIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip title={t('toolbar.redo', 'Redo')}>\n <span>\n <IconButton\n size=\"small\"\n onClick={() => store.history.redo()}\n disabled={!store.history.canRedo}\n >\n <RedoIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />\n\n {/* Multi-select: Group + Delete */}\n {selectedElements.length > 1 && (\n <>\n <Button\n size=\"small\"\n onClick={() => {\n const ids = selectedElements.map((el) => el.id);\n const group = store.groupElements(ids);\n if (group) {\n store.selectElements([group.id]);\n store.history.addUndoState();\n }\n }}\n sx={{\n textTransform: 'none',\n fontSize: 13,\n fontWeight: 500,\n px: 1.5,\n py: 0.3,\n minWidth: 0,\n color: '#333',\n '&:hover': { backgroundColor: 'rgba(13,131,205,0.08)' },\n }}\n >\n {t('toolbar.group', 'Group')}\n </Button>\n <Tooltip title={t('toolbar.removeElements', 'Delete')}>\n <IconButton\n size=\"small\"\n onClick={() => {\n store.deleteElements(selectedElements.map((el) => el.id));\n store.history.addUndoState();\n }}\n >\n <DeleteOutlineIcon fontSize=\"small\" sx={{ color: '#d32f2f' }} />\n </IconButton>\n </Tooltip>\n </>\n )}\n\n {/* Single group selected: Ungroup */}\n {element && element.type === 'group' && (\n <Button\n size=\"small\"\n onClick={() => {\n store.ungroupElements([element.id]);\n store.history.addUndoState();\n }}\n sx={{\n textTransform: 'none',\n fontSize: 13,\n fontWeight: 500,\n px: 1.5,\n py: 0.3,\n minWidth: 0,\n color: '#333',\n '&:hover': { backgroundColor: 'rgba(13,131,205,0.08)' },\n }}\n >\n {t('toolbar.ungroup', 'Ungroup')}\n </Button>\n )}\n\n {/* Type-specific toolbar */}\n {element && TypeToolbar && (\n <TypeToolbar element={element} store={store} />\n )}\n\n {/* Spacer */}\n <Box sx={{ flex: 1 }} />\n\n {/* Custom action controls */}\n {ActionControls && <ActionControls store={store} />}\n\n {/* Import button */}\n {ImportButton && <ImportButton store={store} />}\n\n {/* Download button */}\n {DownloadButton && <DownloadButton store={store} />}\n </Box>\n\n {/* ── Row 2: always rendered to reserve height and prevent layout shift ── */}\n <Box sx={{ ...rowSx, minHeight: 44, backgroundColor: '#fafafa', visibility: element ? 'visible' : 'hidden' }}>\n {element && <CommonControls element={element} store={store} />}\n </Box>\n </Box>\n );\n});\n\nToolbar.displayName = 'Toolbar';\nexport default Toolbar;\nexport { Toolbar };\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, IconButton, Typography, Tooltip } from '@mui/material';\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\nimport FitScreenIcon from '@mui/icons-material/FitScreen';\n\nconst ZoomButtons = observer(({ store }) => {\n const zoomIn = () => {\n store.setScale(Math.min(5, store.scale * 1.2));\n };\n\n const zoomOut = () => {\n store.setScale(Math.max(0.1, store.scale / 1.2));\n };\n\n const zoomToFit = () => {\n store.setScale(store.scaleToFit);\n };\n\n const zoomPercentage = Math.round(store.scale * 100);\n\n return (\n <Box\n sx={{\n position: 'absolute',\n bottom: 12,\n right: 12,\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n backgroundColor: 'rgba(255,255,255,0.95)',\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\n padding: '4px 8px',\n zIndex: 10,\n }}\n >\n <Tooltip title=\"Zoom out\">\n <IconButton size=\"small\" onClick={zoomOut}>\n <ZoomOutIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Typography\n variant=\"caption\"\n sx={{\n minWidth: 40,\n textAlign: 'center',\n fontSize: '12px',\n fontWeight: 500,\n userSelect: 'none',\n }}\n >\n {zoomPercentage}%\n </Typography>\n\n <Tooltip title=\"Zoom in\">\n <IconButton size=\"small\" onClick={zoomIn}>\n <ZoomInIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Tooltip title=\"Fit to screen\">\n <IconButton size=\"small\" onClick={zoomToFit}>\n <FitScreenIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </Box>\n );\n});\n\nZoomButtons.displayName = 'ZoomButtons';\nexport default ZoomButtons;\nexport { ZoomButtons };\n","import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport { Image as KonvaImage, Group, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport { MASK_SHAPES } from '../toolbar/image-mask-panel';\n\n// Custom Konva filter: Sepia\nconst SepiaFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i], g = data[i + 1], b = data[i + 2];\n data[i] = Math.min(255, (r * 0.393) + (g * 0.769) + (b * 0.189));\n data[i + 1] = Math.min(255, (r * 0.349) + (g * 0.686) + (b * 0.168));\n data[i + 2] = Math.min(255, (r * 0.272) + (g * 0.534) + (b * 0.131));\n }\n};\n\n// Custom Konva filter: Warm (boost red, reduce blue)\nconst WarmFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.min(255, data[i] + 25); // red up\n data[i + 1] = Math.min(255, data[i + 1] + 10); // green slightly up\n data[i + 2] = Math.max(0, data[i + 2] - 20); // blue down\n }\n};\n\n// Custom Konva filter: Cold (boost blue, reduce red)\nconst ColdFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.max(0, data[i] - 20); // red down\n data[i + 1] = Math.min(255, data[i + 1] + 5); // green slightly up\n data[i + 2] = Math.min(255, data[i + 2] + 25); // blue up\n }\n};\n\nconst ImageElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const groupRef = useRef(null);\n const [image, setImage] = useState(null);\n\n // Persistent auto-crop state: tracks the visible portion of the source image.\n // Initialized on image load (cover-fit centered), then updated directionally on resize.\n const autoCropRef = useRef(null);\n const autoCropSrcRef = useRef(null); // tracks which image the crop was computed for\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load image:', element.src.substring(0, 100));\n };\n img.src = element.src;\n }, [element.src]);\n\n // Build Konva filters array\n const filters = [];\n if (element.blurEnabled) filters.push(window.Konva.Filters.Blur);\n if (element.brightnessEnabled) filters.push(window.Konva.Filters.Brighten);\n if (element.grayscaleEnabled) filters.push(window.Konva.Filters.Grayscale);\n if (element.sepiaEnabled) filters.push(SepiaFilter);\n if (element.warmEnabled) filters.push(WarmFilter);\n if (element.coldEnabled) filters.push(ColdFilter);\n\n const hasFilters = filters.length > 0;\n const hasBorder = element.borderSize > 0 && element.borderColor;\n const needsCache = hasFilters || element.cornerRadius > 0 || element.shadowEnabled;\n\n // Cache the image node whenever filters, cornerRadius, or shadow change so they take effect\n useEffect(() => {\n const node = imageRef.current;\n if (!node || !image) return;\n if (needsCache) {\n try {\n node.cache();\n } catch (e) { /* ignore cache errors */ }\n } else {\n try {\n node.clearCache();\n } catch (e) { /* ignore */ }\n }\n }, [image, needsCache, element.blurEnabled, element.blurRadius, element.brightnessEnabled, element.brightness, element.grayscaleEnabled, element.sepiaEnabled, element.warmEnabled, element.coldEnabled, element.cornerRadius, element.shadowEnabled, element.shadowBlur, element.shadowOffsetX, element.shadowOffsetY, element.shadowColor]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n const target = groupRef.current || e.target;\n element.set({\n x: target.x(),\n y: target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Helper: update autoCrop directionally based on which edges moved.\n // Stores IDEAL (unclamped) values so resizing always reverses correctly.\n // Clamping to image bounds happens at render time only.\n const updateAutoCrop = (oldX, oldY, oldW, oldH, newX, newY, newW, newH) => {\n const crop = autoCropRef.current;\n if (!crop || !image) return;\n\n const newAspect = newW / newH;\n\n const xMoved = Math.abs(newX - oldX) > 0.5;\n const yMoved = Math.abs(newY - oldY) > 0.5;\n const wChanged = Math.abs(newW - oldW) > 0.5;\n const hChanged = Math.abs(newH - oldH) > 0.5;\n\n let cx = crop.x, cy = crop.y, cw = crop.w, ch = crop.h;\n\n if (wChanged && !hChanged) {\n // Width only — adjust crop width, keep crop height fixed\n cw = ch * newAspect;\n if (xMoved) cx = crop.x + crop.w - cw; // left edge dragged → anchor right\n } else if (hChanged && !wChanged) {\n // Height only — adjust crop height, keep crop width fixed\n ch = cw / newAspect;\n if (yMoved) cy = crop.y + crop.h - ch; // top edge dragged → anchor bottom\n } else if (wChanged && hChanged) {\n // Corner resize — keep ch as base, derive cw\n cw = ch * newAspect;\n if (xMoved) cx = crop.x + crop.w - cw;\n if (yMoved) cy = crop.y + crop.h - ch;\n }\n\n // Store ideal values — NO clamping here\n autoCropRef.current = { x: cx, y: cy, w: cw, h: ch };\n };\n\n // Live transform — reset scale, set node dimensions, update crop directionally\n const handleTransform = (e) => {\n const node = groupRef.current || e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n const oldX = element.x, oldY = element.y;\n const oldW = element.width, oldH = element.height;\n const newW = Math.max(5, node.width() * Math.abs(scaleX));\n const newH = Math.max(5, node.height() * Math.abs(scaleY));\n const newX = node.x();\n const newY = node.y();\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newW);\n node.height(newH);\n\n updateAutoCrop(oldX, oldY, oldW, oldH, newX, newY, newW, newH);\n\n element.set({ x: newX, y: newY, width: newW, height: newH, rotation: node.rotation() });\n };\n\n const handleTransformEnd = (e) => {\n const node = groupRef.current || e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n const oldX = element.x, oldY = element.y;\n const oldW = element.width, oldH = element.height;\n const newW = Math.max(5, node.width() * Math.abs(scaleX));\n const newH = Math.max(5, node.height() * Math.abs(scaleY));\n const newX = node.x();\n const newY = node.y();\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newW);\n node.height(newH);\n\n updateAutoCrop(oldX, oldY, oldW, oldH, newX, newY, newW, newH);\n\n element.set({ x: newX, y: newY, width: newW, height: newH, rotation: node.rotation() });\n if (onTransformEnd) onTransformEnd(e);\n };\n\n // Crop calculations\n const modelHasCrop = image && (\n element.cropX !== 0 ||\n element.cropY !== 0 ||\n element.cropWidth !== 1 ||\n element.cropHeight !== 1\n );\n\n // Initialize auto-crop when image changes (cover-fit, centered)\n if (image && image !== autoCropSrcRef.current) {\n autoCropSrcRef.current = image;\n if (!modelHasCrop) {\n const natW = image.naturalWidth || image.width;\n const natH = image.naturalHeight || image.height;\n if (natW > 0 && natH > 0) {\n const elemAspect = element.width / element.height;\n const imgAspect = natW / natH;\n if (imgAspect > elemAspect) {\n const ch = natH;\n const cw = natH * elemAspect;\n autoCropRef.current = { x: (natW - cw) / 2, y: 0, w: cw, h: ch };\n } else {\n const cw = natW;\n const ch = natW / elemAspect;\n autoCropRef.current = { x: 0, y: (natH - ch) / 2, w: cw, h: ch };\n }\n }\n } else {\n autoCropRef.current = null;\n }\n }\n if (!image) { autoCropSrcRef.current = null; autoCropRef.current = null; }\n\n let cropProps = {};\n if (modelHasCrop) {\n cropProps = {\n crop: {\n x: element.cropX * image.naturalWidth,\n y: element.cropY * image.naturalHeight,\n width: element.cropWidth * image.naturalWidth,\n height: element.cropHeight * image.naturalHeight,\n },\n };\n } else if (autoCropRef.current && image) {\n // Render-time clamping: fit ideal crop within source image bounds\n // while maintaining element aspect ratio.\n const ac = autoCropRef.current;\n const natW = image.naturalWidth || image.width;\n const natH = image.naturalHeight || image.height;\n const elemAspect = element.width / element.height;\n\n let rw = ac.w, rh = ac.h, rx = ac.x, ry = ac.y;\n\n // Clamp dimensions to image bounds, maintaining aspect ratio\n if (rw > natW) { rw = natW; rh = natW / elemAspect; }\n if (rh > natH) { rh = natH; rw = natH * elemAspect; }\n rw = Math.max(1, rw);\n rh = Math.max(1, rh);\n\n // Clamp position\n rx = Math.max(0, Math.min(rx, natW - rw));\n ry = Math.max(0, Math.min(ry, natH - rh));\n\n cropProps = { crop: { x: rx, y: ry, width: rw, height: rh } };\n }\n\n // Mask clipping (clipFunc only works on Container nodes like Group)\n const maskShape = element.clipSrc\n ? MASK_SHAPES.find((s) => s.clipId === element.clipSrc)\n : null;\n\n const hasMask = !!maskShape;\n\n const clipFunc = hasMask\n ? (ctx) => { maskShape.clipFunc(ctx, element.width, element.height); }\n : undefined;\n\n const imageNode = (\n <KonvaImage\n ref={imageRef}\n image={image}\n x={0}\n y={0}\n width={element.width}\n height={element.height}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n filters={hasFilters ? filters : undefined}\n blurRadius={element.blurEnabled ? element.blurRadius : undefined}\n brightness={element.brightnessEnabled ? element.brightness : undefined}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n {...cropProps}\n />\n );\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'image'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n clipFunc={clipFunc}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {imageNode}\n {hasBorder && (\n <Rect\n x={0}\n y={0}\n width={element.width}\n height={element.height}\n stroke={element.borderColor}\n strokeWidth={element.borderSize}\n cornerRadius={element.cornerRadius}\n listening={false}\n />\n )}\n </Group>\n );\n});\n\nImageElementComponent.displayName = 'ImageElement';\nexport default ImageElementComponent;\n","import React, { useRef, useEffect, useState } from 'react';\nimport { Group, Rect, Text as KonvaText } from 'react-konva';\nimport Konva from 'konva';\nimport { observer } from 'mobx-react-lite';\n\nconst TextElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const groupRef = useRef(null);\n const textRef = useRef(null);\n const [textHeight, setTextHeight] = useState(element.height || 50);\n\n // Force Konva to recalculate text layout when fonts finish loading.\n useEffect(() => {\n const onFontLoaded = () => {\n const node = textRef.current;\n if (!node) return;\n const f = node.fontFamily();\n node.fontFamily('serif');\n node.fontFamily(f);\n const h = node.height();\n if (h > 0) {\n setTextHeight(h);\n if (Math.abs(h - element.height) > 1) element.set({ height: h });\n }\n // Re-cache if blur is active\n if (element.blurEnabled && node) {\n node.cache();\n }\n node.getLayer()?.batchDraw();\n };\n document.fonts.addEventListener('loadingdone', onFontLoaded);\n return () => document.fonts.removeEventListener('loadingdone', onFontLoaded);\n }, []);\n\n // Sync Konva auto-sized height back to element model after text reflows\n useEffect(() => {\n const node = textRef.current;\n if (!node) return;\n const frame = requestAnimationFrame(() => {\n const h = node.height();\n if (h > 0) {\n setTextHeight(h);\n if (Math.abs(h - element.height) > 1) element.set({ height: h });\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [element.text, element.fontSize, element.fontFamily, element.fontWeight, element.width]);\n\n // Apply blur filter: cache the text node when blur is enabled\n useEffect(() => {\n const node = textRef.current;\n if (!node) return;\n if (element.blurEnabled) {\n node.filters([Konva.Filters.Blur]);\n node.blurRadius(element.blurRadius);\n node.cache();\n } else {\n node.filters([]);\n node.clearCache();\n }\n node.getLayer()?.batchDraw();\n }, [element.blurEnabled, element.blurRadius, element.text, element.fontSize, element.width]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // During live drag: let Konva scale the node visually — no imperative changes,\n // no element.set(). Any MobX update here causes React to sync stale x/y back\n // to the node every frame, fighting the Transformer (especially top/left anchors).\n const handleTransform = () => {};\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n // Read accumulated scale against the MODEL values (not node.width/height,\n // which accumulate across multiple transform sessions and can drift).\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n const newWidth = Math.max(20, element.width * Math.abs(scaleX));\n const newFontSize = Math.max(8, Math.round(element.fontSize * Math.abs(scaleY)));\n\n const tNode = textRef.current;\n if (tNode) {\n tNode.width(newWidth);\n tNode.fontSize(newFontSize);\n }\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newWidth);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: newWidth,\n fontSize: newFontSize,\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const handleDblClick = () => {\n if (!element.contentEditable) return;\n element.toggleEditMode(true);\n\n const textNode = textRef.current;\n if (!textNode) return;\n\n const grp = groupRef.current;\n const stage = textNode.getStage();\n if (!stage) return;\n\n // Hide the group so the textarea appears as in-place editing\n if (grp) grp.hide();\n stage.batchDraw();\n\n const stageContainer = stage.container();\n const textPosition = textNode.absolutePosition();\n const absScale = textNode.getAbsoluteScale();\n const scaleX = absScale.x;\n const scaleY = absScale.y;\n\n const cssFontStyle = element.fontStyle === 'italic' ? 'italic' : 'normal';\n const cssFontWeight = String(element.fontWeight || 'normal');\n\n const textarea = document.createElement('textarea');\n textarea.value = element.text;\n textarea.style.position = 'absolute';\n textarea.style.top = `${textPosition.y}px`;\n textarea.style.left = `${textPosition.x}px`;\n textarea.style.width = `${element.width * scaleX}px`;\n textarea.style.height = `${element.height * scaleY}px`;\n textarea.style.fontSize = `${element.fontSize * scaleX}px`;\n textarea.style.fontFamily = `\"${element.fontFamily}\", sans-serif`;\n textarea.style.fontStyle = cssFontStyle;\n textarea.style.fontWeight = cssFontWeight;\n textarea.style.textAlign = element.align;\n textarea.style.color = element.fill;\n textarea.style.border = '0';\n textarea.style.borderWidth = '0';\n textarea.style.padding = '0';\n textarea.style.margin = '0';\n textarea.style.overflow = 'hidden';\n textarea.style.background = 'none';\n textarea.style.outline = 'none';\n textarea.style.resize = 'none';\n textarea.style.appearance = 'none';\n textarea.style.webkitAppearance = 'none';\n textarea.style.lineHeight = String(\n typeof element.lineHeight === 'number'\n ? element.lineHeight\n : parseFloat(element.lineHeight) || 1.2\n );\n textarea.style.letterSpacing = `${(element.letterSpacing || 0) * scaleX}px`;\n textarea.style.transformOrigin = 'left top';\n textarea.style.transform = `rotate(${element.rotation}deg)`;\n textarea.style.textDecoration = element.textDecoration || '';\n textarea.style.boxSizing = 'content-box';\n textarea.style.zIndex = '10000';\n textarea.style.whiteSpace = 'pre-wrap';\n textarea.style.wordBreak = 'break-word';\n textarea.style.minHeight = '0';\n textarea.style.minWidth = '0';\n\n stageContainer.appendChild(textarea);\n textarea.focus();\n textarea.select();\n\n let removed = false;\n const removeTextarea = () => {\n if (removed) return;\n removed = true;\n element.set({ text: textarea.value });\n element.toggleEditMode(false);\n if (grp) grp.show();\n stage.batchDraw();\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n };\n\n textarea.addEventListener('blur', removeTextarea);\n textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n removeTextarea();\n }\n });\n };\n\n // Compute displayed text based on textTransform\n let displayText = element.text || element.placeholder || '';\n if (element.textTransform === 'uppercase') {\n displayText = displayText.toUpperCase();\n } else if (element.textTransform === 'lowercase') {\n displayText = displayText.toLowerCase();\n } else if (element.textTransform === 'capitalize') {\n displayText = displayText.replace(/\\b\\w/g, (c) => c.toUpperCase());\n }\n\n const fontStyleStr = (() => {\n const parts = [];\n const style = String(element.fontStyle || '').trim();\n const weight = String(element.fontWeight || '').trim();\n if (style === 'italic' || style.includes('italic')) parts.push('italic');\n if (weight && weight !== 'normal') parts.push(weight);\n return parts.length > 0 ? parts.join(' ') : 'normal';\n })();\n\n const pad = element.backgroundEnabled ? (element.backgroundPadding || 0) : 0;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'text'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={textHeight}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDblClick={handleDblClick}\n onDblTap={handleDblClick}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {/* Background rect */}\n {element.backgroundEnabled && (\n <Rect\n x={-pad}\n y={-pad}\n width={element.width + pad * 2}\n height={textHeight + pad * 2}\n fill={element.backgroundColor || '#ffffff'}\n opacity={element.backgroundOpacity ?? 1}\n cornerRadius={element.backgroundCornerRadius || 0}\n listening={false}\n />\n )}\n\n {/* Text */}\n <KonvaText\n ref={textRef}\n text={displayText}\n width={element.width}\n fontSize={element.fontSize}\n fontFamily={element.fontFamily}\n fontStyle={fontStyleStr}\n textDecoration={element.textDecoration}\n fill={element.fill}\n align={element.align}\n verticalAlign={element.verticalAlign}\n lineHeight={typeof element.lineHeight === 'number' ? element.lineHeight : parseFloat(element.lineHeight) || 1.2}\n letterSpacing={element.letterSpacing}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth || 0}\n fillAfterStrokeEnabled={true}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n />\n </Group>\n );\n});\n\nTextElementComponent.displayName = 'TextElement';\nexport default TextElementComponent;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Image as KonvaImage } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst SVGElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const [image, setImage] = useState(null);\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n let svgSrc = element.src;\n\n // Apply color replacements to SVG\n if (element.colorsReplace && element.colorsReplace.size > 0) {\n // If it's a data URI SVG, decode and replace colors\n if (svgSrc.startsWith('data:image/svg+xml')) {\n try {\n let svgContent;\n if (svgSrc.includes('base64,')) {\n svgContent = atob(svgSrc.split('base64,')[1]);\n } else {\n svgContent = decodeURIComponent(svgSrc.split(',')[1]);\n }\n\n element.colorsReplace.forEach((newColor, oldColor) => {\n svgContent = svgContent.replace(new RegExp(oldColor, 'gi'), newColor);\n });\n\n svgSrc = 'data:image/svg+xml;base64,' + btoa(svgContent);\n } catch (e) {\n console.warn('Failed to process SVG color replacement', e);\n }\n }\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load SVG:', element.src.substring(0, 100));\n };\n img.src = svgSrc;\n }, [element.src, element.colorsReplace?.toJSON?.()]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n return (\n <KonvaImage\n ref={imageRef}\n id={element.id}\n name={element.name || 'svg'}\n image={image}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onClick={(e) => {\n if (onSelect) onSelect(e);\n }}\n onTap={(e) => {\n if (onSelect) onSelect(e);\n }}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n />\n );\n});\n\nSVGElementComponent.displayName = 'SVGElement';\nexport default SVGElementComponent;\n","import React, { useRef } from 'react';\nimport { Rect, Circle, Star, Line as KonvaLine, RegularPolygon, Arrow, Path, Group } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst FigureElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const shapeRef = useRef(null);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const commonProps = {\n id: element.id,\n name: element.name || 'figure',\n x: element.x,\n y: element.y,\n rotation: element.rotation,\n opacity: element.opacity,\n fill: element.fill,\n stroke: element.stroke || undefined,\n strokeWidth: element.strokeWidth || 0,\n dash: element.dash?.length > 0 ? [...element.dash] : undefined,\n draggable: !groupChild && element.draggable,\n visible: element.visible,\n shadowEnabled: element.shadowEnabled,\n shadowColor: element.shadowColor,\n shadowBlur: element.shadowBlur,\n shadowOffsetX: element.shadowOffsetX,\n shadowOffsetY: element.shadowOffsetY,\n shadowOpacity: element.shadowOpacity,\n onClick: (e) => { if (onSelect) onSelect(e); },\n onTap: (e) => { if (onSelect) onSelect(e); },\n onDragEnd: handleDragEnd,\n onTransformEnd: handleTransformEnd,\n };\n\n const subType = element.subType || 'rect';\n\n // Center-origin shapes use offset so that node.x()/y() stays top-left\n // (matching our model) while the visual center is positioned correctly.\n const centerOffset = {\n offsetX: -(element.width / 2),\n offsetY: -(element.height / 2),\n };\n\n switch (subType) {\n case 'circle':\n case 'ellipse':\n return (\n <Circle\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n radiusX={element.width / 2}\n radiusY={element.height / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'triangle':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={3}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'star':\n return (\n <Star\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n numPoints={5}\n innerRadius={Math.min(element.width, element.height) / 4}\n outerRadius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'polygon':\n case 'hexagon':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={subType === 'hexagon' ? 6 : 5}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'diamond':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={4}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'path':\n if (!element.pathData) return null;\n return (\n <Group\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n >\n <Path\n data={element.pathData}\n fill={element.fill}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth ? element.strokeWidth * (100 / element.width) : 0}\n scaleX={element.width / 100}\n scaleY={element.height / 100}\n />\n </Group>\n );\n\n case 'arrow':\n return (\n <Arrow\n ref={shapeRef}\n {...commonProps}\n points={[0, element.height / 2, element.width, element.height / 2]}\n pointerLength={10}\n pointerWidth={10}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'rect':\n default:\n return (\n <Rect\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n cornerRadius={element.cornerRadius || 0}\n />\n );\n }\n});\n\nFigureElementComponent.displayName = 'FigureElement';\nexport default FigureElementComponent;\n","import React, { Fragment } from 'react';\nimport { Line as KonvaLine, Arrow, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst HANDLE_SIZE = 10;\nconst DEG = Math.PI / 180;\n\nconst LineElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n if (!element.visible) return null;\n\n const rot = (element.rotation || 0) * DEG;\n const cosR = Math.cos(rot);\n const sinR = Math.sin(rot);\n\n // Start and end points in canvas coordinates\n const startX = element.x;\n const startY = element.y;\n const endX = element.x + element.width * cosR;\n const endY = element.y + element.width * sinR;\n\n const hasArrow = element.endHead === 'arrow' || element.startHead === 'arrow';\n\n // Drag the whole line\n const handleLineDragEnd = (e) => {\n const dx = e.target.x();\n const dy = e.target.y();\n // The line is rendered at (0,0) with absolute points, so dx/dy is the drag offset\n e.target.x(0);\n e.target.y(0);\n element.set({\n x: element.x + dx,\n y: element.y + dy,\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Drag the START handle\n const handleStartDrag = (e) => {\n const newSX = e.target.x() + HANDLE_SIZE / 2;\n const newSY = e.target.y() + HANDLE_SIZE / 2;\n const dx = endX - newSX;\n const dy = endY - newSY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n x: newSX,\n y: newSY,\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position since the line re-renders from new model coords\n e.target.x(newSX - HANDLE_SIZE / 2);\n e.target.y(newSY - HANDLE_SIZE / 2);\n };\n\n const handleStartDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n // Drag the END handle\n const handleEndDrag = (e) => {\n const newEX = e.target.x() + HANDLE_SIZE / 2;\n const newEY = e.target.y() + HANDLE_SIZE / 2;\n const dx = newEX - startX;\n const dy = newEY - startY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position\n e.target.x(newEX - HANDLE_SIZE / 2);\n e.target.y(newEY - HANDLE_SIZE / 2);\n };\n\n const handleEndDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n const lineNode = hasArrow ? (\n <Arrow\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n fill={element.color || '#000000'}\n pointerLength={10}\n pointerWidth={10}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n ) : (\n <KonvaLine\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n );\n\n return (\n <Fragment>\n {lineNode}\n\n {/* Endpoint handles — only visible when selected */}\n {isSelected && (\n <Fragment>\n {/* Start handle */}\n <Rect\n x={startX - HANDLE_SIZE / 2}\n y={startY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleStartDrag}\n onDragEnd={handleStartDragEnd}\n />\n {/* End handle */}\n <Rect\n x={endX - HANDLE_SIZE / 2}\n y={endY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleEndDrag}\n onDragEnd={handleEndDragEnd}\n />\n </Fragment>\n )}\n </Fragment>\n );\n});\n\nLineElementComponent.displayName = 'LineElement';\nexport default LineElementComponent;\n","import React, { useRef, useCallback } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Group } from 'react-konva';\n\n// ElementRenderer is passed via the _ElementRenderer prop to avoid circular imports\nconst GroupElementComponent = observer(({ element, isSelected, onTransformEnd, onDragEnd, _ElementRenderer }) => {\n const groupRef = useRef(null);\n\n const handleDragEnd = useCallback((e) => {\n const node = e.target;\n element.set({\n x: node.x(),\n y: node.y(),\n });\n if (onDragEnd) onDragEnd(e);\n }, [element, onDragEnd]);\n\n const handleTransformEnd = useCallback((e) => {\n const node = groupRef.current;\n if (!node) return;\n\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n // Scale each child proportionally\n element.children.forEach((child) => {\n if (child.set) {\n const updates = {\n x: (child.x || 0) * scaleX,\n y: (child.y || 0) * scaleY,\n };\n if ('width' in child) updates.width = (child.width || 0) * scaleX;\n if ('height' in child) updates.height = (child.height || 0) * scaleY;\n if (child.type === 'text' && child.fontSize) {\n updates.fontSize = Math.round(child.fontSize * Math.max(scaleX, scaleY));\n }\n child.set(updates);\n }\n });\n\n // Update group position, rotation, dimensions\n element.set({\n x: node.x(),\n y: node.y(),\n rotation: node.rotation(),\n width: element.width * scaleX,\n height: element.height * scaleY,\n });\n\n // Reset scale on the Konva node\n node.scaleX(1);\n node.scaleY(1);\n\n if (onTransformEnd) onTransformEnd(e);\n }, [element, onTransformEnd]);\n\n if (!element.visible) return null;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'group'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={element.draggable !== false}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n >\n {_ElementRenderer && element.children.map((child) => (\n <_ElementRenderer\n key={child.id}\n element={child}\n isSelected={false}\n groupChild={true}\n />\n ))}\n </Group>\n );\n});\n\nGroupElementComponent.displayName = 'GroupElementComponent';\nexport default GroupElementComponent;\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport ImageElementComponent from './image-element';\nimport TextElementComponent from './text-element';\nimport SVGElementComponent from './svg-element';\nimport FigureElementComponent from './figure-element';\nimport LineElementComponent from './line-element';\nimport GroupElementComponent from './group-element';\n\nconst ELEMENT_RENDERERS = {\n image: ImageElementComponent,\n text: TextElementComponent,\n svg: SVGElementComponent,\n figure: FigureElementComponent,\n line: LineElementComponent,\n group: GroupElementComponent,\n};\n\nconst ElementRenderer = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const Renderer = ELEMENT_RENDERERS[element.type];\n\n if (!Renderer) {\n console.warn(`No renderer for element type: ${element.type}`);\n return null;\n }\n\n // Pass ElementRenderer itself to GroupElementComponent to avoid circular imports\n const extra = element.type === 'group' ? { _ElementRenderer: ElementRenderer } : {};\n\n return (\n <Renderer\n element={element}\n isSelected={isSelected}\n onSelect={onSelect}\n onTransformEnd={onTransformEnd}\n onDragEnd={onDragEnd}\n groupChild={groupChild}\n {...extra}\n />\n );\n});\n\nElementRenderer.displayName = 'ElementRenderer';\nexport default ElementRenderer;\nexport { ELEMENT_RENDERERS };\n","import React, { useState, useEffect, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Button, TextField, Typography, Box } from '@mui/material';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport { getInputFieldsConfig } from '../config';\nimport { t } from '../config';\n\n// ── Date formatting helpers (shared with input-fields-panel) ─────────\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nfunction formatDate(date, format) {\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const yyyy = String(date.getFullYear());\n const monthName = MONTH_NAMES[date.getMonth()];\n\n switch (format) {\n case 'MM-DD-YYYY':\n return `${mm}-${dd}-${yyyy}`;\n case 'MMMM-DD-YYYY':\n return `${monthName}-${dd}-${yyyy}`;\n case 'MMMM-DD':\n return `${monthName}-${dd}`;\n case 'YYYY':\n return yyyy;\n case 'MM-DD':\n return `${mm}-${dd}`;\n default:\n return `${mm}-${dd}-${yyyy}`;\n }\n}\n\nfunction parseDateFromFormat(dateStr, format) {\n try {\n const d = new Date(dateStr);\n if (!isNaN(d.getTime())) return d;\n } catch (e) {\n // ignore\n }\n return new Date();\n}\n\n// ── Default single-field dialog (full-page overlay) ──────────────────\nconst SingleFieldDialog = ({ field, onSubmit, onSkip, onBack, canGoBack, currentIndex, totalCount }) => {\n const [value, setValue] = useState('');\n const [imagePreview, setImagePreview] = useState(null);\n const fileInputRef = useRef(null);\n const config = getInputFieldsConfig();\n\n const custom = field.custom || {};\n const inputType = custom.inputType || 'text';\n const promptText = custom.promptText || custom.placeholder || 'Please provide input';\n const dateFormat = custom.dateFormat || 'MM-DD-YYYY';\n const isRequired = custom.required === true;\n const logoUrl = config.logoUrl || null;\n const headerText = config.headerText || null;\n const accentColor = config.accentColor || '#0d83cd';\n const progressPct = Math.round(((currentIndex + 1) / totalCount) * 100);\n\n useEffect(() => {\n setValue('');\n setImagePreview(null);\n }, [field.id]);\n\n const handleImageSelect = (e) => {\n const file = e.target.files?.[0];\n if (!file || !file.type.startsWith('image/')) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n const dataURL = ev.target.result;\n setValue(dataURL);\n setImagePreview(dataURL);\n };\n reader.readAsDataURL(file);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleSubmit = () => {\n if (inputType === 'date' && value) {\n const dateObj = parseDateFromFormat(value, dateFormat);\n const formatted = formatDate(dateObj, dateFormat);\n onSubmit(field.id, formatted);\n } else {\n onSubmit(field.id, value);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' && inputType !== 'image') handleSubmit();\n };\n\n const renderInput = () => {\n const sharedSx = {\n mt: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: '8px',\n fontSize: 22,\n '& fieldset': { borderColor: '#d0d5dd' },\n '&:hover fieldset': { borderColor: accentColor },\n '&.Mui-focused fieldset': { borderColor: accentColor },\n },\n ...config.inputStyle,\n };\n\n switch (inputType) {\n case 'date':\n return (\n <TextField\n fullWidth\n type=\"date\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n InputLabelProps={{ shrink: true }}\n sx={sharedSx}\n />\n );\n case 'integer':\n return (\n <TextField\n fullWidth\n type=\"number\"\n value={value}\n onChange={(e) => {\n const v = e.target.value;\n if (v === '' || /^-?\\d*$/.test(v)) setValue(v);\n }}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder=\"0\"\n inputProps={{ step: 1 }}\n sx={sharedSx}\n />\n );\n case 'image':\n return (\n <Box sx={{ mt: 1 }}>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleImageSelect}\n style={{ display: 'none' }}\n />\n {imagePreview ? (\n <Box sx={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 2 }}>\n <Box\n sx={{\n width: '100%',\n maxHeight: 260,\n borderRadius: '10px',\n overflow: 'hidden',\n border: '1px solid #e0e0e0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fafafa',\n }}\n >\n <img\n src={imagePreview}\n alt=\"Preview\"\n style={{ maxWidth: '100%', maxHeight: 260, objectFit: 'contain' }}\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => fileInputRef.current?.click()}\n sx={{ textTransform: 'none', fontSize: 13, borderRadius: '8px', borderColor: '#d0d5dd' }}\n >\n {t('inputFieldsDialog.changeImage', 'Change Image')}\n </Button>\n </Box>\n ) : (\n <Box\n onClick={() => fileInputRef.current?.click()}\n sx={{\n border: '2px dashed #d0d5dd',\n borderRadius: '10px',\n p: 4,\n textAlign: 'center',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n >\n <CloudUploadIcon sx={{ fontSize: 40, color: '#bbb', mb: 1.5 }} />\n <Typography variant=\"body2\" sx={{ color: '#888', fontSize: 14 }}>\n {t('inputFieldsDialog.uploadImage', 'Click to select an image')}\n </Typography>\n </Box>\n )}\n </Box>\n );\n case 'text':\n default:\n return (\n <TextField\n fullWidth\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder={custom.placeholder || ''}\n sx={sharedSx}\n />\n );\n }\n };\n\n return (\n <Box\n sx={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n backgroundColor: '#f7f8fa',\n display: 'flex',\n flexDirection: 'column',\n ...config.dialogStyle,\n }}\n >\n {/* Progress bar */}\n <Box sx={{ height: 4, backgroundColor: '#e4e7ec', flexShrink: 0 }}>\n <Box\n sx={{\n height: '100%',\n width: `${progressPct}%`,\n backgroundColor: accentColor,\n transition: 'width 0.4s ease',\n }}\n />\n </Box>\n\n {/* Header */}\n <Box\n sx={{\n backgroundColor: '#fff',\n borderBottom: '1px solid #f0f0f0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n px: 4,\n py: 1.75,\n flexShrink: 0,\n ...config.titleStyle,\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>\n {logoUrl && (\n <img\n src={logoUrl}\n alt=\"Logo\"\n style={{ maxHeight: 36, maxWidth: 200, objectFit: 'contain' }}\n />\n )}\n {(headerText || !logoUrl) && (\n <Typography sx={{ fontWeight: 700, fontSize: 17, color: '#1a1a1a', letterSpacing: '-0.2px' }}>\n {headerText || 'LabelLife'}\n </Typography>\n )}\n </Box>\n </Box>\n\n {/* Centered content */}\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n p: { xs: 3, sm: 5 },\n overflowY: 'auto',\n }}\n >\n <Box sx={{ width: '100%', maxWidth: 750 }}>\n {/* Step indicator */}\n <Typography\n sx={{ display: 'block', fontSize: 18, color: '#999', fontWeight: 500, mb: 1.5, letterSpacing: '0.2px' }}\n >\n {t('inputFieldsDialog.stepIndicator', 'Field {current} of {total}')\n .replace('{current}', currentIndex + 1)\n .replace('{total}', totalCount)}\n </Typography>\n\n {/* Main question */}\n <Typography\n sx={{\n fontSize: { xs: 33, sm: 39 },\n fontWeight: 700,\n color: '#111827',\n lineHeight: 1.3,\n mb: 4.5,\n ...config.promptStyle,\n }}\n >\n {promptText}\n </Typography>\n\n {/* Input */}\n {renderInput()}\n\n {/* Actions */}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mt: 4.5 }}>\n {canGoBack && (\n <Button\n variant=\"outlined\"\n onClick={onBack}\n startIcon={<ArrowBackIcon />}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 3,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n }}\n >\n {t('inputFieldsDialog.back', 'Back')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={handleSubmit}\n disabled={isRequired && !value}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: 21,\n px: 5,\n py: 1.65,\n borderRadius: '10px',\n backgroundColor: accentColor,\n boxShadow: 'none',\n '&:hover': { backgroundColor: '#0a6eb3', boxShadow: 'none' },\n ...config.submitButtonStyle,\n }}\n >\n {config.submitButtonText || t('inputFieldsDialog.submit', 'Continue')}\n </Button>\n {!isRequired && (\n <Button\n variant=\"outlined\"\n onClick={() => onSkip(field.id)}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 4.5,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n ...config.skipButtonStyle,\n }}\n >\n {config.skipButtonText || t('inputFieldsDialog.skip', 'Do it later')}\n </Button>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n\n// ── Main orchestrator component ──────────────────────────────────────\nconst InputFieldsDialog = observer(({ store, onComplete, enabled = true, backTrigger = 0 }) => {\n // displayIndex counts how many fields have been answered (for step indicator only).\n // Navigation always uses fields[0] — the first remaining pending field.\n const [displayIndex, setDisplayIndex] = useState(0);\n const initialTotalRef = useRef(0);\n const completedHistoryRef = useRef([]);\n const isGoingBackRef = useRef(false);\n const prevBackTriggerRef = useRef(backTrigger);\n const config = getInputFieldsConfig();\n\n const pendingFields = store._pendingInputFields || [];\n\n // When disabled, clear any pending fields so they are treated as skipped\n useEffect(() => {\n if (!enabled && pendingFields.length > 0) {\n store.clearPendingInputFields();\n }\n }, [enabled, pendingFields.length, store]);\n\n const fields = pendingFields.filter(\n (f) => f.custom && f.custom.inputField\n );\n\n // Capture total and reset display counter when a fresh batch appears\n useEffect(() => {\n if (fields.length > 0 && initialTotalRef.current === 0) {\n if (isGoingBackRef.current) {\n // Back-from-summary restored a field — recover total from history + pending\n isGoingBackRef.current = false;\n initialTotalRef.current = completedHistoryRef.current.length + fields.length;\n } else {\n // Genuine fresh batch\n initialTotalRef.current = fields.length;\n setDisplayIndex(0);\n completedHistoryRef.current = [];\n }\n }\n if (fields.length === 0) {\n initialTotalRef.current = 0;\n // History is intentionally kept so back-from-summary can use it\n }\n }, [fields.length]);\n\n const totalCount = initialTotalRef.current || fields.length;\n\n // Back-from-summary: triggered by parent incrementing backTrigger prop\n // Must be defined and its useEffect called BEFORE any early returns (Rules of Hooks)\n const handleBackFromSummary = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n isGoingBackRef.current = true;\n store._unresolveInputField(el);\n }\n // displayIndex stays unchanged — it already points to the last step (N-1)\n };\n\n useEffect(() => {\n if (backTrigger !== prevBackTriggerRef.current) {\n prevBackTriggerRef.current = backTrigger;\n handleBackFromSummary();\n }\n }, [backTrigger]);\n\n if (!enabled || fields.length === 0) return null;\n\n // Always show the first remaining field — the array shrinks as fields are resolved\n const currentField = fields[0];\n if (!currentField) return null;\n\n // ── Shared submit / skip / back helpers ─────────────────────────────\n const handleSubmit = (elementId, value) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: false });\n if (el && el.set) {\n if (isImage) {\n el.set({ src: String(value) });\n } else {\n el.set({ text: String(value) });\n }\n }\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n store.history.addUndoState();\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleSkip = (elementId) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: true });\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleBack = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n store._unresolveInputField(el);\n }\n setDisplayIndex((prev) => Math.max(0, prev - 1));\n };\n\n const canGoBack = displayIndex > 0;\n\n // ── Resolve which dialog component to use ───────────────────────────\n // Priority: per-type custom dialog > global CustomDialog > built-in\n const TYPE_DIALOG_MAP = {\n text: config.CustomTextDialog,\n date: config.CustomDateDialog,\n integer: config.CustomIntegerDialog,\n image: config.CustomImageDialog,\n };\n\n const fieldType = (currentField.custom && currentField.custom.inputType) || 'text';\n const PerTypeDialog = TYPE_DIALOG_MAP[fieldType];\n const GlobalCustomDialog = config.CustomDialog;\n const ResolvedDialog = PerTypeDialog || GlobalCustomDialog || null;\n\n if (ResolvedDialog) {\n return (\n <ResolvedDialog\n field={currentField}\n fields={fields}\n currentIndex={displayIndex}\n totalCount={totalCount}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n onComplete={() => {\n store.history.addUndoState();\n if (onComplete) onComplete();\n }}\n />\n );\n }\n\n return (\n <SingleFieldDialog\n field={currentField}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n currentIndex={displayIndex}\n totalCount={totalCount}\n />\n );\n});\n\nInputFieldsDialog.displayName = 'InputFieldsDialog';\nexport default InputFieldsDialog;\nexport { InputFieldsDialog };\n","import React, { useRef, useEffect, useCallback, useState } from 'react';\nimport { Stage, Layer, Rect, Transformer, Group, Image as KonvaImage, Shape } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport ElementRenderer from './element';\nimport InputFieldsDialog from '../components/InputFieldsDialog';\n\n// Generate a checkerboard pattern tile (off-screen canvas)\nconst createCheckerboardImage = (tileSize = 10, color1 = '#d4d4d4', color2 = '#ffffff') => {\n const canvas = document.createElement('canvas');\n canvas.width = tileSize * 2;\n canvas.height = tileSize * 2;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = color1;\n ctx.fillRect(0, 0, tileSize, tileSize);\n ctx.fillRect(tileSize, tileSize, tileSize, tileSize);\n ctx.fillStyle = color2;\n ctx.fillRect(tileSize, 0, tileSize, tileSize);\n ctx.fillRect(0, tileSize, tileSize, tileSize);\n const img = new window.Image();\n img.src = canvas.toDataURL();\n return img;\n};\n\nlet _checkerImg = null;\nconst getCheckerboardImage = () => {\n if (!_checkerImg) _checkerImg = createCheckerboardImage();\n return _checkerImg;\n};\n\nconst CheckerboardBackground = ({ w, h }) => {\n const [ready, setReady] = useState(false);\n const imgRef = useRef(getCheckerboardImage());\n useEffect(() => {\n const img = imgRef.current;\n if (img.complete) { setReady(true); return; }\n img.onload = () => setReady(true);\n return () => { img.onload = null; };\n }, []);\n if (!ready) return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillPatternImage={imgRef.current}\n fillPatternRepeat=\"repeat\"\n listening={false}\n name=\"page-background\"\n />\n );\n};\n\nconst ImageBackground = ({ url, w, h }) => {\n const [image, setImage] = useState(null);\n useEffect(() => {\n if (!url) { setImage(null); return; }\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => setImage(img);\n img.onerror = () => setImage(null);\n img.src = url;\n return () => { img.onload = null; img.onerror = null; };\n }, [url]);\n if (!image) return <Rect x={0} y={0} width={w} height={h} fill=\"#f0f0f0\" listening={false} name=\"page-background\" />;\n\n // \"cover\" fit: scale to fill canvas while maintaining aspect ratio, then center\n const imgW = image.naturalWidth || image.width;\n const imgH = image.naturalHeight || image.height;\n const scale = Math.max(w / imgW, h / imgH);\n const drawW = imgW * scale;\n const drawH = imgH * scale;\n const drawX = (w - drawW) / 2;\n const drawY = (h - drawH) / 2;\n\n return (\n <Group clipX={0} clipY={0} clipWidth={w} clipHeight={h} listening={false} name=\"page-background\">\n <KonvaImage x={drawX} y={drawY} width={drawW} height={drawH} image={image} listening={false} />\n </Group>\n );\n};\n\nconst PageBackground = observer(({ store }) => {\n const page = store.activePage;\n if (!page) return null;\n\n const bg = page.background;\n const w = store.width;\n const h = store.height;\n\n if (!bg) {\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n }\n\n if (bg === 'transparent') {\n return <CheckerboardBackground w={w} h={h} />;\n }\n\n // Linear gradient stored as JSON\n if (bg.startsWith('{')) {\n try {\n const grad = JSON.parse(bg);\n if (grad.type === 'linear') {\n const angle = (grad.angle || 0) * (Math.PI / 180);\n const cx = w / 2, cy = h / 2;\n const len = Math.sqrt(w * w + h * h) / 2;\n const x1 = cx - len * Math.cos(angle);\n const y1 = cy - len * Math.sin(angle);\n const x2 = cx + len * Math.cos(angle);\n const y2 = cy + len * Math.sin(angle);\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillLinearGradientStartPoint={{ x: x1, y: y1 }}\n fillLinearGradientEndPoint={{ x: x2, y: y2 }}\n fillLinearGradientColorStops={[0, grad.colors?.[0] || '#000000', 1, grad.colors?.[1] || '#ffffff']}\n listening={false}\n name=\"page-background\"\n />\n );\n }\n } catch (e) { /* fall through */ }\n }\n\n // Image URL background\n if (bg.startsWith('http')) {\n return <ImageBackground url={bg} w={w} h={h} />;\n }\n\n // Solid color\n if (bg.startsWith('#') || bg.startsWith('rgb') || bg.startsWith('hsl') || ['white', 'black', 'red', 'blue', 'green'].includes(bg)) {\n return <Rect x={0} y={0} width={w} height={h} fill={bg} listening={false} name=\"page-background\" />;\n }\n\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n});\n\n// Semi-transparent overlay that dims everything outside the page boundary.\n// Draws a huge rectangle with a rectangular hole cut out for the page area.\nconst PageOverlayFrame = observer(({ store }) => {\n const W = store.width;\n const H = store.height;\n if (!W || !H) return null;\n const BIG = 100000; // large enough to cover viewport at any zoom\n return (\n <Shape\n sceneFunc={(ctx, shape) => {\n ctx.beginPath();\n // Outer rectangle (clockwise)\n ctx.moveTo(-BIG, -BIG);\n ctx.lineTo(BIG, -BIG);\n ctx.lineTo(BIG, BIG);\n ctx.lineTo(-BIG, BIG);\n ctx.closePath();\n // Inner rectangle (counter-clockwise to create hole)\n ctx.moveTo(0, 0);\n ctx.lineTo(0, H);\n ctx.lineTo(W, H);\n ctx.lineTo(W, 0);\n ctx.closePath();\n ctx.fillStrokeShape(shape);\n }}\n fill=\"rgba(240,240,240,0.5)\"\n listening={false}\n />\n );\n});\n\nconst ALL_ANCHORS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nconst TEXT_ANCHORS = [\n 'top-left',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst CORNER_ANCHORS = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst SelectionTransformer = observer(({ store, stageRef }) => {\n const transformerRef = useRef(null);\n\n const selectedIds = [...store.selectedElementsIds];\n\n // Filter out line elements — they use custom endpoint handles instead\n const nonLineIds = selectedIds.filter((id) => {\n const el = store.getElementById(id);\n return el && el.type !== 'line';\n });\n\n const allText = nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'text';\n })();\n\n const useCorners = nonLineIds.length > 1 || (nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'group';\n })());\n\n const targetAnchors = useCorners ? CORNER_ANCHORS : allText ? TEXT_ANCHORS : ALL_ANCHORS;\n\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (!transformerRef.current || !stageRef.current) return;\n\n const stage = stageRef.current;\n const nodes = [];\n\n nonLineIds.forEach((id) => {\n const node = stage.findOne(`#${id}`);\n if (node) nodes.push(node);\n });\n\n transformerRef.current.enabledAnchors(targetAnchors);\n transformerRef.current.nodes(nodes);\n transformerRef.current.getLayer()?.batchDraw();\n });\n return () => cancelAnimationFrame(frame);\n }, [nonLineIds.length, nonLineIds.join(','), targetAnchors]);\n\n return (\n <Transformer\n ref={transformerRef}\n rotateEnabled={true}\n enabledAnchors={ALL_ANCHORS}\n boundBoxFunc={(oldBox, newBox) => {\n // Reject flip (negative) and too-small dimensions\n if (newBox.width < 5 || newBox.height < 5) {\n return oldBox;\n }\n return newBox;\n }}\n anchorSize={8}\n anchorCornerRadius={2}\n borderStroke=\"#0d83cd\"\n anchorStroke=\"#0d83cd\"\n anchorFill=\"#ffffff\"\n padding={0}\n />\n );\n});\n\nconst Workspace = observer(({ store, components = {}, showInputFieldsPopup = true, onInputFieldsComplete, backTrigger = 0 }) => {\n const stageRef = useRef(null);\n const containerRef = useRef(null);\n const [stageSize, setStageSize] = useState({ width: 800, height: 600 });\n\n const { PageControls } = components;\n\n // Resize observer\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateSize = () => {\n const { width, height } = container.getBoundingClientRect();\n setStageSize({ width, height });\n\n // Auto-fit the canvas.\n // Guard: if the container hasn't been laid out yet (width/height === 0)\n // the arithmetic produces a negative scale which mirrors the entire canvas.\n // Skip the update in that case — the ResizeObserver will fire again once\n // the container has real dimensions.\n if (store.width > 0 && store.height > 0 && width > 0 && height > 0) {\n const padding = 40;\n const scaleX = (width - padding * 2) / store.width;\n const scaleY = (height - padding * 2) / store.height;\n const scale = Math.min(scaleX, scaleY, 1);\n if (scale > 0) {\n store._setScaleToFit(scale);\n if (store.scale === 1) {\n store.setScale(scale);\n }\n }\n }\n };\n\n updateSize();\n\n const observer = new ResizeObserver(updateSize);\n observer.observe(container);\n\n return () => observer.disconnect();\n }, [store.width, store.height]);\n\n // Set stage ref on store for export\n useEffect(() => {\n if (stageRef.current) {\n store._setStageRef(stageRef.current);\n }\n }, [stageRef.current]);\n\n const handleStageMouseDown = useCallback(\n (e) => {\n let target = e.target;\n\n // Click on empty area or background -> deselect\n if (target === target.getStage() || target.attrs?.name === 'page-background') {\n store.selectElements([]);\n return;\n }\n\n // Walk up the node tree to find the nearest ancestor with an element id\n // (needed for Group-wrapped elements like lines)\n let clickedId = target.id();\n while (!clickedId && target.parent && target.parent !== target.getStage()) {\n target = target.parent;\n clickedId = target.id();\n }\n if (!clickedId) return;\n\n const element = store.getElementById(clickedId);\n if (!element || !element.selectable) return;\n\n // If element is inside a group, select the top-level group instead\n const targetElement = element.top || element;\n const targetId = targetElement.id;\n\n if (e.evt?.ctrlKey || e.evt?.metaKey) {\n // Multi-select with Ctrl (Cmd on Mac)\n const currentIds = [...store.selectedElementsIds];\n const idx = currentIds.indexOf(targetId);\n if (idx >= 0) {\n currentIds.splice(idx, 1);\n } else {\n currentIds.push(targetId);\n }\n store.selectElements(currentIds);\n } else if (!store.selectedElementsIds.includes(targetId)) {\n store.selectElements([targetId]);\n }\n },\n [store]\n );\n\n const handleTransformEnd = useCallback(() => {\n // Save to history after transform\n store.history.addUndoState();\n }, [store]);\n\n const handleDragEnd = useCallback(() => {\n // Save to history after drag\n store.history.addUndoState();\n }, [store]);\n\n // Keyboard shortcuts\n useEffect(() => {\n const handleKeyDown = (e) => {\n // Only handle if stage container or body is focused\n const target = e.target;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n return;\n }\n\n // Delete / Backspace\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n store.deleteElements(selectedIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+Z / Cmd+Z -> Undo\n if ((e.ctrlKey || e.metaKey) && e.key === 'z' && !e.shiftKey) {\n store.history.undo();\n e.preventDefault();\n }\n\n // Ctrl+Y / Cmd+Shift+Z -> Redo\n if (\n ((e.ctrlKey || e.metaKey) && e.key === 'y') ||\n ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'z')\n ) {\n store.history.redo();\n e.preventDefault();\n }\n\n // Ctrl+D -> Duplicate\n if ((e.ctrlKey || e.metaKey) && e.key === 'd') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0 && store.activePage) {\n const newIds = [];\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.clone) {\n const cloned = el.clone({ x: (el.x || 0) + 20, y: (el.y || 0) + 20 }, { skipSelect: true });\n if (cloned) newIds.push(cloned.id);\n }\n });\n store.selectElements(newIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+G -> Group selected elements\n if ((e.ctrlKey || e.metaKey) && e.key === 'g' && !e.shiftKey) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 1) {\n const group = store.groupElements(selectedIds);\n if (group) {\n store.selectElements([group.id]);\n store.history.addUndoState();\n }\n e.preventDefault();\n }\n }\n\n // Ctrl+Shift+G -> Ungroup\n if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'G') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length === 1) {\n const el = store.getElementById(selectedIds[0]);\n if (el && el.type === 'group') {\n store.ungroupElements([el.id]);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n }\n\n // Arrow keys -> nudge\n const NUDGE = e.shiftKey ? 10 : 1;\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key)) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.set) {\n if (e.key === 'ArrowLeft') el.set({ x: el.x - NUDGE });\n if (e.key === 'ArrowRight') el.set({ x: el.x + NUDGE });\n if (e.key === 'ArrowUp') el.set({ y: el.y - NUDGE });\n if (e.key === 'ArrowDown') el.set({ y: el.y + NUDGE });\n }\n });\n e.preventDefault();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [store]);\n\n // Zoom with mouse wheel\n const handleWheel = useCallback(\n (e) => {\n e.evt.preventDefault();\n const stage = stageRef.current;\n if (!stage) return;\n\n const scaleBy = 1.05;\n const oldScale = store.scale;\n const newScale =\n e.evt.deltaY > 0 ? oldScale / scaleBy : oldScale * scaleBy;\n\n store.setScale(Math.max(0.1, Math.min(5, newScale)));\n },\n [store]\n );\n\n const page = store.activePage;\n const scale = store.scale;\n // Reading _fontVersion makes this observer re-render whenever a font finishes\n // loading, so Konva redraws text with the correct font instead of the fallback.\n void store._fontVersion;\n\n // Center the canvas in the viewport\n const offsetX = (stageSize.width - store.width * scale) / 2;\n const offsetY = (stageSize.height - store.height * scale) / 2;\n\n return (\n <div\n ref={containerRef}\n style={{\n width: '100%',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n position: 'relative',\n background: '#f0f0f0',\n }}\n >\n <Stage\n ref={stageRef}\n width={stageSize.width}\n height={stageSize.height}\n onMouseDown={handleStageMouseDown}\n onTouchStart={handleStageMouseDown}\n onWheel={handleWheel}\n >\n <Layer\n x={offsetX}\n y={offsetY}\n scaleX={scale}\n scaleY={scale}\n >\n {/* Canvas shadow */}\n <Rect\n x={4}\n y={4}\n width={store.width}\n height={store.height}\n fill=\"rgba(0,0,0,0.1)\"\n cornerRadius={0}\n listening={false}\n />\n\n {/* Page background */}\n <PageBackground store={store} />\n\n {/* Elements */}\n {page &&\n page.children.map((element) => (\n <ElementRenderer\n key={element.id}\n element={element}\n isSelected={store.selectedElementsIds.includes(element.id)}\n onTransformEnd={handleTransformEnd}\n onDragEnd={handleDragEnd}\n />\n ))}\n\n {/* Overlay that dims content outside the page */}\n <PageOverlayFrame store={store} />\n\n {/* Selection transformer */}\n <SelectionTransformer store={store} stageRef={stageRef} />\n </Layer>\n </Stage>\n\n {/* Page controls slot */}\n {PageControls !== undefined ? (\n PageControls === null ? null : <PageControls store={store} />\n ) : null}\n\n {/* Input fields popup */}\n <InputFieldsDialog store={store} enabled={showInputFieldsPopup} onComplete={onInputFieldsComplete} backTrigger={backTrigger} />\n </div>\n );\n});\n\nWorkspace.displayName = 'Workspace';\nexport default Workspace;\nexport { Workspace };\n","const UNITS = {\n px: 1,\n mm: 25.4,\n cm: 2.54,\n in: 1,\n pt: 72,\n pc: 6,\n};\n\nexport function unitToPx({ unit = 'px', dpi = 72, unitVal = 0 }) {\n if (unit === 'px') return unitVal;\n if (unit === 'in') return unitVal * dpi;\n if (unit === 'mm') return (unitVal / 25.4) * dpi;\n if (unit === 'cm') return (unitVal / 2.54) * dpi;\n if (unit === 'pt') return (unitVal / 72) * dpi;\n if (unit === 'pc') return (unitVal / 6) * dpi;\n return unitVal;\n}\n\nexport function pxToUnit({ unit = 'px', dpi = 72, pxVal = 0 }) {\n if (unit === 'px') return pxVal;\n if (unit === 'in') return pxVal / dpi;\n if (unit === 'mm') return (pxVal / dpi) * 25.4;\n if (unit === 'cm') return (pxVal / dpi) * 2.54;\n if (unit === 'pt') return (pxVal / dpi) * 72;\n if (unit === 'pc') return (pxVal / dpi) * 6;\n return pxVal;\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\n\n// Layout components matching polotno's PolotnoContainer / SidePanelWrap / WorkspaceWrap\nexport function DesignContainer({ children, style, ...props }) {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n ...style,\n }}\n {...props}\n >\n {children}\n </Box>\n );\n}\n\n// Alias for polotno compat\nexport const PolotnoContainer = DesignContainer;\n\nexport function SidePanelWrap({ children, style, ...props }) {\n return (\n <Box\n sx={{\n display: 'flex',\n flexShrink: 0,\n height: '100%',\n overflow: 'visible',\n ...style,\n }}\n {...props}\n >\n {children}\n </Box>\n );\n}\n\nexport function WorkspaceWrap({ children, style, ...props }) {\n return (\n <Box\n sx={{\n flex: 1,\n minHeight: 0,\n position: 'relative',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n ...style,\n }}\n {...props}\n >\n {children}\n </Box>\n );\n}\n\n// Re-export store\nexport { createStore, Store } from './model/store';\n\n// Re-export side panel\nexport {\n SidePanel,\n DEFAULT_SECTIONS,\n SectionTab,\n ImagesGrid,\n TextSection,\n BackgroundSection,\n LayersSection,\n ElementsSection,\n UploadSection,\n InputFieldsSection,\n} from './side-panel/index';\n\n// Re-export toolbar\nexport { Toolbar } from './toolbar/toolbar';\nexport { ZoomButtons } from './toolbar/zoom-buttons';\n\n// Re-export workspace\nexport { Workspace } from './canvas/workspace';\n\n// Re-export config\nexport { setTranslations, getTranslations, t, setTheme, getTheme, setInputFieldsConfig, getInputFieldsConfig } from './config';\n\n// Re-export utils\nexport { unitToPx, pxToUnit } from './utils/unit';\nexport { getImageSize, loadImage, cropImage } from './utils/image';\nexport { fetchGoogleFonts, loadGoogleFont, DEFAULT_FONTS } from './utils/fonts';\n\n// Re-export components\nexport { InputFieldsDialog } from './components/InputFieldsDialog';\n"],"names":["Node","types","model","id","optional","identifier","uuidv4","type","string","name","opacity","number","custom","frozen","visible","selectable","removable","alwaysOnTop","showInExport","preProcessSnapshot","snapshot","s","_objectSpread","locked","draggable","undefined","resizable","contentEditable","styleEditable","parseFloat","views","self","page","parent","getParent","e","store","getRoot","top","grandParent","arr","zIndex","indexOf","actions","toJSON","json","_i","_Object$keys","Object","keys","length","key","startsWith","clone","attrs","arguments","_ref","_ref$skipSelect","skipSelect","assign","addElement","set","_i2","_Object$entries","entries","_Object$entries$_i","_slicedToArray","value","moveUp","moveElementUp","moveTop","moveElementTop","moveDown","moveElementDown","moveBottom","moveElementBottom","setZIndex","setElementZIndex","beforeDestroy","Animation","delay","duration","enabled","data","ShapeFilter","intensity","Shape","named","props","x","y","width","height","rotation","animations","array","blurEnabled","blurRadius","brightnessEnabled","brightness","sepiaEnabled","grayscaleEnabled","warmEnabled","coldEnabled","filters","map","shadowEnabled","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","shadowOpacity","numericKeys","forEach","boolKeys","setAnimation","existing","find","a","push","setFilter","ImageElement","src","cropX","cropY","cropWidth","cropHeight","cornerRadius","flipX","flipY","clipSrc","borderColor","borderSize","keepRatio","stretchEnabled","_cropModeEnabled","toggleCropMode","flag","TextElement","text","placeholder","fontSize","fontFamily","fontStyle","fontWeight","union","textDecoration","textTransform","fill","align","verticalAlign","strokeWidth","stroke","lineHeight","letterSpacing","backgroundEnabled","backgroundColor","backgroundOpacity","backgroundCornerRadius","backgroundPadding","curveEnabled","curvePower","parts","trim","split","styleWords","weightWords","weightKeywords","p","includes","join","String","_editModeEnabled","toggleEditMode","editing","SVGElement","maskSrc","colorsReplace","replaceColor","oldColor","newColor","FigureElement","subType","dash","pathData","LineElement","color","startHead","endHead","TYPES_MAP","image","svg","figure","line","ElementUnion","dispatcher","GroupElement","children","late","minX","Infinity","minY","maxX","maxY","child","cx","cy","cw","ch","Math","min","max","gx","gy","cj","getSnapshot","forEveryChild","node","cb","Page","literal","background","bleed","_exporting","_rendering","_forceMount","computedWidth","computedHeight","startTime","time","_iterator","_createForOfIteratorHelper","pages","_step","n","done","err","f","_exportingOrRendering","select","selectPage","addPage","elementData","newElement","selectElements","_findChildIndex","findIndex","c","canMoveElementsUp","ids","_iterator2","_step2","idx","moveElementsUp","_iterator3","_step3","splice","canMoveElementsTop","_iterator4","_step4","moveElementsTop","_iterator5","_step5","canMoveElementsDown","_iterator6","_step6","moveElementsDown","_iterator7","_step7","canMoveElementsBottom","_iterator8","_step8","moveElementsBottom","_iterator9","_step9","setSize","_ref2","useMagic","softChange","setPageZIndex","_forEachElementUp","callback","i","_forEachElementDown","play","History","history","undoIdx","targetPath","_isTransacting","_skipSave","_ignoring","canUndo","canRedo","startTransaction","endTransaction","skipSave","addUndoState","ignore","func","transaction","_asyncToGenerator","_regenerator","m","_callee","w","_context","root","stateToSave","scale","scaleToFit","console","warn","_restoreState","state","currentHistory","currentScale","currentScaleToFit","applySnapshot","savedPage","targetIds","currentIds","every","snapById","clear","undo","redo","afterCreate","replaceState","requestAddState","isBase64DataUrl","v","stripBase64FromElement","el","out","isInputField","inputField","Array","isArray","stripBase64FromExport","Font","url","styles","Audio","endTime","volume","Store","role","fonts","audios","unit","dpi","schemaVersion","bleedVisible","rulesVisible","distanceGuidesVisible","openedSidePanel","previousOpenedSidePanel","tool","selectedElementsIds","_activePageId","_selectedPagesIds","_elementsPixelRatio","_stageRef","_listeners","Map","_key","_showCredit","currentTime","isPlaying","_toolbarPanel","_fontVersion","_pendingInputFields","_idsMap","selectedElements","filter","Boolean","selectedShapes","activePage","selectedPages","active","total","inputFields","fields","_hasCroppedImages","getElementById","requestInputFields","_resolveInputField","_unresolveInputField","alreadyPending","some","unshift","clearPendingInputFields","_Object$entries2","_Object$entries2$_i","setUnit","setRole","setTool","setToolOptions","options","pageData","newPage","selectPages","replace","stillSelected","elementId","toggleBleed","toggleRulers","toggleDistanceGuides","openSidePanel","panelName","openToolbarPanel","closeToolbarPanel","setScale","_setScaleToFit","setElementsPixelRatio","ratio","deletePages","toRemove","destroy","groupElements","elements","sortedIndices","sort","b","groupChildren","_ref3","group","ungroupElements","newChildIds","groupSnapshot","groupX","groupY","childSnapshot","newEl","deleteElements","on","event","has","get","listeners","_emit","_setStageRef","ref","_toCanvas","_arguments","_ref4","_ref4$pixelRatio","pixelRatio","pageId","stage","layer","prevX","prevY","prevScaleX","prevScaleY","canvas","ignoreBackground","mimeType","includeBleed","_skipTimeout","quickMode","Error","getLayers","scaleX","scaleY","draw","toCanvas","toDataURL","_arguments2","_callee2","_ref5","_ref5$mimeType","_ref5$quality","quality","rest","_context2","dpiMetadata","_objectWithoutProperties","_excluded","toBlob","_arguments3","_callee3","_ref6","_ref6$mimeType","_ref6$quality","_context3","_excluded2","Promise","resolve","reject","blob","saveAsImage","_arguments4","_callee4","_ref7","_ref7$fileName","fileName","exportProps","dataURL","link","_context4","_excluded3","document","createElement","download","href","click","toPDFDataURL","_arguments5","_callee5","_ref8","_ref8$pixelRatio","_ref8$includeBleed","widthPt","heightPt","orientation","pdf","prevActivePageId","imgData","_context5","_toConsumableArray","jsPDF","format","compress","r","setTimeout","addImage","output","saveAsPDF","_arguments6","_callee6","_ref9","_ref9$fileName","_context6","_excluded4","saveAsJSON","_ref0","_ref0$fileName","_ref0$stripBase","stripBase64","JSON","stringify","Blob","URL","createObjectURL","revokeObjectURL","waitLoading","_arguments7","_callee7","_ref1","_ref1$_skipTimeout","_context7","loadJSON","keepHistory","parse","font","audio","_autoLoadFonts","_ref10","_ref10$keepHistory","addFont","removeFont","addAudio","removeAudio","audioId","loadFont","_callee8","_t","_context8","concat","toLowerCase","encodeURIComponent","rel","onload","onerror","head","appendChild","load","ready","batchDraw","Set","collectFromChildren","add","validate","errors","path","message","checkActivePage","setCurrentTime","_togglePlaying","playing","stop","seek","_initConfig","showCredit","createStore","_ref11","_ref11$key","_ref11$showCredit","create","SectionTab","onClick","_jsxs","ButtonBase","sx","display","flexDirection","alignItems","justifyContent","padding","minHeight","borderRadius","transition","_jsx","Box","mb","Typography","variant","GLOBAL_KEY","window","_get","deepMerge","target","source","result","_typeof","setTranslations","newTranslations","getTranslations","t","defaultValue","current","part","_theme","translations","_setTranslations","setTheme","theme","getTheme","INPUT_FIELDS_CONFIG_KEY","setInputFieldsConfig","config","getInputFieldsConfig","addTextToCanvas","opts","scaleFactor","round","defaults","TEXT_TEMPLATES","preview","_fontsPreloaded","preloadTemplateFonts","all","fetch","then","results","_data$pages","TextTab","observer","_useState","useState","_useState2","loadingIdx","setLoadingIdx","useEffect","presets","label","handleTemplateClick","useCallback","tmpl","_data$pages2","res","templateChildren","newIds","childData","error","_x","_x2","apply","preset","Button","fullWidth","py","px","mt","gridTemplateColumns","gap","cursor","overflow","border","boxShadow","alt","loading","crossOrigin","style","_uploadedFonts","_fontIdCounter","registerFont","displayName","blobUrl","textContent","familyName","styleEl","MyFontsTab","_useState3","_useState4","setRenderKey","forceUpdate","k","fileInputRef","useRef","handleUpload","_e$target$files","file","files","rawName","_registerFont","Date","now","handleDelete","_font$styleEl","parentNode","removeChild","handleFontClick","accept","onChange","_fileInputRef$current","startIcon","FileUploadOutlinedIcon","position","textAlign","userSelect","IconButton","size","stopPropagation","bottom","right","DeleteOutlineIcon","TextPanelContent","_useState5","_useState6","activeTab","setActiveTab","borderBottom","tab","flex","overflowY","TextSection","Tab","TextFieldsIcon","Panel","hsvToRgb","h","floor","q","tt","g","rgbToHsv","d","hexToRgb","hex","parseInt","substr","rgbToHex","toString","padStart","hueToColor","UNSPLASH_KEY","UNSPLASH_BASE","SWATCH_COLORS","PICKER_PRESETS","CHECKER_SVG","SatBrightSquare","hue","sat","bright","_ref$size","dragging","update","_ref$current","rect","getBoundingClientRect","clientX","left","clientY","onMove","preventDefault","onUp","addEventListener","removeEventListener","onMouseDown","transform","pointerEvents","HueBar","_ref2$width","_ref$current2","ColorPicker","hsv","setHsv","rgb","setRgb","hexInput","setHexInput","emit","newRgb","handleHex","val","test","handleRgb","isNaN","smallSx","TextField","onFocus","inputProps","disabled","flexWrap","ColorPopup","open","onClose","onBackgroundChange","_useState7","_useState8","setTab","_useState9","_useState0","solidColor","setSolidColor","_useState1","_useState10","gradColors","setGradColors","_useState11","_useState12","gradAngle","setGradAngle","_useState13","_useState14","activeStop","setActiveStop","colors","angle","handleSolid","handleGradColor","nc","handleAngle","tabStyle","pb","ClickAwayListener","onClickAway","Paper","elevation","_Fragment","flexShrink","transformOrigin","ml","BackgroundPanelContent","_useState15","_useState16","pickerOpen","setPickerOpen","_useState17","_useState18","searchQuery","setSearchQuery","_useState19","_useState20","photos","setPhotos","_useState21","_useState22","setLoading","_useState23","_useState24","lastSolidColor","setLastSolidColor","_useState25","_useState26","hasMore","setHasMore","_useState27","_useState28","pageNum","setPageNum","hasMoreRef","pageNumRef","currentQueryRef","debounceRef","isFirstRender","requestIdRef","observerRef","fetchingRef","bg","fetchPhotos","query","pg","totalPages","more","_args","total_pages","prev","clearTimeout","sentinelRef","disconnect","IntersectionObserver","isIntersecting","threshold","observe","setBackground","overflowX","minWidth","backgroundImage","backgroundSize","InputProps","startAdornment","InputAdornment","SearchIcon","photo","_photo$urls","_photo$urls2","thumb","urls","small","_photo$urls3","_photo$urls4","regular","aspectRatio","alt_description","objectFit","BackgroundSection","WallpaperIcon","ELEMENT_ICONS","ImageIcon","CategoryIcon","TimelineIcon","CodeIcon","LayerItem","element","index","isSelected","Icon","isLocked","handleSelect","handleToggleVisibility","handleToggleLock","handleMoveUp","handleMoveDown","substring","ListItem","ListItemIcon","ListItemText","primary","primaryTypographyProps","noWrap","ArrowUpwardIcon","ArrowDownwardIcon","VisibilityIcon","VisibilityOffIcon","LockIcon","LockOpenIcon","LayersPanelContent","reverse","List","dense","disablePadding","LayersSection","LayersIcon","LINES","svgLine","strokeDasharray","marker","startDot","startSquare","SHAPES","FILL_COLOR","builtInPaths","circle","star","triangle","diamond","hexagon","polygon","ShapeThumbnail","shape","svgPath","viewBox","LineThumbnail","x1","y1","x2","y2","strokeLinecap","points","ElementsPanelContent","addShape","isRect","addLine","lineWidth","shapeBoxSx","lineBoxSx","ElementsSection","getImageSize","img","Image","naturalWidth","naturalHeight","loadImage","cropImage","outputWidth","outputHeight","ctx","getContext","drawImage","UploadPanelContent","images","setImages","isDragging","setIsDragging","processFiles","newImages","_yield$getImageSize","_t2","random","slice","handleDrop","_e$dataTransfer$files","dataTransfer","from","handleDragOver","handleDragLeave","handleFileInput","addImageToCanvas","removeImage","onDrop","onDragOver","onDragLeave","CloudUploadIcon","multiple","paddingTop","className","DeleteIcon","UploadSection","FILTER_PRESETS","EffectRow","onToggle","step","Switch","checked","Slider","_","ImageEffectsPanel","panel","handleClose","commit","resetAll","applyPreset","grayscale","sepia","cold","natural","warm","getActivePreset","borderRight","CloseIcon","isActive","MASK_SHAPES","clipFunc","beginPath","ellipse","PI","closePath","clipId","moveTo","lineTo","outerR","innerR","cos","sin","topY","bezierCurveTo","quadraticCurveTo","ImageMaskPanel","applyMask","removeMask","hasMask","maxWidth","maxHeight","SliderRow","_ref$min","_ref$max","_ref$step","TextEffectsPanel","DEFAULT_SECTIONS","SidePanel","sections","defaultSection","sectionsList","activeSection","setActiveSection","section","handleTabClick","sectionName","activeSectionObj","TabComponent","visibleInList","borderLeft","ChevronLeftIcon","ImagesGrid","_ref$images","getPreview","onSelect","_ref$rowsNumber","rowsNumber","_ref$isLoading","isLoading","loadMore","itemHeight","CircularProgress","columns","item","currentTarget","IMAGE_PLACEHOLDER_SRC","MONTH_NAMES","DATE_FORMATS","formatDate","date","mm","getMonth","dd","getDate","yyyy","getFullYear","monthName","InputFieldCard","icon","description","InputFieldsPanelContent","dateFormat","setDateFormat","textPrompt","setTextPrompt","datePrompt","setDatePrompt","integerPrompt","setIntegerPrompt","imagePrompt","setImagePrompt","textRequired","setTextRequired","dateRequired","setDateRequired","integerRequired","setIntegerRequired","imageRequired","setImageRequired","addInputElement","inputType","extra","promptText","required","dummyText","defaultPrompt","textWidth","mr","FormControlLabel","control","Checkbox","CalendarTodayIcon","FormControl","InputLabel","Select","fmt","MenuItem","NumbersIcon","Divider","my","MarkAsVariableForm","_selectedElement$cust","markLabel","setMarkLabel","markRequired","setMarkRequired","markInputType","setMarkInputType","selectedIds","selectedElement","isImageElement","isTextElement","isSupportedElement","isAlreadyVariable","_selectedElement$cust2","_selectedElement$cust3","_selectedElement$cust4","handleMark","handleUnmark","Alert","severity","Chip","bgcolor","InputFieldsSection","InputIcon","GOOGLE_FONTS_API","cachedFonts","fetchGoogleFonts","_fetchGoogleFonts","apiKey","response","items","family","variants","category","loadGoogleFont","_loadGoogleFont","DEFAULT_FONTS","_fontPreviewLoaded","loadFontPreview","FontPreviewOption","memo","liProps","io","entry","rootMargin","TextToolbar","_store$_toolbarPanel","handleFontSizeChange","toggleBold","toggleItalic","toggleUnderline","toggleStrikethrough","handleAlignChange","handleColorChange","Autocomplete","disableClearable","renderOption","option","renderInput","params","ListboxProps","flexItem","mx","Tooltip","title","FormatBoldIcon","FormatItalicIcon","FormatUnderlinedIcon","StrikethroughSIcon","ToggleButtonGroup","exclusive","ToggleButton","FormatAlignLeftIcon","FormatAlignCenterIcon","FormatAlignRightIcon","whiteSpace","AutoAwesomeIcon","_store$_toolbarPanel2","toolbarBtnSx","ImageToolbar","_store$_toolbarPanel5","_store$_toolbarPanel6","flipAnchor","setFlipAnchor","handleFlipX","handleFlipY","handleFitToPage","handleEffects","_store$_toolbarPanel3","handleMask","_store$_toolbarPanel4","Menu","anchorEl","anchorOrigin","vertical","horizontal","slotProps","paper","SwapHorizIcon","SwapVertIcon","FigureToolbar","handleFillChange","handleStrokeChange","handleStrokeWidthChange","handleCornerRadiusChange","LineToolbar","CommonControls","handleDuplicate","handleOpacityChange","handleOpacityCommit","OpacityIcon","onChangeCommitted","ContentCopyIcon","DefaultDownloadButton","setAnchorEl","fileType","setFileType","setQuality","exporting","setExporting","handleClick","qualityToPixelRatio","resWidth","resHeight","handleDownload","fileTypeLabel","png","jpeg","endIcon","ArrowDropDownIcon","Popover","DefaultImportButton","importing","setImporting","React","handleFileChange","jsonData","_t3","FileUploadIcon","TYPE_TOOLBARS","rowSx","scrollbarWidth","Toolbar","_ref11$components","components","ActionControls","ImportButton","DownloadButton","TypeToolbar","UndoIcon","RedoIcon","visibility","ZoomButtons","zoomIn","zoomOut","zoomToFit","zoomPercentage","ZoomOutIcon","ZoomInIcon","FitScreenIcon","SepiaFilter","imageData","WarmFilter","ColdFilter","ImageElementComponent","onTransformEnd","onDragEnd","groupChild","imageRef","groupRef","setImage","autoCropRef","autoCropSrcRef","Konva","Filters","Blur","Brighten","Grayscale","hasFilters","hasBorder","needsCache","cache","clearCache","handleDragEnd","updateAutoCrop","oldX","oldY","oldW","oldH","newX","newY","newW","newH","crop","newAspect","xMoved","abs","yMoved","wChanged","hChanged","handleTransform","handleTransformEnd","modelHasCrop","natW","natH","elemAspect","imgAspect","cropProps","ac","rw","rh","rx","ry","maskShape","imageNode","KonvaImage","offsetX","offsetY","Group","onTap","onTransform","Rect","listening","TextElementComponent","_element$backgroundOp","textRef","textHeight","setTextHeight","onFontLoaded","_node$getLayer","getLayer","frame","requestAnimationFrame","cancelAnimationFrame","_node$getLayer2","newWidth","newFontSize","tNode","handleDblClick","textNode","grp","getStage","hide","stageContainer","container","textPosition","absolutePosition","absScale","getAbsoluteScale","cssFontStyle","cssFontWeight","textarea","borderWidth","margin","outline","resize","appearance","webkitAppearance","boxSizing","wordBreak","focus","removed","removeTextarea","show","displayText","toUpperCase","fontStyleStr","weight","pad","onDblClick","onDblTap","KonvaText","fillAfterStrokeEnabled","SVGElementComponent","_element$colorsReplac","_element$colorsReplac2","svgSrc","svgContent","atob","decodeURIComponent","RegExp","btoa","call","FigureElementComponent","_element$dash","shapeRef","commonProps","centerOffset","Circle","radiusX","radiusY","RegularPolygon","sides","radius","Star","numPoints","innerRadius","outerRadius","Path","Arrow","pointerLength","pointerWidth","HANDLE_SIZE","DEG","LineElementComponent","_element$dash2","rot","cosR","sinR","startX","startY","endX","endY","hasArrow","handleLineDragEnd","dx","dy","handleStartDrag","newSX","newSY","sqrt","newRotation","atan2","handleStartDragEnd","handleEndDrag","newEX","newEY","handleEndDragEnd","lineNode","hitStrokeWidth","KonvaLine","Fragment","onDragMove","GroupElementComponent","_ElementRenderer","updates","ELEMENT_RENDERERS","ElementRenderer","Renderer","parseDateFromFormat","dateStr","getTime","SingleFieldDialog","field","onSubmit","onSkip","onBack","canGoBack","currentIndex","totalCount","setValue","imagePreview","setImagePreview","isRequired","logoUrl","headerText","accentColor","progressPct","handleImageSelect","reader","FileReader","ev","readAsDataURL","handleSubmit","dateObj","formatted","handleKeyDown","sharedSx","inputStyle","onKeyDown","autoFocus","InputLabelProps","shrink","_fileInputRef$current2","inset","dialogStyle","titleStyle","xs","sm","promptStyle","ArrowBackIcon","submitButtonStyle","submitButtonText","skipButtonStyle","skipButtonText","InputFieldsDialog","onComplete","_ref2$enabled","_ref2$backTrigger","backTrigger","displayIndex","setDisplayIndex","initialTotalRef","completedHistoryRef","isGoingBackRef","prevBackTriggerRef","pendingFields","handleBackFromSummary","last","pop","previousValue","isImage","currentField","skipped","handleSkip","handleBack","TYPE_DIALOG_MAP","CustomTextDialog","CustomDateDialog","integer","CustomIntegerDialog","CustomImageDialog","fieldType","PerTypeDialog","GlobalCustomDialog","CustomDialog","ResolvedDialog","createCheckerboardImage","tileSize","color1","color2","fillStyle","fillRect","_checkerImg","getCheckerboardImage","CheckerboardBackground","setReady","imgRef","complete","fillPatternImage","fillPatternRepeat","ImageBackground","imgW","imgH","drawW","drawH","drawX","drawY","clipX","clipY","clipWidth","clipHeight","PageBackground","grad","_grad$colors","_grad$colors2","len","fillLinearGradientStartPoint","fillLinearGradientEndPoint","fillLinearGradientColorStops","PageOverlayFrame","W","H","BIG","sceneFunc","fillStrokeShape","ALL_ANCHORS","TEXT_ANCHORS","CORNER_ANCHORS","SelectionTransformer","stageRef","transformerRef","nonLineIds","allText","useCorners","targetAnchors","_transformerRef$curre","nodes","findOne","enabledAnchors","Transformer","rotateEnabled","boundBoxFunc","oldBox","newBox","anchorSize","anchorCornerRadius","borderStroke","anchorStroke","anchorFill","Workspace","_ref6$components","_ref6$showInputFields","showInputFieldsPopup","onInputFieldsComplete","_ref6$backTrigger","containerRef","stageSize","setStageSize","PageControls","updateSize","_container$getBoundin","ResizeObserver","handleStageMouseDown","_target$attrs","_e$evt","_e$evt2","clickedId","targetElement","targetId","evt","ctrlKey","metaKey","tagName","shiftKey","cloned","NUDGE","handleWheel","scaleBy","oldScale","newScale","deltaY","Stage","onTouchStart","onWheel","Layer","unitToPx","_ref$unit","_ref$dpi","_ref$unitVal","unitVal","pxToUnit","_ref2$unit","_ref2$dpi","_ref2$pxVal","pxVal","DesignContainer","PolotnoContainer","SidePanelWrap","WorkspaceWrap"],"mappings":"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"}