Ported TabViewer to TypeScript