| |
| |
| |
| |
| |
| 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 |
| } |
|
|
| |
| 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() |
| } |
| } |
|
|