diff --git a/.eslintignore b/.eslintignore index 4a8a795d..0d0b9694 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ .eslintrc*.js -out/ \ No newline at end of file +out/ +coverage/ \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 89f9ac04..2ce3d7c5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,2 @@ out/ +coverage/ \ No newline at end of file diff --git a/src/panel/App.tsx b/src/panel/App.tsx index c296e5cf..0189de2c 100644 --- a/src/panel/App.tsx +++ b/src/panel/App.tsx @@ -1,6 +1,6 @@ import { Box, Stack } from '@mui/material' import * as React from 'react' -import { useEffect, useReducer } from 'react' +import { useLayoutEffect, useReducer } from 'react' import * as Requests from './requests' @@ -10,7 +10,7 @@ const App = () => { [] ) - useEffect(() => { + useLayoutEffect(() => { Requests.listen() const unsubscribe = Requests.subscribe((req) => { pushRequest(req) diff --git a/src/panel/index.tsx b/src/panel/index.tsx index bd3aa2c9..8963310e 100644 --- a/src/panel/index.tsx +++ b/src/panel/index.tsx @@ -3,8 +3,17 @@ import '@fontsource/roboto/400.css' import '@fontsource/roboto/500.css' import '@fontsource/roboto/700.css' import * as React from 'react' -import * as ReactDOM from 'react-dom' +import { render, unmountComponentAtNode } from 'react-dom' import App from './App' -ReactDOM.render(, document.getElementById('app')) +const container = document.getElementById('app') +if (container === null) { + throw new Error('could not find #app container element') +} + +render(, container) + +window.addEventListener('beforeunload', () => { + unmountComponentAtNode(container) +})