go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/web/rpcexplorer/src/index.tsx (about) 1 // Copyright 2022 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 import { createRoot } from 'react-dom/client'; 16 import { BrowserRouter } from 'react-router-dom'; 17 18 import CssBaseline from '@mui/material/CssBaseline'; 19 import { createTheme, ThemeProvider } from '@mui/material/styles'; 20 21 import createInnerHTMLSanitizingPolicy from '@chopsui/trusted-types-policy'; 22 23 import App from './app'; 24 25 /** 26 * DO NOT DELETE 27 * 28 * This line initializes the HTML trusted types policy. 29 * This policy makes sure that no dangerous HTML can be 30 * inserted in the DOM without sanitization, reducing the risk 31 * of XSS that can be introduced by your code or a library 32 * that you use. 33 */ 34 createInnerHTMLSanitizingPolicy(); 35 36 const theme = createTheme(); 37 38 const container = document.getElementById('app-root'); 39 // Below ESlint is disabled based on ReactJS recommendation 40 // https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#updates-to-client-rendering-apis 41 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion 42 const root = createRoot(container!); 43 root.render( 44 <ThemeProvider theme={theme}> 45 <CssBaseline /> 46 <BrowserRouter basename='/rpcexplorer'> 47 <App /> 48 </BrowserRouter> 49 </ThemeProvider>, 50 );