{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/btl-product.js?nc=1792963281750"],
  "sourcesContent": ["/* Body Thesis Lab \u2014 buy box: gallery, variant selection, quantity and bundle pricing */\n\nclass BtlBuyBox extends HTMLElement {\n  connectedCallback() {\n    const data = this.querySelector('[data-btl-variants]');\n    this.variants = data ? JSON.parse(data.textContent) : [];\n    this.slides = [...this.querySelectorAll('[data-slide]')];\n\n    this.querySelectorAll('.btl-gallery__thumb').forEach((thumb) => {\n      thumb.addEventListener('click', () => this.showImage(thumb));\n    });\n\n    this.querySelectorAll('[data-gallery-step]').forEach((btn) => {\n      btn.addEventListener('click', () => this.stepImage(Number(btn.dataset.galleryStep)));\n    });\n\n    // Horizontal swipe on the main image; vertical drags still scroll the page (touch-action: pan-y)\n    const main = this.querySelector('.btl-gallery__main');\n    if (main && this.slides.length > 1) {\n      let startX = null;\n      let startY = 0;\n      main.addEventListener('touchstart', (e) => {\n        startX = e.touches[0].clientX;\n        startY = e.touches[0].clientY;\n      }, { passive: true });\n      main.addEventListener('touchend', (e) => {\n        if (startX === null) return;\n        const dx = e.changedTouches[0].clientX - startX;\n        const dy = e.changedTouches[0].clientY - startY;\n        startX = null;\n        if (Math.abs(dx) > 40 && Math.abs(dx) > Math.abs(dy)) this.stepImage(dx < 0 ? 1 : -1);\n      }, { passive: true });\n    }\n\n    // Warm the remaining slides once the page is idle so the first click is instant\n    const warm = () => this.slides.forEach((slide) => slide.querySelector('img')?.setAttribute('loading', 'eager'));\n    if ('requestIdleCallback' in window) requestIdleCallback(warm);\n    else setTimeout(warm, 1200);\n\n    this.querySelectorAll('.btl-option input').forEach((input) => {\n      input.addEventListener('change', () => this.onOptionChange());\n    });\n\n    const pricing = this.querySelector('[data-btl-pricing]');\n    this.pricing = pricing ? JSON.parse(pricing.textContent) : { tiers: [], max: 10 };\n    this.qtyInput = this.querySelector('[data-qty]');\n    this.tiles = [...this.querySelectorAll('[data-qty-tile]')];\n    if (this.qtyInput) {\n      this.querySelectorAll('[data-qty-step]').forEach((btn) => {\n        btn.addEventListener('click', () => this.setQty(this.qty() + Number(btn.dataset.qtyStep)));\n      });\n      this.qtyInput.addEventListener('change', () => this.setQty(this.qty()));\n      this.tiles.forEach((tile) => tile.addEventListener('change', () => this.setQty(Number(tile.value))));\n      // Offer cards link here with ?qty=2 or ?qty=3\n      const fromUrl = Number(new URLSearchParams(window.location.search).get('qty'));\n      this.setQty(fromUrl || this.qty());\n    } else {\n      this.updatePrice(this.currentVariant());\n      this.updateWaitlistTags(this.currentVariant());\n    }\n\n    // Runs last: selecting a version reprices, so pricing and quantity must be set up first\n    this.applyVote();\n  }\n\n  qty() {\n    const value = parseInt(this.qtyInput?.value, 10);\n    return Number.isFinite(value) ? value : 1;\n  }\n\n  setQty(value) {\n    const max = this.pricing.max || 10;\n    const qty = Math.min(Math.max(1, value), max);\n    if (this.qtyInput) this.qtyInput.value = qty;\n    if (this.tiles.length) {\n      // Pick the largest tile that fits the quantity (e.g. ?qty=4 selects the 3-bottle tile)\n      const match = this.tiles.filter((t) => Number(t.value) <= qty).pop() || this.tiles[0];\n      this.tiles.forEach((t) => (t.checked = t === match));\n    }\n    this.querySelectorAll('[data-qty-step]').forEach((btn) => {\n      const step = Number(btn.dataset.qtyStep);\n      btn.disabled = (step < 0 && qty <= 1) || (step > 0 && qty >= max);\n    });\n    const variant = this.currentVariant();\n    this.updatePrice(variant);\n    this.updateWaitlistTags(variant);\n  }\n\n  tierPercent(qty) {\n    return (this.pricing.tiers || [])\n      .filter((tier) => tier.qty > 0 && qty >= tier.qty)\n      .reduce((best, tier) => (tier.qty >= best.qty ? tier : best), { qty: 0, percent: 0 }).percent;\n  }\n\n  formatMoney(cents) {\n    // Mirror the store's own money format by reading a rendered sample (e.g. \"$1,234.56\" or \"1.234,56 \u20AC\")\n    const sample = this.pricing.sample || '';\n    const match = sample.match(/1(\\D?)234(?:(\\D)(\\d{2}))?/);\n    if (!match) {\n      try {\n        return new Intl.NumberFormat(undefined, { style: 'currency', currency: this.pricing.currency }).format(cents / 100);\n      } catch (e) {\n        return (cents / 100).toFixed(2);\n      }\n    }\n    const [token, thousands, decimal, fraction] = match;\n    const group = (n) => String(n).replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousands);\n    const amount = fraction\n      ? group(Math.floor(cents / 100)) + decimal + String(cents % 100).padStart(2, '0')\n      : group(Math.round(cents / 100));\n    return sample.replace(token, amount);\n  }\n\n  updatePrice(variant) {\n    if (!variant) return;\n    const qty = this.qtyInput ? this.qty() : 1;\n    const percent = this.tierPercent(qty);\n    const full = variant.cents * qty;\n    const total = Math.round((full * (100 - percent)) / 100);\n    const compareFull = variant.compareCents ? variant.compareCents * qty : percent > 0 ? full : null;\n\n    const price = this.querySelector('[data-price]');\n    if (price) price.textContent = this.formatMoney(total);\n\n    const compare = this.querySelector('[data-compare]');\n    if (compare) {\n      compare.hidden = !compareFull || compareFull <= total;\n      compare.textContent = compareFull ? this.formatMoney(compareFull) : '';\n    }\n\n    const save = this.querySelector('[data-save]');\n    if (save) {\n      save.hidden = percent <= 0;\n      save.textContent = percent > 0 ? `Save ${percent}%` : '';\n    }\n\n    // Keep each offer tile's prices in step with the selected version\n    (this.tiles || []).forEach((tile) => {\n      const q = Number(tile.value);\n      const tileFull = variant.cents * q;\n      const tileTotal = Math.round((tileFull * (100 - this.tierPercent(q))) / 100);\n      const card = tile.closest('.btl-tile');\n      const set = (sel, value) => {\n        const el = card.querySelector(sel);\n        if (el) el.textContent = value;\n      };\n      set('[data-tile-total]', this.formatMoney(tileTotal));\n      set('[data-tile-compare]', this.formatMoney(tileFull));\n      set('[data-tile-unit]', this.formatMoney(Math.round(tileTotal / q)));\n    });\n  }\n\n  showImage(thumb) {\n    if (!thumb || !this.slides.length) return;\n    const id = thumb.dataset.mediaId;\n    this.slides.forEach((slide) => slide.classList.toggle('is-active', slide.dataset.mediaId === id));\n    this.querySelectorAll('.btl-gallery__thumb').forEach((t) => t.classList.toggle('is-active', t === thumb));\n  }\n\n  stepImage(direction) {\n    const thumbs = [...this.querySelectorAll('.btl-gallery__thumb')];\n    if (thumbs.length < 2) return;\n    const current = thumbs.findIndex((t) => t.classList.contains('is-active'));\n    const next = thumbs[(current + direction + thumbs.length) % thumbs.length];\n    this.showImage(next);\n    // Keep the active thumbnail in view without scrolling the page\n    const strip = next.parentElement;\n    const s = strip.getBoundingClientRect();\n    const t = next.getBoundingClientRect();\n    strip.scrollBy({\n      left: t.left - s.left - (s.width - t.width) / 2,\n      top: t.top - s.top - (s.height - t.height) / 2,\n      behavior: 'smooth',\n    });\n  }\n\n  selectedOptions() {\n    return [...this.querySelectorAll('.btl-option')].map((fieldset) => {\n      const checked = fieldset.querySelector('input:checked');\n      return checked ? checked.value : null;\n    });\n  }\n\n  currentVariant() {\n    const selected = this.selectedOptions();\n    if (selected.length === 0) return this.variants[0];\n    return this.variants.find((v) => v.options.every((value, i) => value === selected[i]));\n  }\n\n  onOptionChange() {\n    const variant = this.currentVariant();\n    const submit = this.querySelector('[data-submit]');\n\n    if (!variant) {\n      if (submit) {\n        submit.disabled = true;\n        submit.textContent = 'Unavailable';\n      }\n      return;\n    }\n\n    this.updatePrice(variant);\n\n    const idInput = this.querySelector('[data-variant-id]');\n    if (idInput) idInput.value = variant.id;\n\n    if (submit) {\n      submit.disabled = !variant.available;\n      submit.textContent = variant.available ? submit.dataset.label : 'Sold out';\n    }\n\n    if (variant.image) {\n      const thumb = this.querySelector(`.btl-gallery__thumb[data-media-id=\"${variant.image}\"]`);\n      if (thumb) this.showImage(thumb);\n    }\n\n    this.updateWaitlistTags(variant);\n\n    // The theme editor treats URL changes as navigation, so only update the address on the storefront\n    if (!(window.Shopify && window.Shopify.designMode)) {\n      const url = new URL(window.location.href);\n      url.searchParams.set('variant', variant.id);\n      window.history.replaceState({}, '', url.toString());\n    }\n  }\n\n  // Email vote links (?vote=unscented / ?vote=scented) preselect that version and thank the visitor\n  applyVote() {\n    const vote = (new URLSearchParams(window.location.search).get('vote') || '').toLowerCase();\n    if (!vote) return;\n    const input = [...this.querySelectorAll('.btl-option input')].find((i) => i.value.toLowerCase() === vote);\n    if (!input) return;\n    input.checked = true;\n    this.onOptionChange();\n    const note = this.querySelector('[data-vote-note]');\n    if (note) {\n      note.textContent = `Thank you. Your preference for ${input.value.toLowerCase()} has been noted and is now selected.`;\n      note.hidden = false;\n    }\n  }\n\n  updateWaitlistTags(variant) {\n    const tags = this.querySelector('[data-waitlist-tags]');\n    if (!tags || !variant) return;\n    const slug = variant.title\n      .toLowerCase()\n      .replace(/[^a-z0-9]+/g, '-')\n      .replace(/(^-|-$)/g, '');\n    const qty = this.qtyInput ? this.qty() : 1;\n    tags.value = `waitlist,prerelease,interest-${slug},interest-qty-${qty}`;\n  }\n}\n\nif (!customElements.get('btl-buy-box')) {\n  customElements.define('btl-buy-box', BtlBuyBox);\n}\n"],
  "mappings": "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",
  "names": ["t"]
}
