import '@fontsource/roboto/300.css'; import '@fontsource/roboto/400.css'; import '@fontsource/roboto/500.css'; import '@fontsource/roboto/700.css'; import React from 'react'; import { createRoot } from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import { Provider } from 'react-redux'; import { CssBaseline, StyledEngineProvider } from '@mui/material'; import store from './store'; import { LocalizationProvider } from './common/components/LocalizationProvider'; import ErrorHandler from './common/components/ErrorHandler'; import Navigation from './Navigation'; import preloadImages from './map/core/preloadImages'; import NativeInterface from './common/components/NativeInterface'; import ServerProvider from './ServerProvider'; import ErrorBoundary from './ErrorBoundary'; import AppThemeProvider from './AppThemeProvider'; import { registerSW } from 'virtual:pwa-register' const ServiceWorkerUpdateCheckInterval = 60 * 60 * 1000; registerSW({ onRegisteredSW(swUrl, r) { r && setInterval(async () => { if (!(!r.installing && navigator)) return if (('connection' in navigator) && !navigator.onLine) return const resp = await fetch(swUrl, { cache: 'no-store', headers: { 'cache': 'no-store', 'cache-control': 'no-cache', }, }) if (resp?.status === 200) await r.update() }, ServiceWorkerUpdateCheckInterval) }, immediate: true }); preloadImages(); const root = createRoot(document.getElementById('root')); root.render( , );