{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/tb-vault.js?x=1794560352420"],
  "sourcesContent": ["/* Wrapped in a block (2026-11-07) so the file can be included by more than one section on a page\n   without a \"class already declared\" error; the custom elements are still defined once. */\n{\n/* Vault pages: filter chips on the vault grid, pre-book buttons on the drop page. */\nclass TbVaultGrid extends HTMLElement {\n  connectedCallback() {\n    const chips = [...this.querySelectorAll('[data-chip]')];\n    const items = [...this.querySelectorAll('[data-vault-item]')];\n    const empty = this.querySelector('[data-vault-empty]');\n    chips.forEach((c) => c.addEventListener('click', () => {\n      const f = c.dataset.chip;\n      chips.forEach((x) => x.setAttribute('aria-pressed', x === c ? 'true' : 'false'));\n      let n = 0;\n      items.forEach((it) => { const on = f === 'all' || (' ' + it.dataset.tags + ' ').includes(' ' + f + ' '); it.hidden = !on; if (on) n++; });\n      if (empty) empty.hidden = n > 0;\n    }));\n  }\n}\ncustomElements.get('tb-vault-grid') || customElements.define('tb-vault-grid', TbVaultGrid);\n\nclass TbPrebook extends HTMLElement {\n  connectedCallback() {\n    const btn = this.querySelector('button');\n    const err = this.querySelector('[data-err]');\n    if (!btn) return;\n    btn.addEventListener('click', async () => {\n      const deposit = this.dataset.deposit;\n      if (!deposit) return;\n      btn.classList.add('is-loading');\n      if (err) err.hidden = true;\n      const attributes = [{ key: 'Pre-booked piece', value: this.dataset.piece }];\n      if (this.dataset.expected) attributes.push({ key: 'Expected price', value: this.dataset.expected });\n      try {\n        const actions = window.Shopify && window.Shopify.actions;\n        if (actions && actions.updateCart) {\n          const res = await actions.updateCart({ lines: [{ merchandiseId: 'gid://shopify/ProductVariant/' + deposit, quantity: 1, attributes }] }, { event: { context: 'product' } });\n          if (res && res.userErrors && res.userErrors.length) throw new Error(res.userErrors[0].message);\n        } else {\n          const properties = {}; attributes.forEach((a) => properties[a.key] = a.value);\n          const r = await fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ items: [{ id: Number(deposit), quantity: 1, properties }] }) });\n          if (!r.ok) throw new Error((await r.json()).description || 'Could not pre-book');\n          location.href = '/cart';\n          return;\n        }\n        btn.classList.add('is-done');\n        btn.textContent = 'Added. Check out to confirm';\n      } catch (e) {\n        if (err) { err.textContent = e.message || 'Something went wrong. Please try again.'; err.hidden = false; }\n      } finally {\n        btn.classList.remove('is-loading');\n      }\n    });\n  }\n}\ncustomElements.get('tb-prebook') || customElements.define('tb-prebook', TbPrebook);\n}\n"],
  "mappings": "AAEA,CAEA,MAAM,oBAAoB,WAAY,CACpC,mBAAoB,CAClB,MAAM,MAAQ,CAAC,GAAG,KAAK,iBAAiB,aAAa,CAAC,EAChD,MAAQ,CAAC,GAAG,KAAK,iBAAiB,mBAAmB,CAAC,EACtD,MAAQ,KAAK,cAAc,oBAAoB,EACrD,MAAM,QAAS,GAAM,EAAE,iBAAiB,QAAS,IAAM,CACrD,MAAM,EAAI,EAAE,QAAQ,KACpB,MAAM,QAAS,GAAM,EAAE,aAAa,eAAgB,IAAM,EAAI,OAAS,OAAO,CAAC,EAC/E,IAAI,EAAI,EACR,MAAM,QAAS,IAAO,CAAE,MAAM,GAAK,IAAM,QAAU,IAAM,GAAG,QAAQ,KAAO,KAAK,SAAS,IAAM,EAAI,GAAG,EAAG,GAAG,OAAS,CAAC,GAAQ,IAAI,GAAK,CAAC,EACpI,QAAO,MAAM,OAAS,EAAI,EAChC,CAAC,CAAC,CACJ,CACF,CACA,eAAe,IAAI,eAAe,GAAK,eAAe,OAAO,gBAAiB,WAAW,EAEzF,MAAM,kBAAkB,WAAY,CAClC,mBAAoB,CAClB,MAAM,IAAM,KAAK,cAAc,QAAQ,EACjC,IAAM,KAAK,cAAc,YAAY,EACtC,KACL,IAAI,iBAAiB,QAAS,SAAY,CACxC,MAAM,QAAU,KAAK,QAAQ,QAC7B,GAAI,CAAC,QAAS,OACd,IAAI,UAAU,IAAI,YAAY,EAC1B,MAAK,IAAI,OAAS,IACtB,MAAM,WAAa,CAAC,CAAE,IAAK,mBAAoB,MAAO,KAAK,QAAQ,KAAM,CAAC,EACtE,KAAK,QAAQ,UAAU,WAAW,KAAK,CAAE,IAAK,iBAAkB,MAAO,KAAK,QAAQ,QAAS,CAAC,EAClG,GAAI,CACF,MAAM,QAAU,OAAO,SAAW,OAAO,QAAQ,QACjD,GAAI,SAAW,QAAQ,WAAY,CACjC,MAAM,IAAM,MAAM,QAAQ,WAAW,CAAE,MAAO,CAAC,CAAE,cAAe,gCAAkC,QAAS,SAAU,EAAG,UAAW,CAAC,CAAE,EAAG,CAAE,MAAO,CAAE,QAAS,SAAU,CAAE,CAAC,EAC1K,GAAI,KAAO,IAAI,YAAc,IAAI,WAAW,OAAQ,MAAM,IAAI,MAAM,IAAI,WAAW,CAAC,EAAE,OAAO,CAC/F,KAAO,CACL,MAAM,WAAa,CAAC,EAAG,WAAW,QAAS,GAAM,WAAW,EAAE,GAAG,EAAI,EAAE,KAAK,EAC5E,MAAM,EAAI,MAAM,MAAM,eAAgB,CAAE,OAAQ,OAAQ,QAAS,CAAE,eAAgB,mBAAoB,OAAQ,kBAAmB,EAAG,KAAM,KAAK,UAAU,CAAE,MAAO,CAAC,CAAE,GAAI,OAAO,OAAO,EAAG,SAAU,EAAG,UAAW,CAAC,CAAE,CAAC,CAAE,CAAC,EAC1N,GAAI,CAAC,EAAE,GAAI,MAAM,IAAI,OAAO,MAAM,EAAE,KAAK,GAAG,aAAe,oBAAoB,EAC/E,SAAS,KAAO,QAChB,MACF,CACA,IAAI,UAAU,IAAI,SAAS,EAC3B,IAAI,YAAc,6BACpB,OAAS,EAAG,CACN,MAAO,IAAI,YAAc,EAAE,SAAW,0CAA2C,IAAI,OAAS,GACpG,QAAE,CACA,IAAI,UAAU,OAAO,YAAY,CACnC,CACF,CAAC,CACH,CACF,CACA,eAAe,IAAI,YAAY,GAAK,eAAe,OAAO,aAAc,SAAS,CACjF",
  "names": []
}
