{
  "version": 3,
  "sources": ["/cdn/shop/t/33/assets/nbn-wink-cart-bridge.js?test=48461"],
  "sourcesContent": ["/* NBN Wink cart/card bridge \u2014 owner Telegram48461, 10 Nov 2026.\n   Repairs only Customer Hub cart items. Native product/cart traffic is untouched. */\n(function () {\n  'use strict';\n  function hubItem(item) { return item && item.properties && String(item.properties._source_customer_hub) === 'true'; }\n  async function repairBody(body, resolve) {\n    if (!body || !Array.isArray(body.items) || !body.items.some(hubItem)) return body;\n    var changed = false;\n    var items = await Promise.all(body.items.map(async function (item) {\n      if (!hubItem(item)) return item;\n      var id = String(item.id || '');\n      var productMatch = /^gid:\\/\\/shopify\\/Product\\/(\\d+)$/.exec(id);\n      var variantMatch = /^gid:\\/\\/shopify\\/ProductVariant\\/(\\d+)$/.exec(id);\n      if (variantMatch) { changed = true; return Object.assign({}, item, {id: variantMatch[1]}); }\n      if (!productMatch) return item;\n      var product = await resolve(productMatch[1]);\n      if (!product || String(product.id) !== productMatch[1]) throw new Error('Wink product could not be verified. Please open the product page.');\n      // Never silently choose a size/colour. A multi-option card opens the PDP.\n      if (!Array.isArray(product.variants) || product.variants.length !== 1) throw new Error('Please choose your product options on the product page.');\n      var variant = product.variants[0];\n      if (!variant.available || !/^\\d+$/.test(String(variant.id))) throw new Error('This product is currently unavailable. Please open the product page.');\n      changed = true;\n      return Object.assign({}, item, {id: String(variant.id)});\n    }));\n    return changed ? Object.assign({}, body, {items: items}) : body;\n  }\n  if (typeof module !== 'undefined' && module.exports) module.exports = {repairBody: repairBody, hubItem: hubItem};\n  if (typeof window === 'undefined' || window.__nbnWinkCartBridge) return;\n  window.__nbnWinkCartBridge = {version: '48461.1', repairedRequests: 0};\n  var nativeFetch = window.fetch.bind(window), byHandle = new Map(), byId = new Map();\n  function cardPath(card) {\n    var a = card.querySelector('a[href*=\"/products/\"]');\n    if (!a) return null;\n    var url = new URL(a.getAttribute('href'), location.origin);\n    // Use only an actual local product handle, never arbitrary URLs from chat prose.\n    var match = /^\\/products\\/([a-zA-Z0-9_-]+)\\/?$/.exec(url.pathname);\n    return match ? '/products/' + match[1] : null;\n  }\n  function load(path) {\n    if (!byHandle.has(path)) {\n      var promise = nativeFetch(path + '.js', {credentials:'same-origin', headers:{Accept:'application/json'}})\n        .then(function(r) { if (!r.ok) throw new Error('Product lookup failed'); return r.json(); })\n        .then(function(p) { if (!p.id || !Array.isArray(p.variants)) throw new Error('Invalid product'); byId.set(String(p.id), p); return p; })\n        .catch(function(error) { byHandle.delete(path); throw error; });\n      byHandle.set(path, promise);\n    }\n    return byHandle.get(path);\n  }\n  async function resolve(id) {\n    if (byId.has(id)) return byId.get(id);\n    var cards = Array.from(document.querySelectorAll('.kl-hub-route-chat [data-testid=\"product-info\"]'));\n    var paths = Array.from(new Set(cards.map(cardPath).filter(Boolean))).slice(0, 30);\n    await Promise.all(paths.map(function(path) { return load(path).catch(function() { return null; }); }));\n    return byId.get(id);\n  }\n  window.fetch = async function(input, init) {\n    var url;\n    try { url = new URL(typeof input === 'string' ? input : input.url, location.origin); } catch (_) {}\n    if (!url || url.origin !== location.origin || !/\\/cart\\/add(?:\\.js)?$/.test(url.pathname) || !init || typeof init.body !== 'string') return nativeFetch(input, init);\n    var body;\n    try { body = JSON.parse(init.body); } catch (_) { return nativeFetch(input, init); }\n    if (!Array.isArray(body.items) || !body.items.some(hubItem)) return nativeFetch(input, init);\n    var repaired = await repairBody(body, resolve);\n    if (repaired !== body) { init = Object.assign({}, init, {body:JSON.stringify(repaired)}); window.__nbnWinkCartBridge.repairedRequests++; }\n    return nativeFetch(input, init);\n  };\n  function money(cents) { return 'A$' + (Number(cents) / 100).toFixed(2); }\n  async function hydrate(card) {\n    var path = cardPath(card);\n    if (!path) return;\n    try {\n      var product = await load(path);\n      if (!card.isConnected) return;\n      var price = card.querySelector('[data-testid=\"price\"]');\n      var amount = product.variants.length === 1 ? product.variants[0].price : product.price_min;\n      var text = (product.price_varies ? 'From ' : '') + money(amount);\n      if (price && price.textContent !== text) price.textContent = text;\n      var button = card.querySelector('[data-testid=\"add-to-cart-button\"]');\n      card.dataset.nbnWinkProduct = String(product.id);\n      card.dataset.nbnWinkPath = path;\n      card.dataset.nbnWinkOptions = product.variants.length > 1 ? 'true' : 'false';\n      if (button) {\n        var available = product.variants.some(function(v) { return v.available; });\n        button.disabled = !available;\n        var label = !available ? 'Sold out' : product.variants.length > 1 ? 'Choose options' : 'Add to cart';\n        var span = button.querySelector('span') || button;\n        if (span.textContent !== label) span.textContent = label;\n        button.setAttribute('aria-label', label + ' \u2014 ' + product.title);\n      }\n    } catch (_) {\n      // Fail safe on product lookup: PDP navigation, not an unverified cart attempt.\n      card.dataset.nbnWinkPath = path;\n      card.dataset.nbnWinkOptions = 'true';\n      var button = card.querySelector('[data-testid=\"add-to-cart-button\"]');\n      if (button) { var span = button.querySelector('span') || button; if (span.textContent !== 'View product') span.textContent = 'View product'; }\n    }\n  }\n  document.addEventListener('click', function(event) {\n    var button = event.target.closest && event.target.closest('.kl-hub-route-chat [data-testid=\"add-to-cart-button\"]');\n    if (!button) return;\n    var card = button.closest('[data-testid=\"product-info\"]');\n    if (card && card.dataset.nbnWinkOptions === 'true' && card.dataset.nbnWinkPath) {\n      event.preventDefault(); event.stopImmediatePropagation(); location.assign(card.dataset.nbnWinkPath);\n    }\n  }, true);\n  var timer;\n  function scan() { document.querySelectorAll('.kl-hub-route-chat [data-testid=\"product-info\"]').forEach(hydrate); }\n  function schedule() { clearTimeout(timer); timer = setTimeout(scan, 80); }\n  function start() {\n    new MutationObserver(function(changes) {\n      if (changes.some(function(change) {\n        var el = change.target.nodeType === 1 ? change.target : change.target.parentElement;\n        return (el && el.closest && el.closest('.kl-hub-route-chat')) || Array.from(change.addedNodes).some(function(n) { return n.nodeType === 1 && (n.matches('.kl-hub-route-chat') || n.querySelector('.kl-hub-route-chat')); });\n      })) schedule();\n    }).observe(document.body, {childList:true,subtree:true,characterData:true});\n    schedule();\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start, {once:true}); else start();\n})();\n"],
  "mappings": "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",
  "names": ["resolve"]
}
