{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/tb-m-shop.js?x=1794560347926"],
  "sourcesContent": ["/* Toybox phone add-to-cart stepper (screens up to 749px).\n   Product cards show \"Add +\". Once the item is in the cart the button becomes \"\u2212 1 +\"; going down to 0\n   takes the item out and brings back \"Add +\". On phones the card's Add is handled here instead of in\n   tb-add-to-cart (toybox.js): the cart drawer stays shut and a small \"Added to cart \u00B7 View cart\" toast shows\n   (View cart opens the quick cart sheet, assets/tb-m-cart.js). Changes are optimistic and saved with the quick AJAX cart API\n   (/cart/add.js, /cart/change.js); the floating cart pill hears about each tap at once (tb:cart-optimistic)\n   and gets the saved cart afterwards (tb:cart-data). Desktop keeps opening the drawer. Quantities come from /cart.js and refresh\n   after every shopify:cart:lines-update (the standard cart event that Shopify.actions.updateCart emits;\n   it fires when a change starts, so we wait for its promise). The same refresh keeps the bottom bar count\n   in step.\n   Stock: cards carry data-max (stock on hand, when the variant can't be oversold). \"+\" stops there and says\n   \"Only N in stock\" instead of adding and then taking it back; if Shopify still refuses (stock changed\n   since the page loaded), the limit drops to what the cart holds. */\n(() => {\n  const phone = window.matchMedia('(max-width: 749px)');\n  let lines = new Map(); // variant id -> { key, qty }\n  const pending = new Map(); // variant id -> qty the shopper asked for, not yet saved\n  const timers = new Map();\n  const adding = new Set(); // variant ids whose first add is still saving\n  let loading = null;\n  /* Gift wrap lines follow the toys: one wrap per toy wrapped from its product page or the cart (the item wrap\n     line) and, while the whole order is gift wrapped, one per other toy (the \"Wrap: Whole order\" line). A missing\n     item wrap line is added back. Shared by tb-m-cart.js, tb-m-cartpage.js and tb-m-shop.js; whichever loads\n     first defines it. Checks run one at a time; a cart passed in is only used when no other check is waiting. */\n  window.TbWrapSync = window.TbWrapSync || (() => {\n    let vid = null, chain = Promise.resolve(), waiting = 0;\n    const get = () => fetch('/cart.js', { credentials: 'same-origin', headers: { Accept: 'application/json' } }).then((r) => r.json());\n    const post = async (url, body) => {\n      const r = await fetch(url, { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify(body) });\n      if (!r.ok) throw new Error('Gift wrap could not be updated (' + r.status + ')');\n      return r.json();\n    };\n    const wrapVariant = async () => {\n      if (vid) return vid;\n      const el = document.querySelector('[data-cm][data-wrap], tb-gift-wrap[data-variant], tb-product-form[data-wrap-variant]');\n      vid = el ? (el.dataset.wrap || el.dataset.variant || el.dataset.wrapVariant || null) : null;\n      if (!vid) { try { const p = await fetch('/products/gift-wrap.js', { credentials: 'same-origin' }).then((r) => r.json()); vid = String(p.variants[0].id); } catch (e) {} }\n      return vid;\n    };\n    const once = async (c) => {\n      if (!c || !Array.isArray(c.items)) c = await get();\n      let toys = 0, wrapped = 0, ord = null, ordQ = 0, itm = null, itmQ = 0;\n      c.items.forEach((it) => {\n        const p = it.properties || {};\n        if (it.handle === 'gift-wrap') { if (p.Wrap === 'Whole order') { ord = ord || it.key; ordQ += it.quantity; } else { itm = itm || it.key; itmQ += it.quantity; } }\n        else { toys += it.quantity; if (p['Gift wrap'] === 'Yes') wrapped += it.quantity; }\n      });\n      const need = Math.max(0, toys - wrapped), u = {};\n      if (ord && ordQ !== need) u[ord] = need;\n      if (itm && itmQ !== wrapped) u[itm] = wrapped;\n      let changed = false;\n      if (Object.keys(u).length) { c = await post('/cart/update.js', { updates: u }); changed = true; }\n      if (!itm && wrapped > 0) {\n        const v = await wrapVariant();\n        if (v) { await post('/cart/add.js', { items: [{ id: Number(v), quantity: wrapped }] }); c = await get(); changed = true; }\n      }\n      return { cart: c, changed };\n    };\n    return (c) => {\n      const given = waiting > 0 ? null : c;\n      waiting++;\n      const job = chain.then(() => once(given)).finally(() => { waiting--; });\n      chain = job.catch(() => {});\n      return job;\n    };\n  })();\n\n  const plainLine = (it) => !it.properties || !Object.keys(it.properties).some((k) => k.charAt(0) !== '_' && it.properties[k] !== '' && it.properties[k] != null);\n\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  let count = null;\n\n  const apply = (c) => {\n    const m = new Map();\n    for (const it of c.items || []) {\n      if (!plainLine(it)) continue;\n      const id = String(it.variant_id);\n      if (!m.has(id)) m.set(id, { key: it.key, qty: it.quantity });\n    }\n    lines = m;\n    // The bottom bar counts toys only, not gift wrap lines.\n    count = (c.items || []).reduce((n, it) => n + (it.handle === 'gift-wrap' ? 0 : it.quantity), 0);\n    render();\n    setCount(count);\n    // The floating cart pill (assets/tb-m-cartpill.js) shows the saved cart once no tap is still saving.\n    if (!pending.size && !adding.size) document.dispatchEvent(new CustomEvent('tb:cart-data', { detail: c }));\n  };\n  // Tell the floating cart pill about a tap straight away, before it is saved.\n  const tell = (id, delta, el) => { if (delta) document.dispatchEvent(new CustomEvent('tb:cart-optimistic', { detail: { id, delta, el } })); };\n\n  const load = () => {\n    if (loading) return loading;\n    loading = fetch('/cart.js', { credentials: 'same-origin' })\n      .then((r) => r.json())\n      .then(apply)\n      .catch(() => {})\n      .finally(() => { loading = null; });\n    return loading;\n  };\n\n  const bump = (d) => {\n    if (count == null) return;\n    count = Math.max(0, count + d);\n    setCount(count);\n  };\n\n  const ICON_MINUS = '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14\"/></svg>';\n  const ICON_PLUS = '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M12 5v14M5 12h14\"/></svg>';\n\n  const stepperFor = (el) => {\n    let s = el.querySelector('.tb-step');\n    if (s) return s;\n    const title = el.querySelector('button[aria-label]')?.getAttribute('aria-label')?.replace(/^Add | to cart$/g, '') || 'this item';\n    s = document.createElement('div');\n    s.className = 'tb-step';\n    s.setAttribute('role', 'group');\n    s.setAttribute('aria-label', 'Quantity of ' + title + ' in cart');\n    s.innerHTML = '<button type=\"button\" class=\"tb-step__b\" data-step=\"-1\">' + ICON_MINUS + '</button>'\n      + '<span class=\"tb-step__n\" aria-live=\"polite\"></span>'\n      + '<button type=\"button\" class=\"tb-step__b\" data-step=\"1\" aria-label=\"One more\">' + ICON_PLUS + '</button>';\n    s.addEventListener('click', (e) => {\n      const b = e.target.closest('[data-step]');\n      if (b) change(el, parseInt(b.dataset.step, 10));\n    });\n    el.appendChild(s);\n    return s;\n  };\n\n  const variantOf = (el) => el.querySelector('form [name=\"id\"]')?.value;\n  const maxOf = (el) => { const m = parseInt(el.dataset.max, 10); return Number.isFinite(m) ? Math.max(0, m) : Infinity; };\n  const stockMsg = (n) => (n <= 0 ? 'Sorry, this is sold out' : n === 1 ? 'Only 1 in stock' : 'Only ' + n + ' in stock');\n  const capVariant = (id, n) => {\n    document.querySelectorAll('tb-add-to-cart').forEach((el) => { if (variantOf(el) === id) el.dataset.max = String(Math.max(0, n)); });\n  };\n\n  const render = () => {\n    document.querySelectorAll('tb-add-to-cart').forEach((el) => {\n      const id = variantOf(el);\n      if (!id) return;\n      const qty = pending.has(id) ? pending.get(id) : (lines.get(id)?.qty || 0);\n      el.classList.toggle('has-qty', qty > 0);\n      if (qty > 0 || el.querySelector('.tb-step')) {\n        const s = stepperFor(el);\n        s.querySelector('.tb-step__n').textContent = qty;\n        s.querySelector('[data-step=\"-1\"]').setAttribute('aria-label', qty <= 1 ? 'Remove from cart' : 'One less');\n        const atMax = qty >= maxOf(el);\n        const plus = s.querySelector('[data-step=\"1\"]');\n        s.classList.toggle('is-max', atMax);\n        plus.setAttribute('aria-disabled', atMax ? 'true' : 'false');\n        plus.setAttribute('aria-label', atMax ? stockMsg(maxOf(el)) + ', no more can be added' : 'One more');\n      }\n    });\n  };\n\n  let toastEl;\n  let toastT;\n  const toast = (msg) => {\n    if (!toastEl) {\n      toastEl = document.createElement('div');\n      toastEl.className = 'tb-mtoast';\n      toastEl.setAttribute('role', 'status');\n      toastEl.innerHTML = '<span data-msg></span><a href=\"/cart\">View cart</a>';\n      document.body.appendChild(toastEl);\n    }\n    toastEl.querySelector('[data-msg]').textContent = msg;\n    toastEl.classList.add('is-on');\n    clearTimeout(toastT);\n    toastT = setTimeout(hideToast, 1500);\n  };\n  const hideToast = () => toastEl?.classList.remove('is-on');\n\n  /* First add from a card (phones). Optimistic: the stepper, toast and count change at once,\n     then /cart/add.js saves it (much quicker than updateCart, which also re-renders the drawer). */\n  const add = async (el) => {\n    const id = variantOf(el);\n    if (!id || pending.has(id)) return;\n    if (maxOf(el) <= 0) { toast(stockMsg(0)); return; }\n    adding.add(id);\n    pending.set(id, 1);\n    render();\n    bump(1);\n    tell(id, 1, el);\n    /* 2026-11-13: no \"Added to cart\" toast on phones; the floating View cart pill already confirms it. Errors and stock limits still use the toast. */\n    window.tbLastAdd = { id, at: Date.now() }; // the quick cart sheet shows \"Added to cart\" for it\n    try {\n      const r = await fetch('/cart/add.js', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ items: [{ id: Number(id), quantity: 1 }] }) });\n      const data = await r.json().catch(() => ({}));\n      if (!r.ok) {\n        if (r.status === 422) capVariant(id, 0);\n        throw new Error(r.status === 422 ? stockMsg(0) : (data.description || data.message || 'Could not add that, please try again'));\n      }\n      const item = (data.items && data.items[0]) || data;\n      if (item && item.key && plainLine(item)) lines.set(id, { key: item.key, qty: item.quantity });\n      adding.delete(id);\n      const want = pending.get(id);\n      pending.delete(id);\n      // Tapped + while the add was still saving: save the newer quantity now.\n      if (want != null && want !== 1 && lines.has(id)) { pending.set(id, want); save(id); } else render();\n    } catch (err) {\n      adding.delete(id);\n      pending.delete(id);\n      bump(-1);\n      tell(id, -1, el);\n      render();\n      toast(err && err.message ? err.message : 'Could not add that, please try again');\n    }\n    // While the whole order is gift wrapped, a toy added from a card needs its wrap too.\n    try { await window.TbWrapSync(); } catch (e) {}\n    load();\n  };\n\n  // Phones: take over the card's Add before tb-add-to-cart (toybox.js) opens the drawer.\n  document.addEventListener('submit', (e) => {\n    const form = e.target;\n    const el = form && form.closest ? form.closest('tb-add-to-cart') : null;\n    if (!el) return;\n    if (!phone.matches) { setTimeout(load, 1200); setTimeout(load, 3000); return; }\n    e.preventDefault();\n    e.stopPropagation();\n    add(el);\n  }, true);\n\n  /* + / \u2212 : /cart/change.js answers with the whole cart, so the cards and count update straight from it. */\n  const save = async (id) => {\n    const line = lines.get(id);\n    const qty = pending.get(id);\n    if (!line && adding.has(id)) return; // the add will save this quantity when it finishes\n    if (!line || qty == null) { pending.delete(id); render(); return; }\n    try {\n      const r = await fetch('/cart/change.js', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ id: line.key, quantity: qty }) });\n      const cart = await r.json().catch(() => ({}));\n      if (!r.ok) {\n        const e = new Error(cart.description || cart.message || 'Could not update the cart');\n        e.stock = r.status === 422;\n        throw e;\n      }\n      if (pending.get(id) === qty) pending.delete(id);\n      apply(cart);\n      // Keep gift wrap lines matched to the new quantity.\n      window.TbWrapSync(cart).then((r) => { if (r.changed) apply(r.cart); }).catch(() => {});\n    } catch (err) {\n      pending.delete(id);\n      await load();\n      if (err && err.stock) {\n        const have = lines.get(id)?.qty || 0;\n        capVariant(id, have);\n        render();\n        toast(stockMsg(have));\n      } else {\n        toast(err && err.message ? err.message : 'Could not update the cart');\n      }\n    }\n  };\n\n  const change = (el, d) => {\n    const id = variantOf(el);\n    if (!id) return;\n    const now = pending.has(id) ? pending.get(id) : (lines.get(id)?.qty || 0);\n    const max = maxOf(el);\n    if (d > 0 && now >= max) { toast(stockMsg(max)); return; }\n    const next = Math.max(0, Math.min(99, max, now + d));\n    if (next === now) return;\n    pending.set(id, next);\n    render();\n    bump(next - now);\n    tell(id, next - now, el);\n    clearTimeout(timers.get(id));\n    timers.set(id, setTimeout(() => save(id), 250));\n  };\n\n  let t;\n  const refresh = () => { clearTimeout(t); t = setTimeout(load, 150); };\n  // Standard cart event: wait until the change has been saved, then re-read the cart.\n  document.addEventListener('shopify:cart:lines-update', (e) => {\n    const p = e && e.promise;\n    if (p && typeof p.then === 'function') p.then(refresh, refresh); else setTimeout(refresh, 800);\n  });\n  document.addEventListener('cart:update', refresh);\n  document.addEventListener('tb:cards-added', () => { if (count == null) load(); else render(); });\n  window.addEventListener('pageshow', (e) => { if (e.persisted) load(); });\n\n  const start = () => { if (document.querySelector('tb-add-to-cart')) load(); };\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start); else start();\n  phone.addEventListener?.('change', render);\n})();\n"],
  "mappings": "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",
  "names": ["r"]
}
