// Terminal focus state signal — non-React access to DECSET 1004 focus events. export type TerminalFocusState = 'focused' | 'blurred' | 'unknown' let focusState: TerminalFocusState = 'unknown' const resolvers: Set<() => void> = new Set() const subscribers: Set<() => void> = new Set() export function setTerminalFocused(v: boolean): void { focusState = v ? 'focused' : 'blurred' for (const cb of subscribers) { cb() } if (!v) { for (const resolve of resolvers) { resolve() } resolvers.clear() } } export function getTerminalFocused(): boolean { return focusState !== 'blurred' } export function getTerminalFocusState(): TerminalFocusState { return focusState } // For useSyncExternalStore export function subscribeTerminalFocus(cb: () => void): () => void { subscribers.add(cb) return () => { subscribers.delete(cb) } } export function resetTerminalFocusState(): void { focusState = 'unknown' for (const cb of subscribers) { cb() } }