Manages the single-per-window app chrome for a workbook: the document/tab title (with an unsaved
marker), an unsaved-changes close prompt, and a browser keyboard guard.
Remarks
Framework-agnostic (no React) — useWindowChrome drives it for React apps. These are
window-level concerns that an embeddable widget (e.g. Studio) must NOT own, so they live here
as an opt-in helper for apps that own the whole window. It is value-driven: the consumer
pushes the current (name, dirty) via update (from IWorkbook.onNameChange and a
TransactionSaveStateManager) — it holds no model references of its own.
Manages the single-per-window app chrome for a workbook: the document/tab title (with an unsaved marker), an unsaved-changes close prompt, and a browser keyboard guard.
Remarks
Framework-agnostic (no React) — useWindowChrome drives it for React apps. These are window-level concerns that an embeddable widget (e.g.
Studio) must NOT own, so they live here as an opt-in helper for apps that own the whole window. It is value-driven: the consumer pushes the current(name, dirty)via update (fromIWorkbook.onNameChangeand aTransactionSaveStateManager) — it holds no model references of its own.