import { StrictMode } from 'react'; import { createRoot, hydrateRoot } from 'react-dom/client'; import WelcomeApp from './WelcomeApp.tsx'; import { effectiveWelcomeContentLanguage, initI18n } from './i18n'; import { initSentry } from './sentry'; import { initDebugBearRum } from './debugbear-rum'; import { clearWelcomeRoot } from './welcome-root'; import './index.css'; const WELCOME_HYDRATION_IDLE_TIMEOUT_MS = 2500; const WELCOME_HYDRATION_FALLBACK_TARGET_MS = 1200; function scheduleWelcomeHydration(hydrate: () => void) { const idleWindow = window as Window & { requestIdleCallback?: (callback: () => void, options?: { timeout: number }) => number; }; if (typeof idleWindow.requestIdleCallback === 'function') { idleWindow.requestIdleCallback(hydrate, { timeout: WELCOME_HYDRATION_IDLE_TIMEOUT_MS }); return; } const elapsedMs = typeof performance !== 'undefined' ? performance.now() : 0; const fallbackDelayMs = Math.max(0, WELCOME_HYDRATION_FALLBACK_TARGET_MS - elapsedMs); window.setTimeout(hydrate, fallbackDelayMs); } initSentry(); initDebugBearRum(); initI18n({ metaPrefix: 'welcome.meta' }).then(() => { const rootElement = document.getElementById('root')!; const app = ( ); if ( rootElement.dataset.wmPrerendered === 'welcome' && rootElement.dataset.wmPrerenderLang === effectiveWelcomeContentLanguage() ) { scheduleWelcomeHydration(() => hydrateRoot(rootElement, app)); return; } clearWelcomeRoot(rootElement); createRoot(rootElement).render(app); });