import { StrictMode } from 'react' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { ReactQueryDevtools } from '@tanstack/react-query-devtools' import { MAX_RETRIES, REACTQUERY_DEVTOOLS } from '~/constants' import { createRoot } from 'react-dom/client' import type { ErrorPayload } from 'vite' import { ThemeProvider } from '~/components/theme-provider' import '~/components/libs/simplebar-react/simplebar.css' import './styles/overlayscrollbars.css' import './styles/globals.css' import { ErrorBoundary } from 'react-error-boundary' import { TooltipProvider } from '~/components/ui/tooltip' import { fallbackRender } from './error' import main from './pages' import QuickPasteApp from './QuickPasteApp' const queryClient = new QueryClient({ defaultOptions: { mutations: { networkMode: 'always', }, queries: { networkMode: 'always', gcTime: REACTQUERY_DEVTOOLS ? 600 : 1000 * 60 * 60 * 1, retry: MAX_RETRIES, retryDelay: attemptIndex => Math.min(2000 * 2 ** attemptIndex, 30000), }, }, }) createRoot(document.getElementById('root') as HTMLElement).render( ) if (import.meta.env.DEV) { const showErrorOverlay = (err: Partial) => { if (!err || !err.message) return const ErrorOverlay = customElements.get('vite-error-overlay') if (ErrorOverlay == null) return document.body.appendChild(new ErrorOverlay(err)) } window.addEventListener('error', ({ error }) => showErrorOverlay(error)) window.addEventListener('unhandledrejection', ({ reason }) => showErrorOverlay(reason)) }