28 lines
632 B
JavaScript
28 lines
632 B
JavaScript
// Shared reactive state for popup management and model recognition.
|
|
// Module-level $state is reactive across all Svelte consumers.
|
|
|
|
// popup singleton — only one popup open at a time
|
|
export const popup = $state({
|
|
activeKey: null,
|
|
close: null,
|
|
});
|
|
|
|
export function closeActivePopup() {
|
|
popup.close?.();
|
|
popup.activeKey = null;
|
|
popup.close = null;
|
|
}
|
|
|
|
export function openPopupState(key, closeFn) {
|
|
closeActivePopup();
|
|
popup.activeKey = key;
|
|
popup.close = closeFn;
|
|
}
|
|
|
|
// model recognition progress (pushed via WebSocket from backend)
|
|
export const recognition = $state({
|
|
running: false,
|
|
total: 0,
|
|
done: 0,
|
|
});
|