import { t } from '@/services/i18n'; import { getDismissed, setDismissed } from '@/utils/cross-domain-storage'; import { setTrustedHtml, trustedHtml } from '@/utils/dom-utils'; const DISMISS_KEY = 'wm-layer-warning-dismissed'; let activeDialog: HTMLElement | null = null; export function showLayerWarning(threshold: number): void { if (getDismissed(DISMISS_KEY)) return; if (activeDialog) return; if (window.self !== window.top) return; if (new URLSearchParams(window.location.search).get('alert') === 'false') return; const overlay = document.createElement('div'); overlay.className = 'layer-warn-overlay'; setTrustedHtml(overlay, trustedHtml(`
${t('components.deckgl.layerWarningTitle')}

${t('components.deckgl.layerWarningBody', { threshold })}

`, "legacy direct innerHTML migration")); const close = () => { const cb = overlay.querySelector('.layer-warn-dismiss input'); if (cb?.checked) setDismissed(DISMISS_KEY); overlay.classList.add('layer-warn-out'); setTimeout(() => { overlay.remove(); activeDialog = null; }, 200); }; overlay.querySelector('.layer-warn-ok')!.addEventListener('click', close); overlay.addEventListener('click', (e) => { if (e.target === overlay) close(); }); document.body.appendChild(overlay); activeDialog = overlay; requestAnimationFrame(() => overlay.classList.add('layer-warn-in')); }