Expand description
SavePanel (M-SAVE.GATE) — the post-record Save panel that
replaces the record/stop footer once a recording is parked
awaiting export.
Two visual states, both rendered inside the same
recorder-page-action-bar recorder-save-panel footer so the panel
drops into the recorder column with no layout shift:
- Choosing — a folder row (configured output dir + a Change…
button), a format dropdown (
MP4/WebM), and Discard / Edit / Export actions (Edit saves the recording and opens it in the editor). Thebusyflag dims the controls and flips the Export label to “Exporting…” during the (software-VP9)WebMtranscode. - Saved — a “Saved to
<path>” confirmation with Done / Reveal-in-Finder actions.
Stateless: the parent (app-ui’s RecorderPage) owns the pending
export, the chosen format, the export-in-flight signal, and the
post-export saved path. It maps that state into a SavePanelView
and wires the optional Callback<()> props to the Tauri IPC
commands (export_recording, discard_recording,
reveal_in_file_manager, the output-dir picker). Stories leave the
callbacks unset.
Structs§
- Choosing
Callbacks 🔒 - The Choosing-state callbacks, grouped so
choosing_bodystays under the argument-count lint. Every field is aCopyLeptosCallback. - Save
Panel Props - Props for the
SavePanelcomponent.
Enums§
- Save
Format - Export container format offered by the Save panel.
- Save
Panel View - View-model for the Save panel — which of the two states to render plus the data each needs.
Functions§
- Save
Panel - The post-record Save panel.
- choosing_
body 🔒 - The Choosing-state body: folder row + format dropdown + Discard / Edit /
Export actions. Split out of
SavePanelso neither branch trips the function-length lint; it carries no state (every prop is owned or aCopycallback). - saved_
body 🔒 - The Saved-state body: the “Saved to
<path>” confirmation plus Done / Reveal-in-Finder actions.