The OG template editor — OpenFresco's server-authoritative editor stage on the left, this module's chrome around it: toolbar + insert menu, slots panel, property panel, and the always-on preview pane.
Division of labor (since the OpenFresco switch)
OpenFresco.Editor(LiveComponent) owns the stage: it renders the scene viaOpenFresco.render_svg/3(measured text — the same layout the PNG render uses, so WYSIWYG holds by construction) and applies pointer gestures (select/drag/resize/front/delete) throughOpenFresco.Editor.Ops, notifying us with{:open_fresco_editor, id, {:scene_changed | :selected, _}}.- This LV owns the scene document (loads/saves it on the
template row via
SceneStore, lazily migrating legacy canvases), the property panel (SceneEditmutations), the insert menu, keyboard nudges, the media picker, autosave, and the preview pane.
Save semantics
Changes are autosaved on a 800ms debounce. Manual save via Ctrl+S
or the "Save" button flushes immediately. A header pill shows
saved / saving / unsaved state.