bitmovin-player-ui
Version:
Bitmovin Player UI Framework
39 lines (33 loc) • 1.15 kB
text/typescript
import { Component, ComponentConfig } from '../components/Component';
import { Container } from '../components/Container';
/**
* @category Utils
*/
export namespace UIUtils {
export interface TreeTraversalCallback {
(component: Component<ComponentConfig>, parent?: Component<ComponentConfig>): void;
}
export function traverseTree(component: Component<ComponentConfig>, visit: TreeTraversalCallback): void {
const recursiveTreeWalker = (component: Component<ComponentConfig>, parent?: Component<ComponentConfig>) => {
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,
}
}