{"version":3,"file":"index.esm.mjs","sources":["../src/utils/id.js","../src/utils/dom.js","../src/components/ToastContainer.js","../src/utils/position.js","../src/components/toast-utils.js","../src/components/Toast.js","../src/components/ToastManager.js","../src/index.js"],"sourcesContent":["// src/utils/id.js\r\n\"use strict\";\r\n\r\n/**\r\n * Generate unique ID for DOM elements to avoid conflicts\r\n * @param {string} prefix - Optional prefix for ID\r\n * @returns {string} Unique ID\r\n */\r\nexport function generateUniqueId(prefix = \"toast\") {\r\n  return `${prefix}-${Date.now()}-${Math.floor(Math.random() * 100000)}`;\r\n}\r\n","// src/utils/dom.js\r\n\"use strict\";\r\n\r\nimport { generateUniqueId } from \"./id.js\";\r\n\r\n/**\r\n * Multi-layer fallback DOM element creation\r\n */\r\nexport function createElementWithId(tagName, prefix) {\r\n  // PRIMARY: Standard createElement\r\n  try {\r\n    const el = document.createElement(tagName);\r\n    el.id = generateUniqueId(prefix);\r\n    return el;\r\n  } catch (error) {\r\n    console.warn(`Primary createElement failed for ${tagName}:`, error);\r\n\r\n    // FALLBACK-A: Try div as alternative\r\n    try {\r\n      const fallbackEl = document.createElement(\"div\");\r\n      fallbackEl.id = generateUniqueId(prefix || \"fallback\");\r\n      fallbackEl.setAttribute(\"data-original-tag\", tagName);\r\n      return fallbackEl;\r\n    } catch (fallbackError) {\r\n      console.error(\"All DOM creation methods failed:\", fallbackError);\r\n\r\n      // FALLBACK-B: Return minimal object that won't crash\r\n      return {\r\n        id: generateUniqueId(prefix || \"emergency\"),\r\n        style: {},\r\n        appendChild: () => {},\r\n        setAttribute: () => {},\r\n        innerHTML: \"\",\r\n        textContent: \"\",\r\n        onclick: null,\r\n        _isEmergencyElement: true,\r\n      };\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * Multi-strategy appendChild with graceful degradation\r\n */\r\nexport function appendChild(parent, child) {\r\n  if (!parent || !child) return false;\r\n\r\n  // PRIMARY: Standard appendChild\r\n  try {\r\n    if (!parent.contains(child)) {\r\n      parent.appendChild(child);\r\n      return true;\r\n    }\r\n    return true;\r\n  } catch (error) {\r\n    console.warn(\"Primary appendChild failed:\", error);\r\n\r\n    // FALLBACK-A: insertAdjacentElement\r\n    try {\r\n      parent.insertAdjacentElement(\"beforeend\", child);\r\n      return true;\r\n    } catch (fallbackError) {\r\n      console.warn(\"Fallback appendChild failed:\", fallbackError);\r\n\r\n      // FALLBACK-B: Manual positioning\r\n      try {\r\n        if (parent === document.body) {\r\n          child.style.position = \"fixed\";\r\n          child.style.top = \"10px\";\r\n          child.style.right = \"10px\";\r\n          child.style.zIndex = \"99999\";\r\n          document.body.insertAdjacentHTML(\"beforeend\", child.outerHTML || \"\");\r\n          return true;\r\n        }\r\n      } catch (emergencyError) {\r\n        console.error(\"All append strategies failed:\", emergencyError);\r\n        return false;\r\n      }\r\n    }\r\n  }\r\n  return false;\r\n}\r\n\r\n/**\r\n * Safe element removal with multiple strategies\r\n */\r\nexport function removeElement(el) {\r\n  if (!el) return true;\r\n\r\n  // PRIMARY: parentNode.removeChild\r\n  try {\r\n    if (el.parentNode) {\r\n      el.parentNode.removeChild(el);\r\n      return true;\r\n    }\r\n  } catch (error) {\r\n    console.warn(\"Primary removal failed:\", error);\r\n\r\n    // FALLBACK-A: element.remove()\r\n    try {\r\n      if (el.remove) {\r\n        el.remove();\r\n        return true;\r\n      }\r\n    } catch (fallbackError) {\r\n      console.warn(\"Fallback removal failed:\", fallbackError);\r\n\r\n      // FALLBACK-B: Hide instead of remove\r\n      try {\r\n        el.style.display = \"none\";\r\n        el.style.opacity = \"0\";\r\n        el.style.pointerEvents = \"none\";\r\n        el.style.position = \"absolute\";\r\n        el.style.left = \"-9999px\";\r\n        return true;\r\n      } catch (hideError) {\r\n        console.error(\"All removal strategies failed:\", hideError);\r\n        return false;\r\n      }\r\n    }\r\n  }\r\n  return true;\r\n}\r\n\r\n/**\r\n * Animation duration parser with fallbacks\r\n */\r\nexport function parseAnimationDuration(duration) {\r\n  // PRIMARY: Parse provided duration\r\n  try {\r\n    if (typeof duration === \"number\" && duration > 0) return duration;\r\n    if (typeof duration === \"string\") {\r\n      if (duration.endsWith(\"s\") && !duration.endsWith(\"ms\")) {\r\n        const parsed = parseFloat(duration) * 1000;\r\n        return parsed > 0 ? parsed : 500;\r\n      }\r\n      const parsed = parseFloat(duration);\r\n      return parsed > 0 ? parsed : 500;\r\n    }\r\n  } catch (error) {\r\n    console.warn(\"Duration parsing failed:\", error);\r\n  }\r\n\r\n  // FALLBACK: Safe default\r\n  return 500;\r\n}\r\n\r\n/**\r\n * Force reflow with error protection\r\n */\r\nexport function forceReflow(el) {\r\n  try {\r\n    return el?.offsetWidth || 0;\r\n  } catch (error) {\r\n    console.warn(\"Force reflow failed:\", error);\r\n    return 0;\r\n  }\r\n}\r\n\r\n/**\r\n * Query selector shortcut with optional root.\r\n * @param {string} selector\r\n * @param {Document|HTMLElement} [root=document]\r\n * @returns {Element|null}\r\n */\r\nexport function query(selector, root = document) {\r\n  return root.querySelector(selector);\r\n}\r\n","// src/components/ToastContainer.js  //# Container logic\r\n\"use strict\";\r\n\r\nimport { setPosition } from \"../utils/position.js\";\r\nimport { appendChild } from \"../utils/dom.js\";\r\n\r\n/**\r\n * Create toast container with error handling\r\n * @param {string} position - Toast position\r\n * @returns {HTMLElement} Toast container element\r\n */\r\nexport function createToastContainer(position) {\r\n  try {\r\n    let toastContainer = document.getElementById(`toast-container-${position}`);\r\n\r\n    if (!toastContainer) {\r\n      toastContainer = document.createElement(\"div\");\r\n      toastContainer.id = `toast-container-${position}`;\r\n      toastContainer.style.position = \"fixed\";\r\n      toastContainer.style.zIndex = \"9999\";\r\n      setPosition(toastContainer, position);\r\n      appendChild(document.body, toastContainer);\r\n    }\r\n\r\n    return toastContainer;\r\n  } catch (error) {\r\n    console.error(\"Failed to create toast container:\", error);\r\n    // Fallback: return body element\r\n    return document.body;\r\n  }\r\n}\r\n","// src/utils/position.js\r\n\"use strict\";\r\n\r\n/**\r\n * Set position for toast container (EXACT same logic as original)\r\n * @param {HTMLElement} container - Toast container element\r\n * @param {string} position - Position string\r\n */\r\nexport function setPosition(container, position) {\r\n  // Reset all position properties first\r\n  container.style.top = \"auto\";\r\n  container.style.bottom = \"auto\";\r\n  container.style.left = \"auto\";\r\n  container.style.right = \"auto\";\r\n  container.style.transform = \"none\";\r\n\r\n  if (position.includes(\"bottom\")) {\r\n    container.style.bottom = \"10px\";\r\n  } else if (position.includes(\"top\")) {\r\n    container.style.top = \"10px\";\r\n  }\r\n\r\n  if (position.includes(\"right\")) {\r\n    container.style.right = \"10px\";\r\n  } else if (position.includes(\"left\")) {\r\n    container.style.left = \"10px\";\r\n  } else if (position.includes(\"center\")) {\r\n    container.style.top = \"50%\";\r\n    container.style.left = \"50%\";\r\n    container.style.transform = \"translate(-50%, -50%)\";\r\n  }\r\n}\r\n","\"use strict\";\r\n\r\nimport { forceReflow, parseAnimationDuration } from \"../utils/dom.js\";\r\n\r\n/**\r\n * Create close button for toast\r\n * @param {HTMLElement} toast - Toast element\r\n * @param {Object} options - Toast options\r\n * @param {Function} onClose - Close callback\r\n */\r\nexport function createCloseButton(toast, options, onClose) {\r\n  const closeButton = document.createElement(\"button\");\r\n  closeButton.innerHTML = \"&times;\";\r\n  Object.assign(closeButton.style, {\r\n    background: \"none\",\r\n    border: \"none\",\r\n    color: options.textColor || \"white\",\r\n    fontSize: \"18px\",\r\n    marginLeft: \"10px\",\r\n    cursor: \"pointer\",\r\n  });\r\n\r\n  closeButton.onclick = () => onClose(toast);\r\n  toast.appendChild(closeButton);\r\n\r\n  toast._cleanupCloseButton = () => {\r\n    closeButton.onclick = null;\r\n  };\r\n}\r\n\r\n/**\r\n * Create progress bar for toast\r\n * @param {HTMLElement} toast - Toast element\r\n * @param {Object} options - Toast options\r\n */\r\nexport function createProgressBar(toast, options) {\r\n  const progressBar = document.createElement(\"div\");\r\n  Object.assign(progressBar.style, {\r\n    position: \"absolute\",\r\n    left: \"0\",\r\n    height: options.progressHeight || \"4px\",\r\n    background: options.progressColor || \"rgba(255, 255, 255, 0.3)\",\r\n    width: \"100%\",\r\n    transition: `width ${options.duration || 3000}ms linear`,\r\n    [options.progressPosition === \"top\" ? \"top\" : \"bottom\"]: \"0\",\r\n  });\r\n\r\n  toast.appendChild(progressBar);\r\n\r\n  setTimeout(() => {\r\n    forceReflow(progressBar);\r\n    progressBar.style.width = \"0%\";\r\n  }, 100);\r\n}\r\n\r\n/**\r\n * Run toast fade-in animation\r\n * @param {HTMLElement} toast - Toast element\r\n */\r\nexport function runToastAnimation(toast) {\r\n  setTimeout(() => {\r\n    toast.style.opacity = \"1\";\r\n    toast.style.transform = \"translateY(0)\";\r\n  }, 50);\r\n}\r\n\r\n/**\r\n * Apply rich styling to toast element\r\n * @param {HTMLElement} toast - Toast element\r\n * @param {Object} options - Toast options\r\n * @param {Function} onClose - Close callback\r\n */\r\nexport function applyRichStyling(toast, options, onClose) {\r\n  const animDurationMs = parseAnimationDuration(\r\n    options.animationDuration || \"0.5s\"\r\n  );\r\n\r\n  // Apply full styling\r\n  Object.assign(toast.style, {\r\n    background: options.backgroundColor || options.color || \"#333\",\r\n    color: options.textColor || \"white\",\r\n    padding: \"12px 20px\",\r\n    marginBottom: \"10px\",\r\n    borderRadius: \"5px\",\r\n    display: \"flex\",\r\n    alignItems: \"center\",\r\n    justifyContent: \"space-between\",\r\n    boxShadow: \"0 4px 6px rgba(0, 0, 0, 0.1)\",\r\n    minWidth: \"250px\",\r\n    maxWidth: \"400px\",\r\n    opacity: \"0\",\r\n    position: \"relative\",\r\n    transition: `opacity ${options.animationDuration || \"0.5s\"} ${\r\n      options.animationEasing || \"ease\"\r\n    }, transform ${options.animationDuration || \"0.5s\"} ${\r\n      options.animationEasing || \"ease\"\r\n    }`,\r\n    transform: \"translateY(20px)\",\r\n    zIndex: \"9999\",\r\n  });\r\n\r\n  toast._animationDuration = animDurationMs;\r\n\r\n  // Message span\r\n  const messageSpan = document.createElement(\"span\");\r\n  messageSpan.textContent = options.message || \"Notification\";\r\n  messageSpan.style.flex = \"1\";\r\n  toast.appendChild(messageSpan);\r\n\r\n  // Close button\r\n  if (options.showCloseButton) {\r\n    createCloseButton(toast, options, onClose);\r\n  }\r\n\r\n  // Progress bar\r\n  if (options.showProgressBar) {\r\n    createProgressBar(toast, options);\r\n  }\r\n\r\n  // Animation\r\n  runToastAnimation(toast);\r\n}\r\n\r\n/**\r\n * Create basic fallback toast\r\n * @param {HTMLElement} toast - Toast element\r\n * @param {Object} options - Toast options\r\n * @param {Function} onClose - Close callback\r\n */\r\nexport function createBasicToast(toast, options, onClose) {\r\n  // Basic styling only\r\n  Object.assign(toast.style, {\r\n    background: \"#333\",\r\n    color: \"white\",\r\n    padding: \"10px 15px\",\r\n    margin: \"10px\",\r\n    borderRadius: \"3px\",\r\n    position: \"fixed\",\r\n    top: \"20px\",\r\n    right: \"20px\",\r\n    zIndex: \"99999\",\r\n    maxWidth: \"300px\",\r\n    wordWrap: \"break-word\",\r\n  });\r\n\r\n  toast.textContent = options.message || \"Notification\";\r\n\r\n  if (options.showCloseButton) {\r\n    toast.style.cursor = \"pointer\";\r\n    toast.onclick = () => onClose(toast);\r\n  }\r\n\r\n  toast._animationDuration = 500;\r\n}\r\n\r\n/**\r\n * Emergency toast as last resort\r\n * @param {Object} options - Toast options\r\n * @param {Function} onClose - Close callback\r\n */\r\nexport function createEmergencyToast(options, onClose) {\r\n  try {\r\n    // Create emergency div\r\n    const emergency = document.createElement(\"div\");\r\n    emergency.id = `emergency-${Date.now()}`;\r\n    emergency.innerHTML = `\r\n      <div style=\"\r\n        background: #333 !important;\r\n        color: white !important;\r\n        padding: 10px 15px !important;\r\n        position: fixed !important;\r\n        top: 20px !important;\r\n        right: 20px !important;\r\n        z-index: 99999 !important;\r\n        border-radius: 3px !important;\r\n        max-width: 250px !important;\r\n        word-wrap: break-word !important;\r\n        font-family: Arial, sans-serif !important;\r\n        font-size: 14px !important;\r\n        box-shadow: 0 2px 10px rgba(0,0,0,0.3) !important;\r\n        cursor: pointer !important;\r\n      \" onclick=\"this.parentNode.removeChild(this)\">\r\n        ${options.message || \"Notification\"}\r\n        <span style=\"float: right; margin-left: 10px; font-weight: bold;\">&times;</span>\r\n      </div>\r\n    `;\r\n\r\n    emergency._animationDuration = 500;\r\n    emergency._isEmergencyToast = true;\r\n\r\n    // Auto remove\r\n    setTimeout(() => {\r\n      try {\r\n        if (emergency.parentNode) {\r\n          emergency.parentNode.removeChild(emergency);\r\n        }\r\n        onClose(emergency);\r\n      } catch (error) {\r\n        console.warn(\"Emergency cleanup failed:\", error);\r\n      }\r\n    }, options.duration || 3000);\r\n\r\n    return emergency;\r\n  } catch (emergencyError) {\r\n    console.error(\"Emergency toast creation failed:\", emergencyError);\r\n\r\n    // ULTIMATE FALLBACK: Alert\r\n    setTimeout(() => {\r\n      try {\r\n        alert(options.message || \"Toast Notification\");\r\n        onClose(null);\r\n      } catch (alertError) {\r\n        console.error(\"Ultimate fallback failed:\", alertError);\r\n        onClose(null);\r\n      }\r\n    }, 100);\r\n\r\n    return null;\r\n  }\r\n}\r\n","// src/components/Toast.js  //# Single responsibility\r\n\"use strict\";\r\n\r\nimport { createElementWithId } from \"../utils/dom.js\";\r\nimport {\r\n  applyRichStyling,\r\n  createBasicToast,\r\n  createEmergencyToast,\r\n} from \"./toast-utils.js\";\r\n\r\n/**\r\n * Multi-layer toast creation with satellite-grade fallbacks\r\n * @param {Object} options - Toast configuration options\r\n * @param {Function} onClose - Callback when toast closes\r\n * @returns {HTMLElement} Toast element\r\n */\r\nexport function createToastElement(options, onClose) {\r\n  let toast;\r\n  let isEmergencyMode = false;\r\n\r\n  // PRIMARY: Full-featured toast\r\n  try {\r\n    toast = createElementWithId(\"div\", \"toast\");\r\n\r\n    if (toast._isEmergencyElement) {\r\n      isEmergencyMode = true;\r\n      console.warn(\"Toast created in emergency mode\");\r\n    }\r\n  } catch (error) {\r\n    console.error(\"Toast creation failed:\", error);\r\n    isEmergencyMode = true;\r\n    // FALLBACK: Basic object structure\r\n    toast = {\r\n      id: `emergency-toast-${Date.now()}`,\r\n      style: {},\r\n      appendChild: () => {},\r\n      innerHTML: \"\",\r\n      textContent: \"\",\r\n      _isEmergencyElement: true,\r\n    };\r\n  }\r\n\r\n  // PRIMARY: Rich styling and features\r\n  if (!isEmergencyMode) {\r\n    try {\r\n      applyRichStyling(toast, options, onClose);\r\n      return toast;\r\n    } catch (stylingError) {\r\n      console.warn(\r\n        \"Rich toast styling failed, switching to basic mode:\",\r\n        stylingError\r\n      );\r\n      isEmergencyMode = true;\r\n    }\r\n  }\r\n\r\n  // FALLBACK-A: Basic functional toast\r\n  if (isEmergencyMode && !toast._isEmergencyElement) {\r\n    try {\r\n      createBasicToast(toast, options, onClose);\r\n      return toast;\r\n    } catch (basicError) {\r\n      console.error(\"Basic toast creation failed:\", basicError);\r\n    }\r\n  }\r\n\r\n  // FALLBACK-B: Emergency notification system\r\n  return createEmergencyToast(options, onClose);\r\n}\r\n","// src/components/ToastManager.js  //# State management\r\n\"use strict\";\r\n\r\nimport { createToastContainer } from \"./ToastContainer.js\";\r\nimport { createToastElement } from \"./Toast.js\";\r\nimport { removeElement } from \"../utils/dom.js\";\r\n\r\n// State management with fallback tracking\r\nlet isToastShowing = false;\r\nlet currentToast = null;\r\nlet emergencyTimeouts = new Set();\r\nlet emergencyCleanupScheduled = false;\r\n\r\n/**\r\n * Show toast with comprehensive fallback system\r\n */\r\nexport function showToast(options) {\r\n  // Prevent multiple toasts (original behavior)\r\n  if (isToastShowing) {\r\n    console.warn(\"Toast already showing, ignoring request\");\r\n    return;\r\n  }\r\n\r\n  isToastShowing = true;\r\n\r\n  // PRIMARY: Full toast system\r\n  try {\r\n    const container = createToastContainer(options.position);\r\n    const toast = createToastElement(options, closeToast);\r\n\r\n    if (!toast) {\r\n      throw new Error(\"Toast creation returned null\");\r\n    }\r\n\r\n    currentToast = toast;\r\n\r\n    // Append to container\r\n    if (container.appendChild) {\r\n      container.appendChild(toast);\r\n    } else {\r\n      // Container is emergency fallback\r\n      document.body.appendChild(toast);\r\n    }\r\n\r\n    // Schedule auto-dismiss\r\n    const dismissTimeout = setTimeout(() => {\r\n      closeToast(toast);\r\n    }, options.duration || 3000);\r\n\r\n    emergencyTimeouts.add(dismissTimeout);\r\n\r\n    // Emergency cleanup backup\r\n    scheduleEmergencyCleanup(options.duration || 3000);\r\n\r\n    return;\r\n  } catch (primaryError) {\r\n    console.warn(\"Primary toast system failed:\", primaryError);\r\n  }\r\n\r\n  // FALLBACK-A: Direct body placement\r\n  try {\r\n    const simpleToast = createSimpleToast(options);\r\n    currentToast = simpleToast;\r\n    document.body.appendChild(simpleToast);\r\n\r\n    setTimeout(() => {\r\n      closeToast(simpleToast);\r\n    }, options.duration || 3000);\r\n\r\n    return;\r\n  } catch (fallbackError) {\r\n    console.warn(\"Fallback toast failed:\", fallbackError);\r\n  }\r\n\r\n  // FALLBACK-B: Browser alert\r\n  try {\r\n    alert(options.message || \"Notification\");\r\n    isToastShowing = false;\r\n  } catch (alertError) {\r\n    console.error(\"All toast systems failed:\", alertError);\r\n    isToastShowing = false;\r\n  }\r\n}\r\n\r\n/**\r\n * Create simple toast for fallback\r\n */\r\nfunction createSimpleToast(options) {\r\n  const simple = document.createElement(\"div\");\r\n  simple.style.cssText = `\r\n    position: fixed !important;\r\n    top: 20px !important;\r\n    right: 20px !important;\r\n    background: #333 !important;\r\n    color: white !important;\r\n    padding: 12px 20px !important;\r\n    border-radius: 5px !important;\r\n    z-index: 99999 !important;\r\n    max-width: 300px !important;\r\n    font-family: Arial, sans-serif !important;\r\n    cursor: pointer !important;\r\n  `;\r\n  simple.textContent = options.message || \"Notification\";\r\n  simple.onclick = () => closeToast(simple);\r\n  return simple;\r\n}\r\n\r\n/**\r\n * Close toast with multi-strategy cleanup\r\n */\r\nfunction closeToast(toast) {\r\n  try {\r\n    if (!toast) {\r\n      resetToastState();\r\n      return;\r\n    }\r\n\r\n    // Animation if supported\r\n    if (toast.style && !toast._isEmergencyToast) {\r\n      toast.style.opacity = \"0\";\r\n      toast.style.transform = \"translateY(-20px)\";\r\n\r\n      const animDuration = toast._animationDuration || 500;\r\n      setTimeout(() => {\r\n        performCleanup(toast);\r\n      }, animDuration);\r\n    } else {\r\n      // Immediate cleanup for emergency toasts\r\n      performCleanup(toast);\r\n    }\r\n  } catch (error) {\r\n    console.error(\"Close toast failed:\", error);\r\n    forceEmergencyCleanup();\r\n  }\r\n}\r\n\r\n/**\r\n * Perform comprehensive cleanup\r\n */\r\nfunction performCleanup(toast) {\r\n  try {\r\n    // Cleanup event listeners\r\n    if (toast._cleanupCloseButton) {\r\n      toast._cleanupCloseButton();\r\n    }\r\n\r\n    // Remove from DOM\r\n    removeElement(toast);\r\n\r\n    // Reset state\r\n    resetToastState();\r\n  } catch (error) {\r\n    console.error(\"Cleanup failed:\", error);\r\n    forceEmergencyCleanup();\r\n  }\r\n}\r\n\r\n/**\r\n * Reset all toast state\r\n */\r\nfunction resetToastState() {\r\n  isToastShowing = false;\r\n  currentToast = null;\r\n\r\n  // Clear all timeouts\r\n  emergencyTimeouts.forEach((id) => {\r\n    try {\r\n      clearTimeout(id);\r\n    } catch (error) {\r\n      console.warn(\"Timeout clear failed:\", error);\r\n    }\r\n  });\r\n  emergencyTimeouts.clear();\r\n  emergencyCleanupScheduled = false;\r\n}\r\n\r\n/**\r\n * Schedule emergency cleanup\r\n */\r\nfunction scheduleEmergencyCleanup(duration) {\r\n  if (emergencyCleanupScheduled) return;\r\n\r\n  emergencyCleanupScheduled = true;\r\n  const emergencyTimeout = setTimeout(() => {\r\n    console.warn(\"Emergency cleanup triggered\");\r\n    forceEmergencyCleanup();\r\n  }, duration * 2.5); // 2.5x safety margin\r\n\r\n  emergencyTimeouts.add(emergencyTimeout);\r\n}\r\n\r\n/**\r\n * Force emergency cleanup of everything\r\n */\r\nfunction forceEmergencyCleanup() {\r\n  try {\r\n    // Remove current toast\r\n    if (currentToast) {\r\n      removeElement(currentToast);\r\n    }\r\n\r\n    // Clean up any orphaned toast elements\r\n    const orphanedToasts = document.querySelectorAll(\r\n      '[id*=\"toast\"], [id*=\"emergency\"]'\r\n    );\r\n    orphanedToasts.forEach((element) => {\r\n      try {\r\n        removeElement(element);\r\n      } catch (error) {\r\n        console.warn(\"Orphaned element cleanup failed:\", error);\r\n      }\r\n    });\r\n\r\n    // Reset all state\r\n    resetToastState();\r\n  } catch (error) {\r\n    console.error(\"Force cleanup failed:\", error);\r\n    // Final state reset\r\n    isToastShowing = false;\r\n    currentToast = null;\r\n  }\r\n}\r\n","// src/index.js\r\n/**\r\n * @fileoverview A simple toast notification library for any JavaScript framework.\r\n * @name Customizable Toast Notifications\r\n * @author Priyanshu Patel\r\n * @version __VERSION__\r\n * @build Production\r\n * @license Apache-2.0\r\n * @depends None\r\n * @description A lightweight and fully customizable toast notification library\r\n * designed for seamless integration with any JavaScript or framework-based UI.\r\n * Supports flexible positioning, theming, icons, animations, and timing options\r\n * out of the box — with zero dependencies.\r\n * Author: Priyanshu Patel\r\n * Email: priyanshu.alt191@gmail.com\r\n * Created: July 31, 2024\r\n * License: Apache-2.0\r\n * Dependencies: None\r\n */\r\n\r\n\"use strict\";\r\n\r\nimport { showToast } from \"./components/ToastManager.js\";\r\n\r\n// Protected state with fallbacks\r\nlet defaultColors = {\r\n  success: \"#28a745\",\r\n  error: \"#dc3545\",\r\n  warning: \"#ffc107\",\r\n  info: \"#17a2b8\",\r\n};\r\n\r\nlet defaultMessages = {\r\n  success: \"Operation completed successfully!\",\r\n  error: \"Something went wrong!\",\r\n  warning: \"Warning message!\",\r\n  info: \"Information message!\",\r\n};\r\n\r\n/**\r\n * Create toast with satellite-grade reliability\r\n */\r\nfunction createToast(options = {}) {\r\n  try {\r\n    // Input sanitization and validation\r\n    const sanitizedOptions = sanitizeToastOptions(options);\r\n\r\n    // Call main toast system\r\n    showToast(sanitizedOptions);\r\n  } catch (error) {\r\n    console.error(\"CreateToast failed:\", error);\r\n\r\n    // ULTIMATE FALLBACK: Browser alert with sanitized message\r\n    const safeMessage =\r\n      typeof options?.message === \"string\"\r\n        ? options.message.substring(0, 200)\r\n        : \"Toast notification failed\";\r\n\r\n    try {\r\n      alert(safeMessage);\r\n    } catch (alertError) {\r\n      console.error(\"Ultimate fallback failed:\", alertError);\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * Sanitize and normalize toast options\r\n */\r\nfunction sanitizeToastOptions(options) {\r\n  const defaults = {\r\n    duration: 3000,\r\n    position: \"bottom-right\",\r\n    type: \"info\",\r\n    backgroundColor: undefined,\r\n    textColor: \"white\",\r\n    showCloseButton: false,\r\n    animationDuration: \"0.5s\",\r\n    animationEasing: \"ease\",\r\n    showProgressBar: false,\r\n    progressColor: undefined,\r\n    progressHeight: \"4px\",\r\n    progressPosition: \"bottom\",\r\n  };\r\n\r\n  // Start with safe defaults\r\n  let final = { ...defaults };\r\n\r\n  // Merge user options safely\r\n  if (options && typeof options === \"object\" && !Array.isArray(options)) {\r\n    Object.keys(defaults).forEach((key) => {\r\n      if (options.hasOwnProperty(key)) {\r\n        final[key] = options[key];\r\n      }\r\n    });\r\n\r\n    // Handle message separately\r\n    if (options.message !== undefined) {\r\n      final.message = options.message;\r\n    }\r\n  }\r\n\r\n  // Validate and apply defaults\r\n  try {\r\n    if (!final.backgroundColor && final.type && defaultColors[final.type]) {\r\n      final.backgroundColor = defaultColors[final.type];\r\n    }\r\n\r\n    if (!final.message && final.type && defaultMessages[final.type]) {\r\n      final.message = defaultMessages[final.type];\r\n    }\r\n  } catch (error) {\r\n    console.warn(\"Option processing failed:\", error);\r\n  }\r\n\r\n  // Final safety checks\r\n  if (!final.message || typeof final.message !== \"string\") {\r\n    final.message = \"Notification\";\r\n  }\r\n\r\n  if (typeof final.duration !== \"number\" || final.duration < 100) {\r\n    final.duration = 3000;\r\n  }\r\n\r\n  return final;\r\n}\r\n\r\n/**\r\n * Set default colors with validation\r\n */\r\nfunction setDefaultColors(colors) {\r\n  try {\r\n    if (colors && typeof colors === \"object\" && !Array.isArray(colors)) {\r\n      defaultColors = { ...defaultColors, ...colors };\r\n    }\r\n  } catch (error) {\r\n    console.error(\"setDefaultColors failed:\", error);\r\n  }\r\n}\r\n\r\n/**\r\n * Set default messages with validation\r\n */\r\nfunction setDefaultMessages(messages) {\r\n  try {\r\n    if (messages && typeof messages === \"object\" && !Array.isArray(messages)) {\r\n      defaultMessages = { ...defaultMessages, ...messages };\r\n    }\r\n  } catch (error) {\r\n    console.error(\"setDefaultMessages failed:\", error);\r\n  }\r\n}\r\n\r\n// Module exports\r\nexport { createToast, setDefaultColors, setDefaultMessages };\r\n\r\n// Global assignment with protection\r\ntry {\r\n  // UMD/Global support\r\n  if (typeof window !== \"undefined\") {\r\n    window.customizableToast = {\r\n      createToast,\r\n      setDefaultColors,\r\n      setDefaultMessages,\r\n    };\r\n  }\r\n} catch (error) {\r\n  console.error(\"Global assignment failed:\", error);\r\n}\r\n"],"names":["generateUniqueId","prefix","Date","now","Math","floor","random","removeElement","el","parentNode","removeChild","error","remove","fallbackError","style","display","opacity","pointerEvents","position","left","hideError","createToastContainer","toastContainer","document","getElementById","createElement","id","zIndex","container","top","bottom","right","transform","includes","setPosition","parent","child","contains","appendChild","insertAdjacentElement","body","insertAdjacentHTML","outerHTML","emergencyError","applyRichStyling","toast","options","onClose","animDurationMs","duration","endsWith","parsed","parseFloat","parseAnimationDuration","animationDuration","Object","assign","background","backgroundColor","color","textColor","padding","marginBottom","borderRadius","alignItems","justifyContent","boxShadow","minWidth","maxWidth","transition","animationEasing","_animationDuration","messageSpan","textContent","message","flex","showCloseButton","closeButton","innerHTML","border","fontSize","marginLeft","cursor","onclick","_cleanupCloseButton","createCloseButton","showProgressBar","progressBar","height","progressHeight","progressColor","width","progressPosition","setTimeout","offsetWidth","forceReflow","createProgressBar","runToastAnimation","createToastElement","isEmergencyMode","tagName","fallbackEl","setAttribute","_isEmergencyElement","createElementWithId","stylingError","margin","wordWrap","createBasicToast","basicError","emergency","_isEmergencyToast","alert","alertError","createEmergencyToast","isToastShowing","currentToast","emergencyTimeouts","Set","emergencyCleanupScheduled","showToast","closeToast","Error","dismissTimeout","add","emergencyTimeout","forceEmergencyCleanup","scheduleEmergencyCleanup","primaryError","simpleToast","simple","cssText","createSimpleToast","resetToastState","animDuration","performCleanup","forEach","clearTimeout","clear","querySelectorAll","element","defaultColors","success","warning","info","defaultMessages","createToast","sanitizedOptions","defaults","type","undefined","final","Array","isArray","keys","key","hasOwnProperty","sanitizeToastOptions","safeMessage","substring","setDefaultColors","colors","setDefaultMessages","messages","window","customizableToast"],"mappings":"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"}