diff --git a/src/components/journal/SheetView.tsx b/src/components/journal/SheetView.tsx index c1e1b00..eb7f6b0 100644 --- a/src/components/journal/SheetView.tsx +++ b/src/components/journal/SheetView.tsx @@ -65,8 +65,25 @@ export const SheetView: Component<{ sheetId: string }> = (props) => { container.innerHTML = ""; const parsed = parseSheet(s.svg); + // Force full-width, auto-height + parsed.svgElement.setAttribute("width", "100%"); + parsed.svgElement.removeAttribute("height"); + parsed.svgElement.style.display = "block"; container.appendChild(parsed.svgElement); + // Center template nodes so text stays centered as values change length + for (const tpl of parsed.templates) { + const el = tpl.el; + try { + const bbox = el.getBBox(); + const cx = bbox.x + bbox.width / 2; + el.setAttribute("text-anchor", "middle"); + el.setAttribute("x", String(cx)); + } catch { + // getBBox may fail if the node has no layout — skip silently + } + } + if (parsed.templates.length === 0) return; const dispose = createRoot((disposer) => { @@ -93,9 +110,9 @@ export const SheetView: Component<{ sheetId: string }> = (props) => { ); return ( -