{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/tb-m-cartpage.js?x=1794560343727"],
  "sourcesContent": ["/* Toybox phone cart page (sections/tb-m-cart), from the mobile cart design.\n   Changes are saved with the AJAX cart API, then the section is re-rendered from Shopify\n   (/cart?section_id=\u2026) so prices, discounts and the bill always come from the store.\n   - \u2212 1 + (bin at 1, with Undo), stock limit message from Shopify\n   - Gift wrap per item (+ message): sets \"Gift wrap: Yes\" on the line and keeps the gift wrap lines matched,\n     the same way the product page and assets/tb-cart.js do\n   - Move to wishlist (assets/tb-wish.js), listed under \"Moved to wishlist\" with Move to cart\n   - Add-ons from Shopify's related products, coupons sheet (/cart/update.js discount), PIN check, View bill\n   Styles: assets/tb-m-cartpage.css. */\n(() => {\n  const root = document.querySelector('[data-cm]');\n  if (!root || window.TbCartPage) return;\n  const section = root.closest('.shopify-section');\n  const SID = section ? section.id.replace(/^shopify-section-/, '') : 'tb-m-cart';\n  const MOVED = 'tb-cart-moved', COUPON = 'tb-coupon';\n  const inr = (c) => '\u20B9' + (c / 100).toLocaleString('en-IN', { minimumFractionDigits: c % 100 ? 2 : 0, maximumFractionDigits: 2 });\n  const esc = (s) => String(s == null ? '' : s).replace(/[&<>\"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]));\n  const $ = (s, r) => (r || root).querySelector(s);\n  const ss = { get: (k, d) => { try { return JSON.parse(sessionStorage.getItem(k)) || d; } catch (e) { return d; } }, set: (k, v) => { try { sessionStorage.setItem(k, JSON.stringify(v)); } catch (e) {} } };\n  const warn = {};\n  // Line properties as an object. Liquid's json filter writes them as [[\"Gift wrap\",\"Yes\"], \u2026] ([] for none),\n  // so the pairs are turned back into { \"Gift wrap\": \"Yes\" } before they're sent to Shopify. Reading them as\n  // empty used to wipe \"Gift wrap: Yes\" whenever a message was saved or a removed toy was put back.\n  const props = (line) => {\n    let p = {};\n    try { p = JSON.parse(line.dataset.props || '{}'); } catch (e) {}\n    if (Array.isArray(p)) return Object.fromEntries(p.filter((x) => Array.isArray(x) && x.length === 2));\n    return p && typeof p === 'object' ? Object.assign({}, p) : {};\n  };\n  let queue = Promise.resolve(), busy = 0, recs = null, undo = null, undoT = 0;\n\n  const api = async (url, body) => {\n    const r = await fetch(url, { method: body ? 'POST' : 'GET', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: body ? JSON.stringify(body) : undefined });\n    const j = await r.json().catch(() => ({}));\n    if (!r.ok) { const e = new Error(j.description || j.message || 'Something went wrong, please try again'); e.status = r.status; throw e; }\n    return j;\n  };\n  const isWrap = (it) => it.handle === 'gift-wrap';\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  // One wrap per wrapped item: the order wrap covers the rest (as assets/tb-cart.js does).\n  const syncWrap = (c) => window.TbWrapSync(c).then((r) => r.cart);\n  const announce = (c) => document.dispatchEvent(new CustomEvent('cart:update', { bubbles: true, detail: { resource: c, sourceId: 'tb-m-cartpage', data: { source: 'tb-m-cartpage', itemCount: c.item_count } } }));\n\n  /* ---------- Re-render from Shopify ---------- */\n  const refresh = async () => {\n    const wasFree = !!$('.cm-free.is-done');\n    const html = await fetch(location.pathname + '?section_id=' + encodeURIComponent(SID), { credentials: 'same-origin' }).then((r) => r.text());\n    const next = new DOMParser().parseFromString(html, 'text/html').querySelector('[data-cm]');\n    if (!next) { location.reload(); return; }\n    ['codes', 'toys'].forEach((k) => { root.dataset[k] = next.dataset[k] || ''; });\n    $('[data-cm-count]').innerHTML = $('[data-cm-count]', next).innerHTML;\n    $('[data-cm-live]').innerHTML = $('[data-cm-live]', next).innerHTML;\n    $('.cm-cps') && $('.cm-cps', next) && ($('.cm-cps').innerHTML = $('.cm-cps', next).innerHTML);\n    if (!wasFree) $('.cm-free.is-done')?.classList.add('is-win');\n    after();\n  };\n  const after = () => {\n    root.classList.toggle('is-empty', root.dataset.toys === '0');\n    Object.keys(warn).forEach((key) => {\n      const line = root.querySelector('.cm-line[data-key=\"' + CSS.escape(key) + '\"]');\n      if (!line) { delete warn[key]; return; }\n      const w = $('.cm-warn', line); w.textContent = warn[key]; w.hidden = false;\n      $('[data-cm=\"inc\"]', line).setAttribute('aria-disabled', 'true');\n    });\n    adds(); moved(); checkoutLink();\n  };\n  const run = (job, line) => {\n    if (line) line.classList.add('is-busy');\n    busy++;\n    queue = queue.then(job).catch((e) => { toast(e.message || 'Something went wrong, please try again'); })\n      .then(async () => { if (--busy === 0) { try { await refresh(); } catch (e) { location.reload(); } } });\n    return queue;\n  };\n  const change = (key, quantity, properties) => api('/cart/change.js', properties ? { id: key, quantity, properties } : { id: key, quantity }).then(syncWrap).then(announce);\n\n  /* ---------- Toast with Undo ---------- */\n  const toast = (msg, withUndo) => {\n    const t = $('.cm-toast');\n    t.innerHTML = '<span>' + esc(msg) + '</span>' + (withUndo ? '<button type=\"button\" data-cm=\"undo\">Undo</button>' : '');\n    t.hidden = false;\n    clearTimeout(undoT);\n    undoT = setTimeout(() => { t.hidden = true; undo = null; }, 1500);\n  };\n\n  /* ---------- Quantities (taps are gathered for 300 ms, then saved) ---------- */\n  const timers = {};\n  const setQty = (line, q) => {\n    const key = line.dataset.key, was = +line.dataset.qty;\n    if (q <= 0) {\n      clearTimeout(timers[key]);\n      undo = { id: line.dataset.variant, quantity: was, properties: props(line), handle: line.dataset.handle };\n      line.classList.add('is-out');\n      toast('Removed ' + line.dataset.title, true);\n      run(() => change(key, 0));\n      return;\n    }\n    line.dataset.qty = q;\n    $('output', line).textContent = q;\n    delete warn[key];\n    clearTimeout(timers[key]);\n    timers[key] = setTimeout(() => run(async () => {\n      try { await change(key, q); }\n      catch (e) { if (e.status === 422) { warn[key] = /only|stock/i.test(e.message) ? e.message : 'No more in stock'; return; } throw e; }\n    }, line), 300);\n  };\n\n  /* ---------- Moved to wishlist ---------- */\n  const moved = () => {\n    const inCart = new Set([...root.querySelectorAll('.cm-line[data-variant]')].map((l) => l.dataset.variant));\n    const list = ss.get(MOVED, []).filter((m) => !inCart.has(String(m.id)));\n    ss.set(MOVED, list);\n    root.querySelectorAll('[data-cm-moved]').forEach((sec) => {\n      sec.hidden = !list.length;\n      $('.cm-box', sec).innerHTML = list.map((m) => '<div class=\"cm-mv\"><span>' + (m.img ? '<img src=\"' + esc(m.img) + '\" alt=\"\" loading=\"lazy\">' : '') + '</span><b>' + esc(m.t) + '</b><button type=\"button\" data-cm=\"tocart\" data-id=\"' + esc(m.id) + '\">Move to cart</button></div>').join('');\n    });\n    const note = $('[data-cm-movednote]'); if (note) note.hidden = !list.length;\n  };\n\n  /* ---------- Add-ons: Shopify's related products for the first toy ---------- */\n  const adds = () => {\n    const sec = $('[data-cm-adds]');\n    const first = $('.cm-line[data-product]');\n    if (!sec || !first) return;\n    if (recs === null) {\n      recs = [];\n      fetch('/recommendations/products.json?limit=10&intent=related&product_id=' + first.dataset.product, { credentials: 'same-origin' })\n        .then((r) => r.json()).then((j) => {\n          recs = (j.products || []).filter((p) => p.available && p.handle !== 'gift-wrap').map((p) => {\n            const v = (p.variants || []).find((x) => x.available) || p.variants[0];\n            return { id: p.id, vid: v.id, title: p.title, price: v.price, img: p.featured_image ? (p.featured_image.indexOf('//') === 0 ? 'https:' : '') + p.featured_image : '' };\n          });\n          adds();\n        }).catch(() => {});\n      return;\n    }\n    const left = +sec.dataset.left || 0;\n    const inCart = new Set([...root.querySelectorAll('.cm-line[data-product]')].map((l) => +l.dataset.product));\n    let list = recs.filter((p) => !inCart.has(p.id));\n    if (left > 0) list.sort((a, b) => { const ua = a.price >= left, ub = b.price >= left; return ua === ub ? a.price - b.price : (ua ? -1 : 1); });\n    list = list.slice(0, 8);\n    sec.hidden = !list.length;\n    $('.cm-addrow', sec).innerHTML = list.map((p) => '<div class=\"cm-add\"><span>' + (p.img ? '<img src=\"' + esc(p.img + (p.img.indexOf('?') > -1 ? '&' : '?') + 'width=240') + '\" alt=\"\" loading=\"lazy\">' : '') + (left > 0 && p.price >= left ? '<i>Free delivery</i>' : '') + '</span>' +\n      '<b>' + esc(p.title) + '</b><div><strong>' + inr(p.price) + '</strong><button type=\"button\" data-cm=\"add\" data-id=\"' + p.vid + '\" aria-label=\"Add ' + esc(p.title) + '\">Add</button></div></div>').join('');\n  };\n\n  /* ---------- Coupons ---------- */\n  const sheet = (on) => {\n    const s = $('[data-cm-sheet]');\n    s.hidden = !on;\n    document.documentElement.classList.toggle('cm-lock', on);\n    const m = $('.cm-codemsg'); m.hidden = true;\n    if (on) setTimeout(() => $('[data-cm-code]').focus({ preventScroll: true }), 320);\n  };\n  const codeMsg = (msg, ok) => { const m = $('.cm-codemsg'); m.textContent = msg; m.hidden = !msg; m.classList.toggle('is-ok', !!ok); };\n  const applyCode = async (code, btn) => {\n    code = String(code || '').trim().toUpperCase();\n    if (!code) { codeMsg('Enter a code first.'); return; }\n    if (btn) btn.classList.add('is-busy');\n    try {\n      let c = await api('/cart/update.js', { discount: code });\n      if (!Array.isArray(c.discount_codes)) c = await api('/cart.js');\n      const dc = (c.discount_codes || []).find((d) => String(d.code).toUpperCase() === code);\n      if (!Array.isArray(c.discount_codes)) {\n        // Older cart API: keep the code and apply it at checkout.\n        ss.set(COUPON, code); sheet(false); toast(code + ' will be applied at checkout'); checkoutLink(); return;\n      }\n      if (!dc || !dc.applicable) {\n        await api('/cart/update.js', { discount: '' }).catch(() => {});\n        // Shopify lists a made-up code as \"not applicable\" too, so one message covers both cases.\n        codeMsg('That code can\u2019t be used on this cart. Check the spelling, and the coupon\u2019s minimum order.');\n        return;\n      }\n      ss.set(COUPON, '');\n      sheet(false);\n      toast(code + ' applied');\n      announce(c);\n      run(() => Promise.resolve());\n    } catch (e) { codeMsg(e.message); }\n    finally { if (btn) btn.classList.remove('is-busy'); }\n  };\n  const checkoutLink = () => {\n    const a = $('[data-cm-checkout]'); if (!a) return;\n    const pend = ss.get(COUPON, '');\n    a.href = '/checkout' + (pend && (root.dataset.codes || '').toUpperCase().split(',').indexOf(pend) < 0 ? '?discount=' + encodeURIComponent(pend) : '');\n  };\n\n  /* ---------- Clicks ---------- */\n  root.addEventListener('click', (e) => {\n    const b = e.target.closest('[data-cm]');\n    if (!b || b.tagName === 'TEXTAREA' || b.type === 'checkbox') return;\n    const a = b.dataset.cm, line = b.closest('.cm-line');\n    if (a === 'back') {\n      let same = false;\n      try { same = !!document.referrer && new URL(document.referrer).origin === location.origin; } catch (x) {}\n      if (same && history.length > 1) { e.preventDefault(); history.back(); }\n    } else if (a === 'inc') { if (b.getAttribute('aria-disabled') !== 'true') setQty(line, +line.dataset.qty + 1); }\n    else if (a === 'dec') setQty(line, +line.dataset.qty - 1);\n    else if (a === 'unwrap') run(() => change(line.dataset.key, 0), line);\n    else if (a === 'save') {\n      const m = { h: line.dataset.handle, id: line.dataset.variant, t: line.dataset.title, img: line.dataset.img, p: +line.dataset.price };\n      window.TbWish && window.TbWish.add(m.h, m.p);\n      ss.set(MOVED, ss.get(MOVED, []).filter((x) => String(x.id) !== String(m.id)).concat(m));\n      undo = { id: m.id, quantity: +line.dataset.qty, properties: props(line), handle: m.h, wish: true };\n      line.classList.add('is-out');\n      toast('Moved to your wishlist', true);\n      run(() => change(line.dataset.key, 0));\n    } else if (a === 'undo' && undo) {\n      const u = undo; undo = null; $('.cm-toast').hidden = true;\n      if (u.wish) { window.TbWish && window.TbWish.remove(u.handle); ss.set(MOVED, ss.get(MOVED, []).filter((x) => String(x.id) !== String(u.id))); }\n      run(() => api('/cart/add.js', { items: [{ id: Number(u.id), quantity: u.quantity, properties: u.properties }] }).then(() => api('/cart.js')).then(syncWrap).then(announce));\n    } else if (a === 'add' || a === 'tocart') {\n      b.classList.add('is-busy');\n      if (a === 'tocart') {\n        const m = ss.get(MOVED, []).find((x) => String(x.id) === b.dataset.id);\n        if (m) window.TbWish && window.TbWish.remove(m.h);\n        ss.set(MOVED, ss.get(MOVED, []).filter((x) => String(x.id) !== b.dataset.id));\n      }\n      run(() => api('/cart/add.js', { items: [{ id: Number(b.dataset.id), quantity: 1 }] }).then(() => api('/cart.js')).then(syncWrap).then(announce));\n    } else if (a === 'coupons') sheet(true);\n    else if (a === 'close') sheet(false);\n    else if (a === 'apply') applyCode(b.dataset.code || $('[data-cm-code]').value, b);\n    else if (a === 'remove') { b.classList.add('is-busy'); api('/cart/update.js', { discount: '' }).then((c) => { announce(c); sheet(false); toast('Coupon removed'); run(() => Promise.resolve()); }).catch((x) => codeMsg(x.message)); }\n    else if (a === 'bill') $('#cm-bill')?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    else if (a === 'pin') {\n      const box = b.closest('[data-cm-pin]'), v = $('input', box).value.replace(/\\D/g, ''), m = $('.cm-pin__msg', box);\n      const ok = /^[1-9]\\d{5}$/.test(v);\n      m.textContent = ok ? box.dataset.ok.replace('{pin}', v) : 'Enter a 6-digit PIN code';\n      m.className = 'cm-pin__msg ' + (ok ? 'is-ok' : 'is-bad'); m.hidden = false;\n    }\n  });\n  root.addEventListener('change', (e) => {\n    const t = e.target, line = t.closest('.cm-line');\n    if (!line) return;\n    const lp = props(line);\n    if (t.dataset.cm === 'wrap') {\n      // Unticking: blank values, because Shopify keeps the old properties when it is sent an empty set.\n      if (t.checked) lp['Gift wrap'] = 'Yes'; else { lp['Gift wrap'] = ''; lp['Gift message'] = ''; }\n      run(() => change(line.dataset.key, +line.dataset.qty, lp), line);\n    } else if (t.dataset.cm === 'msg') {\n      lp['Gift message'] = t.value.trim();\n      run(() => change(line.dataset.key, +line.dataset.qty, lp));\n    }\n  });\n  root.addEventListener('keydown', (e) => {\n    if (e.key === 'Escape' && !$('[data-cm-sheet]').hidden) sheet(false);\n    if (e.key === 'Enter' && e.target.matches('[data-cm-code]')) applyCode(e.target.value, $('[data-cm=\"apply\"]'));\n    if (e.key === 'Enter' && e.target.closest('[data-cm-pin]')) $('[data-cm=\"pin\"]').click();\n  });\n\n  after();\n  // Wrap lines can be off when the cart was changed somewhere else (another tab, an older page): fix them on load.\n  window.TbWrapSync().then((r) => { if (r.changed) { announce(r.cart); run(() => Promise.resolve()); } }).catch(() => {});\n  setTimeout(() => root.classList.add('is-ready'), 400);\n  window.TbCartPage = { refresh };\n})();"],
  "mappings": "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",
  "names": []
}
