Line data Source code
1 : import * as React from 'react';
2 :
3 : import { createRoot } from 'react-dom/client';
4 : import { BrowserRouter, Route, Routes } from 'react-router-dom';
5 :
6 : import { FlavorProvider } from '../config/flavor_provider.js';
7 : import { GitHubTheme } from '../styles/github_theme.js';
8 : import { LoggerProvider } from '../platform/logger/logger_provider.js';
9 : import { getOAuthStateFlavor } from './oauth_redirect_utils.js';
10 : import { getRequestedFlavor } from '../config/flavor_resolution.js';
11 : import { RedirectPage } from './oauth_redirect.js';
12 :
13 : import '@ankoh/dashql-ui/fonts/fonts.css';
14 : import '@ankoh/dashql-ui/styles/colors.css';
15 : import '@ankoh/dashql-ui/styles/tokens.css';
16 : import '../styles/globals.css';
17 : import '@ankoh/dashql-ui/styles/flavors/sidb.css';
18 :
19 : // Resolve the flavor before the first render, the page would otherwise flip from DashQL to the flavor.
20 : // The query parameter wins over the flavor carried in the OAuth state.
21 1 : const flavor = getRequestedFlavor() ?? getOAuthStateFlavor(new URLSearchParams(window.location.search).get('state'));
22 :
23 1 : const element = document.getElementById('root');
24 1 : const root = createRoot(element!);
25 1 : root.render(
26 1 : <React.StrictMode>
27 1 : <BrowserRouter>
28 1 : <FlavorProvider requested={flavor}>
29 1 : <GitHubTheme>
30 1 : <LoggerProvider>
31 1 : <Routes>
32 1 : <Route path="*" element={<RedirectPage />} />
33 1 : </Routes>
34 1 : </LoggerProvider>
35 1 : </GitHubTheme>
36 1 : </FlavorProvider>
37 1 : </BrowserRouter>
38 1 : </React.StrictMode>,
39 1 : );
|