{
  "version": 3,
  "sources": ["/cdn/shop/t/113/assets/nb-cart-event.js?nb_cart_event=lucky-reels-v2"],
  "sourcesContent": ["/* Shared event presentation only. No cart methods, requests, or checkout changes. */\r\n(() => {\r\n  if (window.nbCartEventBound) return;\r\n  window.nbCartEventBound = true;\r\n  let interval = null;\r\n  let frame = null;\r\n  const observed = new WeakSet();\r\n  const spins = new WeakMap();\r\n  const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n  const isPreview = (element) => {\r\n    const role = window.Shopify?.theme?.role;\r\n    return (Boolean(role) && role !== 'main') || window.Shopify?.designMode === true || element.closest('[data-nb-event-preview=\"true\"]') !== null;\r\n  };\r\n  const format = (element, end, now) => {\r\n    const remaining = Math.max(0, Math.ceil((end - now) / 1000));\r\n    const values = {\r\n      days: String(Math.floor(remaining / 86400)),\r\n      hours: String(Math.floor(remaining % 86400 / 3600)).padStart(2, '0'),\r\n      minutes: String(Math.floor(remaining % 3600 / 60)).padStart(2, '0'),\r\n      seconds: String(remaining % 60).padStart(2, '0')\r\n    };\r\n    const template = remaining >= 86400\r\n      ? element.dataset.nbTimerDays || '[days]d [hours]h [minutes]m [seconds]s'\r\n      : element.dataset.nbTimerHours || '[hours]h [minutes]m [seconds]s';\r\n    return template.replace(/\\[(days|hours|minutes|seconds)\\]/g, (_, key) => values[key]);\r\n  };\r\n  const reelDurations = [1600, 2350, 3100];\r\n  const spinDuration = 3350;\r\n  const cleanReels = (reels) => {\r\n    if (!reels) return;\r\n    reels.querySelectorAll('.nb-lucky-strip').forEach((strip) => strip.remove());\r\n    reels.querySelectorAll('.nb-lucky-reel').forEach((reel) => reel.classList.remove('is-stopped'));\r\n    reels.classList.remove('is-spinning');\r\n    reels.classList.add('is-landed');\r\n    reels.style.removeProperty('--nb-lucky-spin-delay');\r\n  };\r\n  const settleSpin = (drawer) => {\r\n    const spin = spins.get(drawer);\r\n    if (!spin) return;\r\n    window.clearTimeout(spin.timer);\r\n    cleanReels(spin.reels);\r\n    spins.delete(drawer);\r\n  };\r\n  const syncSpin = (drawer) => {\r\n    const spin = spins.get(drawer);\r\n    if (!spin) return;\r\n    const elapsed = performance.now() - spin.started;\r\n    if (reducedMotion.matches || elapsed >= spinDuration || !drawer.classList.contains('active')) {\r\n      settleSpin(drawer);\r\n      return;\r\n    }\r\n    const reels = drawer.querySelector('.nb-cart-lucky:not([hidden]) .nb-lucky-reels');\r\n    if (!reels || spin.reels === reels) return;\r\n    cleanReels(spin.reels);\r\n    spin.reels = reels;\r\n    cleanReels(reels);\r\n    reels.style.setProperty('--nb-lucky-spin-delay', `${-Math.round(elapsed)}ms`);\r\n    reels.classList.remove('is-landed');\r\n    reels.classList.add('is-spinning');\r\n    reels.querySelectorAll('.nb-lucky-reel').forEach((reel, index) => {\r\n      const duration = reelDurations[index] || reelDurations[2];\r\n      if (elapsed >= duration) {\r\n        reel.classList.add('is-stopped');\r\n        return;\r\n      }\r\n      const finalSymbol = reel.querySelector('.nb-lucky-symbol')?.textContent?.trim();\r\n      if (!finalSymbol) return;\r\n      const strip = document.createElement('span');\r\n      strip.className = 'nb-lucky-strip';\r\n      strip.setAttribute('aria-hidden', 'true');\r\n      strip.style.setProperty('--nb-lucky-duration', `${duration}ms`);\r\n      const addCell = (text, isFinal = false) => {\r\n        const cell = document.createElement('span');\r\n        cell.className = 'nb-lucky-digit';\r\n        if (isFinal && text === '?') cell.classList.add('is-mystery');\r\n        cell.textContent = text;\r\n        strip.appendChild(cell);\r\n      };\r\n      addCell(finalSymbol);\r\n      // These are decorative cycling digits. The final symbols stay exactly as\r\n      // rendered by Liquid; this animation does not select or imply a winner.\r\n      for (let digit = 0; digit < 30 + index * 10; digit += 1) addCell(String((digit + index * 3) % 10));\r\n      addCell(finalSymbol, true);\r\n      strip.addEventListener('animationend', (event) => {\r\n        if (event.animationName !== 'nb-lucky-reel-roll' || spins.get(drawer) !== spin || !strip.isConnected) return;\r\n        reel.classList.add('is-stopped');\r\n        strip.remove();\r\n      });\r\n      reel.appendChild(strip);\r\n    });\r\n  };\r\n  const startSpin = (drawer) => {\r\n    settleSpin(drawer);\r\n    if (reducedMotion.matches || !drawer.querySelector('[data-nb-event=\"lucky\"]:not([hidden])')) return;\r\n    const spin = {started: performance.now(), reels: null, timer: null};\r\n    spins.set(drawer, spin);\r\n    spin.timer = window.setTimeout(() => {\r\n      if (spins.get(drawer) === spin) settleSpin(drawer);\r\n    }, spinDuration);\r\n    syncSpin(drawer);\r\n  };\r\n  const queueUpdate = () => {\r\n    if (document.hidden || frame !== null) return;\r\n    frame = window.requestAnimationFrame(() => { frame = null; update(); });\r\n  };\r\n  const update = () => {\r\n    if (document.hidden) return;\r\n    const now = Date.now();\r\n    document.querySelectorAll('.nb-cart [data-nb-countdown-end]').forEach((timer) => {\r\n      const parsed = Date.parse(timer.dataset.nbCountdownEnd);\r\n      const text = format(timer, Number.isFinite(parsed) ? parsed : now, now);\r\n      if (timer.textContent !== text) timer.textContent = text;\r\n    });\r\n    document.querySelectorAll('.nb-cart [data-nb-event-window]').forEach((element) => {\r\n      const start = Date.parse(element.dataset.start);\r\n      const end = Date.parse(element.dataset.end);\r\n      const valid = Number.isFinite(start) && Number.isFinite(end) && end > start;\r\n      const preview = isPreview(element);\r\n      const active = preview || (valid && now >= start && now < end);\r\n      if (element.hidden === active) element.hidden = !active;\r\n      // Bars and checkout labels use the same adjacent fallback contract.\r\n      const fallback = element.nextElementSibling;\r\n      if (fallback?.matches('[data-nb-event-fallback], .nb-cart-event-fallback')) {\r\n        if (fallback.hidden !== active) fallback.hidden = active;\r\n        if (element.hasAttribute('data-nb-evergreen-text')) {\r\n          const text = fallback.querySelector('.nb-cart-event-text');\r\n          const evergreen = element.dataset.nbEvergreenText || '';\r\n          if (text && text.textContent !== evergreen) text.textContent = evergreen;\r\n        }\r\n      }\r\n      if (element.classList.contains('nb-cart-event-bar')) {\r\n        element.closest('.nb-cart-shipping')?.classList.toggle('is-ended', !preview && (!valid || now >= end));\r\n      }\r\n    });\r\n    document.querySelectorAll('cart-drawer.nb-cart').forEach((drawer) => {\r\n      if (!observed.has(drawer)) {\r\n        observed.add(drawer);\r\n        let wasOpen = drawer.classList.contains('active');\r\n        new MutationObserver((records) => {\r\n          if (records.some((record) => record.type === 'attributes' && record.target === drawer)) {\r\n            const isOpen = drawer.classList.contains('active');\r\n            if (isOpen !== wasOpen) {\r\n              wasOpen = isOpen;\r\n              if (isOpen) startSpin(drawer);\r\n              else settleSpin(drawer);\r\n            }\r\n          }\r\n          if (records.some((record) => record.type === 'childList')) queueUpdate();\r\n        }).observe(drawer, {childList: true, subtree: true, attributes: true, attributeFilter: ['class']});\r\n        if (wasOpen) startSpin(drawer);\r\n      }\r\n      syncSpin(drawer);\r\n    });\r\n  };\r\n  const resume = () => {\r\n    if (interval !== null) window.clearInterval(interval);\r\n    interval = null;\r\n    if (frame !== null) window.cancelAnimationFrame(frame);\r\n    frame = null;\r\n    if (document.hidden) return;\r\n    update();\r\n    interval = window.setInterval(update, 1000);\r\n  };\r\n  document.addEventListener('visibilitychange', resume);\r\n  window.addEventListener('pageshow', resume);\r\n  resume();\r\n})();\r\n"],
  "mappings": "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",
  "names": []
}
