labellife-design-tool 2.3.0 → 2.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/canvas/workspace.js +91 -43
- package/dist/cjs/canvas/workspace.js.map +1 -1
- package/dist/cjs/index.js +92 -44
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/model/store.js +1 -1
- package/dist/cjs/model/store.js.map +1 -1
- package/dist/esm/canvas/workspace.js +91 -43
- package/dist/esm/canvas/workspace.js.map +1 -1
- package/dist/esm/index.js +92 -44
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model/store.js +1 -1
- package/dist/esm/model/store.js.map +1 -1
- package/package.json +1 -1
package/dist/esm/index.js.map
CHANGED
|
@@ -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, getSnapshot } 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 = { ...getSnapshot(self) };\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\n // Hide display-only nodes (shadow, checkerboard, overlay) — not wanted in export\n const displayOnlyNodes = layer.find('.display-only');\n displayOnlyNodes.forEach((n) => n.hide());\n\n // Hide selection transformer handles so they don't appear in exports\n const transformerNodes = layer.find('Transformer');\n transformerNodes.forEach((n) => n.hide());\n\n layer.draw();\n\n const rawCanvas = layer.toCanvas({\n pixelRatio,\n x: 0,\n y: 0,\n width: self.width,\n height: self.height,\n });\n\n // Restore display-only nodes and transformer handles\n displayOnlyNodes.forEach((n) => n.show());\n transformerNodes.forEach((n) => n.show());\n\n // Restore layer transform\n layer.x(prevX);\n layer.y(prevY);\n layer.scaleX(prevScaleX);\n layer.scaleY(prevScaleY);\n layer.draw();\n\n // For JPEG, composite onto a white canvas to eliminate any remaining transparency\n // (avoids black areas and reduces file size vs checkerboard patterns)\n if (mimeType === 'image/jpeg') {\n const finalCanvas = document.createElement('canvas');\n finalCanvas.width = rawCanvas.width;\n finalCanvas.height = rawCanvas.height;\n const ctx = finalCanvas.getContext('2d');\n ctx.fillStyle = '#ffffff';\n ctx.fillRect(0, 0, finalCanvas.width, finalCanvas.height);\n ctx.drawImage(rawCanvas, 0, 0);\n return finalCanvas;\n }\n\n return rawCanvas;\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 = 0.92, ...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, IconButton } 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 RadioButtonCheckedIcon from '@mui/icons-material/RadioButtonChecked';\nimport FormatListBulletedIcon from '@mui/icons-material/FormatListBulleted';\nimport AddIcon from '@mui/icons-material/Add';\nimport DeleteIcon from '@mui/icons-material/Delete';\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// ── Options list editor ──────────────────────────────────────────────\nconst OptionsEditor = ({ options, onChange }) => (\n <Box sx={{ ml: 6.5, mr: 1, display: 'flex', flexDirection: 'column', gap: 0.75 }}>\n {options.map((opt, i) => (\n <Box key={i} sx={{ display: 'flex', gap: 0.5, alignItems: 'center' }}>\n <TextField\n size=\"small\"\n value={opt}\n onChange={(e) => {\n const next = [...options];\n next[i] = e.target.value;\n onChange(next);\n }}\n placeholder={`Option ${i + 1}`}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <IconButton\n size=\"small\"\n onClick={() => onChange(options.filter((_, j) => j !== i))}\n disabled={options.length <= 1}\n sx={{ color: '#bbb', '&:hover': { color: '#e57373' } }}\n >\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n ))}\n <Button\n size=\"small\"\n startIcon={<AddIcon />}\n onClick={() => onChange([...options, ''])}\n sx={{ alignSelf: 'flex-start', fontSize: 11, textTransform: 'none', color: '#0d83cd', p: 0.5 }}\n >\n Add option\n </Button>\n </Box>\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 const [radioPrompt, setRadioPrompt] = useState('');\n const [radioRequired, setRadioRequired] = useState(false);\n const [radioOptions, setRadioOptions] = useState(['Option 1', 'Option 2']);\n const [listPrompt, setListPrompt] = useState('');\n const [listMinSelections, setListMinSelections] = useState(0);\n const [listMaxSelections, setListMaxSelections] = useState(2);\n const [listOptions, setListOptions] = useState(['Option 1', 'Option 2']);\n const [textRemoveIfSkipped, setTextRemoveIfSkipped] = useState(false);\n const [dateRemoveIfSkipped, setDateRemoveIfSkipped] = useState(false);\n const [integerRemoveIfSkipped, setIntegerRemoveIfSkipped] = useState(false);\n const [imageRemoveIfSkipped, setImageRemoveIfSkipped] = useState(false);\n const [radioRemoveIfSkipped, setRadioRemoveIfSkipped] = useState(false);\n const [listRemoveIfSkipped, setListRemoveIfSkipped] = 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 removeIfSkipped: extra.removeIfSkipped || 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 case 'radio':\n dummyText = (extra.options || []).filter(Boolean)[0] || 'Option 1';\n placeholder = t('sidePanel.inputFields.radioPlaceholder', 'Select an option');\n defaultPrompt = t('sidePanel.inputFields.defaultRadioPrompt', 'Please select an option');\n break;\n case 'list':\n dummyText = (extra.options || []).filter(Boolean).slice(0, 2).join(', ') || 'Option 1, Option 2';\n placeholder = t('sidePanel.inputFields.listPlaceholder', 'Select options');\n defaultPrompt = t('sidePanel.inputFields.defaultListPrompt', 'Please select options');\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 removeIfSkipped: extra.removeIfSkipped || false,\n ...(inputType === 'date' ? { dateFormat: extra.dateFormat || 'MM-DD-YYYY' } : {}),\n ...(['radio', 'list'].includes(inputType) ? { options: (extra.options || []).filter(Boolean) } : {}),\n ...(inputType === 'list' ? { minSelections: extra.minSelections || 0, maxSelections: extra.maxSelections || 0 } : {}),\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, removeIfSkipped: textRemoveIfSkipped })}\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 {!textRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={textRemoveIfSkipped} onChange={(e) => setTextRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\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, removeIfSkipped: dateRemoveIfSkipped })}\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 {!dateRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={dateRemoveIfSkipped} onChange={(e) => setDateRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\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, removeIfSkipped: integerRemoveIfSkipped })}\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 {!integerRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={integerRemoveIfSkipped} onChange={(e) => setIntegerRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\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, removeIfSkipped: imageRemoveIfSkipped })}\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 {!imageRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={imageRemoveIfSkipped} onChange={(e) => setImageRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n )}\n\n {/* Radio input */}\n <InputFieldCard\n icon={<RadioButtonCheckedIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.radioInput', 'Radio Input')}\n description={t('sidePanel.inputFields.radioInputDesc', 'Single option selection')}\n onClick={() => addInputElement('radio', { promptText: radioPrompt, required: radioRequired, options: radioOptions, removeIfSkipped: radioRemoveIfSkipped })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={radioPrompt}\n onChange={(e) => setRadioPrompt(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={radioRequired} onChange={(e) => setRadioRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n {!radioRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={radioRemoveIfSkipped} onChange={(e) => setRadioRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n )}\n <OptionsEditor options={radioOptions} onChange={setRadioOptions} />\n\n {/* List (multi-select) input */}\n <InputFieldCard\n icon={<FormatListBulletedIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.listInput', 'List Input')}\n description={t('sidePanel.inputFields.listInputDesc', 'Multiple option selection')}\n onClick={() => addInputElement('list', { promptText: listPrompt, minSelections: listMinSelections, maxSelections: listMaxSelections, options: listOptions, removeIfSkipped: listRemoveIfSkipped })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={listPrompt}\n onChange={(e) => setListPrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <OptionsEditor options={listOptions} onChange={setListOptions} />\n <Box sx={{ display: 'flex', gap: 1, ml: 6.5, mr: 1 }}>\n <TextField\n size=\"small\"\n type=\"number\"\n label={t('sidePanel.inputFields.minSelections', 'Min select')}\n value={listMinSelections}\n onChange={(e) => setListMinSelections(Math.max(0, parseInt(e.target.value) || 0))}\n inputProps={{ min: 0 }}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n label={t('sidePanel.inputFields.maxSelections', 'Max select')}\n value={listMaxSelections}\n onChange={(e) => setListMaxSelections(Math.max(0, parseInt(e.target.value) || 0))}\n inputProps={{ min: 0 }}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ ml: 6.5, color: '#999', fontSize: 10 }}>\n {listMinSelections > 0\n ? `Required · min ${listMinSelections}${listMaxSelections > 0 ? `, max ${listMaxSelections}` : ', no max'}`\n : `Optional · max ${listMaxSelections > 0 ? listMaxSelections : '∞'}`}\n </Typography>\n {listMinSelections === 0 && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={listRemoveIfSkipped} onChange={(e) => setListRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\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 const [markOptions, setMarkOptions] = useState(['Option 1', 'Option 2']);\n const [markMinSelections, setMarkMinSelections] = useState(0);\n const [markMaxSelections, setMarkMaxSelections] = useState(2);\n const [markRemoveIfSkipped, setMarkRemoveIfSkipped] = useState(false);\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 setMarkOptions(selectedElement.custom?.options || ['Option 1', 'Option 2']);\n setMarkMinSelections(selectedElement.custom?.minSelections || 0);\n setMarkMaxSelections(selectedElement.custom?.maxSelections || 2);\n setMarkRemoveIfSkipped(!!selectedElement.custom?.removeIfSkipped);\n } else {\n setMarkLabel('');\n setMarkRequired(false);\n setMarkInputType('text');\n setMarkOptions(['Option 1', 'Option 2']);\n setMarkMinSelections(0);\n setMarkMaxSelections(2);\n setMarkRemoveIfSkipped(false);\n }\n }, [selectedElement?.id]);\n\n const handleMark = () => {\n if (!selectedElement || !markLabel.trim()) return;\n const effectiveType = isImageElement ? 'image' : markInputType;\n selectedElement.set({\n custom: {\n ...selectedElement.custom,\n inputField: true,\n promptText: markLabel.trim(),\n inputType: effectiveType,\n required: markRequired,\n removeIfSkipped: !markRequired && markRemoveIfSkipped,\n ...(['radio', 'list'].includes(effectiveType) ? { options: markOptions.filter(Boolean) } : {}),\n ...(effectiveType === 'list' ? { minSelections: markMinSelections, maxSelections: markMaxSelections } : {}),\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 removeIfSkipped: _ris,\n placeholder: _pl,\n options: _o,\n minSelections: _min,\n maxSelections: _max,\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 “{selectedElement.text}”\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 <MenuItem value=\"radio\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.radioInput', 'Radio Input')}</MenuItem>\n <MenuItem value=\"list\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.listInput', 'List Input')}</MenuItem>\n </Select>\n </FormControl>\n )}\n\n {isTextElement && (markInputType === 'radio' || markInputType === 'list') && (\n <>\n <Typography variant=\"caption\" sx={{ color: '#888', fontSize: 11 }}>Options</Typography>\n <OptionsEditor options={markOptions} onChange={setMarkOptions} />\n </>\n )}\n\n {isTextElement && markInputType === 'list' && (\n <>\n <Box sx={{ display: 'flex', gap: 1 }}>\n <TextField\n size=\"small\"\n type=\"number\"\n label={t('sidePanel.inputFields.minSelections', 'Min select')}\n value={markMinSelections}\n onChange={(e) => setMarkMinSelections(Math.max(0, parseInt(e.target.value) || 0))}\n inputProps={{ min: 0 }}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n label={t('sidePanel.inputFields.maxSelections', 'Max select')}\n value={markMaxSelections}\n onChange={(e) => setMarkMaxSelections(Math.max(0, parseInt(e.target.value) || 0))}\n inputProps={{ min: 0 }}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ color: '#999', fontSize: 10 }}>\n {markMinSelections > 0\n ? `Required · min ${markMinSelections}${markMaxSelections > 0 ? `, max ${markMaxSelections}` : ', no max'}`\n : `Optional · max ${markMaxSelections > 0 ? markMaxSelections : '∞'}`}\n </Typography>\n </>\n )}\n\n {(!isTextElement || markInputType !== 'list') && (\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\n {!markRequired && (\n <FormControlLabel\n control={\n <Checkbox\n size=\"small\"\n checked={markRemoveIfSkipped}\n onChange={(e) => setMarkRemoveIfSkipped(e.target.checked)}\n />\n }\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n />\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';\nimport OpenWithIcon from '@mui/icons-material/OpenWith';\nimport AlignHorizontalLeftIcon from '@mui/icons-material/AlignHorizontalLeft';\nimport AlignHorizontalCenterIcon from '@mui/icons-material/AlignHorizontalCenter';\nimport AlignHorizontalRightIcon from '@mui/icons-material/AlignHorizontalRight';\nimport AlignVerticalTopIcon from '@mui/icons-material/AlignVerticalTop';\nimport AlignVerticalCenterIcon from '@mui/icons-material/AlignVerticalCenter';\nimport AlignVerticalBottomIcon from '@mui/icons-material/AlignVerticalBottom';\nimport VerticalAlignTopIcon from '@mui/icons-material/VerticalAlignTop';\nimport VerticalAlignBottomIcon from '@mui/icons-material/VerticalAlignBottom';\n\nconst _positionMenuItemSx = {\n textTransform: 'none',\n fontSize: 12,\n fontWeight: 400,\n color: '#333',\n justifyContent: 'flex-start',\n px: 1,\n py: 0.6,\n minWidth: 0,\n '&:hover': { backgroundColor: 'rgba(13,131,205,0.08)' },\n};\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// Position + alignment popover button\nconst PositionButton = observer(({ element, store }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n\n const pageW = store.width;\n const pageH = store.height;\n\n const alignEl = (xVal, yVal) => {\n const attrs = {};\n if (xVal !== null) attrs.x = xVal;\n if (yVal !== null) attrs.y = yVal;\n element.set(attrs);\n store.history.addUndoState();\n };\n\n const layer = (fn) => { fn(); store.history.addUndoState(); };\n\n return (\n <>\n <Button\n size=\"small\"\n onClick={(e) => setAnchorEl(e.currentTarget)}\n startIcon={<OpenWithIcon sx={{ fontSize: '16px !important' }} />}\n sx={{\n textTransform: 'none',\n fontSize: 12,\n whiteSpace: 'nowrap',\n px: 1.5,\n minWidth: 'auto',\n ...(open ? { backgroundColor: '#e3f2fd', color: '#0d83cd' } : {}),\n }}\n >\n {t('toolbar.position', 'Position')}\n </Button>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{ paper: { sx: { mt: 0.5, p: 2, width: 300, borderRadius: '10px', boxShadow: '0 4px 20px rgba(0,0,0,0.12)' } } }}\n >\n {/* Layer order */}\n <Typography variant=\"caption\" sx={{ fontWeight: 700, color: '#111', display: 'block', mb: 1, fontSize: 12 }}>\n {t('toolbar.layering', 'Layer order')}\n </Typography>\n <Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 0.5, mb: 2 }}>\n <Button size=\"small\" startIcon={<ArrowUpwardIcon />} onClick={() => layer(() => element.moveUp())} sx={_positionMenuItemSx}>\n {t('toolbar.up', 'Up')}\n </Button>\n <Button size=\"small\" startIcon={<ArrowDownwardIcon />} onClick={() => layer(() => element.moveDown())} sx={_positionMenuItemSx}>\n {t('toolbar.down', 'Down')}\n </Button>\n <Button size=\"small\" startIcon={<VerticalAlignTopIcon />} onClick={() => layer(() => element.moveTop())} sx={_positionMenuItemSx}>\n {t('toolbar.toForward', 'To front')}\n </Button>\n <Button size=\"small\" startIcon={<VerticalAlignBottomIcon />} onClick={() => layer(() => element.moveBottom())} sx={_positionMenuItemSx}>\n {t('toolbar.toBottom', 'To back')}\n </Button>\n </Box>\n\n <Divider sx={{ mb: 1.5 }} />\n\n {/* 3×3 position grid */}\n <Typography variant=\"caption\" sx={{ fontWeight: 700, color: '#111', display: 'block', mb: 1, fontSize: 12 }}>\n {t('toolbar.position', 'Position')}\n </Typography>\n {(() => {\n const cx = (pageW - element.width) / 2;\n const cy = (pageH - element.height) / 2;\n const rx = pageW - element.width;\n const by = pageH - element.height;\n const positions = [\n { label: 'Top left', x: 0, y: 0, row: 0, col: 0 },\n { label: 'Top center', x: cx, y: 0, row: 0, col: 1 },\n { label: 'Top right', x: rx, y: 0, row: 0, col: 2 },\n { label: 'Middle left', x: 0, y: cy, row: 1, col: 0 },\n { label: 'Center', x: cx, y: cy, row: 1, col: 1 },\n { label: 'Middle right', x: rx, y: cy, row: 1, col: 2 },\n { label: 'Bottom left', x: 0, y: by, row: 2, col: 0 },\n { label: 'Bottom center', x: cx, y: by, row: 2, col: 1 },\n { label: 'Bottom right', x: rx, y: by, row: 2, col: 2 },\n ];\n return (\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 0.5 }}>\n {positions.map(({ label, x, y }) => (\n <Tooltip key={label} title={label} placement=\"top\">\n <IconButton\n size=\"small\"\n onClick={() => alignEl(x, y)}\n sx={{\n borderRadius: '6px',\n border: '1px solid #e0e0e0',\n p: 0.75,\n '&:hover': { backgroundColor: 'rgba(13,131,205,0.08)', borderColor: '#0d83cd' },\n }}\n >\n {/* Mini 3×3 dot grid with the active cell highlighted */}\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 5px)', gap: '2px' }}>\n {[0,1,2].map((r) => [0,1,2].map((c) => (\n <Box\n key={`${r}-${c}`}\n sx={{\n width: 5, height: 5, borderRadius: '1px',\n backgroundColor: (r === positions.find(p => p.label === label).row && c === positions.find(p => p.label === label).col)\n ? '#0d83cd'\n : '#ccc',\n }}\n />\n )))}\n </Box>\n </IconButton>\n </Tooltip>\n ))}\n </Box>\n );\n })()}\n </Popover>\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 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 {/* Position + alignment */}\n <PositionButton element={element} store={store} />\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 originalText = element.text;\n\n const textarea = document.createElement('textarea');\n textarea.value = '';\n textarea.placeholder = originalText;\n textarea.style.position = 'absolute';\n textarea.style.top = `${textPosition.y}px`;\n textarea.style.left = `${textPosition.x}px`;\n textarea.style.width = `${element.width * scaleX}px`;\n textarea.style.height = `${element.height * scaleY}px`;\n textarea.style.fontSize = `${element.fontSize * scaleX}px`;\n textarea.style.fontFamily = `\"${element.fontFamily}\", sans-serif`;\n textarea.style.fontStyle = cssFontStyle;\n textarea.style.fontWeight = cssFontWeight;\n textarea.style.textAlign = element.align;\n textarea.style.color = element.fill;\n textarea.style.border = '0';\n textarea.style.borderWidth = '0';\n textarea.style.padding = '0';\n textarea.style.margin = '0';\n textarea.style.overflow = 'hidden';\n textarea.style.background = 'none';\n textarea.style.outline = 'none';\n textarea.style.resize = 'none';\n textarea.style.appearance = 'none';\n textarea.style.webkitAppearance = 'none';\n textarea.style.lineHeight = String(\n typeof element.lineHeight === 'number'\n ? element.lineHeight\n : parseFloat(element.lineHeight) || 1.2\n );\n textarea.style.letterSpacing = `${(element.letterSpacing || 0) * scaleX}px`;\n textarea.style.transformOrigin = 'left top';\n textarea.style.transform = `rotate(${element.rotation}deg)`;\n textarea.style.textDecoration = element.textDecoration || '';\n textarea.style.boxSizing = 'content-box';\n textarea.style.zIndex = '10000';\n textarea.style.whiteSpace = 'pre-wrap';\n textarea.style.wordBreak = 'break-word';\n textarea.style.minHeight = '0';\n textarea.style.minWidth = '0';\n\n // Placeholder inherits the element's text color at 40% opacity\n const placeholderStyle = document.createElement('style');\n placeholderStyle.textContent = `\n textarea:placeholder-shown { opacity: 1; }\n textarea::placeholder { color: ${element.fill}; opacity: 0.4; }\n `;\n stageContainer.appendChild(placeholderStyle);\n\n stageContainer.appendChild(textarea);\n textarea.focus();\n\n let removed = false;\n const removeTextarea = (cancel = false) => {\n if (removed) return;\n removed = true;\n const newText = !cancel && textarea.value.length > 0 ? textarea.value : originalText;\n element.set({ text: newText });\n element.toggleEditMode(false);\n if (grp) grp.show();\n stage.batchDraw();\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n if (placeholderStyle.parentNode) {\n placeholderStyle.parentNode.removeChild(placeholderStyle);\n }\n };\n\n textarea.addEventListener('blur', () => removeTextarea(false));\n textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') removeTextarea(true);\n });\n };\n\n // Compute displayed text based on textTransform\n let displayText = element.text || element.placeholder || '';\n if (element.textTransform === 'uppercase') {\n displayText = displayText.toUpperCase();\n } else if (element.textTransform === 'lowercase') {\n displayText = displayText.toLowerCase();\n } else if (element.textTransform === 'capitalize') {\n displayText = displayText.replace(/\\b\\w/g, (c) => c.toUpperCase());\n }\n\n const fontStyleStr = (() => {\n const parts = [];\n const style = String(element.fontStyle || '').trim();\n const weight = String(element.fontWeight || '').trim();\n if (style === 'italic' || style.includes('italic')) parts.push('italic');\n if (weight && weight !== 'normal') parts.push(weight);\n return parts.length > 0 ? parts.join(' ') : 'normal';\n })();\n\n const pad = element.backgroundEnabled ? (element.backgroundPadding || 0) : 0;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'text'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={textHeight}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDblClick={handleDblClick}\n onDblTap={handleDblClick}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {/* Background rect */}\n {element.backgroundEnabled && (\n <Rect\n x={-pad}\n y={-pad}\n width={element.width + pad * 2}\n height={textHeight + pad * 2}\n fill={element.backgroundColor || '#ffffff'}\n opacity={element.backgroundOpacity ?? 1}\n cornerRadius={element.backgroundCornerRadius || 0}\n listening={false}\n />\n )}\n\n {/* Text */}\n <KonvaText\n ref={textRef}\n text={displayText}\n width={element.width}\n fontSize={element.fontSize}\n fontFamily={element.fontFamily}\n fontStyle={fontStyleStr}\n textDecoration={element.textDecoration}\n fill={element.fill}\n align={element.align}\n verticalAlign={element.verticalAlign}\n lineHeight={typeof element.lineHeight === 'number' ? element.lineHeight : parseFloat(element.lineHeight) || 1.2}\n letterSpacing={element.letterSpacing}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth || 0}\n fillAfterStrokeEnabled={true}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n />\n </Group>\n );\n});\n\nTextElementComponent.displayName = 'TextElement';\nexport default TextElementComponent;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Image as KonvaImage } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst SVGElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const [image, setImage] = useState(null);\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n let svgSrc = element.src;\n\n // Apply color replacements to SVG\n if (element.colorsReplace && element.colorsReplace.size > 0) {\n // If it's a data URI SVG, decode and replace colors\n if (svgSrc.startsWith('data:image/svg+xml')) {\n try {\n let svgContent;\n if (svgSrc.includes('base64,')) {\n svgContent = atob(svgSrc.split('base64,')[1]);\n } else {\n svgContent = decodeURIComponent(svgSrc.split(',')[1]);\n }\n\n element.colorsReplace.forEach((newColor, oldColor) => {\n svgContent = svgContent.replace(new RegExp(oldColor, 'gi'), newColor);\n });\n\n svgSrc = 'data:image/svg+xml;base64,' + btoa(svgContent);\n } catch (e) {\n console.warn('Failed to process SVG color replacement', e);\n }\n }\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load SVG:', element.src.substring(0, 100));\n };\n img.src = svgSrc;\n }, [element.src, element.colorsReplace?.toJSON?.()]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n return (\n <KonvaImage\n ref={imageRef}\n id={element.id}\n name={element.name || 'svg'}\n image={image}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onClick={(e) => {\n if (onSelect) onSelect(e);\n }}\n onTap={(e) => {\n if (onSelect) onSelect(e);\n }}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n />\n );\n});\n\nSVGElementComponent.displayName = 'SVGElement';\nexport default SVGElementComponent;\n","import React, { useRef } from 'react';\nimport { Rect, Circle, Star, Line as KonvaLine, RegularPolygon, Arrow, Path, Group } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst FigureElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const shapeRef = useRef(null);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const commonProps = {\n id: element.id,\n name: element.name || 'figure',\n x: element.x,\n y: element.y,\n rotation: element.rotation,\n opacity: element.opacity,\n fill: element.fill,\n stroke: element.stroke || undefined,\n strokeWidth: element.strokeWidth || 0,\n dash: element.dash?.length > 0 ? [...element.dash] : undefined,\n draggable: !groupChild && element.draggable,\n visible: element.visible,\n shadowEnabled: element.shadowEnabled,\n shadowColor: element.shadowColor,\n shadowBlur: element.shadowBlur,\n shadowOffsetX: element.shadowOffsetX,\n shadowOffsetY: element.shadowOffsetY,\n shadowOpacity: element.shadowOpacity,\n onClick: (e) => { if (onSelect) onSelect(e); },\n onTap: (e) => { if (onSelect) onSelect(e); },\n onDragEnd: handleDragEnd,\n onTransformEnd: handleTransformEnd,\n };\n\n const subType = element.subType || 'rect';\n\n // Center-origin shapes use offset so that node.x()/y() stays top-left\n // (matching our model) while the visual center is positioned correctly.\n const centerOffset = {\n offsetX: -(element.width / 2),\n offsetY: -(element.height / 2),\n };\n\n switch (subType) {\n case 'circle':\n case 'ellipse':\n return (\n <Circle\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n radiusX={element.width / 2}\n radiusY={element.height / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'triangle':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={3}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'star':\n return (\n <Star\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n numPoints={5}\n innerRadius={Math.min(element.width, element.height) / 4}\n outerRadius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'polygon':\n case 'hexagon':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={subType === 'hexagon' ? 6 : 5}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'diamond':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={4}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'path':\n if (!element.pathData) return null;\n return (\n <Group\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n >\n <Path\n data={element.pathData}\n fill={element.fill}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth ? element.strokeWidth * (100 / element.width) : 0}\n scaleX={element.width / 100}\n scaleY={element.height / 100}\n />\n </Group>\n );\n\n case 'arrow':\n return (\n <Arrow\n ref={shapeRef}\n {...commonProps}\n points={[0, element.height / 2, element.width, element.height / 2]}\n pointerLength={10}\n pointerWidth={10}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'rect':\n default:\n return (\n <Rect\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n cornerRadius={element.cornerRadius || 0}\n />\n );\n }\n});\n\nFigureElementComponent.displayName = 'FigureElement';\nexport default FigureElementComponent;\n","import React, { Fragment } from 'react';\nimport { Line as KonvaLine, Arrow, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst HANDLE_SIZE = 10;\nconst DEG = Math.PI / 180;\n\nconst LineElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n if (!element.visible) return null;\n\n const rot = (element.rotation || 0) * DEG;\n const cosR = Math.cos(rot);\n const sinR = Math.sin(rot);\n\n // Start and end points in canvas coordinates\n const startX = element.x;\n const startY = element.y;\n const endX = element.x + element.width * cosR;\n const endY = element.y + element.width * sinR;\n\n const hasArrow = element.endHead === 'arrow' || element.startHead === 'arrow';\n\n // Drag the whole line\n const handleLineDragEnd = (e) => {\n const dx = e.target.x();\n const dy = e.target.y();\n // The line is rendered at (0,0) with absolute points, so dx/dy is the drag offset\n e.target.x(0);\n e.target.y(0);\n element.set({\n x: element.x + dx,\n y: element.y + dy,\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Drag the START handle\n const handleStartDrag = (e) => {\n const newSX = e.target.x() + HANDLE_SIZE / 2;\n const newSY = e.target.y() + HANDLE_SIZE / 2;\n const dx = endX - newSX;\n const dy = endY - newSY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n x: newSX,\n y: newSY,\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position since the line re-renders from new model coords\n e.target.x(newSX - HANDLE_SIZE / 2);\n e.target.y(newSY - HANDLE_SIZE / 2);\n };\n\n const handleStartDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n // Drag the END handle\n const handleEndDrag = (e) => {\n const newEX = e.target.x() + HANDLE_SIZE / 2;\n const newEY = e.target.y() + HANDLE_SIZE / 2;\n const dx = newEX - startX;\n const dy = newEY - startY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position\n e.target.x(newEX - HANDLE_SIZE / 2);\n e.target.y(newEY - HANDLE_SIZE / 2);\n };\n\n const handleEndDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n const lineNode = hasArrow ? (\n <Arrow\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n fill={element.color || '#000000'}\n pointerLength={10}\n pointerWidth={10}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n ) : (\n <KonvaLine\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n );\n\n return (\n <Fragment>\n {lineNode}\n\n {/* Endpoint handles — only visible when selected */}\n {isSelected && (\n <Fragment>\n {/* Start handle */}\n <Rect\n x={startX - HANDLE_SIZE / 2}\n y={startY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleStartDrag}\n onDragEnd={handleStartDragEnd}\n />\n {/* End handle */}\n <Rect\n x={endX - HANDLE_SIZE / 2}\n y={endY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleEndDrag}\n onDragEnd={handleEndDragEnd}\n />\n </Fragment>\n )}\n </Fragment>\n );\n});\n\nLineElementComponent.displayName = 'LineElement';\nexport default LineElementComponent;\n","import React, { useRef, useCallback } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Group } from 'react-konva';\n\n// ElementRenderer is passed via the _ElementRenderer prop to avoid circular imports\nconst GroupElementComponent = observer(({ element, isSelected, onTransformEnd, onDragEnd, _ElementRenderer }) => {\n const groupRef = useRef(null);\n\n const handleDragEnd = useCallback((e) => {\n const node = e.target;\n element.set({\n x: node.x(),\n y: node.y(),\n });\n if (onDragEnd) onDragEnd(e);\n }, [element, onDragEnd]);\n\n const handleTransformEnd = useCallback((e) => {\n const node = groupRef.current;\n if (!node) return;\n\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n // Scale each child proportionally\n element.children.forEach((child) => {\n if (child.set) {\n const updates = {\n x: (child.x || 0) * scaleX,\n y: (child.y || 0) * scaleY,\n };\n if ('width' in child) updates.width = (child.width || 0) * scaleX;\n if ('height' in child) updates.height = (child.height || 0) * scaleY;\n if (child.type === 'text' && child.fontSize) {\n updates.fontSize = Math.round(child.fontSize * Math.max(scaleX, scaleY));\n }\n child.set(updates);\n }\n });\n\n // Update group position, rotation, dimensions\n element.set({\n x: node.x(),\n y: node.y(),\n rotation: node.rotation(),\n width: element.width * scaleX,\n height: element.height * scaleY,\n });\n\n // Reset scale on the Konva node\n node.scaleX(1);\n node.scaleY(1);\n\n if (onTransformEnd) onTransformEnd(e);\n }, [element, onTransformEnd]);\n\n if (!element.visible) return null;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'group'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={element.draggable !== false}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n >\n {_ElementRenderer && element.children.map((child) => (\n <_ElementRenderer\n key={child.id}\n element={child}\n isSelected={false}\n groupChild={true}\n />\n ))}\n </Group>\n );\n});\n\nGroupElementComponent.displayName = 'GroupElementComponent';\nexport default GroupElementComponent;\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport ImageElementComponent from './image-element';\nimport TextElementComponent from './text-element';\nimport SVGElementComponent from './svg-element';\nimport FigureElementComponent from './figure-element';\nimport LineElementComponent from './line-element';\nimport GroupElementComponent from './group-element';\n\nconst ELEMENT_RENDERERS = {\n image: ImageElementComponent,\n text: TextElementComponent,\n svg: SVGElementComponent,\n figure: FigureElementComponent,\n line: LineElementComponent,\n group: GroupElementComponent,\n};\n\nconst ElementRenderer = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const Renderer = ELEMENT_RENDERERS[element.type];\n\n if (!Renderer) {\n console.warn(`No renderer for element type: ${element.type}`);\n return null;\n }\n\n // Pass ElementRenderer itself to GroupElementComponent to avoid circular imports\n const extra = element.type === 'group' ? { _ElementRenderer: ElementRenderer } : {};\n\n return (\n <Renderer\n element={element}\n isSelected={isSelected}\n onSelect={onSelect}\n onTransformEnd={onTransformEnd}\n onDragEnd={onDragEnd}\n groupChild={groupChild}\n {...extra}\n />\n );\n});\n\nElementRenderer.displayName = 'ElementRenderer';\nexport default ElementRenderer;\nexport { ELEMENT_RENDERERS };\n","import React, { useState, useEffect, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Button, TextField, Typography, Box, Radio, RadioGroup, FormGroup, FormControlLabel, Checkbox } from '@mui/material';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport { getInputFieldsConfig } from '../config';\nimport { t } from '../config';\n\n// ── Date formatting helpers (shared with input-fields-panel) ─────────\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nfunction formatDate(date, format) {\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const yyyy = String(date.getFullYear());\n const monthName = MONTH_NAMES[date.getMonth()];\n\n switch (format) {\n case 'MM-DD-YYYY':\n return `${mm}-${dd}-${yyyy}`;\n case 'MMMM-DD-YYYY':\n return `${monthName}-${dd}-${yyyy}`;\n case 'MMMM-DD':\n return `${monthName}-${dd}`;\n case 'YYYY':\n return yyyy;\n case 'MM-DD':\n return `${mm}-${dd}`;\n default:\n return `${mm}-${dd}-${yyyy}`;\n }\n}\n\nfunction parseDateFromFormat(dateStr, format) {\n try {\n const d = new Date(dateStr);\n if (!isNaN(d.getTime())) return d;\n } catch (e) {\n // ignore\n }\n return new Date();\n}\n\n// ── Default single-field dialog (full-page overlay) ──────────────────\nconst SingleFieldDialog = ({ field, onSubmit, onSkip, onBack, canGoBack, currentIndex, totalCount }) => {\n const [value, setValue] = useState('');\n const [imagePreview, setImagePreview] = useState(null);\n const fileInputRef = useRef(null);\n const [selectedItems, setSelectedItems] = useState([]);\n const config = getInputFieldsConfig();\n\n const custom = field.custom || {};\n const inputType = custom.inputType || 'text';\n const promptText = custom.promptText || custom.placeholder || 'Please provide input';\n const dateFormat = custom.dateFormat || 'MM-DD-YYYY';\n const isRequired = custom.required === true;\n const options = custom.options || [];\n const minSelections = custom.minSelections || 0;\n const maxSelections = custom.maxSelections || options.length;\n const isSubmitDisabled = inputType === 'list'\n ? selectedItems.length < minSelections\n : isRequired && !value;\n const logoUrl = config.logoUrl || null;\n const headerText = config.headerText || null;\n const accentColor = config.accentColor || '#0d83cd';\n const progressPct = Math.round(((currentIndex + 1) / totalCount) * 100);\n\n useEffect(() => {\n setValue('');\n setImagePreview(null);\n setSelectedItems([]);\n }, [field.id]);\n\n const handleImageSelect = (e) => {\n const file = e.target.files?.[0];\n if (!file || !file.type.startsWith('image/')) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n const dataURL = ev.target.result;\n setValue(dataURL);\n setImagePreview(dataURL);\n };\n reader.readAsDataURL(file);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleSubmit = () => {\n if (inputType === 'date' && value) {\n const dateObj = parseDateFromFormat(value, dateFormat);\n const formatted = formatDate(dateObj, dateFormat);\n onSubmit(field.id, formatted);\n } else if (inputType === 'list') {\n onSubmit(field.id, selectedItems.join(', '));\n } else {\n onSubmit(field.id, value);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' && inputType !== 'image' && inputType !== 'list' && inputType !== 'radio') handleSubmit();\n };\n\n const renderInput = () => {\n const sharedSx = {\n mt: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: '8px',\n fontSize: 22,\n '& fieldset': { borderColor: '#d0d5dd' },\n '&:hover fieldset': { borderColor: accentColor },\n '&.Mui-focused fieldset': { borderColor: accentColor },\n },\n ...config.inputStyle,\n };\n\n switch (inputType) {\n case 'date':\n return (\n <TextField\n fullWidth\n type=\"date\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n InputLabelProps={{ shrink: true }}\n sx={sharedSx}\n />\n );\n case 'integer':\n return (\n <TextField\n fullWidth\n type=\"number\"\n value={value}\n onChange={(e) => {\n const v = e.target.value;\n if (v === '' || /^-?\\d*$/.test(v)) setValue(v);\n }}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder=\"0\"\n inputProps={{ step: 1 }}\n sx={sharedSx}\n />\n );\n case 'image':\n return (\n <Box sx={{ mt: 1 }}>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleImageSelect}\n style={{ display: 'none' }}\n />\n {imagePreview ? (\n <Box sx={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 2 }}>\n <Box\n sx={{\n width: '100%',\n maxHeight: 260,\n borderRadius: '10px',\n overflow: 'hidden',\n border: '1px solid #e0e0e0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fafafa',\n }}\n >\n <img\n src={imagePreview}\n alt=\"Preview\"\n style={{ maxWidth: '100%', maxHeight: 260, objectFit: 'contain' }}\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => fileInputRef.current?.click()}\n sx={{ textTransform: 'none', fontSize: 13, borderRadius: '8px', borderColor: '#d0d5dd' }}\n >\n {t('inputFieldsDialog.changeImage', 'Change Image')}\n </Button>\n </Box>\n ) : (\n <Box\n onClick={() => fileInputRef.current?.click()}\n sx={{\n border: '2px dashed #d0d5dd',\n borderRadius: '10px',\n p: 4,\n textAlign: 'center',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n >\n <CloudUploadIcon sx={{ fontSize: 40, color: '#bbb', mb: 1.5 }} />\n <Typography variant=\"body2\" sx={{ color: '#888', fontSize: 14 }}>\n {t('inputFieldsDialog.uploadImage', 'Click to select an image')}\n </Typography>\n </Box>\n )}\n </Box>\n );\n case 'radio':\n return (\n <RadioGroup\n value={value}\n onChange={(e) => setValue(e.target.value)}\n sx={{ mt: 1, gap: 1 }}\n >\n {options.map((opt) => (\n <FormControlLabel\n key={opt}\n value={opt}\n control={\n <Radio sx={{ color: '#d0d5dd', '&.Mui-checked': { color: accentColor } }} />\n }\n label={<Typography sx={{ fontSize: 18 }}>{opt}</Typography>}\n sx={{\n m: 0,\n border: '1px solid',\n borderColor: value === opt ? accentColor : '#d0d5dd',\n borderRadius: '8px',\n px: 2,\n py: 0.75,\n transition: 'all 0.15s ease',\n backgroundColor: value === opt ? 'rgba(13,131,205,0.04)' : 'transparent',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n />\n ))}\n </RadioGroup>\n );\n case 'list': {\n const isAtMax = maxSelections > 0 && selectedItems.length >= maxSelections;\n return (\n <Box sx={{ mt: 1 }}>\n <FormGroup sx={{ gap: 1 }}>\n {options.map((opt) => {\n const checked = selectedItems.includes(opt);\n const disabled = !checked && isAtMax;\n return (\n <FormControlLabel\n key={opt}\n control={\n <Checkbox\n checked={checked}\n disabled={disabled}\n onChange={(e) => {\n if (e.target.checked) {\n setSelectedItems((prev) => [...prev, opt]);\n } else {\n setSelectedItems((prev) => prev.filter((i) => i !== opt));\n }\n }}\n sx={{ color: '#d0d5dd', '&.Mui-checked': { color: accentColor } }}\n />\n }\n label={\n <Typography sx={{ fontSize: 18, opacity: disabled ? 0.45 : 1 }}>{opt}</Typography>\n }\n sx={{\n m: 0,\n border: '1px solid',\n borderColor: checked ? accentColor : '#d0d5dd',\n borderRadius: '8px',\n px: 2,\n py: 0.75,\n opacity: disabled ? 0.6 : 1,\n transition: 'all 0.15s ease',\n backgroundColor: checked ? 'rgba(13,131,205,0.04)' : 'transparent',\n }}\n />\n );\n })}\n </FormGroup>\n <Typography variant=\"caption\" sx={{ color: '#999', display: 'block', mt: 1.5 }}>\n {selectedItems.length}{maxSelections > 0 ? `/${maxSelections}` : ''} selected\n {minSelections > 0 && ` · min ${minSelections} required`}\n </Typography>\n </Box>\n );\n }\n case 'text':\n default:\n return (\n <TextField\n fullWidth\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder={custom.placeholder || ''}\n sx={sharedSx}\n />\n );\n }\n };\n\n return (\n <Box\n sx={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n backgroundColor: '#f7f8fa',\n display: 'flex',\n flexDirection: 'column',\n ...config.dialogStyle,\n }}\n >\n {/* Progress bar */}\n <Box sx={{ height: 4, backgroundColor: '#e4e7ec', flexShrink: 0 }}>\n <Box\n sx={{\n height: '100%',\n width: `${progressPct}%`,\n backgroundColor: accentColor,\n transition: 'width 0.4s ease',\n }}\n />\n </Box>\n\n {/* Header */}\n <Box\n sx={{\n backgroundColor: '#fff',\n borderBottom: '1px solid #f0f0f0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n px: 4,\n py: 1.75,\n flexShrink: 0,\n ...config.titleStyle,\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>\n {logoUrl && (\n <img\n src={logoUrl}\n alt=\"Logo\"\n style={{ maxHeight: 36, maxWidth: 200, objectFit: 'contain' }}\n />\n )}\n {(headerText || !logoUrl) && (\n <Typography sx={{ fontWeight: 700, fontSize: 17, color: '#1a1a1a', letterSpacing: '-0.2px' }}>\n {headerText || 'LabelLife'}\n </Typography>\n )}\n </Box>\n </Box>\n\n {/* Centered content */}\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n p: { xs: 3, sm: 5 },\n overflowY: 'auto',\n }}\n >\n <Box sx={{ width: '100%', maxWidth: 750 }}>\n {/* Step indicator */}\n <Typography\n sx={{ display: 'block', fontSize: 18, color: '#999', fontWeight: 500, mb: 1.5, letterSpacing: '0.2px' }}\n >\n {t('inputFieldsDialog.stepIndicator', 'Field {current} of {total}')\n .replace('{current}', currentIndex + 1)\n .replace('{total}', totalCount)}\n </Typography>\n\n {/* Main question */}\n <Typography\n sx={{\n fontSize: { xs: 33, sm: 39 },\n fontWeight: 700,\n color: '#111827',\n lineHeight: 1.3,\n mb: 4.5,\n ...config.promptStyle,\n }}\n >\n {promptText}\n </Typography>\n\n {/* Input */}\n {renderInput()}\n\n {/* Actions */}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mt: 4.5 }}>\n {canGoBack && (\n <Button\n variant=\"outlined\"\n onClick={onBack}\n startIcon={<ArrowBackIcon />}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 3,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n }}\n >\n {t('inputFieldsDialog.back', 'Back')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={handleSubmit}\n disabled={isSubmitDisabled}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: 21,\n px: 5,\n py: 1.65,\n borderRadius: '10px',\n backgroundColor: accentColor,\n boxShadow: 'none',\n '&:hover': { backgroundColor: '#0a6eb3', boxShadow: 'none' },\n ...config.submitButtonStyle,\n }}\n >\n {config.submitButtonText || t('inputFieldsDialog.submit', 'Continue')}\n </Button>\n {(inputType === 'list' ? minSelections === 0 : !isRequired) && (\n <Button\n variant=\"outlined\"\n onClick={() => onSkip(field.id)}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 4.5,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n ...config.skipButtonStyle,\n }}\n >\n {config.skipButtonText || t('inputFieldsDialog.skip', 'Do it later')}\n </Button>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n\n// ── Main orchestrator component ──────────────────────────────────────\nconst InputFieldsDialog = observer(({ store, onComplete, enabled = true, backTrigger = 0 }) => {\n // displayIndex counts how many fields have been answered (for step indicator only).\n // Navigation always uses fields[0] — the first remaining pending field.\n const [displayIndex, setDisplayIndex] = useState(0);\n const initialTotalRef = useRef(0);\n const completedHistoryRef = useRef([]);\n const removedDueToSkipRef = useRef([]);\n const isGoingBackRef = useRef(false);\n const prevBackTriggerRef = useRef(backTrigger);\n const config = getInputFieldsConfig();\n\n const pendingFields = store._pendingInputFields || [];\n\n // When disabled, clear any pending fields so they are treated as skipped\n useEffect(() => {\n if (!enabled && pendingFields.length > 0) {\n store.clearPendingInputFields();\n }\n }, [enabled, pendingFields.length, store]);\n\n const fields = pendingFields.filter(\n (f) => f.custom && f.custom.inputField\n );\n\n // Capture total and reset display counter when a fresh batch appears\n useEffect(() => {\n if (fields.length > 0 && initialTotalRef.current === 0) {\n if (isGoingBackRef.current) {\n // Back-from-summary restored a field — recover total from history + pending\n isGoingBackRef.current = false;\n initialTotalRef.current = completedHistoryRef.current.length + fields.length;\n } else {\n // Genuine fresh batch\n initialTotalRef.current = fields.length;\n setDisplayIndex(0);\n completedHistoryRef.current = [];\n }\n }\n if (fields.length === 0) {\n initialTotalRef.current = 0;\n // History is intentionally kept so back-from-summary can use it\n }\n }, [fields.length]);\n\n const totalCount = initialTotalRef.current || fields.length;\n\n // Back-from-summary: triggered by parent incrementing backTrigger prop\n // Must be defined and its useEffect called BEFORE any early returns (Rules of Hooks)\n const handleBackFromSummary = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue, removed } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n if (removed) {\n el.set({ visible: true });\n removedDueToSkipRef.current = removedDueToSkipRef.current.filter((e) => e.id !== el.id);\n } else {\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n }\n isGoingBackRef.current = true;\n store._unresolveInputField(el);\n }\n // displayIndex stays unchanged — it already points to the last step (N-1)\n };\n\n useEffect(() => {\n if (backTrigger !== prevBackTriggerRef.current) {\n prevBackTriggerRef.current = backTrigger;\n handleBackFromSummary();\n }\n }, [backTrigger]);\n\n if (!enabled || fields.length === 0) return null;\n\n // Always show the first remaining field — the array shrinks as fields are resolved\n const currentField = fields[0];\n if (!currentField) return null;\n\n // ── Helper: clear the removed-elements tracking ref ──────────────────\n // Elements are kept in the canvas with visible:false — they don't render\n // on screen or in exports, and can be restored via back navigation at any\n // point (including back-from-summary via backTrigger) without touching\n // deleted MST nodes.\n const _flushRemovedElements = () => {\n removedDueToSkipRef.current = [];\n };\n\n // ── Shared submit / skip / back helpers ─────────────────────────────\n const handleSubmit = (elementId, value) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: false });\n if (el && el.set) {\n if (isImage) {\n el.set({ src: String(value) });\n } else {\n el.set({ text: String(value) });\n }\n }\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n _flushRemovedElements();\n store.history.addUndoState();\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleSkip = (elementId) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n const shouldRemove = !!(el && el.custom && el.custom.removeIfSkipped);\n if (shouldRemove) {\n el.set({ visible: false });\n removedDueToSkipRef.current.push(el);\n }\n completedHistoryRef.current.push({ el, previousValue, skipped: true, removed: shouldRemove });\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n const hadRemovals = removedDueToSkipRef.current.length > 0;\n _flushRemovedElements();\n if (hadRemovals) store.history.addUndoState();\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleBack = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue, removed } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n if (removed) {\n el.set({ visible: true });\n removedDueToSkipRef.current = removedDueToSkipRef.current.filter((e) => e.id !== el.id);\n } else {\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n }\n store._unresolveInputField(el);\n }\n setDisplayIndex((prev) => Math.max(0, prev - 1));\n };\n\n const canGoBack = displayIndex > 0;\n\n // ── Resolve which dialog component to use ───────────────────────────\n // Priority: per-type custom dialog > global CustomDialog > built-in\n const TYPE_DIALOG_MAP = {\n text: config.CustomTextDialog,\n date: config.CustomDateDialog,\n integer: config.CustomIntegerDialog,\n image: config.CustomImageDialog,\n radio: config.CustomRadioDialog,\n list: config.CustomListDialog,\n };\n\n const fieldType = (currentField.custom && currentField.custom.inputType) || 'text';\n const PerTypeDialog = TYPE_DIALOG_MAP[fieldType];\n const GlobalCustomDialog = config.CustomDialog;\n const ResolvedDialog = PerTypeDialog || GlobalCustomDialog || null;\n\n if (ResolvedDialog) {\n return (\n <ResolvedDialog\n field={currentField}\n fields={fields}\n currentIndex={displayIndex}\n totalCount={totalCount}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n onComplete={() => {\n _flushRemovedElements();\n store.history.addUndoState();\n if (onComplete) onComplete();\n }}\n />\n );\n }\n\n return (\n <SingleFieldDialog\n field={currentField}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n currentIndex={displayIndex}\n totalCount={totalCount}\n />\n );\n});\n\nInputFieldsDialog.displayName = 'InputFieldsDialog';\nexport default InputFieldsDialog;\nexport { InputFieldsDialog };\n","import React, { useRef, useEffect, useCallback, useState } from 'react';\nimport { Stage, Layer, Rect, Transformer, Group, Image as KonvaImage, Shape } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport ElementRenderer from './element';\nimport InputFieldsDialog from '../components/InputFieldsDialog';\n\n// Generate a checkerboard pattern tile (off-screen canvas)\nconst createCheckerboardImage = (tileSize = 10, color1 = '#d4d4d4', color2 = '#ffffff') => {\n const canvas = document.createElement('canvas');\n canvas.width = tileSize * 2;\n canvas.height = tileSize * 2;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = color1;\n ctx.fillRect(0, 0, tileSize, tileSize);\n ctx.fillRect(tileSize, tileSize, tileSize, tileSize);\n ctx.fillStyle = color2;\n ctx.fillRect(tileSize, 0, tileSize, tileSize);\n ctx.fillRect(0, tileSize, tileSize, tileSize);\n const img = new window.Image();\n img.src = canvas.toDataURL();\n return img;\n};\n\nlet _checkerImg = null;\nconst getCheckerboardImage = () => {\n if (!_checkerImg) _checkerImg = createCheckerboardImage();\n return _checkerImg;\n};\n\nconst CheckerboardBackground = ({ w, h }) => {\n const [ready, setReady] = useState(false);\n const imgRef = useRef(getCheckerboardImage());\n useEffect(() => {\n const img = imgRef.current;\n if (img.complete) { setReady(true); return; }\n img.onload = () => setReady(true);\n return () => { img.onload = null; };\n }, []);\n if (!ready) return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"display-only\" />;\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillPatternImage={imgRef.current}\n fillPatternRepeat=\"repeat\"\n listening={false}\n name=\"display-only\"\n />\n );\n};\n\nconst ImageBackground = ({ url, w, h }) => {\n const [image, setImage] = useState(null);\n useEffect(() => {\n if (!url) { setImage(null); return; }\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => setImage(img);\n img.onerror = () => setImage(null);\n img.src = url;\n return () => { img.onload = null; img.onerror = null; };\n }, [url]);\n if (!image) return <Rect x={0} y={0} width={w} height={h} fill=\"#f0f0f0\" listening={false} name=\"page-background\" />;\n\n // \"cover\" fit: scale to fill canvas while maintaining aspect ratio, then center\n const imgW = image.naturalWidth || image.width;\n const imgH = image.naturalHeight || image.height;\n const scale = Math.max(w / imgW, h / imgH);\n const drawW = imgW * scale;\n const drawH = imgH * scale;\n const drawX = (w - drawW) / 2;\n const drawY = (h - drawH) / 2;\n\n return (\n <Group clipX={0} clipY={0} clipWidth={w} clipHeight={h} listening={false} name=\"page-background\">\n <KonvaImage x={drawX} y={drawY} width={drawW} height={drawH} image={image} listening={false} />\n </Group>\n );\n};\n\nconst PageBackground = observer(({ store }) => {\n const page = store.activePage;\n if (!page) return null;\n\n const bg = page.background;\n const w = store.width;\n const h = store.height;\n\n if (!bg) {\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n }\n\n if (bg === 'transparent') {\n return (\n <>\n <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />\n <CheckerboardBackground w={w} h={h} />\n </>\n );\n }\n\n // Linear gradient stored as JSON\n if (bg.startsWith('{')) {\n try {\n const grad = JSON.parse(bg);\n if (grad.type === 'linear') {\n const angle = (grad.angle || 0) * (Math.PI / 180);\n const cx = w / 2, cy = h / 2;\n const len = Math.sqrt(w * w + h * h) / 2;\n const x1 = cx - len * Math.cos(angle);\n const y1 = cy - len * Math.sin(angle);\n const x2 = cx + len * Math.cos(angle);\n const y2 = cy + len * Math.sin(angle);\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillLinearGradientStartPoint={{ x: x1, y: y1 }}\n fillLinearGradientEndPoint={{ x: x2, y: y2 }}\n fillLinearGradientColorStops={[0, grad.colors?.[0] || '#000000', 1, grad.colors?.[1] || '#ffffff']}\n listening={false}\n name=\"page-background\"\n />\n );\n }\n } catch (e) { /* fall through */ }\n }\n\n // Image URL background\n if (bg.startsWith('http')) {\n return <ImageBackground url={bg} w={w} h={h} />;\n }\n\n // Solid color\n if (bg.startsWith('#') || bg.startsWith('rgb') || bg.startsWith('hsl') || ['white', 'black', 'red', 'blue', 'green'].includes(bg)) {\n return <Rect x={0} y={0} width={w} height={h} fill={bg} listening={false} name=\"page-background\" />;\n }\n\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n});\n\n// Semi-transparent overlay that dims everything outside the page boundary.\n// Draws a huge rectangle with a rectangular hole cut out for the page area.\nconst PageOverlayFrame = observer(({ store }) => {\n const W = store.width;\n const H = store.height;\n if (!W || !H) return null;\n const BIG = 100000; // large enough to cover viewport at any zoom\n return (\n <Shape\n sceneFunc={(ctx, shape) => {\n ctx.beginPath();\n // Outer rectangle (clockwise)\n ctx.moveTo(-BIG, -BIG);\n ctx.lineTo(BIG, -BIG);\n ctx.lineTo(BIG, BIG);\n ctx.lineTo(-BIG, BIG);\n ctx.closePath();\n // Inner rectangle (counter-clockwise to create hole)\n ctx.moveTo(0, 0);\n ctx.lineTo(0, H);\n ctx.lineTo(W, H);\n ctx.lineTo(W, 0);\n ctx.closePath();\n ctx.fillStrokeShape(shape);\n }}\n fill=\"rgba(240,240,240,0.5)\"\n listening={false}\n name=\"display-only\"\n />\n );\n});\n\nconst ALL_ANCHORS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nconst TEXT_ANCHORS = [\n 'top-left',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst CORNER_ANCHORS = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst SelectionTransformer = observer(({ store, stageRef }) => {\n const transformerRef = useRef(null);\n\n const selectedIds = [...store.selectedElementsIds];\n\n // Filter out line elements — they use custom endpoint handles instead\n const nonLineIds = selectedIds.filter((id) => {\n const el = store.getElementById(id);\n return el && el.type !== 'line';\n });\n\n const allText = nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'text';\n })();\n\n const useCorners = nonLineIds.length > 1 || (nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'group';\n })());\n\n const targetAnchors = useCorners ? CORNER_ANCHORS : allText ? TEXT_ANCHORS : ALL_ANCHORS;\n\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (!transformerRef.current || !stageRef.current) return;\n\n const stage = stageRef.current;\n const nodes = [];\n\n nonLineIds.forEach((id) => {\n const node = stage.findOne(`#${id}`);\n if (node) nodes.push(node);\n });\n\n transformerRef.current.enabledAnchors(targetAnchors);\n transformerRef.current.nodes(nodes);\n transformerRef.current.getLayer()?.batchDraw();\n });\n return () => cancelAnimationFrame(frame);\n }, [nonLineIds.length, nonLineIds.join(','), targetAnchors]);\n\n return (\n <Transformer\n ref={transformerRef}\n rotateEnabled={true}\n enabledAnchors={ALL_ANCHORS}\n boundBoxFunc={(oldBox, newBox) => {\n // Reject flip (negative) and too-small dimensions\n if (newBox.width < 5 || newBox.height < 5) {\n return oldBox;\n }\n return newBox;\n }}\n anchorSize={8}\n anchorCornerRadius={2}\n borderStroke=\"#0d83cd\"\n anchorStroke=\"#0d83cd\"\n anchorFill=\"#ffffff\"\n padding={0}\n />\n );\n});\n\nconst Workspace = observer(({ store, components = {}, showInputFieldsPopup = true, onInputFieldsComplete, backTrigger = 0 }) => {\n const stageRef = useRef(null);\n const containerRef = useRef(null);\n const [stageSize, setStageSize] = useState({ width: 800, height: 600 });\n\n const { PageControls } = components;\n\n // Resize observer\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateSize = () => {\n const { width, height } = container.getBoundingClientRect();\n setStageSize({ width, height });\n\n // Auto-fit the canvas.\n // Guard: if the container hasn't been laid out yet (width/height === 0)\n // the arithmetic produces a negative scale which mirrors the entire canvas.\n // Skip the update in that case — the ResizeObserver will fire again once\n // the container has real dimensions.\n if (store.width > 0 && store.height > 0 && width > 0 && height > 0) {\n const padding = 40;\n const scaleX = (width - padding * 2) / store.width;\n const scaleY = (height - padding * 2) / store.height;\n const scale = Math.min(scaleX, scaleY, 1);\n if (scale > 0) {\n store._setScaleToFit(scale);\n if (store.scale === 1) {\n store.setScale(scale);\n }\n }\n }\n };\n\n updateSize();\n\n const observer = new ResizeObserver(updateSize);\n observer.observe(container);\n\n return () => observer.disconnect();\n }, [store.width, store.height]);\n\n // Set stage ref on store for export\n useEffect(() => {\n if (stageRef.current) {\n store._setStageRef(stageRef.current);\n }\n }, [stageRef.current]);\n\n const handleStageMouseDown = useCallback(\n (e) => {\n let target = e.target;\n\n // Click on empty area or background -> deselect\n if (target === target.getStage() || target.attrs?.name === 'page-background') {\n store.selectElements([]);\n return;\n }\n\n // Walk up the node tree to find the nearest ancestor with an element id\n // (needed for Group-wrapped elements like lines)\n let clickedId = target.id();\n while (!clickedId && target.parent && target.parent !== target.getStage()) {\n target = target.parent;\n clickedId = target.id();\n }\n if (!clickedId) return;\n\n const element = store.getElementById(clickedId);\n if (!element || !element.selectable) return;\n\n // If element is inside a group, select the top-level group instead\n const targetElement = element.top || element;\n const targetId = targetElement.id;\n\n if (e.evt?.ctrlKey || e.evt?.metaKey) {\n // Multi-select with Ctrl (Cmd on Mac)\n const currentIds = [...store.selectedElementsIds];\n const idx = currentIds.indexOf(targetId);\n if (idx >= 0) {\n currentIds.splice(idx, 1);\n } else {\n currentIds.push(targetId);\n }\n store.selectElements(currentIds);\n } else if (!store.selectedElementsIds.includes(targetId)) {\n store.selectElements([targetId]);\n }\n },\n [store]\n );\n\n const handleTransformEnd = useCallback(() => {\n // Save to history after transform\n store.history.addUndoState();\n }, [store]);\n\n const handleDragEnd = useCallback(() => {\n // Save to history after drag\n store.history.addUndoState();\n }, [store]);\n\n // Keyboard shortcuts\n useEffect(() => {\n const handleKeyDown = (e) => {\n // Only handle if stage container or body is focused\n const target = e.target;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n return;\n }\n\n // Delete / Backspace\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n store.deleteElements(selectedIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+Z / Cmd+Z -> Undo\n if ((e.ctrlKey || e.metaKey) && e.key === 'z' && !e.shiftKey) {\n store.history.undo();\n e.preventDefault();\n }\n\n // Ctrl+Y / Cmd+Shift+Z -> Redo\n if (\n ((e.ctrlKey || e.metaKey) && e.key === 'y') ||\n ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'z')\n ) {\n store.history.redo();\n e.preventDefault();\n }\n\n // Ctrl+D -> Duplicate\n if ((e.ctrlKey || e.metaKey) && e.key === 'd') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0 && store.activePage) {\n const newIds = [];\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.clone) {\n const cloned = el.clone({ x: (el.x || 0) + 20, y: (el.y || 0) + 20 }, { skipSelect: true });\n if (cloned) newIds.push(cloned.id);\n }\n });\n store.selectElements(newIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+G -> Group selected elements\n if ((e.ctrlKey || e.metaKey) && e.key === 'g' && !e.shiftKey) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 1) {\n const group = store.groupElements(selectedIds);\n if (group) {\n store.selectElements([group.id]);\n store.history.addUndoState();\n }\n e.preventDefault();\n }\n }\n\n // Ctrl+Shift+G -> Ungroup\n if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'G') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length === 1) {\n const el = store.getElementById(selectedIds[0]);\n if (el && el.type === 'group') {\n store.ungroupElements([el.id]);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n }\n\n // Arrow keys -> nudge\n const NUDGE = e.shiftKey ? 10 : 1;\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key)) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.set) {\n if (e.key === 'ArrowLeft') el.set({ x: el.x - NUDGE });\n if (e.key === 'ArrowRight') el.set({ x: el.x + NUDGE });\n if (e.key === 'ArrowUp') el.set({ y: el.y - NUDGE });\n if (e.key === 'ArrowDown') el.set({ y: el.y + NUDGE });\n }\n });\n e.preventDefault();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [store]);\n\n // Zoom with mouse wheel\n const handleWheel = useCallback(\n (e) => {\n e.evt.preventDefault();\n const stage = stageRef.current;\n if (!stage) return;\n\n const scaleBy = 1.05;\n const oldScale = store.scale;\n const newScale =\n e.evt.deltaY > 0 ? oldScale / scaleBy : oldScale * scaleBy;\n\n store.setScale(Math.max(0.1, Math.min(5, newScale)));\n },\n [store]\n );\n\n const page = store.activePage;\n const scale = store.scale;\n // Reading _fontVersion makes this observer re-render whenever a font finishes\n // loading, so Konva redraws text with the correct font instead of the fallback.\n void store._fontVersion;\n\n // Center the canvas in the viewport\n const offsetX = (stageSize.width - store.width * scale) / 2;\n const offsetY = (stageSize.height - store.height * scale) / 2;\n\n return (\n <div\n ref={containerRef}\n style={{\n width: '100%',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n position: 'relative',\n background: '#f0f0f0',\n }}\n >\n <Stage\n ref={stageRef}\n width={stageSize.width}\n height={stageSize.height}\n onMouseDown={handleStageMouseDown}\n onTouchStart={handleStageMouseDown}\n onWheel={handleWheel}\n >\n <Layer\n x={offsetX}\n y={offsetY}\n scaleX={scale}\n scaleY={scale}\n >\n {/* Canvas shadow */}\n <Rect\n x={4}\n y={4}\n width={store.width}\n height={store.height}\n fill=\"rgba(0,0,0,0.1)\"\n cornerRadius={0}\n listening={false}\n name=\"display-only\"\n />\n\n {/* Page background */}\n <PageBackground store={store} />\n\n {/* Elements */}\n {page &&\n page.children.map((element) => (\n <ElementRenderer\n key={element.id}\n element={element}\n isSelected={store.selectedElementsIds.includes(element.id)}\n onTransformEnd={handleTransformEnd}\n onDragEnd={handleDragEnd}\n />\n ))}\n\n {/* Overlay that dims content outside the page */}\n <PageOverlayFrame store={store} />\n\n {/* Selection transformer */}\n <SelectionTransformer store={store} stageRef={stageRef} />\n </Layer>\n </Stage>\n\n {/* Page controls slot */}\n {PageControls !== undefined ? (\n PageControls === null ? null : <PageControls store={store} />\n ) : null}\n\n {/* Input fields popup */}\n <InputFieldsDialog store={store} enabled={showInputFieldsPopup} onComplete={onInputFieldsComplete} backTrigger={backTrigger} />\n </div>\n );\n});\n\nWorkspace.displayName = 'Workspace';\nexport default Workspace;\nexport { Workspace };\n","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","getSnapshot","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","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","_ref4$mimeType","mimeType","stage","layer","prevX","prevY","prevScaleX","prevScaleY","displayOnlyNodes","transformerNodes","rawCanvas","finalCanvas","ctx","ignoreBackground","includeBleed","_skipTimeout","quickMode","Error","getLayers","scaleX","scaleY","hide","draw","toCanvas","show","document","createElement","getContext","fillStyle","fillRect","drawImage","toDataURL","_arguments2","_callee2","_ref5","_ref5$mimeType","_ref5$quality","quality","rest","canvas","_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","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","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","OptionsEditor","mr","opt","next","j","AddIcon","alignSelf","InputFieldCard","icon","description","InputFieldsPanelContent","dateFormat","setDateFormat","textPrompt","setTextPrompt","datePrompt","setDatePrompt","integerPrompt","setIntegerPrompt","imagePrompt","setImagePrompt","textRequired","setTextRequired","dateRequired","setDateRequired","integerRequired","setIntegerRequired","imageRequired","setImageRequired","radioPrompt","setRadioPrompt","radioRequired","setRadioRequired","radioOptions","setRadioOptions","listPrompt","setListPrompt","listMinSelections","setListMinSelections","listMaxSelections","setListMaxSelections","_useState29","_useState30","listOptions","setListOptions","_useState31","_useState32","textRemoveIfSkipped","setTextRemoveIfSkipped","_useState33","_useState34","dateRemoveIfSkipped","setDateRemoveIfSkipped","_useState35","_useState36","integerRemoveIfSkipped","setIntegerRemoveIfSkipped","_useState37","_useState38","imageRemoveIfSkipped","setImageRemoveIfSkipped","_useState39","_useState40","radioRemoveIfSkipped","setRadioRemoveIfSkipped","_useState41","_useState42","listRemoveIfSkipped","setListRemoveIfSkipped","addInputElement","inputType","extra","promptText","required","removeIfSkipped","dummyText","defaultPrompt","textWidth","minSelections","maxSelections","FormControlLabel","control","Checkbox","CalendarTodayIcon","FormControl","InputLabel","Select","fmt","MenuItem","NumbersIcon","RadioButtonCheckedIcon","FormatListBulletedIcon","Divider","my","MarkAsVariableForm","_selectedElement$cust","_useState43","_useState44","markLabel","setMarkLabel","_useState45","_useState46","markRequired","setMarkRequired","_useState47","_useState48","markInputType","setMarkInputType","_useState49","_useState50","markOptions","setMarkOptions","_useState51","_useState52","markMinSelections","setMarkMinSelections","_useState53","_useState54","markMaxSelections","setMarkMaxSelections","_useState55","_useState56","markRemoveIfSkipped","setMarkRemoveIfSkipped","selectedIds","selectedElement","isImageElement","isTextElement","isSupportedElement","isAlreadyVariable","_selectedElement$cust2","_selectedElement$cust3","_selectedElement$cust4","_selectedElement$cust5","_selectedElement$cust6","_selectedElement$cust7","_selectedElement$cust8","handleMark","effectiveType","handleUnmark","Alert","severity","Chip","bgcolor","InputFieldsSection","InputIcon","GOOGLE_FONTS_API","cachedFonts","fetchGoogleFonts","_fetchGoogleFonts","apiKey","response","items","family","variants","category","loadGoogleFont","_loadGoogleFont","DEFAULT_FONTS","_positionMenuItemSx","_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","PositionButton","setAnchorEl","pageW","pageH","alignEl","xVal","yVal","fn","OpenWithIcon","Popover","VerticalAlignTopIcon","VerticalAlignBottomIcon","rx","by","positions","row","col","placement","CommonControls","handleDuplicate","handleOpacityChange","handleOpacityCommit","OpacityIcon","onChangeCommitted","ContentCopyIcon","DefaultDownloadButton","fileType","setFileType","setQuality","exporting","setExporting","handleClick","qualityToPixelRatio","resWidth","resHeight","handleDownload","fileTypeLabel","png","jpeg","endIcon","ArrowDropDownIcon","DefaultImportButton","importing","setImporting","React","handleFileChange","_ref12","jsonData","_t3","FileUploadIcon","TYPE_TOOLBARS","rowSx","scrollbarWidth","Toolbar","_ref13","_ref13$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","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","stageContainer","container","textPosition","absolutePosition","absScale","getAbsoluteScale","cssFontStyle","cssFontWeight","originalText","textarea","borderWidth","margin","outline","resize","appearance","webkitAppearance","boxSizing","wordBreak","placeholderStyle","focus","removed","removeTextarea","cancel","newText","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","selectedItems","setSelectedItems","isRequired","isSubmitDisabled","logoUrl","headerText","accentColor","progressPct","handleImageSelect","reader","FileReader","ev","readAsDataURL","handleSubmit","dateObj","formatted","handleKeyDown","sharedSx","inputStyle","onKeyDown","autoFocus","InputLabelProps","shrink","_fileInputRef$current2","RadioGroup","Radio","isAtMax","FormGroup","inset","dialogStyle","titleStyle","xs","sm","promptStyle","ArrowBackIcon","submitButtonStyle","submitButtonText","skipButtonStyle","skipButtonText","InputFieldsDialog","onComplete","_ref2$enabled","_ref2$backTrigger","backTrigger","displayIndex","setDisplayIndex","initialTotalRef","completedHistoryRef","removedDueToSkipRef","isGoingBackRef","prevBackTriggerRef","pendingFields","handleBackFromSummary","last","pop","previousValue","isImage","currentField","_flushRemovedElements","skipped","handleSkip","shouldRemove","hadRemovals","handleBack","TYPE_DIALOG_MAP","CustomTextDialog","CustomDateDialog","integer","CustomIntegerDialog","CustomImageDialog","radio","CustomRadioDialog","list","CustomListDialog","fieldType","PerTypeDialog","GlobalCustomDialog","CustomDialog","ResolvedDialog","createCheckerboardImage","tileSize","color1","color2","_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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"}
|
|
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, getSnapshot } 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 = { ...getSnapshot(self) };\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 = [el, ...self._pendingInputFields];\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\n // Hide display-only nodes (shadow, checkerboard, overlay) — not wanted in export\n const displayOnlyNodes = layer.find('.display-only');\n displayOnlyNodes.forEach((n) => n.hide());\n\n // Hide selection transformer handles so they don't appear in exports\n const transformerNodes = layer.find('Transformer');\n transformerNodes.forEach((n) => n.hide());\n\n layer.draw();\n\n const rawCanvas = layer.toCanvas({\n pixelRatio,\n x: 0,\n y: 0,\n width: self.width,\n height: self.height,\n });\n\n // Restore display-only nodes and transformer handles\n displayOnlyNodes.forEach((n) => n.show());\n transformerNodes.forEach((n) => n.show());\n\n // Restore layer transform\n layer.x(prevX);\n layer.y(prevY);\n layer.scaleX(prevScaleX);\n layer.scaleY(prevScaleY);\n layer.draw();\n\n // For JPEG, composite onto a white canvas to eliminate any remaining transparency\n // (avoids black areas and reduces file size vs checkerboard patterns)\n if (mimeType === 'image/jpeg') {\n const finalCanvas = document.createElement('canvas');\n finalCanvas.width = rawCanvas.width;\n finalCanvas.height = rawCanvas.height;\n const ctx = finalCanvas.getContext('2d');\n ctx.fillStyle = '#ffffff';\n ctx.fillRect(0, 0, finalCanvas.width, finalCanvas.height);\n ctx.drawImage(rawCanvas, 0, 0);\n return finalCanvas;\n }\n\n return rawCanvas;\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 = 0.92, ...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, IconButton } 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 RadioButtonCheckedIcon from '@mui/icons-material/RadioButtonChecked';\nimport FormatListBulletedIcon from '@mui/icons-material/FormatListBulleted';\nimport AddIcon from '@mui/icons-material/Add';\nimport DeleteIcon from '@mui/icons-material/Delete';\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// ── Options list editor ──────────────────────────────────────────────\nconst OptionsEditor = ({ options, onChange }) => (\n <Box sx={{ ml: 6.5, mr: 1, display: 'flex', flexDirection: 'column', gap: 0.75 }}>\n {options.map((opt, i) => (\n <Box key={i} sx={{ display: 'flex', gap: 0.5, alignItems: 'center' }}>\n <TextField\n size=\"small\"\n value={opt}\n onChange={(e) => {\n const next = [...options];\n next[i] = e.target.value;\n onChange(next);\n }}\n placeholder={`Option ${i + 1}`}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <IconButton\n size=\"small\"\n onClick={() => onChange(options.filter((_, j) => j !== i))}\n disabled={options.length <= 1}\n sx={{ color: '#bbb', '&:hover': { color: '#e57373' } }}\n >\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n ))}\n <Button\n size=\"small\"\n startIcon={<AddIcon />}\n onClick={() => onChange([...options, ''])}\n sx={{ alignSelf: 'flex-start', fontSize: 11, textTransform: 'none', color: '#0d83cd', p: 0.5 }}\n >\n Add option\n </Button>\n </Box>\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 const [radioPrompt, setRadioPrompt] = useState('');\n const [radioRequired, setRadioRequired] = useState(false);\n const [radioOptions, setRadioOptions] = useState(['Option 1', 'Option 2']);\n const [listPrompt, setListPrompt] = useState('');\n const [listMinSelections, setListMinSelections] = useState(0);\n const [listMaxSelections, setListMaxSelections] = useState(2);\n const [listOptions, setListOptions] = useState(['Option 1', 'Option 2']);\n const [textRemoveIfSkipped, setTextRemoveIfSkipped] = useState(false);\n const [dateRemoveIfSkipped, setDateRemoveIfSkipped] = useState(false);\n const [integerRemoveIfSkipped, setIntegerRemoveIfSkipped] = useState(false);\n const [imageRemoveIfSkipped, setImageRemoveIfSkipped] = useState(false);\n const [radioRemoveIfSkipped, setRadioRemoveIfSkipped] = useState(false);\n const [listRemoveIfSkipped, setListRemoveIfSkipped] = 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 removeIfSkipped: extra.removeIfSkipped || 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 case 'radio':\n dummyText = (extra.options || []).filter(Boolean)[0] || 'Option 1';\n placeholder = t('sidePanel.inputFields.radioPlaceholder', 'Select an option');\n defaultPrompt = t('sidePanel.inputFields.defaultRadioPrompt', 'Please select an option');\n break;\n case 'list':\n dummyText = (extra.options || []).filter(Boolean).slice(0, 2).join(', ') || 'Option 1, Option 2';\n placeholder = t('sidePanel.inputFields.listPlaceholder', 'Select options');\n defaultPrompt = t('sidePanel.inputFields.defaultListPrompt', 'Please select options');\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 removeIfSkipped: extra.removeIfSkipped || false,\n ...(inputType === 'date' ? { dateFormat: extra.dateFormat || 'MM-DD-YYYY' } : {}),\n ...(['radio', 'list'].includes(inputType) ? { options: (extra.options || []).filter(Boolean) } : {}),\n ...(inputType === 'list' ? { minSelections: extra.minSelections || 0, maxSelections: extra.maxSelections || 0 } : {}),\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, removeIfSkipped: textRemoveIfSkipped })}\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 {!textRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={textRemoveIfSkipped} onChange={(e) => setTextRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\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, removeIfSkipped: dateRemoveIfSkipped })}\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 {!dateRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={dateRemoveIfSkipped} onChange={(e) => setDateRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\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, removeIfSkipped: integerRemoveIfSkipped })}\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 {!integerRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={integerRemoveIfSkipped} onChange={(e) => setIntegerRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\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, removeIfSkipped: imageRemoveIfSkipped })}\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 {!imageRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={imageRemoveIfSkipped} onChange={(e) => setImageRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n )}\n\n {/* Radio input */}\n <InputFieldCard\n icon={<RadioButtonCheckedIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.radioInput', 'Radio Input')}\n description={t('sidePanel.inputFields.radioInputDesc', 'Single option selection')}\n onClick={() => addInputElement('radio', { promptText: radioPrompt, required: radioRequired, options: radioOptions, removeIfSkipped: radioRemoveIfSkipped })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={radioPrompt}\n onChange={(e) => setRadioPrompt(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={radioRequired} onChange={(e) => setRadioRequired(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.required', 'Required')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n {!radioRequired && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={radioRemoveIfSkipped} onChange={(e) => setRadioRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\n )}\n <OptionsEditor options={radioOptions} onChange={setRadioOptions} />\n\n {/* List (multi-select) input */}\n <InputFieldCard\n icon={<FormatListBulletedIcon fontSize=\"small\" />}\n label={t('sidePanel.inputFields.listInput', 'List Input')}\n description={t('sidePanel.inputFields.listInputDesc', 'Multiple option selection')}\n onClick={() => addInputElement('list', { promptText: listPrompt, minSelections: listMinSelections, maxSelections: listMaxSelections, options: listOptions, removeIfSkipped: listRemoveIfSkipped })}\n />\n <TextField\n size=\"small\"\n placeholder={t('sidePanel.inputFields.promptTextHint', 'Prompt text shown to user...')}\n value={listPrompt}\n onChange={(e) => setListPrompt(e.target.value)}\n sx={{ ml: 6.5, mr: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <OptionsEditor options={listOptions} onChange={setListOptions} />\n <Box sx={{ display: 'flex', gap: 1, ml: 6.5, mr: 1 }}>\n <TextField\n size=\"small\"\n type=\"number\"\n label={t('sidePanel.inputFields.minSelections', 'Min select')}\n value={listMinSelections}\n onChange={(e) => setListMinSelections(Math.max(0, parseInt(e.target.value) || 0))}\n inputProps={{ min: 0 }}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n label={t('sidePanel.inputFields.maxSelections', 'Max select')}\n value={listMaxSelections}\n onChange={(e) => setListMaxSelections(Math.max(0, parseInt(e.target.value) || 0))}\n inputProps={{ min: 0 }}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ ml: 6.5, color: '#999', fontSize: 10 }}>\n {listMinSelections > 0\n ? `Required · min ${listMinSelections}${listMaxSelections > 0 ? `, max ${listMaxSelections}` : ', no max'}`\n : `Optional · max ${listMaxSelections > 0 ? listMaxSelections : '∞'}`}\n </Typography>\n {listMinSelections === 0 && (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={listRemoveIfSkipped} onChange={(e) => setListRemoveIfSkipped(e.target.checked)} />}\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n sx={{ ml: 5.5 }}\n />\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 const [markOptions, setMarkOptions] = useState(['Option 1', 'Option 2']);\n const [markMinSelections, setMarkMinSelections] = useState(0);\n const [markMaxSelections, setMarkMaxSelections] = useState(2);\n const [markRemoveIfSkipped, setMarkRemoveIfSkipped] = useState(false);\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 setMarkOptions(selectedElement.custom?.options || ['Option 1', 'Option 2']);\n setMarkMinSelections(selectedElement.custom?.minSelections || 0);\n setMarkMaxSelections(selectedElement.custom?.maxSelections || 2);\n setMarkRemoveIfSkipped(!!selectedElement.custom?.removeIfSkipped);\n } else {\n setMarkLabel('');\n setMarkRequired(false);\n setMarkInputType('text');\n setMarkOptions(['Option 1', 'Option 2']);\n setMarkMinSelections(0);\n setMarkMaxSelections(2);\n setMarkRemoveIfSkipped(false);\n }\n }, [selectedElement?.id]);\n\n const handleMark = () => {\n if (!selectedElement || !markLabel.trim()) return;\n const effectiveType = isImageElement ? 'image' : markInputType;\n selectedElement.set({\n custom: {\n ...selectedElement.custom,\n inputField: true,\n promptText: markLabel.trim(),\n inputType: effectiveType,\n required: markRequired,\n removeIfSkipped: !markRequired && markRemoveIfSkipped,\n ...(['radio', 'list'].includes(effectiveType) ? { options: markOptions.filter(Boolean) } : {}),\n ...(effectiveType === 'list' ? { minSelections: markMinSelections, maxSelections: markMaxSelections } : {}),\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 removeIfSkipped: _ris,\n placeholder: _pl,\n options: _o,\n minSelections: _min,\n maxSelections: _max,\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 “{selectedElement.text}”\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 <MenuItem value=\"radio\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.radioInput', 'Radio Input')}</MenuItem>\n <MenuItem value=\"list\" sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.listInput', 'List Input')}</MenuItem>\n </Select>\n </FormControl>\n )}\n\n {isTextElement && (markInputType === 'radio' || markInputType === 'list') && (\n <>\n <Typography variant=\"caption\" sx={{ color: '#888', fontSize: 11 }}>Options</Typography>\n <OptionsEditor options={markOptions} onChange={setMarkOptions} />\n </>\n )}\n\n {isTextElement && markInputType === 'list' && (\n <>\n <Box sx={{ display: 'flex', gap: 1 }}>\n <TextField\n size=\"small\"\n type=\"number\"\n label={t('sidePanel.inputFields.minSelections', 'Min select')}\n value={markMinSelections}\n onChange={(e) => setMarkMinSelections(Math.max(0, parseInt(e.target.value) || 0))}\n inputProps={{ min: 0 }}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n <TextField\n size=\"small\"\n type=\"number\"\n label={t('sidePanel.inputFields.maxSelections', 'Max select')}\n value={markMaxSelections}\n onChange={(e) => setMarkMaxSelections(Math.max(0, parseInt(e.target.value) || 0))}\n inputProps={{ min: 0 }}\n sx={{ flex: 1, '& .MuiInputBase-input': { fontSize: 12, py: 0.75 } }}\n />\n </Box>\n <Typography variant=\"caption\" sx={{ color: '#999', fontSize: 10 }}>\n {markMinSelections > 0\n ? `Required · min ${markMinSelections}${markMaxSelections > 0 ? `, max ${markMaxSelections}` : ', no max'}`\n : `Optional · max ${markMaxSelections > 0 ? markMaxSelections : '∞'}`}\n </Typography>\n </>\n )}\n\n {(!isTextElement || markInputType !== 'list') && (\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\n {!markRequired && (\n <FormControlLabel\n control={\n <Checkbox\n size=\"small\"\n checked={markRemoveIfSkipped}\n onChange={(e) => setMarkRemoveIfSkipped(e.target.checked)}\n />\n }\n label={<Typography sx={{ fontSize: 12 }}>{t('sidePanel.inputFields.removeIfSkipped', 'Remove if skipped')}</Typography>}\n />\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';\nimport OpenWithIcon from '@mui/icons-material/OpenWith';\nimport AlignHorizontalLeftIcon from '@mui/icons-material/AlignHorizontalLeft';\nimport AlignHorizontalCenterIcon from '@mui/icons-material/AlignHorizontalCenter';\nimport AlignHorizontalRightIcon from '@mui/icons-material/AlignHorizontalRight';\nimport AlignVerticalTopIcon from '@mui/icons-material/AlignVerticalTop';\nimport AlignVerticalCenterIcon from '@mui/icons-material/AlignVerticalCenter';\nimport AlignVerticalBottomIcon from '@mui/icons-material/AlignVerticalBottom';\nimport VerticalAlignTopIcon from '@mui/icons-material/VerticalAlignTop';\nimport VerticalAlignBottomIcon from '@mui/icons-material/VerticalAlignBottom';\n\nconst _positionMenuItemSx = {\n textTransform: 'none',\n fontSize: 12,\n fontWeight: 400,\n color: '#333',\n justifyContent: 'flex-start',\n px: 1,\n py: 0.6,\n minWidth: 0,\n '&:hover': { backgroundColor: 'rgba(13,131,205,0.08)' },\n};\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// Position + alignment popover button\nconst PositionButton = observer(({ element, store }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n\n const pageW = store.width;\n const pageH = store.height;\n\n const alignEl = (xVal, yVal) => {\n const attrs = {};\n if (xVal !== null) attrs.x = xVal;\n if (yVal !== null) attrs.y = yVal;\n element.set(attrs);\n store.history.addUndoState();\n };\n\n const layer = (fn) => { fn(); store.history.addUndoState(); };\n\n return (\n <>\n <Button\n size=\"small\"\n onClick={(e) => setAnchorEl(e.currentTarget)}\n startIcon={<OpenWithIcon sx={{ fontSize: '16px !important' }} />}\n sx={{\n textTransform: 'none',\n fontSize: 12,\n whiteSpace: 'nowrap',\n px: 1.5,\n minWidth: 'auto',\n ...(open ? { backgroundColor: '#e3f2fd', color: '#0d83cd' } : {}),\n }}\n >\n {t('toolbar.position', 'Position')}\n </Button>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{ paper: { sx: { mt: 0.5, p: 2, width: 300, borderRadius: '10px', boxShadow: '0 4px 20px rgba(0,0,0,0.12)' } } }}\n >\n {/* Layer order */}\n <Typography variant=\"caption\" sx={{ fontWeight: 700, color: '#111', display: 'block', mb: 1, fontSize: 12 }}>\n {t('toolbar.layering', 'Layer order')}\n </Typography>\n <Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 0.5, mb: 2 }}>\n <Button size=\"small\" startIcon={<ArrowUpwardIcon />} onClick={() => layer(() => element.moveUp())} sx={_positionMenuItemSx}>\n {t('toolbar.up', 'Up')}\n </Button>\n <Button size=\"small\" startIcon={<ArrowDownwardIcon />} onClick={() => layer(() => element.moveDown())} sx={_positionMenuItemSx}>\n {t('toolbar.down', 'Down')}\n </Button>\n <Button size=\"small\" startIcon={<VerticalAlignTopIcon />} onClick={() => layer(() => element.moveTop())} sx={_positionMenuItemSx}>\n {t('toolbar.toForward', 'To front')}\n </Button>\n <Button size=\"small\" startIcon={<VerticalAlignBottomIcon />} onClick={() => layer(() => element.moveBottom())} sx={_positionMenuItemSx}>\n {t('toolbar.toBottom', 'To back')}\n </Button>\n </Box>\n\n <Divider sx={{ mb: 1.5 }} />\n\n {/* 3×3 position grid */}\n <Typography variant=\"caption\" sx={{ fontWeight: 700, color: '#111', display: 'block', mb: 1, fontSize: 12 }}>\n {t('toolbar.position', 'Position')}\n </Typography>\n {(() => {\n const cx = (pageW - element.width) / 2;\n const cy = (pageH - element.height) / 2;\n const rx = pageW - element.width;\n const by = pageH - element.height;\n const positions = [\n { label: 'Top left', x: 0, y: 0, row: 0, col: 0 },\n { label: 'Top center', x: cx, y: 0, row: 0, col: 1 },\n { label: 'Top right', x: rx, y: 0, row: 0, col: 2 },\n { label: 'Middle left', x: 0, y: cy, row: 1, col: 0 },\n { label: 'Center', x: cx, y: cy, row: 1, col: 1 },\n { label: 'Middle right', x: rx, y: cy, row: 1, col: 2 },\n { label: 'Bottom left', x: 0, y: by, row: 2, col: 0 },\n { label: 'Bottom center', x: cx, y: by, row: 2, col: 1 },\n { label: 'Bottom right', x: rx, y: by, row: 2, col: 2 },\n ];\n return (\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 0.5 }}>\n {positions.map(({ label, x, y }) => (\n <Tooltip key={label} title={label} placement=\"top\">\n <IconButton\n size=\"small\"\n onClick={() => alignEl(x, y)}\n sx={{\n borderRadius: '6px',\n border: '1px solid #e0e0e0',\n p: 0.75,\n '&:hover': { backgroundColor: 'rgba(13,131,205,0.08)', borderColor: '#0d83cd' },\n }}\n >\n {/* Mini 3×3 dot grid with the active cell highlighted */}\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 5px)', gap: '2px' }}>\n {[0,1,2].map((r) => [0,1,2].map((c) => (\n <Box\n key={`${r}-${c}`}\n sx={{\n width: 5, height: 5, borderRadius: '1px',\n backgroundColor: (r === positions.find(p => p.label === label).row && c === positions.find(p => p.label === label).col)\n ? '#0d83cd'\n : '#ccc',\n }}\n />\n )))}\n </Box>\n </IconButton>\n </Tooltip>\n ))}\n </Box>\n );\n })()}\n </Popover>\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 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 {/* Position + alignment */}\n <PositionButton element={element} store={store} />\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 originalText = element.text;\n\n const textarea = document.createElement('textarea');\n textarea.value = '';\n textarea.placeholder = originalText;\n textarea.style.position = 'absolute';\n textarea.style.top = `${textPosition.y}px`;\n textarea.style.left = `${textPosition.x}px`;\n textarea.style.width = `${element.width * scaleX}px`;\n textarea.style.height = `${element.height * scaleY}px`;\n textarea.style.fontSize = `${element.fontSize * scaleX}px`;\n textarea.style.fontFamily = `\"${element.fontFamily}\", sans-serif`;\n textarea.style.fontStyle = cssFontStyle;\n textarea.style.fontWeight = cssFontWeight;\n textarea.style.textAlign = element.align;\n textarea.style.color = element.fill;\n textarea.style.border = '0';\n textarea.style.borderWidth = '0';\n textarea.style.padding = '0';\n textarea.style.margin = '0';\n textarea.style.overflow = 'hidden';\n textarea.style.background = 'none';\n textarea.style.outline = 'none';\n textarea.style.resize = 'none';\n textarea.style.appearance = 'none';\n textarea.style.webkitAppearance = 'none';\n textarea.style.lineHeight = String(\n typeof element.lineHeight === 'number'\n ? element.lineHeight\n : parseFloat(element.lineHeight) || 1.2\n );\n textarea.style.letterSpacing = `${(element.letterSpacing || 0) * scaleX}px`;\n textarea.style.transformOrigin = 'left top';\n textarea.style.transform = `rotate(${element.rotation}deg)`;\n textarea.style.textDecoration = element.textDecoration || '';\n textarea.style.boxSizing = 'content-box';\n textarea.style.zIndex = '10000';\n textarea.style.whiteSpace = 'pre-wrap';\n textarea.style.wordBreak = 'break-word';\n textarea.style.minHeight = '0';\n textarea.style.minWidth = '0';\n\n // Placeholder inherits the element's text color at 40% opacity\n const placeholderStyle = document.createElement('style');\n placeholderStyle.textContent = `\n textarea:placeholder-shown { opacity: 1; }\n textarea::placeholder { color: ${element.fill}; opacity: 0.4; }\n `;\n stageContainer.appendChild(placeholderStyle);\n\n stageContainer.appendChild(textarea);\n textarea.focus();\n\n let removed = false;\n const removeTextarea = (cancel = false) => {\n if (removed) return;\n removed = true;\n const newText = !cancel && textarea.value.length > 0 ? textarea.value : originalText;\n element.set({ text: newText });\n element.toggleEditMode(false);\n if (grp) grp.show();\n stage.batchDraw();\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n if (placeholderStyle.parentNode) {\n placeholderStyle.parentNode.removeChild(placeholderStyle);\n }\n };\n\n textarea.addEventListener('blur', () => removeTextarea(false));\n textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') removeTextarea(true);\n });\n };\n\n // Compute displayed text based on textTransform\n let displayText = element.text || element.placeholder || '';\n if (element.textTransform === 'uppercase') {\n displayText = displayText.toUpperCase();\n } else if (element.textTransform === 'lowercase') {\n displayText = displayText.toLowerCase();\n } else if (element.textTransform === 'capitalize') {\n displayText = displayText.replace(/\\b\\w/g, (c) => c.toUpperCase());\n }\n\n const fontStyleStr = (() => {\n const parts = [];\n const style = String(element.fontStyle || '').trim();\n const weight = String(element.fontWeight || '').trim();\n if (style === 'italic' || style.includes('italic')) parts.push('italic');\n if (weight && weight !== 'normal') parts.push(weight);\n return parts.length > 0 ? parts.join(' ') : 'normal';\n })();\n\n const pad = element.backgroundEnabled ? (element.backgroundPadding || 0) : 0;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'text'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={textHeight}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDblClick={handleDblClick}\n onDblTap={handleDblClick}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {/* Background rect */}\n {element.backgroundEnabled && (\n <Rect\n x={-pad}\n y={-pad}\n width={element.width + pad * 2}\n height={textHeight + pad * 2}\n fill={element.backgroundColor || '#ffffff'}\n opacity={element.backgroundOpacity ?? 1}\n cornerRadius={element.backgroundCornerRadius || 0}\n listening={false}\n />\n )}\n\n {/* Text */}\n <KonvaText\n ref={textRef}\n text={displayText}\n width={element.width}\n fontSize={element.fontSize}\n fontFamily={element.fontFamily}\n fontStyle={fontStyleStr}\n textDecoration={element.textDecoration}\n fill={element.fill}\n align={element.align}\n verticalAlign={element.verticalAlign}\n lineHeight={typeof element.lineHeight === 'number' ? element.lineHeight : parseFloat(element.lineHeight) || 1.2}\n letterSpacing={element.letterSpacing}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth || 0}\n fillAfterStrokeEnabled={true}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n />\n </Group>\n );\n});\n\nTextElementComponent.displayName = 'TextElement';\nexport default TextElementComponent;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Image as KonvaImage } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst SVGElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const [image, setImage] = useState(null);\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n let svgSrc = element.src;\n\n // Apply color replacements to SVG\n if (element.colorsReplace && element.colorsReplace.size > 0) {\n // If it's a data URI SVG, decode and replace colors\n if (svgSrc.startsWith('data:image/svg+xml')) {\n try {\n let svgContent;\n if (svgSrc.includes('base64,')) {\n svgContent = atob(svgSrc.split('base64,')[1]);\n } else {\n svgContent = decodeURIComponent(svgSrc.split(',')[1]);\n }\n\n element.colorsReplace.forEach((newColor, oldColor) => {\n svgContent = svgContent.replace(new RegExp(oldColor, 'gi'), newColor);\n });\n\n svgSrc = 'data:image/svg+xml;base64,' + btoa(svgContent);\n } catch (e) {\n console.warn('Failed to process SVG color replacement', e);\n }\n }\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load SVG:', element.src.substring(0, 100));\n };\n img.src = svgSrc;\n }, [element.src, element.colorsReplace?.toJSON?.()]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n return (\n <KonvaImage\n ref={imageRef}\n id={element.id}\n name={element.name || 'svg'}\n image={image}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onClick={(e) => {\n if (onSelect) onSelect(e);\n }}\n onTap={(e) => {\n if (onSelect) onSelect(e);\n }}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n />\n );\n});\n\nSVGElementComponent.displayName = 'SVGElement';\nexport default SVGElementComponent;\n","import React, { useRef } from 'react';\nimport { Rect, Circle, Star, Line as KonvaLine, RegularPolygon, Arrow, Path, Group } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst FigureElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const shapeRef = useRef(null);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const commonProps = {\n id: element.id,\n name: element.name || 'figure',\n x: element.x,\n y: element.y,\n rotation: element.rotation,\n opacity: element.opacity,\n fill: element.fill,\n stroke: element.stroke || undefined,\n strokeWidth: element.strokeWidth || 0,\n dash: element.dash?.length > 0 ? [...element.dash] : undefined,\n draggable: !groupChild && element.draggable,\n visible: element.visible,\n shadowEnabled: element.shadowEnabled,\n shadowColor: element.shadowColor,\n shadowBlur: element.shadowBlur,\n shadowOffsetX: element.shadowOffsetX,\n shadowOffsetY: element.shadowOffsetY,\n shadowOpacity: element.shadowOpacity,\n onClick: (e) => { if (onSelect) onSelect(e); },\n onTap: (e) => { if (onSelect) onSelect(e); },\n onDragEnd: handleDragEnd,\n onTransformEnd: handleTransformEnd,\n };\n\n const subType = element.subType || 'rect';\n\n // Center-origin shapes use offset so that node.x()/y() stays top-left\n // (matching our model) while the visual center is positioned correctly.\n const centerOffset = {\n offsetX: -(element.width / 2),\n offsetY: -(element.height / 2),\n };\n\n switch (subType) {\n case 'circle':\n case 'ellipse':\n return (\n <Circle\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n radiusX={element.width / 2}\n radiusY={element.height / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'triangle':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={3}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'star':\n return (\n <Star\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n numPoints={5}\n innerRadius={Math.min(element.width, element.height) / 4}\n outerRadius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'polygon':\n case 'hexagon':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={subType === 'hexagon' ? 6 : 5}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'diamond':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={4}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'path':\n if (!element.pathData) return null;\n return (\n <Group\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n >\n <Path\n data={element.pathData}\n fill={element.fill}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth ? element.strokeWidth * (100 / element.width) : 0}\n scaleX={element.width / 100}\n scaleY={element.height / 100}\n />\n </Group>\n );\n\n case 'arrow':\n return (\n <Arrow\n ref={shapeRef}\n {...commonProps}\n points={[0, element.height / 2, element.width, element.height / 2]}\n pointerLength={10}\n pointerWidth={10}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'rect':\n default:\n return (\n <Rect\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n cornerRadius={element.cornerRadius || 0}\n />\n );\n }\n});\n\nFigureElementComponent.displayName = 'FigureElement';\nexport default FigureElementComponent;\n","import React, { Fragment } from 'react';\nimport { Line as KonvaLine, Arrow, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst HANDLE_SIZE = 10;\nconst DEG = Math.PI / 180;\n\nconst LineElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n if (!element.visible) return null;\n\n const rot = (element.rotation || 0) * DEG;\n const cosR = Math.cos(rot);\n const sinR = Math.sin(rot);\n\n // Start and end points in canvas coordinates\n const startX = element.x;\n const startY = element.y;\n const endX = element.x + element.width * cosR;\n const endY = element.y + element.width * sinR;\n\n const hasArrow = element.endHead === 'arrow' || element.startHead === 'arrow';\n\n // Drag the whole line\n const handleLineDragEnd = (e) => {\n const dx = e.target.x();\n const dy = e.target.y();\n // The line is rendered at (0,0) with absolute points, so dx/dy is the drag offset\n e.target.x(0);\n e.target.y(0);\n element.set({\n x: element.x + dx,\n y: element.y + dy,\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Drag the START handle\n const handleStartDrag = (e) => {\n const newSX = e.target.x() + HANDLE_SIZE / 2;\n const newSY = e.target.y() + HANDLE_SIZE / 2;\n const dx = endX - newSX;\n const dy = endY - newSY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n x: newSX,\n y: newSY,\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position since the line re-renders from new model coords\n e.target.x(newSX - HANDLE_SIZE / 2);\n e.target.y(newSY - HANDLE_SIZE / 2);\n };\n\n const handleStartDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n // Drag the END handle\n const handleEndDrag = (e) => {\n const newEX = e.target.x() + HANDLE_SIZE / 2;\n const newEY = e.target.y() + HANDLE_SIZE / 2;\n const dx = newEX - startX;\n const dy = newEY - startY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position\n e.target.x(newEX - HANDLE_SIZE / 2);\n e.target.y(newEY - HANDLE_SIZE / 2);\n };\n\n const handleEndDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n const lineNode = hasArrow ? (\n <Arrow\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n fill={element.color || '#000000'}\n pointerLength={10}\n pointerWidth={10}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n ) : (\n <KonvaLine\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n );\n\n return (\n <Fragment>\n {lineNode}\n\n {/* Endpoint handles — only visible when selected */}\n {isSelected && (\n <Fragment>\n {/* Start handle */}\n <Rect\n x={startX - HANDLE_SIZE / 2}\n y={startY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleStartDrag}\n onDragEnd={handleStartDragEnd}\n />\n {/* End handle */}\n <Rect\n x={endX - HANDLE_SIZE / 2}\n y={endY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleEndDrag}\n onDragEnd={handleEndDragEnd}\n />\n </Fragment>\n )}\n </Fragment>\n );\n});\n\nLineElementComponent.displayName = 'LineElement';\nexport default LineElementComponent;\n","import React, { useRef, useCallback } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Group } from 'react-konva';\n\n// ElementRenderer is passed via the _ElementRenderer prop to avoid circular imports\nconst GroupElementComponent = observer(({ element, isSelected, onTransformEnd, onDragEnd, _ElementRenderer }) => {\n const groupRef = useRef(null);\n\n const handleDragEnd = useCallback((e) => {\n const node = e.target;\n element.set({\n x: node.x(),\n y: node.y(),\n });\n if (onDragEnd) onDragEnd(e);\n }, [element, onDragEnd]);\n\n const handleTransformEnd = useCallback((e) => {\n const node = groupRef.current;\n if (!node) return;\n\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n // Scale each child proportionally\n element.children.forEach((child) => {\n if (child.set) {\n const updates = {\n x: (child.x || 0) * scaleX,\n y: (child.y || 0) * scaleY,\n };\n if ('width' in child) updates.width = (child.width || 0) * scaleX;\n if ('height' in child) updates.height = (child.height || 0) * scaleY;\n if (child.type === 'text' && child.fontSize) {\n updates.fontSize = Math.round(child.fontSize * Math.max(scaleX, scaleY));\n }\n child.set(updates);\n }\n });\n\n // Update group position, rotation, dimensions\n element.set({\n x: node.x(),\n y: node.y(),\n rotation: node.rotation(),\n width: element.width * scaleX,\n height: element.height * scaleY,\n });\n\n // Reset scale on the Konva node\n node.scaleX(1);\n node.scaleY(1);\n\n if (onTransformEnd) onTransformEnd(e);\n }, [element, onTransformEnd]);\n\n if (!element.visible) return null;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'group'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={element.draggable !== false}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n >\n {_ElementRenderer && element.children.map((child) => (\n <_ElementRenderer\n key={child.id}\n element={child}\n isSelected={false}\n groupChild={true}\n />\n ))}\n </Group>\n );\n});\n\nGroupElementComponent.displayName = 'GroupElementComponent';\nexport default GroupElementComponent;\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport ImageElementComponent from './image-element';\nimport TextElementComponent from './text-element';\nimport SVGElementComponent from './svg-element';\nimport FigureElementComponent from './figure-element';\nimport LineElementComponent from './line-element';\nimport GroupElementComponent from './group-element';\n\nconst ELEMENT_RENDERERS = {\n image: ImageElementComponent,\n text: TextElementComponent,\n svg: SVGElementComponent,\n figure: FigureElementComponent,\n line: LineElementComponent,\n group: GroupElementComponent,\n};\n\nconst ElementRenderer = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const Renderer = ELEMENT_RENDERERS[element.type];\n\n if (!Renderer) {\n console.warn(`No renderer for element type: ${element.type}`);\n return null;\n }\n\n // Pass ElementRenderer itself to GroupElementComponent to avoid circular imports\n const extra = element.type === 'group' ? { _ElementRenderer: ElementRenderer } : {};\n\n return (\n <Renderer\n element={element}\n isSelected={isSelected}\n onSelect={onSelect}\n onTransformEnd={onTransformEnd}\n onDragEnd={onDragEnd}\n groupChild={groupChild}\n {...extra}\n />\n );\n});\n\nElementRenderer.displayName = 'ElementRenderer';\nexport default ElementRenderer;\nexport { ELEMENT_RENDERERS };\n","import React, { useState, useEffect, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Button, TextField, Typography, Box, Radio, RadioGroup, FormGroup, FormControlLabel, Checkbox } from '@mui/material';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport { getInputFieldsConfig } from '../config';\nimport { t } from '../config';\n\n// ── Date formatting helpers (shared with input-fields-panel) ─────────\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nfunction formatDate(date, format) {\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const yyyy = String(date.getFullYear());\n const monthName = MONTH_NAMES[date.getMonth()];\n\n switch (format) {\n case 'MM-DD-YYYY':\n return `${mm}-${dd}-${yyyy}`;\n case 'MMMM-DD-YYYY':\n return `${monthName}-${dd}-${yyyy}`;\n case 'MMMM-DD':\n return `${monthName}-${dd}`;\n case 'YYYY':\n return yyyy;\n case 'MM-DD':\n return `${mm}-${dd}`;\n default:\n return `${mm}-${dd}-${yyyy}`;\n }\n}\n\nfunction parseDateFromFormat(dateStr, format) {\n try {\n const d = new Date(dateStr);\n if (!isNaN(d.getTime())) return d;\n } catch (e) {\n // ignore\n }\n return new Date();\n}\n\n// ── Default single-field dialog (full-page overlay) ──────────────────\nconst SingleFieldDialog = ({ field, onSubmit, onSkip, onBack, canGoBack, currentIndex, totalCount }) => {\n const [value, setValue] = useState('');\n const [imagePreview, setImagePreview] = useState(null);\n const fileInputRef = useRef(null);\n const [selectedItems, setSelectedItems] = useState([]);\n const config = getInputFieldsConfig();\n\n const custom = field.custom || {};\n const inputType = custom.inputType || 'text';\n const promptText = custom.promptText || custom.placeholder || 'Please provide input';\n const dateFormat = custom.dateFormat || 'MM-DD-YYYY';\n const isRequired = custom.required === true;\n const options = custom.options || [];\n const minSelections = custom.minSelections || 0;\n const maxSelections = custom.maxSelections || options.length;\n const isSubmitDisabled = inputType === 'list'\n ? selectedItems.length < minSelections\n : isRequired && !value;\n const logoUrl = config.logoUrl || null;\n const headerText = config.headerText || null;\n const accentColor = config.accentColor || '#0d83cd';\n const progressPct = Math.round(((currentIndex + 1) / totalCount) * 100);\n\n useEffect(() => {\n setValue('');\n setImagePreview(null);\n setSelectedItems([]);\n }, [field.id]);\n\n const handleImageSelect = (e) => {\n const file = e.target.files?.[0];\n if (!file || !file.type.startsWith('image/')) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n const dataURL = ev.target.result;\n setValue(dataURL);\n setImagePreview(dataURL);\n };\n reader.readAsDataURL(file);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleSubmit = () => {\n if (inputType === 'date' && value) {\n const dateObj = parseDateFromFormat(value, dateFormat);\n const formatted = formatDate(dateObj, dateFormat);\n onSubmit(field.id, formatted);\n } else if (inputType === 'list') {\n onSubmit(field.id, selectedItems.join(', '));\n } else {\n onSubmit(field.id, value);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' && inputType !== 'image' && inputType !== 'list' && inputType !== 'radio') handleSubmit();\n };\n\n const renderInput = () => {\n const sharedSx = {\n mt: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: '8px',\n fontSize: 22,\n '& fieldset': { borderColor: '#d0d5dd' },\n '&:hover fieldset': { borderColor: accentColor },\n '&.Mui-focused fieldset': { borderColor: accentColor },\n },\n ...config.inputStyle,\n };\n\n switch (inputType) {\n case 'date':\n return (\n <TextField\n fullWidth\n type=\"date\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n InputLabelProps={{ shrink: true }}\n sx={sharedSx}\n />\n );\n case 'integer':\n return (\n <TextField\n fullWidth\n type=\"number\"\n value={value}\n onChange={(e) => {\n const v = e.target.value;\n if (v === '' || /^-?\\d*$/.test(v)) setValue(v);\n }}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder=\"0\"\n inputProps={{ step: 1 }}\n sx={sharedSx}\n />\n );\n case 'image':\n return (\n <Box sx={{ mt: 1 }}>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleImageSelect}\n style={{ display: 'none' }}\n />\n {imagePreview ? (\n <Box sx={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 2 }}>\n <Box\n sx={{\n width: '100%',\n maxHeight: 260,\n borderRadius: '10px',\n overflow: 'hidden',\n border: '1px solid #e0e0e0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fafafa',\n }}\n >\n <img\n src={imagePreview}\n alt=\"Preview\"\n style={{ maxWidth: '100%', maxHeight: 260, objectFit: 'contain' }}\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => fileInputRef.current?.click()}\n sx={{ textTransform: 'none', fontSize: 13, borderRadius: '8px', borderColor: '#d0d5dd' }}\n >\n {t('inputFieldsDialog.changeImage', 'Change Image')}\n </Button>\n </Box>\n ) : (\n <Box\n onClick={() => fileInputRef.current?.click()}\n sx={{\n border: '2px dashed #d0d5dd',\n borderRadius: '10px',\n p: 4,\n textAlign: 'center',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n >\n <CloudUploadIcon sx={{ fontSize: 40, color: '#bbb', mb: 1.5 }} />\n <Typography variant=\"body2\" sx={{ color: '#888', fontSize: 14 }}>\n {t('inputFieldsDialog.uploadImage', 'Click to select an image')}\n </Typography>\n </Box>\n )}\n </Box>\n );\n case 'radio':\n return (\n <Box\n sx={{\n mt: 1,\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n pr: 0.5,\n '&::-webkit-scrollbar': { width: 6 },\n '&::-webkit-scrollbar-track': { background: 'transparent' },\n '&::-webkit-scrollbar-thumb': { background: '#d0d5dd', borderRadius: 3 },\n '&::-webkit-scrollbar-thumb:hover': { background: '#aaa' },\n }}\n >\n <RadioGroup\n value={value}\n onChange={(e) => setValue(e.target.value)}\n sx={{ gap: 1 }}\n >\n {options.map((opt) => (\n <FormControlLabel\n key={opt}\n value={opt}\n control={\n <Radio sx={{ color: '#d0d5dd', '&.Mui-checked': { color: accentColor } }} />\n }\n label={<Typography sx={{ fontSize: 18 }}>{opt}</Typography>}\n sx={{\n m: 0,\n border: '1px solid',\n borderColor: value === opt ? accentColor : '#d0d5dd',\n borderRadius: '8px',\n px: 2,\n py: 0.75,\n transition: 'all 0.15s ease',\n backgroundColor: value === opt ? 'rgba(13,131,205,0.04)' : 'transparent',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n />\n ))}\n </RadioGroup>\n </Box>\n );\n case 'list': {\n const isAtMax = maxSelections > 0 && selectedItems.length >= maxSelections;\n return (\n <Box sx={{ mt: 1, flex: 1, minHeight: 0, display: 'flex', flexDirection: 'column' }}>\n <FormGroup\n sx={{\n gap: 1,\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n pr: 0.5,\n '&::-webkit-scrollbar': { width: 6 },\n '&::-webkit-scrollbar-track': { background: 'transparent' },\n '&::-webkit-scrollbar-thumb': { background: '#d0d5dd', borderRadius: 3 },\n '&::-webkit-scrollbar-thumb:hover': { background: '#aaa' },\n }}\n >\n {options.map((opt) => {\n const checked = selectedItems.includes(opt);\n const disabled = !checked && isAtMax;\n return (\n <FormControlLabel\n key={opt}\n control={\n <Checkbox\n checked={checked}\n disabled={disabled}\n onChange={(e) => {\n if (e.target.checked) {\n setSelectedItems((prev) => [...prev, opt]);\n } else {\n setSelectedItems((prev) => prev.filter((i) => i !== opt));\n }\n }}\n sx={{ color: '#d0d5dd', '&.Mui-checked': { color: accentColor } }}\n />\n }\n label={\n <Typography sx={{ fontSize: 18, opacity: disabled ? 0.45 : 1 }}>{opt}</Typography>\n }\n sx={{\n m: 0,\n border: '1px solid',\n borderColor: checked ? accentColor : '#d0d5dd',\n borderRadius: '8px',\n px: 2,\n py: 0.75,\n opacity: disabled ? 0.6 : 1,\n transition: 'all 0.15s ease',\n backgroundColor: checked ? 'rgba(13,131,205,0.04)' : 'transparent',\n }}\n />\n );\n })}\n </FormGroup>\n <Typography variant=\"caption\" sx={{ color: '#999', display: 'block', mt: 1.5 }}>\n {selectedItems.length}{maxSelections > 0 ? `/${maxSelections}` : ''} selected\n {minSelections > 0 && ` · min ${minSelections} required`}\n </Typography>\n </Box>\n );\n }\n case 'text':\n default:\n return (\n <TextField\n fullWidth\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder={custom.placeholder || ''}\n sx={sharedSx}\n />\n );\n }\n };\n\n return (\n <Box\n sx={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n backgroundColor: '#f7f8fa',\n display: 'flex',\n flexDirection: 'column',\n ...config.dialogStyle,\n }}\n >\n {/* Progress bar */}\n <Box sx={{ height: 4, backgroundColor: '#e4e7ec', flexShrink: 0 }}>\n <Box\n sx={{\n height: '100%',\n width: `${progressPct}%`,\n backgroundColor: accentColor,\n transition: 'width 0.4s ease',\n }}\n />\n </Box>\n\n {/* Header */}\n <Box\n sx={{\n backgroundColor: '#fff',\n borderBottom: '1px solid #f0f0f0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n px: 4,\n py: 1.75,\n flexShrink: 0,\n ...config.titleStyle,\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>\n {logoUrl && (\n <img\n src={logoUrl}\n alt=\"Logo\"\n style={{ maxHeight: 36, maxWidth: 200, objectFit: 'contain' }}\n />\n )}\n {(headerText || !logoUrl) && (\n <Typography sx={{ fontWeight: 700, fontSize: 17, color: '#1a1a1a', letterSpacing: '-0.2px' }}>\n {headerText || 'LabelLife'}\n </Typography>\n )}\n </Box>\n </Box>\n\n {/* Centered content */}\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n p: { xs: 3, sm: 5 },\n }}\n >\n <Box sx={{ width: '100%', maxWidth: 750, mx: 'auto', display: 'flex', flexDirection: 'column', flex: 1, minHeight: 0, justifyContent: 'center' }}>\n {/* Step indicator */}\n <Typography\n sx={{ display: 'block', fontSize: 18, color: '#999', fontWeight: 500, mb: 1.5, letterSpacing: '0.2px' }}\n >\n {t('inputFieldsDialog.stepIndicator', 'Field {current} of {total}')\n .replace('{current}', currentIndex + 1)\n .replace('{total}', totalCount)}\n </Typography>\n\n {/* Main question */}\n <Typography\n sx={{\n fontSize: { xs: 33, sm: 39 },\n fontWeight: 700,\n color: '#111827',\n lineHeight: 1.3,\n mb: 4.5,\n ...config.promptStyle,\n }}\n >\n {promptText}\n </Typography>\n\n {/* Input */}\n {renderInput()}\n\n {/* Actions */}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mt: 4.5, flexShrink: 0 }}>\n {canGoBack && (\n <Button\n variant=\"outlined\"\n onClick={onBack}\n startIcon={<ArrowBackIcon />}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 3,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n }}\n >\n {t('inputFieldsDialog.back', 'Back')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={handleSubmit}\n disabled={isSubmitDisabled}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: 21,\n px: 5,\n py: 1.65,\n borderRadius: '10px',\n backgroundColor: accentColor,\n boxShadow: 'none',\n '&:hover': { backgroundColor: '#0a6eb3', boxShadow: 'none' },\n ...config.submitButtonStyle,\n }}\n >\n {config.submitButtonText || t('inputFieldsDialog.submit', 'Continue')}\n </Button>\n {(inputType === 'list' ? minSelections === 0 : !isRequired) && (\n <Button\n variant=\"outlined\"\n onClick={() => onSkip(field.id)}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 4.5,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n ...config.skipButtonStyle,\n }}\n >\n {config.skipButtonText || t('inputFieldsDialog.skip', 'Do it later')}\n </Button>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n\n// ── Main orchestrator component ──────────────────────────────────────\nconst InputFieldsDialog = observer(({ store, onComplete, enabled = true, backTrigger = 0 }) => {\n // displayIndex counts how many fields have been answered (for step indicator only).\n // Navigation always uses fields[0] — the first remaining pending field.\n const [displayIndex, setDisplayIndex] = useState(0);\n const initialTotalRef = useRef(0);\n const completedHistoryRef = useRef([]);\n const removedDueToSkipRef = useRef([]);\n const isGoingBackRef = useRef(false);\n const prevBackTriggerRef = useRef(backTrigger);\n const config = getInputFieldsConfig();\n\n const pendingFields = store._pendingInputFields || [];\n\n // When disabled, clear any pending fields so they are treated as skipped\n useEffect(() => {\n if (!enabled && pendingFields.length > 0) {\n store.clearPendingInputFields();\n }\n }, [enabled, pendingFields.length, store]);\n\n const fields = pendingFields.filter(\n (f) => f.custom && f.custom.inputField\n );\n\n // Capture total and reset display counter when a fresh batch appears\n useEffect(() => {\n if (fields.length > 0 && initialTotalRef.current === 0) {\n if (isGoingBackRef.current) {\n // Back-from-summary restored a field — recover total from history + pending\n isGoingBackRef.current = false;\n initialTotalRef.current = completedHistoryRef.current.length + fields.length;\n } else {\n // Genuine fresh batch\n initialTotalRef.current = fields.length;\n setDisplayIndex(0);\n completedHistoryRef.current = [];\n }\n }\n if (fields.length === 0) {\n initialTotalRef.current = 0;\n // History is intentionally kept so back-from-summary can use it\n }\n }, [fields.length]);\n\n const totalCount = initialTotalRef.current || fields.length;\n\n // Back-from-summary: triggered by parent incrementing backTrigger prop\n // Must be defined and its useEffect called BEFORE any early returns (Rules of Hooks)\n const handleBackFromSummary = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue, removed } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n if (removed) {\n el.set({ visible: true });\n removedDueToSkipRef.current = removedDueToSkipRef.current.filter((e) => e.id !== el.id);\n } else {\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n }\n isGoingBackRef.current = true;\n store._unresolveInputField(el);\n }\n // displayIndex stays unchanged — it already points to the last step (N-1)\n };\n\n useEffect(() => {\n if (backTrigger !== prevBackTriggerRef.current) {\n prevBackTriggerRef.current = backTrigger;\n handleBackFromSummary();\n }\n }, [backTrigger]);\n\n if (!enabled || fields.length === 0) return null;\n\n // Always show the first remaining field — the array shrinks as fields are resolved\n const currentField = fields[0];\n if (!currentField) return null;\n\n // ── Helper: clear the removed-elements tracking ref ──────────────────\n // Elements are kept in the canvas with visible:false — they don't render\n // on screen or in exports, and can be restored via back navigation at any\n // point (including back-from-summary via backTrigger) without touching\n // deleted MST nodes.\n const _flushRemovedElements = () => {\n removedDueToSkipRef.current = [];\n };\n\n // ── Shared submit / skip / back helpers ─────────────────────────────\n const handleSubmit = (elementId, value) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: false });\n if (el && el.set) {\n if (isImage) {\n el.set({ src: String(value) });\n } else {\n el.set({ text: String(value) });\n }\n }\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n _flushRemovedElements();\n store.history.addUndoState();\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleSkip = (elementId) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n const shouldRemove = !!(el && el.custom && el.custom.removeIfSkipped);\n if (shouldRemove) {\n el.set({ visible: false });\n removedDueToSkipRef.current.push(el);\n }\n completedHistoryRef.current.push({ el, previousValue, skipped: true, removed: shouldRemove });\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n const hadRemovals = removedDueToSkipRef.current.length > 0;\n _flushRemovedElements();\n if (hadRemovals) store.history.addUndoState();\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleBack = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue, removed } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n if (removed) {\n el.set({ visible: true });\n removedDueToSkipRef.current = removedDueToSkipRef.current.filter((e) => e.id !== el.id);\n } else {\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n }\n store._unresolveInputField(el);\n }\n setDisplayIndex((prev) => Math.max(0, prev - 1));\n };\n\n const canGoBack = displayIndex > 0;\n\n // ── Resolve which dialog component to use ───────────────────────────\n // Priority: per-type custom dialog > global CustomDialog > built-in\n const TYPE_DIALOG_MAP = {\n text: config.CustomTextDialog,\n date: config.CustomDateDialog,\n integer: config.CustomIntegerDialog,\n image: config.CustomImageDialog,\n radio: config.CustomRadioDialog,\n list: config.CustomListDialog,\n };\n\n const fieldType = (currentField.custom && currentField.custom.inputType) || 'text';\n const PerTypeDialog = TYPE_DIALOG_MAP[fieldType];\n const GlobalCustomDialog = config.CustomDialog;\n const ResolvedDialog = PerTypeDialog || GlobalCustomDialog || null;\n\n if (ResolvedDialog) {\n return (\n <ResolvedDialog\n field={currentField}\n fields={fields}\n currentIndex={displayIndex}\n totalCount={totalCount}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n onComplete={() => {\n _flushRemovedElements();\n store.history.addUndoState();\n if (onComplete) onComplete();\n }}\n />\n );\n }\n\n return (\n <SingleFieldDialog\n field={currentField}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n currentIndex={displayIndex}\n totalCount={totalCount}\n />\n );\n});\n\nInputFieldsDialog.displayName = 'InputFieldsDialog';\nexport default InputFieldsDialog;\nexport { InputFieldsDialog };\n","import React, { useRef, useEffect, useCallback, useState } from 'react';\nimport { Stage, Layer, Rect, Transformer, Group, Image as KonvaImage, Shape } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport ElementRenderer from './element';\nimport InputFieldsDialog from '../components/InputFieldsDialog';\n\n// Generate a checkerboard pattern tile (off-screen canvas)\nconst createCheckerboardImage = (tileSize = 10, color1 = '#d4d4d4', color2 = '#ffffff') => {\n const canvas = document.createElement('canvas');\n canvas.width = tileSize * 2;\n canvas.height = tileSize * 2;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = color1;\n ctx.fillRect(0, 0, tileSize, tileSize);\n ctx.fillRect(tileSize, tileSize, tileSize, tileSize);\n ctx.fillStyle = color2;\n ctx.fillRect(tileSize, 0, tileSize, tileSize);\n ctx.fillRect(0, tileSize, tileSize, tileSize);\n const img = new window.Image();\n img.src = canvas.toDataURL();\n return img;\n};\n\nlet _checkerImg = null;\nconst getCheckerboardImage = () => {\n if (!_checkerImg) _checkerImg = createCheckerboardImage();\n return _checkerImg;\n};\n\nconst CheckerboardBackground = ({ w, h }) => {\n const [ready, setReady] = useState(false);\n const imgRef = useRef(getCheckerboardImage());\n useEffect(() => {\n const img = imgRef.current;\n if (img.complete) { setReady(true); return; }\n img.onload = () => setReady(true);\n return () => { img.onload = null; };\n }, []);\n if (!ready) return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"display-only\" />;\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillPatternImage={imgRef.current}\n fillPatternRepeat=\"repeat\"\n listening={false}\n name=\"display-only\"\n />\n );\n};\n\nconst ImageBackground = ({ url, w, h }) => {\n const [image, setImage] = useState(null);\n useEffect(() => {\n if (!url) { setImage(null); return; }\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => setImage(img);\n img.onerror = () => setImage(null);\n img.src = url;\n return () => { img.onload = null; img.onerror = null; };\n }, [url]);\n if (!image) return <Rect x={0} y={0} width={w} height={h} fill=\"#f0f0f0\" listening={false} name=\"page-background\" />;\n\n // \"cover\" fit: scale to fill canvas while maintaining aspect ratio, then center\n const imgW = image.naturalWidth || image.width;\n const imgH = image.naturalHeight || image.height;\n const scale = Math.max(w / imgW, h / imgH);\n const drawW = imgW * scale;\n const drawH = imgH * scale;\n const drawX = (w - drawW) / 2;\n const drawY = (h - drawH) / 2;\n\n return (\n <Group clipX={0} clipY={0} clipWidth={w} clipHeight={h} listening={false} name=\"page-background\">\n <KonvaImage x={drawX} y={drawY} width={drawW} height={drawH} image={image} listening={false} />\n </Group>\n );\n};\n\nconst PageBackground = observer(({ store }) => {\n const page = store.activePage;\n if (!page) return null;\n\n const bg = page.background;\n const w = store.width;\n const h = store.height;\n\n if (!bg) {\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n }\n\n if (bg === 'transparent') {\n return (\n <>\n <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />\n <CheckerboardBackground w={w} h={h} />\n </>\n );\n }\n\n // Linear gradient stored as JSON\n if (bg.startsWith('{')) {\n try {\n const grad = JSON.parse(bg);\n if (grad.type === 'linear') {\n const angle = (grad.angle || 0) * (Math.PI / 180);\n const cx = w / 2, cy = h / 2;\n const len = Math.sqrt(w * w + h * h) / 2;\n const x1 = cx - len * Math.cos(angle);\n const y1 = cy - len * Math.sin(angle);\n const x2 = cx + len * Math.cos(angle);\n const y2 = cy + len * Math.sin(angle);\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillLinearGradientStartPoint={{ x: x1, y: y1 }}\n fillLinearGradientEndPoint={{ x: x2, y: y2 }}\n fillLinearGradientColorStops={[0, grad.colors?.[0] || '#000000', 1, grad.colors?.[1] || '#ffffff']}\n listening={false}\n name=\"page-background\"\n />\n );\n }\n } catch (e) { /* fall through */ }\n }\n\n // Image URL background\n if (bg.startsWith('http')) {\n return <ImageBackground url={bg} w={w} h={h} />;\n }\n\n // Solid color\n if (bg.startsWith('#') || bg.startsWith('rgb') || bg.startsWith('hsl') || ['white', 'black', 'red', 'blue', 'green'].includes(bg)) {\n return <Rect x={0} y={0} width={w} height={h} fill={bg} listening={false} name=\"page-background\" />;\n }\n\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n});\n\n// Semi-transparent overlay that dims everything outside the page boundary.\n// Draws a huge rectangle with a rectangular hole cut out for the page area.\nconst PageOverlayFrame = observer(({ store }) => {\n const W = store.width;\n const H = store.height;\n if (!W || !H) return null;\n const BIG = 100000; // large enough to cover viewport at any zoom\n return (\n <Shape\n sceneFunc={(ctx, shape) => {\n ctx.beginPath();\n // Outer rectangle (clockwise)\n ctx.moveTo(-BIG, -BIG);\n ctx.lineTo(BIG, -BIG);\n ctx.lineTo(BIG, BIG);\n ctx.lineTo(-BIG, BIG);\n ctx.closePath();\n // Inner rectangle (counter-clockwise to create hole)\n ctx.moveTo(0, 0);\n ctx.lineTo(0, H);\n ctx.lineTo(W, H);\n ctx.lineTo(W, 0);\n ctx.closePath();\n ctx.fillStrokeShape(shape);\n }}\n fill=\"rgba(240,240,240,0.5)\"\n listening={false}\n name=\"display-only\"\n />\n );\n});\n\nconst ALL_ANCHORS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nconst TEXT_ANCHORS = [\n 'top-left',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst CORNER_ANCHORS = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst SelectionTransformer = observer(({ store, stageRef }) => {\n const transformerRef = useRef(null);\n\n const selectedIds = [...store.selectedElementsIds];\n\n // Filter out line elements — they use custom endpoint handles instead\n const nonLineIds = selectedIds.filter((id) => {\n const el = store.getElementById(id);\n return el && el.type !== 'line';\n });\n\n const allText = nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'text';\n })();\n\n const useCorners = nonLineIds.length > 1 || (nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'group';\n })());\n\n const targetAnchors = useCorners ? CORNER_ANCHORS : allText ? TEXT_ANCHORS : ALL_ANCHORS;\n\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (!transformerRef.current || !stageRef.current) return;\n\n const stage = stageRef.current;\n const nodes = [];\n\n nonLineIds.forEach((id) => {\n const node = stage.findOne(`#${id}`);\n if (node) nodes.push(node);\n });\n\n transformerRef.current.enabledAnchors(targetAnchors);\n transformerRef.current.nodes(nodes);\n transformerRef.current.getLayer()?.batchDraw();\n });\n return () => cancelAnimationFrame(frame);\n }, [nonLineIds.length, nonLineIds.join(','), targetAnchors]);\n\n return (\n <Transformer\n ref={transformerRef}\n rotateEnabled={true}\n enabledAnchors={ALL_ANCHORS}\n boundBoxFunc={(oldBox, newBox) => {\n // Reject flip (negative) and too-small dimensions\n if (newBox.width < 5 || newBox.height < 5) {\n return oldBox;\n }\n return newBox;\n }}\n anchorSize={8}\n anchorCornerRadius={2}\n borderStroke=\"#0d83cd\"\n anchorStroke=\"#0d83cd\"\n anchorFill=\"#ffffff\"\n padding={0}\n />\n );\n});\n\nconst Workspace = observer(({ store, components = {}, showInputFieldsPopup = true, onInputFieldsComplete, backTrigger = 0 }) => {\n const stageRef = useRef(null);\n const containerRef = useRef(null);\n const [stageSize, setStageSize] = useState({ width: 800, height: 600 });\n\n const { PageControls } = components;\n\n // Resize observer\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateSize = () => {\n const { width, height } = container.getBoundingClientRect();\n setStageSize({ width, height });\n\n // Auto-fit the canvas.\n // Guard: if the container hasn't been laid out yet (width/height === 0)\n // the arithmetic produces a negative scale which mirrors the entire canvas.\n // Skip the update in that case — the ResizeObserver will fire again once\n // the container has real dimensions.\n if (store.width > 0 && store.height > 0 && width > 0 && height > 0) {\n const padding = 40;\n const scaleX = (width - padding * 2) / store.width;\n const scaleY = (height - padding * 2) / store.height;\n const scale = Math.min(scaleX, scaleY, 1);\n if (scale > 0) {\n store._setScaleToFit(scale);\n if (store.scale === 1) {\n store.setScale(scale);\n }\n }\n }\n };\n\n updateSize();\n\n const observer = new ResizeObserver(updateSize);\n observer.observe(container);\n\n return () => observer.disconnect();\n }, [store.width, store.height]);\n\n // Set stage ref on store for export\n useEffect(() => {\n if (stageRef.current) {\n store._setStageRef(stageRef.current);\n }\n }, [stageRef.current]);\n\n const handleStageMouseDown = useCallback(\n (e) => {\n let target = e.target;\n\n // Click on empty area or background -> deselect\n if (target === target.getStage() || target.attrs?.name === 'page-background') {\n store.selectElements([]);\n return;\n }\n\n // Walk up the node tree to find the nearest ancestor with an element id\n // (needed for Group-wrapped elements like lines)\n let clickedId = target.id();\n while (!clickedId && target.parent && target.parent !== target.getStage()) {\n target = target.parent;\n clickedId = target.id();\n }\n if (!clickedId) return;\n\n const element = store.getElementById(clickedId);\n if (!element || !element.selectable) return;\n\n // If element is inside a group, select the top-level group instead\n const targetElement = element.top || element;\n const targetId = targetElement.id;\n\n if (e.evt?.ctrlKey || e.evt?.metaKey) {\n // Multi-select with Ctrl (Cmd on Mac)\n const currentIds = [...store.selectedElementsIds];\n const idx = currentIds.indexOf(targetId);\n if (idx >= 0) {\n currentIds.splice(idx, 1);\n } else {\n currentIds.push(targetId);\n }\n store.selectElements(currentIds);\n } else if (!store.selectedElementsIds.includes(targetId)) {\n store.selectElements([targetId]);\n }\n },\n [store]\n );\n\n const handleTransformEnd = useCallback(() => {\n // Save to history after transform\n store.history.addUndoState();\n }, [store]);\n\n const handleDragEnd = useCallback(() => {\n // Save to history after drag\n store.history.addUndoState();\n }, [store]);\n\n // Keyboard shortcuts\n useEffect(() => {\n const handleKeyDown = (e) => {\n // Only handle if stage container or body is focused\n const target = e.target;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n return;\n }\n\n // Delete / Backspace\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n store.deleteElements(selectedIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+Z / Cmd+Z -> Undo\n if ((e.ctrlKey || e.metaKey) && e.key === 'z' && !e.shiftKey) {\n store.history.undo();\n e.preventDefault();\n }\n\n // Ctrl+Y / Cmd+Shift+Z -> Redo\n if (\n ((e.ctrlKey || e.metaKey) && e.key === 'y') ||\n ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'z')\n ) {\n store.history.redo();\n e.preventDefault();\n }\n\n // Ctrl+D -> Duplicate\n if ((e.ctrlKey || e.metaKey) && e.key === 'd') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0 && store.activePage) {\n const newIds = [];\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.clone) {\n const cloned = el.clone({ x: (el.x || 0) + 20, y: (el.y || 0) + 20 }, { skipSelect: true });\n if (cloned) newIds.push(cloned.id);\n }\n });\n store.selectElements(newIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+G -> Group selected elements\n if ((e.ctrlKey || e.metaKey) && e.key === 'g' && !e.shiftKey) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 1) {\n const group = store.groupElements(selectedIds);\n if (group) {\n store.selectElements([group.id]);\n store.history.addUndoState();\n }\n e.preventDefault();\n }\n }\n\n // Ctrl+Shift+G -> Ungroup\n if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'G') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length === 1) {\n const el = store.getElementById(selectedIds[0]);\n if (el && el.type === 'group') {\n store.ungroupElements([el.id]);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n }\n\n // Arrow keys -> nudge\n const NUDGE = e.shiftKey ? 10 : 1;\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key)) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.set) {\n if (e.key === 'ArrowLeft') el.set({ x: el.x - NUDGE });\n if (e.key === 'ArrowRight') el.set({ x: el.x + NUDGE });\n if (e.key === 'ArrowUp') el.set({ y: el.y - NUDGE });\n if (e.key === 'ArrowDown') el.set({ y: el.y + NUDGE });\n }\n });\n e.preventDefault();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [store]);\n\n // Zoom with mouse wheel\n const handleWheel = useCallback(\n (e) => {\n e.evt.preventDefault();\n const stage = stageRef.current;\n if (!stage) return;\n\n const scaleBy = 1.05;\n const oldScale = store.scale;\n const newScale =\n e.evt.deltaY > 0 ? oldScale / scaleBy : oldScale * scaleBy;\n\n store.setScale(Math.max(0.1, Math.min(5, newScale)));\n },\n [store]\n );\n\n const page = store.activePage;\n const scale = store.scale;\n // Reading _fontVersion makes this observer re-render whenever a font finishes\n // loading, so Konva redraws text with the correct font instead of the fallback.\n void store._fontVersion;\n\n // Center the canvas in the viewport\n const offsetX = (stageSize.width - store.width * scale) / 2;\n const offsetY = (stageSize.height - store.height * scale) / 2;\n\n return (\n <div\n ref={containerRef}\n style={{\n width: '100%',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n position: 'relative',\n background: '#f0f0f0',\n }}\n >\n <Stage\n ref={stageRef}\n width={stageSize.width}\n height={stageSize.height}\n onMouseDown={handleStageMouseDown}\n onTouchStart={handleStageMouseDown}\n onWheel={handleWheel}\n >\n <Layer\n x={offsetX}\n y={offsetY}\n scaleX={scale}\n scaleY={scale}\n >\n {/* Canvas shadow */}\n <Rect\n x={4}\n y={4}\n width={store.width}\n height={store.height}\n fill=\"rgba(0,0,0,0.1)\"\n cornerRadius={0}\n listening={false}\n name=\"display-only\"\n />\n\n {/* Page background */}\n <PageBackground store={store} />\n\n {/* Elements */}\n {page &&\n page.children.map((element) => (\n <ElementRenderer\n key={element.id}\n element={element}\n isSelected={store.selectedElementsIds.includes(element.id)}\n onTransformEnd={handleTransformEnd}\n onDragEnd={handleDragEnd}\n />\n ))}\n\n {/* Overlay that dims content outside the page */}\n <PageOverlayFrame store={store} />\n\n {/* Selection transformer */}\n <SelectionTransformer store={store} stageRef={stageRef} />\n </Layer>\n </Stage>\n\n {/* Page controls slot */}\n {PageControls !== undefined ? (\n PageControls === null ? null : <PageControls store={store} />\n ) : null}\n\n {/* Input fields popup */}\n <InputFieldsDialog store={store} enabled={showInputFieldsPopup} onComplete={onInputFieldsComplete} backTrigger={backTrigger} />\n </div>\n );\n});\n\nWorkspace.displayName = 'Workspace';\nexport default Workspace;\nexport { Workspace };\n","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","getSnapshot","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","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","concat","_toConsumableArray","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","_ref4$mimeType","mimeType","stage","layer","prevX","prevY","prevScaleX","prevScaleY","displayOnlyNodes","transformerNodes","rawCanvas","finalCanvas","ctx","ignoreBackground","includeBleed","_skipTimeout","quickMode","Error","getLayers","scaleX","scaleY","hide","draw","toCanvas","show","document","createElement","getContext","fillStyle","fillRect","drawImage","toDataURL","_arguments2","_callee2","_ref5","_ref5$mimeType","_ref5$quality","quality","rest","canvas","_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","download","href","click","toPDFDataURL","_arguments5","_callee5","_ref8","_ref8$pixelRatio","_ref8$includeBleed","widthPt","heightPt","orientation","pdf","prevActivePageId","imgData","_context5","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","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","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","OptionsEditor","mr","opt","next","j","AddIcon","alignSelf","InputFieldCard","icon","description","InputFieldsPanelContent","dateFormat","setDateFormat","textPrompt","setTextPrompt","datePrompt","setDatePrompt","integerPrompt","setIntegerPrompt","imagePrompt","setImagePrompt","textRequired","setTextRequired","dateRequired","setDateRequired","integerRequired","setIntegerRequired","imageRequired","setImageRequired","radioPrompt","setRadioPrompt","radioRequired","setRadioRequired","radioOptions","setRadioOptions","listPrompt","setListPrompt","listMinSelections","setListMinSelections","listMaxSelections","setListMaxSelections","_useState29","_useState30","listOptions","setListOptions","_useState31","_useState32","textRemoveIfSkipped","setTextRemoveIfSkipped","_useState33","_useState34","dateRemoveIfSkipped","setDateRemoveIfSkipped","_useState35","_useState36","integerRemoveIfSkipped","setIntegerRemoveIfSkipped","_useState37","_useState38","imageRemoveIfSkipped","setImageRemoveIfSkipped","_useState39","_useState40","radioRemoveIfSkipped","setRadioRemoveIfSkipped","_useState41","_useState42","listRemoveIfSkipped","setListRemoveIfSkipped","addInputElement","inputType","extra","promptText","required","removeIfSkipped","dummyText","defaultPrompt","textWidth","minSelections","maxSelections","FormControlLabel","control","Checkbox","CalendarTodayIcon","FormControl","InputLabel","Select","fmt","MenuItem","NumbersIcon","RadioButtonCheckedIcon","FormatListBulletedIcon","Divider","my","MarkAsVariableForm","_selectedElement$cust","_useState43","_useState44","markLabel","setMarkLabel","_useState45","_useState46","markRequired","setMarkRequired","_useState47","_useState48","markInputType","setMarkInputType","_useState49","_useState50","markOptions","setMarkOptions","_useState51","_useState52","markMinSelections","setMarkMinSelections","_useState53","_useState54","markMaxSelections","setMarkMaxSelections","_useState55","_useState56","markRemoveIfSkipped","setMarkRemoveIfSkipped","selectedIds","selectedElement","isImageElement","isTextElement","isSupportedElement","isAlreadyVariable","_selectedElement$cust2","_selectedElement$cust3","_selectedElement$cust4","_selectedElement$cust5","_selectedElement$cust6","_selectedElement$cust7","_selectedElement$cust8","handleMark","effectiveType","handleUnmark","Alert","severity","Chip","bgcolor","InputFieldsSection","InputIcon","GOOGLE_FONTS_API","cachedFonts","fetchGoogleFonts","_fetchGoogleFonts","apiKey","response","items","family","variants","category","loadGoogleFont","_loadGoogleFont","DEFAULT_FONTS","_positionMenuItemSx","_fontPreviewLoaded","loadFontPreview","FontPreviewOption","memo","liProps","io","entry","rootMargin","TextToolbar","_store$_toolbarPanel","handleFontSizeChange","toggleBold","toggleItalic","toggleUnderline","toggleStrikethrough","handleAlignChange","handleColorChange","Autocomplete","unshift","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","PositionButton","setAnchorEl","pageW","pageH","alignEl","xVal","yVal","fn","OpenWithIcon","Popover","VerticalAlignTopIcon","VerticalAlignBottomIcon","rx","by","positions","row","col","placement","CommonControls","handleDuplicate","handleOpacityChange","handleOpacityCommit","OpacityIcon","onChangeCommitted","ContentCopyIcon","DefaultDownloadButton","fileType","setFileType","setQuality","exporting","setExporting","handleClick","qualityToPixelRatio","resWidth","resHeight","handleDownload","fileTypeLabel","png","jpeg","endIcon","ArrowDropDownIcon","DefaultImportButton","importing","setImporting","React","handleFileChange","_ref12","jsonData","_t3","FileUploadIcon","TYPE_TOOLBARS","rowSx","scrollbarWidth","Toolbar","_ref13","_ref13$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","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","stageContainer","container","textPosition","absolutePosition","absScale","getAbsoluteScale","cssFontStyle","cssFontWeight","originalText","textarea","borderWidth","margin","outline","resize","appearance","webkitAppearance","boxSizing","wordBreak","placeholderStyle","focus","removed","removeTextarea","cancel","newText","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","selectedItems","setSelectedItems","isRequired","isSubmitDisabled","logoUrl","headerText","accentColor","progressPct","handleImageSelect","reader","FileReader","ev","readAsDataURL","handleSubmit","dateObj","formatted","handleKeyDown","sharedSx","inputStyle","onKeyDown","autoFocus","InputLabelProps","shrink","_fileInputRef$current2","pr","RadioGroup","Radio","isAtMax","FormGroup","inset","dialogStyle","titleStyle","xs","sm","promptStyle","ArrowBackIcon","submitButtonStyle","submitButtonText","skipButtonStyle","skipButtonText","InputFieldsDialog","onComplete","_ref2$enabled","_ref2$backTrigger","backTrigger","displayIndex","setDisplayIndex","initialTotalRef","completedHistoryRef","removedDueToSkipRef","isGoingBackRef","prevBackTriggerRef","pendingFields","handleBackFromSummary","last","pop","previousValue","isImage","currentField","_flushRemovedElements","skipped","handleSkip","shouldRemove","hadRemovals","handleBack","TYPE_DIALOG_MAP","CustomTextDialog","CustomDateDialog","integer","CustomIntegerDialog","CustomImageDialog","radio","CustomRadioDialog","list","CustomListDialog","fieldType","PerTypeDialog","GlobalCustomDialog","CustomDialog","ResolvedDialog","createCheckerboardImage","tileSize","color1","color2","_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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"}
|