HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode/one-time-popup/src/scripts/manual-popup-manager.ts
import { popupWebinar } from '../components/popup-webinar/popup-webinar.ts';
import { popupForm } from '../components/popup-form/popup-form.ts';

type PopupResources = {
  template: Promise<{ default: string }>;
  style: Promise<{ default: string }>[];
  run: () => void;
};

type ManualPopupManager = (
  document: ShadowRoot,
  onOpen: () => void,
  onClose: () => void,
) => Promise<false | PopupResources>;

export const manualPopupManager: ManualPopupManager = async (document, onOpen, onClose) => {
  const url = new URL(window.location.href);

  const popupMap: Record<string, () => Promise<PopupResources>> = {
    '#popup-form': async () => {
      return {
        template: import('../components/popup-form/popup-form.html?raw'),
        style: [import('../scss/index-popup-form.scss?inline')],
        run: () => popupForm(document, onOpen, onClose),
      };
    },
    '#popup-webinar': async () => {
      return {
        template: import('../components/popup-webinar/popup-webinar.html?raw'),
        style: [import('../scss/index-popup-webinars.scss?inline')],
        run: () => popupWebinar(document, onOpen, onClose),
      };
    },
  };

  const popupFactory = popupMap[url.hash];
  return popupFactory ? await popupFactory() : false;
};