import { Component } from '../components/Component'; import { SettingsPanel, SettingsPanelConfig } from '../components/settings/SettingsPanel'; import { Container } from '../components/Container'; import { Action, Direction, Focusable } from './types'; import { FocusableContainer } from './FocusableContainer'; export function isSettingsPanel(component: Component): component is SettingsPanel { return component instanceof SettingsPanel; } export function isComponent(obj: unknown): obj is Component { return obj !== null && obj !== undefined && obj instanceof Component; } export function isContainer(obj: unknown): obj is Container { return obj !== null && obj !== undefined && obj instanceof Container; } export function isDirection(direction: unknown): direction is Direction { return typeof direction === 'string' && Object.values(Direction).includes(direction); } export function isAction(action: unknown): action is Action { return typeof action === 'string' && Object.values(Action).includes(action); } export function isFocusable(component: Focusable): boolean { if (component instanceof FocusableContainer) { return true; } return component.isShown() && component.getConfig().tabIndex >= 0; }