/**
 * @license
 * SPDX-License-Identifier: Apache-2.0
 */

// Safe fallback polyfills for sandboxed iframe environments
(() => {
  // 1. Safe localStorage Polyfill
  let isLocalStorageAvailable = false;
  try {
    const testKey = "__storage_test__";
    window.localStorage.setItem(testKey, testKey);
    window.localStorage.removeItem(testKey);
    isLocalStorageAvailable = true;
  } catch (e) {
    isLocalStorageAvailable = false;
  }

  if (!isLocalStorageAvailable) {
    const makeStorageMock = () => {
      let store: Record<string, string> = {};
      return {
        getItem: (key: string) => (key in store ? store[key] : null),
        setItem: (key: string, value: any) => { store[key] = String(value); },
        removeItem: (key: string) => { delete store[key]; },
        clear: () => { store = {}; },
        key: (index: number) => Object.keys(store)[index] || null,
        get length() { return Object.keys(store).length; }
      };
    };
    try {
      Object.defineProperty(window, 'localStorage', {
        value: makeStorageMock(),
        configurable: true,
        writable: true
      });
    } catch (e) {
      console.warn("Could not polyfill window.localStorage: ", e);
    }
  }

  // 2. Safe sessionStorage Polyfill
  let isSessionStorageAvailable = false;
  try {
    const testKey = "__session_test__";
    window.sessionStorage.setItem(testKey, testKey);
    window.sessionStorage.removeItem(testKey);
    isSessionStorageAvailable = true;
  } catch (e) {
    isSessionStorageAvailable = false;
  }

  if (!isSessionStorageAvailable) {
    const makeStorageMock = () => {
      let store: Record<string, string> = {};
      return {
        getItem: (key: string) => (key in store ? store[key] : null),
        setItem: (key: string, value: any) => { store[key] = String(value); },
        removeItem: (key: string) => { delete store[key]; },
        clear: () => { store = {}; },
        key: (index: number) => Object.keys(store)[index] || null,
        get length() { return Object.keys(store).length; }
      };
    };
    try {
      Object.defineProperty(window, 'sessionStorage', {
        value: makeStorageMock(),
        configurable: true,
        writable: true
      });
    } catch (e) {
      console.warn("Could not polyfill window.sessionStorage: ", e);
    }
  }

  // 3. Safe window.alert Wrapper
  try {
    const originalAlert = window.alert;
    window.alert = (message?: any) => {
      try {
        if (typeof originalAlert === "function") {
          originalAlert(message);
        } else {
          console.log("[Safe Alert/Modal Fallback]:", message);
        }
      } catch (err) {
        console.warn("[Caught Alert API Block]:", message, err);
      }
    };
  } catch (e) {
    console.warn("Could not wrap window.alert: ", e);
  }
})();

import {StrictMode} from 'react';
import {createRoot} from 'react-dom/client';
import App from './App.tsx';
import './index.css';

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <App />
  </StrictMode>,
);

