{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/tb-mobile.js?x=1794560349125"],
  "sourcesContent": ["/* Toybox phone layout behaviour (screens up to 749px; harmless on desktop).\n   - Bottom bar cart count: follows Horizon's cart:update event, with /cart.js as a fallback.\n   - Wishlist: lives in the bottom bar now (snippets/tb-mobile-nav), so the header has no wishlist icon.\n   - Home hero cards: videos play only while their card is on screen.\n   - Star dash card: opens the full-screen phone game (assets/tb-stardash.js); without it, the hero race car.\n   - Chat: on pages with the bottom bar or the product page's buy bar, the floating chat button is replaced by a\n     chat icon in the header, so it never covers Add to cart. */\n(() => {\n  const phone = window.matchMedia('(max-width: 749px)');\n\n  /* ---------- Bottom bar cart count ---------- */\n  const setCount = (n) => {\n    document.querySelectorAll('[data-tb-mnav-count]').forEach((el) => {\n      el.textContent = n > 99 ? '99+' : String(n);\n      el.hidden = !n;\n    });\n  };\n  const refresh = () => fetch('/cart.js', { credentials: 'same-origin' }).then((r) => r.json()).then((c) => setCount(c.item_count)).catch(() => {});\n  document.addEventListener('cart:update', (e) => {\n    const c = e.detail && (e.detail.resource || e.detail.cart);\n    if (c && typeof c.item_count === 'number') setCount(c.item_count); else refresh();\n  });\n  window.addEventListener('pageshow', (e) => { if (e.persisted) refresh(); });\n\n  /* ---------- Hero cards: play each card's video while it is on screen ---------- */\n  const heroVideos = () => {\n    const hero = document.querySelector('.tb-hero');\n    if (!hero || !('IntersectionObserver' in window)) return;\n    if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n    const io = new IntersectionObserver((entries) => {\n      if (!phone.matches) return;\n      entries.forEach((en) => {\n        const v = en.target;\n        if (en.isIntersecting && getComputedStyle(v).display !== 'none') {\n          v.muted = true;\n          const p = v.play(); if (p && p.catch) p.catch(() => {});\n        } else v.pause();\n      });\n    }, { root: null, threshold: 0.6 });\n    hero.querySelectorAll('.tb-hero__slide video').forEach((v) => io.observe(v));\n  };\n\n  /* ---------- Star dash ---------- */\n  const starDash = () => {\n    const cards = document.querySelectorAll('[data-tb-stardash]');\n    // The phone game (assets/tb-stardash.js) handles the card itself; this older hero-game route is a fallback.\n    if (!cards.length || window.TbStarDash) return;\n    const hero = document.querySelector('.tb-hero');\n    // The game needs the hero race car (Toybox animations > \"Show race car on phones\").\n    if (!hero || !window.TBRacer) { cards.forEach((c) => { c.hidden = true; }); return; }\n    let close = hero.querySelector('.tb-game-close');\n    if (!close) {\n      close = document.createElement('button');\n      close.type = 'button';\n      close.className = 'tb-game-close';\n      close.textContent = 'Close game';\n      hero.appendChild(close);\n      close.addEventListener('click', () => {\n        const exit = hero.querySelector('.tb-race-exit');\n        if (hero.classList.contains('tb-hero--racing') && exit) exit.click();\n        const panelClose = hero.querySelector('.tb-garage__close');\n        const panel = hero.querySelector('.tb-garage__panel');\n        if (panel && !panel.hidden && panelClose) panelClose.click();\n        hero.classList.remove('tb-hero--game');\n        hero.scrollLeft = 0;\n      });\n    }\n    cards.forEach((c) => c.querySelector('button')?.addEventListener('click', () => {\n      hero.classList.add('tb-hero--game');\n      hero.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      setTimeout(() => window.TBRacer.open(), 350);\n    }));\n  };\n\n  /* ---------- Chat: a header icon instead of the floating button (which would cover the bottom bars) ---------- */\n  const fixChat = () => {\n    const chat = document.querySelector('tb-chat');\n    const b0 = document.body.classList;\n    if (!chat || !(b0.contains('tb-has-mnav') || b0.contains('tb-tpl-product'))) return;\n    b0.add('tb-chat-alt');\n    const actions = document.querySelector('#header-component header-actions');\n    if (!actions || actions.querySelector('.tb-hd-chat')) return;\n    const b = document.createElement('button');\n    b.type = 'button';\n    b.className = 'tb-hd-chat';\n    b.setAttribute('aria-label', 'Chat with us');\n    b.innerHTML = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 20l1.3-3.9A8 8 0 1 1 8 19z\"/></svg>';\n    b.addEventListener('click', () => {\n      if (typeof chat.toggle === 'function') chat.toggle();\n    });\n    actions.insertBefore(b, actions.firstElementChild);\n  };\n\n  const start = () => { heroVideos(); fixChat(); };\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start); else start();\n  // The race car script loads with defer, so wait for the page to finish before wiring Star dash.\n  if (document.readyState === 'complete') starDash(); else window.addEventListener('load', starDash);\n})();"],
  "mappings": "CAOC,IAAM,CACL,MAAM,MAAQ,OAAO,WAAW,oBAAoB,EAG9C,SAAY,GAAM,CACtB,SAAS,iBAAiB,sBAAsB,EAAE,QAAS,IAAO,CAChE,GAAG,YAAc,EAAI,GAAK,MAAQ,OAAO,CAAC,EAC1C,GAAG,OAAS,CAAC,CACf,CAAC,CACH,EACM,QAAU,IAAM,MAAM,WAAY,CAAE,YAAa,aAAc,CAAC,EAAE,KAAM,GAAM,EAAE,KAAK,CAAC,EAAE,KAAM,GAAM,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,IAAM,CAAC,CAAC,EAChJ,SAAS,iBAAiB,cAAgB,GAAM,CAC9C,MAAM,EAAI,EAAE,SAAW,EAAE,OAAO,UAAY,EAAE,OAAO,MACjD,GAAK,OAAO,EAAE,YAAe,SAAU,SAAS,EAAE,UAAU,EAAQ,QAAQ,CAClF,CAAC,EACD,OAAO,iBAAiB,WAAa,GAAM,CAAM,EAAE,WAAW,QAAQ,CAAG,CAAC,EAG1E,MAAM,WAAa,IAAM,CACvB,MAAM,KAAO,SAAS,cAAc,UAAU,EAE9C,GADI,CAAC,MAAQ,EAAE,yBAA0B,SACrC,OAAO,WAAW,kCAAkC,EAAE,QAAS,OACnE,MAAM,GAAK,IAAI,qBAAsB,SAAY,CAC1C,MAAM,SACX,QAAQ,QAAS,IAAO,CACtB,MAAM,EAAI,GAAG,OACb,GAAI,GAAG,gBAAkB,iBAAiB,CAAC,EAAE,UAAY,OAAQ,CAC/D,EAAE,MAAQ,GACV,MAAM,EAAI,EAAE,KAAK,EAAO,GAAK,EAAE,OAAO,EAAE,MAAM,IAAM,CAAC,CAAC,CACxD,MAAO,EAAE,MAAM,CACjB,CAAC,CACH,EAAG,CAAE,KAAM,KAAM,UAAW,EAAI,CAAC,EACjC,KAAK,iBAAiB,uBAAuB,EAAE,QAAS,GAAM,GAAG,QAAQ,CAAC,CAAC,CAC7E,EAGM,SAAW,IAAM,CACrB,MAAM,MAAQ,SAAS,iBAAiB,oBAAoB,EAE5D,GAAI,CAAC,MAAM,QAAU,OAAO,WAAY,OACxC,MAAM,KAAO,SAAS,cAAc,UAAU,EAE9C,GAAI,CAAC,MAAQ,CAAC,OAAO,QAAS,CAAE,MAAM,QAAS,GAAM,CAAE,EAAE,OAAS,EAAM,CAAC,EAAG,MAAQ,CACpF,IAAI,MAAQ,KAAK,cAAc,gBAAgB,EAC1C,QACH,MAAQ,SAAS,cAAc,QAAQ,EACvC,MAAM,KAAO,SACb,MAAM,UAAY,gBAClB,MAAM,YAAc,aACpB,KAAK,YAAY,KAAK,EACtB,MAAM,iBAAiB,QAAS,IAAM,CACpC,MAAM,KAAO,KAAK,cAAc,eAAe,EAC3C,KAAK,UAAU,SAAS,iBAAiB,GAAK,MAAM,KAAK,MAAM,EACnE,MAAM,WAAa,KAAK,cAAc,mBAAmB,EACnD,MAAQ,KAAK,cAAc,mBAAmB,EAChD,OAAS,CAAC,MAAM,QAAU,YAAY,WAAW,MAAM,EAC3D,KAAK,UAAU,OAAO,eAAe,EACrC,KAAK,WAAa,CACpB,CAAC,GAEH,MAAM,QAAS,GAAM,EAAE,cAAc,QAAQ,GAAG,iBAAiB,QAAS,IAAM,CAC9E,KAAK,UAAU,IAAI,eAAe,EAClC,KAAK,eAAe,CAAE,SAAU,SAAU,MAAO,QAAS,CAAC,EAC3D,WAAW,IAAM,OAAO,QAAQ,KAAK,EAAG,GAAG,CAC7C,CAAC,CAAC,CACJ,EAGM,QAAU,IAAM,CACpB,MAAM,KAAO,SAAS,cAAc,SAAS,EACvC,GAAK,SAAS,KAAK,UACzB,GAAI,CAAC,MAAQ,EAAE,GAAG,SAAS,aAAa,GAAK,GAAG,SAAS,gBAAgB,GAAI,OAC7E,GAAG,IAAI,aAAa,EACpB,MAAM,QAAU,SAAS,cAAc,kCAAkC,EACzE,GAAI,CAAC,SAAW,QAAQ,cAAc,aAAa,EAAG,OACtD,MAAM,EAAI,SAAS,cAAc,QAAQ,EACzC,EAAE,KAAO,SACT,EAAE,UAAY,aACd,EAAE,aAAa,aAAc,cAAc,EAC3C,EAAE,UAAY,gMACd,EAAE,iBAAiB,QAAS,IAAM,CAC5B,OAAO,KAAK,QAAW,YAAY,KAAK,OAAO,CACrD,CAAC,EACD,QAAQ,aAAa,EAAG,QAAQ,iBAAiB,CACnD,EAEM,MAAQ,IAAM,CAAE,WAAW,EAAG,QAAQ,CAAG,EAC3C,SAAS,aAAe,UAAW,SAAS,iBAAiB,mBAAoB,KAAK,EAAQ,MAAM,EAEpG,SAAS,aAAe,WAAY,SAAS,EAAQ,OAAO,iBAAiB,OAAQ,QAAQ,CACnG,GAAG",
  "names": []
}
