{
  "version": 3,
  "sources": ["/cdn/shop/t/42/assets/titanore-cart-cro.js?tl=cro13"],
  "sourcesContent": ["/**\n * Cart conversion helpers (2026-11-02).\n * 1. \"Je set ligt klaar\" bar on the landing pages once the cart holds a paid item and the drawer is closed.\n *    It replaces the sticky add-to-cart bar while visible (body.tl-cart-ready-on).\n * 2. In3 line in the drawer overview follows the live total (Liquid renders it; this keeps it in sync).\n * 3. Drawer checkout button names the local payment method: iDEAL (NL) / Bancontact (BE).\n * Dutch storefront only; the English site is left untouched.\n */\n(function () {\n  'use strict';\n\n  var NL = /^\\/nl(\\/|$)/.test(location.pathname) || (document.documentElement.lang || '').toLowerCase().indexOf('nl') === 0;\n  if (!NL) return;\n\n  var LP = /\\/pages\\/(chef-sven-laurent|set-sale)(\\/|$)/.test(location.pathname);\n  var IN3_MIN = 10000;\n  var IN3_MAX = 300000;\n  var LABELS = { NL: 'Afrekenen met iDEAL \u2192', BE: 'Afrekenen met Bancontact \u2192' };\n\n  function money(cents) {\n    var n = Math.round(Number(cents) || 0) / 100;\n    var p = n.toFixed(2).split('.');\n    return '\u20AC' + p[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.') + ',' + p[1];\n  }\n\n  function cents(text) {\n    var m = String(text || '').replace(/[^\\d,.]/g, '');\n    if (!m) return 0;\n    m = m.replace(/\\./g, '').replace(',', '.');\n    return Math.round(parseFloat(m) * 100) || 0;\n  }\n\n  // ---- country (same source as the BE line on the Sven page) ----\n  var countryPromise = null;\n  function country() {\n    if (countryPromise) return countryPromise;\n    var forced = (location.search.match(/[?&]tl_cc=([A-Z]{2})/) || [])[1];\n    var cached = null;\n    try { cached = sessionStorage.getItem('tl_cc'); } catch (e) {}\n    if (forced || cached) {\n      countryPromise = Promise.resolve(forced || cached);\n      return countryPromise;\n    }\n    countryPromise = fetch('/browsing_context_suggestions.json?country[enabled]=true', { credentials: 'same-origin' })\n      .then(function (r) { return r.json(); })\n      .then(function (d) {\n        var cc = d && d.detected_values && d.detected_values.country && d.detected_values.country.handle;\n        if (cc) { try { sessionStorage.setItem('tl_cc', cc); } catch (e) {} }\n        return cc || '';\n      })\n      .catch(function () { return ''; });\n    return countryPromise;\n  }\n\n  // ---- drawer: checkout label + in3 sync ----\n  function syncDrawer() {\n    var drawer = document.querySelector('cart-drawer');\n    if (!drawer) return;\n    var total = drawer.querySelector('[data-tl-cart-money]');\n    var in3 = drawer.querySelector('[data-tl-in3]');\n    if (in3 && total) {\n      var c = cents(total.textContent);\n      var amt = in3.querySelector('[data-tl-in3-amt]');\n      var show = c >= IN3_MIN && c <= IN3_MAX;\n      if (in3.hidden === show) in3.hidden = !show;\n      var want = money(Math.ceil(c / 3));\n      if (show && amt && amt.textContent !== want) amt.textContent = want;\n    }\n    fitReview(drawer);\n    country().then(function (cc) {\n      var label = LABELS[cc];\n      if (!label) return;\n      drawer.querySelectorAll('.tl-cart-cta .button-text').forEach(function (el) {\n        if (el.textContent.trim() !== label) el.textContent = label;\n      });\n    });\n  }\n\n  // The review quote only fills empty space: hide it when the drawer content would overflow.\n  function fitReview(drawer) {\n    var rv = drawer.querySelector('.tl-cart-review');\n    var box = drawer.querySelector('cart-drawer-items');\n    if (!rv || !box) return;\n    // Measure synchronously (no paint in between): show, and hide again if the content now overflows.\n    rv.hidden = false;\n    if (box.scrollHeight > box.clientHeight + 1) rv.hidden = true;\n  }\n\n  // ---- landing pages: \"ligt klaar\" bar ----\n  var bar = null;\n  function buildBar() {\n    bar = document.createElement('div');\n    bar.className = 'tl-cart-ready';\n    bar.hidden = true;\n    bar.setAttribute('data-wg-notranslate', '');\n    bar.setAttribute('translate', 'no');\n    bar.innerHTML =\n      '<button type=\"button\" class=\"tl-cart-ready__open\" aria-label=\"Winkelwagen openen\">' +\n      '<span class=\"tl-cart-ready__media\"><span class=\"tl-cart-ready__frame\"><img class=\"tl-cart-ready__thumb\" alt=\"\" width=\"64\" height=\"64\" decoding=\"async\"></span>' +\n      '<span class=\"tl-cart-ready__check\" aria-hidden=\"true\">\u2713</span></span>' +\n      '<span class=\"tl-cart-ready__meta\"><span class=\"tl-cart-ready__title\" style=\"font-family:Georgia,\\'Times New Roman\\',serif !important;font-weight:400 !important\"></span>' +\n      '<span class=\"tl-cart-ready__total\"></span></span></button>' +\n      '<a class=\"tl-cart-ready__cta\" href=\"/checkout\">Afrekenen \u2192</a>';\n    document.body.appendChild(bar);\n    bar.querySelector('.tl-cart-ready__open').addEventListener('click', function () {\n      var icon = document.querySelector('#cart-icon-bubble, [data-cart-drawer-toggle], .header__icon--cart');\n      if (icon) icon.click();\n      else location.href = '/nl/cart';\n    });\n  }\n\n  function isPaid(item) {\n    var t = String(item.product_type || '');\n    return item.final_line_price > 0 && t !== 'Verzendverzekering' && item.handle !== 'order-protection';\n  }\n\n  function drawerOpen() {\n    var d = document.querySelector('cart-drawer');\n    // \"animate\" stays on after closing; only \"active\" means open.\n    return !!(d && d.classList.contains('active'));\n  }\n\n  var pending = null;\n  function refreshBar() {\n    if (!LP) return;\n    if (pending) clearTimeout(pending);\n    pending = setTimeout(function () {\n      fetch('/cart.js', { credentials: 'same-origin' })\n        .then(function (r) { return r.json(); })\n        .then(function (cart) {\n          if (!bar) buildBar();\n          var paid = (cart.items || []).filter(isPaid);\n          var on = paid.length > 0 && !drawerOpen();\n          if (on) {\n            var first = paid[0];\n                        var isSet = paid.length === 1 && first.quantity === 1 && /set/i.test(first.handle || '');\n            bar.querySelector('.tl-cart-ready__title').textContent = isSet ? 'Je set ligt klaar' : 'Je bestelling ligt klaar';\n            // \"Was\" per set comes from the line properties stamped by titanore-free-cookbook.js.\n            var was = paid.reduce(function (n, i) {\n              return n + cents((i.properties || {}).Was) * i.quantity;\n            }, 0);\n            bar.querySelector('.tl-cart-ready__total').innerHTML =\n              '<b>' + money(cart.total_price) + '</b>' + (was > cart.total_price ? ' <s>' + money(was) + '</s>' : '');\n            var img = bar.querySelector('.tl-cart-ready__thumb');\n            var src = first.featured_image && first.featured_image.url ? first.featured_image.url : first.image;\n            if (src) img.src = src + (src.indexOf('?') > -1 ? '&' : '?') + 'width=200';\n          }\n          bar.hidden = !on;\n          document.body.classList.toggle('tl-cart-ready-on', on);\n        })\n        .catch(function () {});\n    }, 250);\n  }\n\n  function init() {\n    syncDrawer();\n    refreshBar();\n    // The drawer is injected/re-rendered after load and after every cart change, so watch the whole body\n    // (debounced): re-apply label/in3, and re-check the bar whenever the drawer opens or closes.\n    var wasOpen = drawerOpen();\n    var tick = null;\n    new MutationObserver(function () {\n      if (tick) return;\n      tick = setTimeout(function () {\n        tick = null;\n        syncDrawer();\n        var open = drawerOpen();\n        if (open !== wasOpen) {\n          wasOpen = open;\n          refreshBar();\n        }\n      }, 150);\n    }).observe(document.body, { childList: true, subtree: true, characterData: true, attributes: true, attributeFilter: ['class'] });\n    document.addEventListener('visibilitychange', function () {\n      if (document.visibilityState === 'visible') refreshBar();\n    });\n    window.addEventListener('pageshow', refreshBar);\n    window.addEventListener('resize', function () { syncDrawer(); });\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n})();\n"],
  "mappings": "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",
  "names": ["cents"]
}
