{"version":3,"sources":["jsdelivr-header.js","/gh/nocodesupplyco/mast@b014a1b/modal.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCNA,WACE,aAQA,SAAS,IACP,IAEE,MAAM,EAAU,SAAS,iBAAiB,UAG1C,GAAuB,IAAnB,EAAQ,OACV,OAIF,SAAS,iBAAiB,QAAS,GAGnC,EAAQ,QAAQ,GAGhB,EAAQ,QAAQ,EAClB,CAAE,MAAO,GACP,QAAQ,KAAK,+BAAgC,EAC/C,CACF,CAGA,SAAS,EAAkB,GACzB,MAAM,EAAS,EAAE,OAGjB,GAAI,EAAO,QAAQ,mBAAoB,CACrC,EAAE,iBACF,MAAM,EAAS,EAAO,uBAItB,YAHI,GAA6B,WAAnB,EAAO,SACnB,EAAO,YAGX,CAGA,GAAI,EAAO,QAAQ,uEAAwE,CACzF,EAAE,iBACF,MAAM,EAAS,EAAO,QAAQ,UAI9B,YAHI,GACF,EAAO,QAGX,CACF,CAGA,SAAS,EAAwB,GAC/B,EAAO,iBAAiB,QAAS,SAAU,GAErC,EAAE,SAAW,GACf,EAAO,OAEX,GAGA,EAAO,iBAAiB,QAAS,YA+BnC,SAA0B,GACxB,MAAM,EAAe,SAAS,EAAO,QAAQ,kBAAmB,IAEhE,GAAI,EAAe,EAAG,CACpB,MAAM,EAAU,EAAW,GACvB,GA6CR,SAAgC,EAAS,GACvC,IACE,MAAM,EAAa,kBAAkB,IAC/B,EAAM,KAAK,MAEX,EAAgB,EADU,GAAP,EAAY,GAAK,GAAK,IAG/C,aAAa,QAAQ,EAAY,EAAc,WACjD,CAAE,MAAO,GACP,QAAQ,KAAK,gCAAiC,EAChD,CACF,CAvDM,CAAuB,EAAS,EAEpC,CACF,CAvCI,CAAiB,EACnB,EACF,CAGA,SAAS,EAAoB,GAG3B,KAF4D,SAAnC,EAAO,QAAQ,iBAGtC,OAGF,MAAM,EAAe,SAAS,EAAO,QAAQ,kBAAmB,KAAO,EACjE,EAAU,EAAW,GAGtB,IAKD,EAAe,GAiCrB,SAAsB,GACpB,IACE,MAAM,EAAa,kBAAkB,IAC/B,EAAgB,aAAa,QAAQ,GAE3C,IAAK,EACH,OAAO,EAGT,MAAM,EAAM,KAAK,MAIjB,QAAI,EAHiB,SAAS,EAAe,OAI3C,aAAa,WAAW,IACjB,EAIX,CAAE,MAAO,GAEP,OADA,QAAQ,KAAK,iCAAkC,IACxC,CACT,CACF,CAxD0B,CAAa,IAKrC,EAAO,YACT,CAeA,SAAS,EAAW,GAClB,MAAM,EAAS,EAAO,cAEtB,OAAK,GAAW,EAAO,GAKhB,EAAO,IAJZ,QAAQ,IAAI,0DACL,KAIX,CAnHK,SAAS,cAAc,YA8JA,YAAxB,SAAS,WACX,SAAS,iBAAiB,mBAAoB,GAE9C,IAEH,CAvKD","file":"/gh/nocodesupplyco/mast@b014a1b/modal.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /gh/nocodesupplyco/mast@b014a1b/modal.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function () {\n  \"use strict\";\n\n  // Early exit if no dialogs exist on the page\n  if (!document.querySelector(\"dialog\")) {\n    return;\n  }\n\n  // Initialize modal functionality\n  function initModals() {\n    try {\n      // Get all dialog elements\n      const dialogs = document.querySelectorAll(\"dialog\");\n\n      // Early exit if no dialogs found\n      if (dialogs.length === 0) {\n        return;\n      }\n\n      // Use event delegation for better performance\n      document.addEventListener(\"click\", handleModalClicks);\n\n      // Setup individual dialog listeners only for click-outside functionality\n      dialogs.forEach(setupDialogClickOutside);\n\n      // Handle auto-open modals with cooldown support\n      dialogs.forEach(handleAutoOpenModal);\n    } catch (error) {\n      console.warn(\"Modal initialization failed:\", error);\n    }\n  }\n\n  // Handle all modal-related clicks using event delegation\n  function handleModalClicks(e) {\n    const target = e.target;\n\n    // Handle show modal buttons (buttons that immediately follow dialogs)\n    if (target.closest(\"dialog + button\")) {\n      e.preventDefault();\n      const dialog = target.previousElementSibling;\n      if (dialog && dialog.tagName === \"DIALOG\") {\n        dialog.showModal();\n      }\n      return;\n    }\n\n    // Handle close modal buttons\n    if (target.closest('dialog button.modal_close-button, dialog button[data-modal=\"close\"]')) {\n      e.preventDefault();\n      const dialog = target.closest(\"dialog\");\n      if (dialog) {\n        dialog.close();\n      }\n      return;\n    }\n  }\n\n  // Setup click-outside-to-close functionality for each dialog\n  function setupDialogClickOutside(dialog) {\n    dialog.addEventListener(\"click\", function (e) {\n      // Only close if clicking on the dialog backdrop (not its content)\n      if (e.target === dialog) {\n        dialog.close();\n      }\n    });\n\n    // Track when modal is closed to update localStorage if cooldown is enabled\n    dialog.addEventListener(\"close\", function () {\n      handleModalClose(dialog);\n    });\n  }\n\n  // Handle auto-open modal functionality with cooldown support\n  function handleAutoOpenModal(dialog) {\n    const shouldOpenOnLoad = dialog.dataset.modalOpenOnLoad === \"true\";\n\n    if (!shouldOpenOnLoad) {\n      return;\n    }\n\n    const cooldownDays = parseInt(dialog.dataset.modalCooldownDays, 10) || 0;\n    const modalId = getModalId(dialog);\n\n    // Exit if modal doesn't have a valid parent ID\n    if (!modalId) {\n      return;\n    }\n\n    // Check if modal is in cooldown period\n    if (cooldownDays > 0 && isInCooldown(modalId)) {\n      return;\n    }\n\n    // Open the modal\n    dialog.showModal();\n  }\n\n  // Handle modal close event and store cooldown timestamp\n  function handleModalClose(dialog) {\n    const cooldownDays = parseInt(dialog.dataset.modalCooldownDays, 10);\n\n    if (cooldownDays > 0) {\n      const modalId = getModalId(dialog);\n      if (modalId) {\n        storeCooldownTimestamp(modalId, cooldownDays);\n      }\n    }\n  }\n\n  // Get the modal ID from the parent element\n  function getModalId(dialog) {\n    const parent = dialog.parentElement;\n\n    if (!parent || !parent.id) {\n      console.log(\"Modal component must have ID set for cooldown to work.\");\n      return null;\n    }\n\n    return parent.id;\n  }\n\n  // Check if a modal is currently in cooldown period\n  function isInCooldown(modalId) {\n    try {\n      const storageKey = `modal-cooldown-${modalId}`;\n      const cooldownUntil = localStorage.getItem(storageKey);\n\n      if (!cooldownUntil) {\n        return false;\n      }\n\n      const now = Date.now();\n      const cooldownTime = parseInt(cooldownUntil, 10);\n\n      // If cooldown has expired, remove it from storage\n      if (now > cooldownTime) {\n        localStorage.removeItem(storageKey);\n        return false;\n      }\n\n      return true;\n    } catch (error) {\n      console.warn(\"Error checking modal cooldown:\", error);\n      return false;\n    }\n  }\n\n  // Store cooldown timestamp in localStorage\n  function storeCooldownTimestamp(modalId, days) {\n    try {\n      const storageKey = `modal-cooldown-${modalId}`;\n      const now = Date.now();\n      const cooldownDuration = days * 24 * 60 * 60 * 1000; // Convert days to milliseconds\n      const cooldownUntil = now + cooldownDuration;\n\n      localStorage.setItem(storageKey, cooldownUntil.toString());\n    } catch (error) {\n      console.warn(\"Error storing modal cooldown:\", error);\n    }\n  }\n\n  // Initialize when DOM is ready\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initModals);\n  } else {\n    initModals();\n  }\n})();\n"]}