// Modals declared in page content render at the end of , before the // settings panel (via PageModals). // // A string OR a promise of a string is registered: CaptureModal must register // itself SYNCHRONOUSLY in its frontmatter (before it first yields control via // await), because Astro renders siblings concurrently and PageModals may drain // the registry before the asynchronous render of the slot completes. const modals: Array> = [] export function addPageModal(html: string | Promise): void { if (!modals.includes(html)) { modals.push(html) } } export function drainPageModals(): Array> { const out = [...modals] modals.length = 0 return out }