import { Component, ComponentConfig } from '../components/Component'; import { Container } from '../components/Container'; /** * @category Utils */ export namespace UIUtils { export interface TreeTraversalCallback { (component: Component, parent?: Component): void; } export function traverseTree(component: Component, visit: TreeTraversalCallback): void { const recursiveTreeWalker = (component: Component, parent?: Component) => { visit(component, parent); // If the current component is a container, visit it's children if (component instanceof Container) { for (const childComponent of component.getComponents()) { recursiveTreeWalker(childComponent, component); } } }; // Walk and configure the component tree recursiveTreeWalker(component); } // From: https://github.com/nfriend/ts-keycode-enum/blob/master/Key.enum.ts export enum KeyCode { LeftArrow = 37, UpArrow = 38, RightArrow = 39, DownArrow = 40, Space = 32, End = 35, Home = 36, } }