type ProgressEvent = "start" | "done"; type Listener = (event: ProgressEvent) => void; const listeners = new Set(); let active = false; function emit(event: ProgressEvent) { listeners.forEach((listener) => listener(event)); } export function subscribeNavigationProgress(listener: Listener) { listeners.add(listener); return () => { listeners.delete(listener); }; } export function startNavigationProgress() { if (active) { return; } active = true; emit("start"); } export function completeNavigationProgress() { if (!active) { return; } active = false; emit("done"); }