{
  "version": 3,
  "sources": ["/cdn/shop/t/7/assets/tului-waitlist.js?cb=1785720977"],
  "sourcesContent": ["(() => {\n  const popup = document.querySelector('[data-tului-popup]');\n  if (!popup) return;\n\n  const popupForm = document.getElementById('TuluiPopupForm');\n  const popupEmail = document.getElementById('TuluiPopupEmail');\n  const popupError = document.getElementById('TuluiPopupError');\n  const popupSuccess = popup.querySelector('[data-tului-popup-success]');\n  const waitlistSuccess = document.querySelector('[data-tului-waitlist-success]');\n  const closeButton = popup.querySelector('[data-tului-popup-close]');\n  const storageSeenKey = 'tului_popup_seen';\n  const storageJoinedKey = 'tului_popup_joined';\n  const storageSourceKey = 'tului_capture_source';\n  const fourteenDays = 14 * 24 * 60 * 60 * 1000;\n  const focusableSelector = [\n    'a[href]',\n    'button:not([disabled])',\n    'input:not([disabled])',\n    'select:not([disabled])',\n    'textarea:not([disabled])',\n    '[tabindex]:not([tabindex=\"-1\"])',\n  ].join(',');\n\n  let previousFocus = null;\n  let closeTimer = null;\n  let blurTimer = null;\n  let triggerPending = false;\n  let isOpen = false;\n\n  const storageGet = (key) => {\n    try {\n      return window.localStorage.getItem(key);\n    } catch (_error) {\n      return null;\n    }\n  };\n\n  const storageSet = (key, value) => {\n    try {\n      window.localStorage.setItem(key, value);\n    } catch (_error) {\n      return;\n    }\n  };\n\n  const sessionGet = (key) => {\n    try {\n      return window.sessionStorage.getItem(key);\n    } catch (_error) {\n      return null;\n    }\n  };\n\n  const sessionRemove = (key) => {\n    try {\n      window.sessionStorage.removeItem(key);\n    } catch (_error) {\n      return;\n    }\n  };\n\n  const isSuppressed = () => {\n    if (storageGet(storageJoinedKey)) return true;\n\n    const seenAt = Number(storageGet(storageSeenKey));\n    return Number.isFinite(seenAt) && Date.now() - seenAt < fourteenDays;\n  };\n\n  const isMobileFormFocused = () => {\n    if (!window.matchMedia('(max-width: 749px)').matches) return false;\n    const active = document.activeElement;\n    return Boolean(active?.matches('input, select, textarea, [contenteditable=\"true\"]'));\n  };\n\n  const focusableElements = () =>\n    Array.from(popup.querySelectorAll(focusableSelector)).filter(\n      (element) => !element.hasAttribute('hidden') && element.getClientRects().length > 0,\n    );\n\n  const openPopup = ({ remember = true } = {}) => {\n    if (isOpen) return;\n    window.clearTimeout(closeTimer);\n    previousFocus = document.activeElement;\n    isOpen = true;\n    popup.hidden = false;\n    popup.setAttribute('aria-hidden', 'false');\n    document.body.classList.add('tului-popup-open');\n    if (remember) storageSet(storageSeenKey, String(Date.now()));\n\n    window.requestAnimationFrame(() => {\n      popup.classList.add('is-open');\n      const firstTarget = popupEmail || closeButton || popup.querySelector('.tului-popup__plate');\n      firstTarget?.focus({ preventScroll: true });\n    });\n  };\n\n\n  const chipDismissKey = 'tului_chip_dismissed';\n  const chipWindowMs = 14 * 24 * 60 * 60 * 1000;\n  let chipShown = false;\n  let chipEl = null;\n\n  const chipSuppressed = () => {\n    if (storageGet(storageJoinedKey)) return true;\n    const dismissed = Number(storageGet(chipDismissKey) || 0);\n    return dismissed && Date.now() - dismissed < chipWindowMs;\n  };\n\n  const hideChip = () => {\n    if (!chipEl) return;\n    chipEl.classList.remove('is-open');\n    const el = chipEl;\n    window.setTimeout(() => el.remove(), 220);\n    chipEl = null;\n  };\n\n  const showChip = () => {\n    if (chipSuppressed() || chipEl) return;\n    chipEl = document.createElement('div');\n    chipEl.className = 'tului-chip';\n    chipEl.setAttribute('role', 'complementary');\n    chipEl.setAttribute('aria-live', 'polite');\n    chipEl.innerHTML =\n      '<button type=\"button\" class=\"tului-chip__close\" aria-label=\"Dismiss\">&times;</button>' +\n      '<span class=\"tului-chip__tick\" aria-hidden=\"true\"></span>' +\n      '<p class=\"tului-chip__title\">THE FIRST 5,000</p>' +\n      '<p class=\"tului-chip__line\">Your 10% founding code is waiting.</p>' +\n      '<button type=\"button\" class=\"tului-chip__cta\">LOCK MY CODE</button>';\n    document.body.appendChild(chipEl);\n    chipEl.querySelector('.tului-chip__close').addEventListener('click', () => {\n      storageSet(chipDismissKey, String(Date.now()));\n      hideChip();\n    });\n    chipEl.querySelector('.tului-chip__cta').addEventListener('click', () => {\n      hideChip();\n      openPopup({ remember: false });\n    });\n    chipEl.addEventListener('click', (event) => {\n      if (event.target.closest('.tului-chip__close, .tului-chip__cta')) return;\n      hideChip();\n      openPopup({ remember: false });\n    });\n    window.requestAnimationFrame(() => chipEl && chipEl.classList.add('is-open'));\n  };\n\n  const scheduleChip = () => {\n    if (chipShown || chipSuppressed()) return;\n    chipShown = true;\n    window.setTimeout(showChip, 20000);\n  };\n\n  const closePopup = () => {\n    if (!isOpen) return;\n    isOpen = false;\n    popup.classList.remove('is-open');\n    popup.setAttribute('aria-hidden', 'true');\n    document.body.classList.remove('tului-popup-open');\n    scheduleChip();\n\n    closeTimer = window.setTimeout(() => {\n      popup.hidden = true;\n      if (previousFocus?.isConnected) previousFocus.focus({ preventScroll: true });\n    }, window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 180);\n  };\n\n  const tryOpen = () => {\n    if (isOpen || isSuppressed()) return;\n    if (isMobileFormFocused()) {\n      triggerPending = true;\n      return;\n    }\n    triggerPending = false;\n    openPopup();\n  };\n\n  const handleScroll = () => {\n    const scrollableDistance = document.documentElement.scrollHeight - window.innerHeight;\n    if (scrollableDistance <= 0 || window.scrollY / scrollableDistance < 0.4) return;\n    window.removeEventListener('scroll', handleScroll);\n    tryOpen();\n  };\n\n  const pendingSource = sessionGet(storageSourceKey);\n  if (popupSuccess || waitlistSuccess) {\n    storageSet(storageJoinedKey, 'true');\n    sessionRemove(storageSourceKey);\n  }\n\n  if (popupSuccess && pendingSource !== 'waitlist') {\n    openPopup({ remember: false });\n  } else if (!isSuppressed()) {\n    window.setTimeout(tryOpen, 8000);\n    window.addEventListener('scroll', handleScroll, { passive: true });\n    handleScroll();\n  }\n\n  closeButton?.addEventListener('click', closePopup);\n  popup.addEventListener('click', (event) => {\n    if (event.target.closest('[data-tului-popup-dismiss]')) closePopup();\n  });\n\n  document.addEventListener('focusout', () => {\n    if (!triggerPending) return;\n    window.clearTimeout(blurTimer);\n    blurTimer = window.setTimeout(tryOpen, 2000);\n  });\n\n  document.addEventListener('keydown', (event) => {\n    if (!isOpen) return;\n\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      closePopup();\n      return;\n    }\n\n    if (event.key !== 'Tab') return;\n    const elements = focusableElements();\n    if (!elements.length) {\n      event.preventDefault();\n      return;\n    }\n\n    const first = elements[0];\n    const last = elements[elements.length - 1];\n    if (event.shiftKey && document.activeElement === first) {\n      event.preventDefault();\n      last.focus();\n    } else if (!event.shiftKey && document.activeElement === last) {\n      event.preventDefault();\n      first.focus();\n    }\n  });\n\n  if (popupForm && popupEmail && popupError) {\n    popupForm.addEventListener('submit', (event) => {\n      try { var _e=popupForm.querySelector('input[type=email]'); if (window.tuluiTrackLead) window.tuluiTrackLead('popup', _e && _e.value); } catch (err) {}\n      popupError.textContent = '';\n      popupEmail.removeAttribute('aria-invalid');\n\n      if (!popupEmail.validity.valid) {\n        event.preventDefault();\n        popupEmail.setAttribute('aria-invalid', 'true');\n        popupError.textContent = 'Enter a valid email address and try again.';\n        popupEmail.focus();\n      }\n    });\n  }\n})();\n"],
  "mappings": "CAAC,IAAM,CACL,MAAM,MAAQ,SAAS,cAAc,oBAAoB,EACzD,GAAI,CAAC,MAAO,OAEZ,MAAM,UAAY,SAAS,eAAe,gBAAgB,EACpD,WAAa,SAAS,eAAe,iBAAiB,EACtD,WAAa,SAAS,eAAe,iBAAiB,EACtD,aAAe,MAAM,cAAc,4BAA4B,EAC/D,gBAAkB,SAAS,cAAc,+BAA+B,EACxE,YAAc,MAAM,cAAc,0BAA0B,EAC5D,eAAiB,mBACjB,iBAAmB,qBACnB,iBAAmB,uBACnB,aAAe,IAAU,GAAK,GAAK,IACnC,kBAAoB,CACxB,UACA,yBACA,wBACA,yBACA,2BACA,iCACF,EAAE,KAAK,GAAG,EAEV,IAAI,cAAgB,KAChB,WAAa,KACb,UAAY,KACZ,eAAiB,GACjB,OAAS,GAEb,MAAM,WAAc,KAAQ,CAC1B,GAAI,CACF,OAAO,OAAO,aAAa,QAAQ,GAAG,CACxC,MAAiB,CACf,OAAO,IACT,CACF,EAEM,WAAa,CAAC,IAAK,QAAU,CACjC,GAAI,CACF,OAAO,aAAa,QAAQ,IAAK,KAAK,CACxC,MAAiB,CACf,MACF,CACF,EAEM,WAAc,KAAQ,CAC1B,GAAI,CACF,OAAO,OAAO,eAAe,QAAQ,GAAG,CAC1C,MAAiB,CACf,OAAO,IACT,CACF,EAEM,cAAiB,KAAQ,CAC7B,GAAI,CACF,OAAO,eAAe,WAAW,GAAG,CACtC,MAAiB,CACf,MACF,CACF,EAEM,aAAe,IAAM,CACzB,GAAI,WAAW,gBAAgB,EAAG,MAAO,GAEzC,MAAM,OAAS,OAAO,WAAW,cAAc,CAAC,EAChD,OAAO,OAAO,SAAS,MAAM,GAAK,KAAK,IAAI,EAAI,OAAS,YAC1D,EAEM,oBAAsB,IACrB,OAAO,WAAW,oBAAoB,EAAE,QAEtC,EADQ,SAAS,eACD,QAAQ,mDAAmD,EAFrB,GAKzD,kBAAoB,IACxB,MAAM,KAAK,MAAM,iBAAiB,iBAAiB,CAAC,EAAE,OACnD,SAAY,CAAC,QAAQ,aAAa,QAAQ,GAAK,QAAQ,eAAe,EAAE,OAAS,CACpF,EAEI,UAAY,CAAC,CAAE,SAAW,EAAK,EAAI,CAAC,IAAM,CAC1C,SACJ,OAAO,aAAa,UAAU,EAC9B,cAAgB,SAAS,cACzB,OAAS,GACT,MAAM,OAAS,GACf,MAAM,aAAa,cAAe,OAAO,EACzC,SAAS,KAAK,UAAU,IAAI,kBAAkB,EAC1C,UAAU,WAAW,eAAgB,OAAO,KAAK,IAAI,CAAC,CAAC,EAE3D,OAAO,sBAAsB,IAAM,CACjC,MAAM,UAAU,IAAI,SAAS,GACT,YAAc,aAAe,MAAM,cAAc,qBAAqB,IAC7E,MAAM,CAAE,cAAe,EAAK,CAAC,CAC5C,CAAC,EACH,EAGM,eAAiB,uBACjB,aAAe,IAAU,GAAK,GAAK,IACzC,IAAI,UAAY,GACZ,OAAS,KAEb,MAAM,eAAiB,IAAM,CAC3B,GAAI,WAAW,gBAAgB,EAAG,MAAO,GACzC,MAAM,UAAY,OAAO,WAAW,cAAc,GAAK,CAAC,EACxD,OAAO,WAAa,KAAK,IAAI,EAAI,UAAY,YAC/C,EAEM,SAAW,IAAM,CACrB,GAAI,CAAC,OAAQ,OACb,OAAO,UAAU,OAAO,SAAS,EACjC,MAAM,GAAK,OACX,OAAO,WAAW,IAAM,GAAG,OAAO,EAAG,GAAG,EACxC,OAAS,IACX,EAEM,SAAW,IAAM,CACjB,eAAe,GAAK,SACxB,OAAS,SAAS,cAAc,KAAK,EACrC,OAAO,UAAY,aACnB,OAAO,aAAa,OAAQ,eAAe,EAC3C,OAAO,aAAa,YAAa,QAAQ,EACzC,OAAO,UACL,sUAKF,SAAS,KAAK,YAAY,MAAM,EAChC,OAAO,cAAc,oBAAoB,EAAE,iBAAiB,QAAS,IAAM,CACzE,WAAW,eAAgB,OAAO,KAAK,IAAI,CAAC,CAAC,EAC7C,SAAS,CACX,CAAC,EACD,OAAO,cAAc,kBAAkB,EAAE,iBAAiB,QAAS,IAAM,CACvE,SAAS,EACT,UAAU,CAAE,SAAU,EAAM,CAAC,CAC/B,CAAC,EACD,OAAO,iBAAiB,QAAU,OAAU,CACtC,MAAM,OAAO,QAAQ,sCAAsC,IAC/D,SAAS,EACT,UAAU,CAAE,SAAU,EAAM,CAAC,EAC/B,CAAC,EACD,OAAO,sBAAsB,IAAM,QAAU,OAAO,UAAU,IAAI,SAAS,CAAC,EAC9E,EAEM,aAAe,IAAM,CACrB,WAAa,eAAe,IAChC,UAAY,GACZ,OAAO,WAAW,SAAU,GAAK,EACnC,EAEM,WAAa,IAAM,CAClB,SACL,OAAS,GACT,MAAM,UAAU,OAAO,SAAS,EAChC,MAAM,aAAa,cAAe,MAAM,EACxC,SAAS,KAAK,UAAU,OAAO,kBAAkB,EACjD,aAAa,EAEb,WAAa,OAAO,WAAW,IAAM,CACnC,MAAM,OAAS,GACX,eAAe,aAAa,cAAc,MAAM,CAAE,cAAe,EAAK,CAAC,CAC7E,EAAG,OAAO,WAAW,kCAAkC,EAAE,QAAU,EAAI,GAAG,EAC5E,EAEM,QAAU,IAAM,CACpB,GAAI,UAAU,aAAa,GAC3B,IAAI,oBAAoB,EAAG,CACzB,eAAiB,GACjB,MACF,CACA,eAAiB,GACjB,UAAU,EACZ,EAEM,aAAe,IAAM,CACzB,MAAM,mBAAqB,SAAS,gBAAgB,aAAe,OAAO,YACtE,oBAAsB,GAAK,OAAO,QAAU,mBAAqB,KACrE,OAAO,oBAAoB,SAAU,YAAY,EACjD,QAAQ,EACV,EAEM,cAAgB,WAAW,gBAAgB,GAC7C,cAAgB,mBAClB,WAAW,iBAAkB,MAAM,EACnC,cAAc,gBAAgB,GAG5B,cAAgB,gBAAkB,WACpC,UAAU,CAAE,SAAU,EAAM,CAAC,EACnB,aAAa,IACvB,OAAO,WAAW,QAAS,GAAI,EAC/B,OAAO,iBAAiB,SAAU,aAAc,CAAE,QAAS,EAAK,CAAC,EACjE,aAAa,GAGf,aAAa,iBAAiB,QAAS,UAAU,EACjD,MAAM,iBAAiB,QAAU,OAAU,CACrC,MAAM,OAAO,QAAQ,4BAA4B,GAAG,WAAW,CACrE,CAAC,EAED,SAAS,iBAAiB,WAAY,IAAM,CACrC,iBACL,OAAO,aAAa,SAAS,EAC7B,UAAY,OAAO,WAAW,QAAS,GAAI,EAC7C,CAAC,EAED,SAAS,iBAAiB,UAAY,OAAU,CAC9C,GAAI,CAAC,OAAQ,OAEb,GAAI,MAAM,MAAQ,SAAU,CAC1B,MAAM,eAAe,EACrB,WAAW,EACX,MACF,CAEA,GAAI,MAAM,MAAQ,MAAO,OACzB,MAAM,SAAW,kBAAkB,EACnC,GAAI,CAAC,SAAS,OAAQ,CACpB,MAAM,eAAe,EACrB,MACF,CAEA,MAAM,MAAQ,SAAS,CAAC,EAClB,KAAO,SAAS,SAAS,OAAS,CAAC,EACrC,MAAM,UAAY,SAAS,gBAAkB,OAC/C,MAAM,eAAe,EACrB,KAAK,MAAM,GACF,CAAC,MAAM,UAAY,SAAS,gBAAkB,OACvD,MAAM,eAAe,EACrB,MAAM,MAAM,EAEhB,CAAC,EAEG,WAAa,YAAc,YAC7B,UAAU,iBAAiB,SAAW,OAAU,CAC9C,GAAI,CAAE,IAAI,GAAG,UAAU,cAAc,mBAAmB,EAAO,OAAO,gBAAgB,OAAO,eAAe,QAAS,IAAM,GAAG,KAAK,CAAG,MAAc,CAAC,CACrJ,WAAW,YAAc,GACzB,WAAW,gBAAgB,cAAc,EAEpC,WAAW,SAAS,QACvB,MAAM,eAAe,EACrB,WAAW,aAAa,eAAgB,MAAM,EAC9C,WAAW,YAAc,6CACzB,WAAW,MAAM,EAErB,CAAC,CAEL,GAAG",
  "names": []
}
