{
  "version": 3,
  "sources": ["/cdn/shop/t/11/assets/giovento-disposable-email-check.js?local_rev=20260818_1944"],
  "sourcesContent": ["/*\n * Free client-side protection for the Giovento newsletter and contact forms.\n * The remote list contains only domains (never a visitor's email address) and\n * is cached locally for 24 hours. A compact fallback list protects signups if\n * the current list cannot be reached.\n */\n(() => {\n  const FORM_SELECTOR = '#GioventoFooterNewsletter, #GioventoNewsletterPopupForm, #GioventoContactForm';\n  const SOURCE_URL = 'https://raw.githubusercontent.com/james-sib/disposable-email-domains/main/data/disposable_domains.txt';\n  const CACHE_KEY = 'gioventoDisposableDomainsV1';\n  const CACHE_MAX_AGE = 24 * 60 * 60 * 1000;\n  const FALLBACK_DOMAINS = [\n    '10minutemail.com', '10minutemail.net', '20minutemail.com', 'dispostable.com',\n    'emailondeck.com', 'emailfake.com', 'fakeinbox.com', 'fakemail.net',\n    'getnada.com', 'guerrillamail.com', 'guerrillamail.net', 'guerrillamail.org',\n    'inboxbear.com', 'mail.tm', 'maildrop.cc', 'mailinator.com', 'mailnesia.com',\n    'mohmal.com', 'mytemp.email', 'nada.email', 'sharklasers.com', 'tempmail.com',\n    'tempmail.net', 'tempmailo.com', 'temp-mail.org', 'temp-mail.io', 'tempail.com',\n    'temporary-mail.net', 'throwawaymail.com', 'trashmail.com', 'trashmail.net',\n    'trashmail.me', 'yopmail.com', 'yopmail.net', 'yopmail.fr', 'yopmail.gq',\n    'yopmail.info', 'yopmail.org', 'cool.fr.nf', 'jetable.fr.nf', 'nospam.ze.tc',\n    'spamgourmet.com', 'spambog.com', 'spambog.de', 'spambog.ru', 'spamex.com',\n    'spamfree24.org', 'spaml.de', 'spamex.com', 'mintemail.com', 'tempinbox.com',\n    'tempr.email', 'tmpmail.org', 'tmpmail.net', 'tmpmail.io', 'burnermail.io',\n    'burnermail.com', 'discard.email', 'discardmail.com', 'disposablemail.com',\n    'dropmail.me', 'dropmail.net', 'emailtemporario.com.br', 'internxt.com',\n    'mailsac.com', 'mailslurp.com', 'moakt.com', 'mytrashmail.com', 'owlpic.com',\n    'receivemail.cc', 'tempmailaddress.com', 'tempmail.dev', 'tempmail.plus',\n    'tempmailbox.com', 'tempomail.fr', 'tmail.ws', 'wegwerfemail.de', 'wegwerfmail.de'\n  ];\n\n  let domains = new Set(FALLBACK_DOMAINS);\n\n  const readCachedDomains = () => {\n    try {\n      const cached = JSON.parse(window.localStorage.getItem(CACHE_KEY));\n      if (cached && Date.now() - cached.updatedAt < CACHE_MAX_AGE && Array.isArray(cached.domains)) {\n        domains = new Set([...FALLBACK_DOMAINS, ...cached.domains]);\n        return true;\n      }\n    } catch (_) {\n      // Local storage can be unavailable in private browser modes.\n    }\n    return false;\n  };\n\n  const updateDomains = async () => {\n    if (readCachedDomains()) return;\n\n    try {\n      const response = await fetch(SOURCE_URL, { credentials: 'omit', cache: 'no-cache' });\n      if (!response.ok) throw new Error('Domain list unavailable');\n\n      const fetchedDomains = (await response.text())\n        .split(/\\r?\\n/)\n        .map((domain) => domain.trim().toLowerCase())\n        .filter((domain) => domain && !domain.startsWith('#'));\n\n      if (fetchedDomains.length < 100) throw new Error('Domain list incomplete');\n\n      domains = new Set([...FALLBACK_DOMAINS, ...fetchedDomains]);\n      try {\n        window.localStorage.setItem(CACHE_KEY, JSON.stringify({ updatedAt: Date.now(), domains: fetchedDomains }));\n      } catch (_) {\n        // The in-memory list continues to work if storage is full.\n      }\n    } catch (_) {\n      // Keep the fallback list active without interrupting legitimate signups.\n    }\n  };\n\n  // Start in the background. Newsletter signups must never wait for this.\n  updateDomains();\n\n  const isDisposableDomain = (domain) => {\n    const parts = domain.toLowerCase().split('.');\n    for (let index = 0; index < parts.length - 1; index += 1) {\n      if (domains.has(parts.slice(index).join('.'))) return true;\n    }\n    return false;\n  };\n\n  const clearMessage = (form, input) => {\n    form.querySelector('.gio-newsletter-form-error')?.remove();\n    input.removeAttribute('aria-invalid');\n    input.setCustomValidity('');\n  };\n\n  const showMessage = (form, input) => {\n    clearMessage(form, input);\n    input.setAttribute('aria-invalid', 'true');\n    input.setCustomValidity('Bitte verwende eine dauerhafte E-Mail-Adresse.');\n    const message = document.createElement('p');\n    message.className = 'gio-newsletter-form-error';\n    message.setAttribute('role', 'alert');\n    message.textContent = 'Bitte verwende eine dauerhafte E-Mail-Adresse.';\n    input.closest('.gio-footer__newsletter-field, .gio-newsletter-popup__fields, .gio-contact__field')?.after(message);\n    input.focus();\n  };\n\n  const protectedFormFor = (element) => {\n    const form = element?.closest?.('form');\n    return form?.matches(FORM_SELECTOR) ? form : null;\n  };\n\n  // Event delegation is intentional: Shopify apps and theme previews can\n  // replace newsletter markup after this asset has executed. A document-level\n  // capture listener protects both the original and any replacement form.\n  document.addEventListener('input', (event) => {\n    const input = event.target;\n    if (!(input instanceof HTMLInputElement) || input.type !== 'email') return;\n    const form = protectedFormFor(input);\n    if (form) clearMessage(form, input);\n  });\n\n  document.addEventListener('submit', (event) => {\n    const form = event.target;\n    if (!(form instanceof HTMLFormElement) || !form.matches(FORM_SELECTOR)) return;\n\n    if (form.dataset.disposableEmailChecked === 'true') {\n      delete form.dataset.disposableEmailChecked;\n      return;\n    }\n\n    const input = form.querySelector('input[type=\"email\"]');\n    if (!input) return;\n\n    event.preventDefault();\n    const domain = input.value.trim().toLowerCase().split('@').pop();\n    if (domain && isDisposableDomain(domain)) {\n      showMessage(form, input);\n      return;\n    }\n\n    clearMessage(form, input);\n    form.dataset.disposableEmailChecked = 'true';\n    form.requestSubmit();\n  }, true);\n})();\n"],
  "mappings": "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",
  "names": []
}
