{
  "version": 3,
  "sources": ["/cdn/shop/t/39/assets/custom-cart-drawer.js?n=1790025507"],
  "sourcesContent": ["\r\n(function () {\r\n  if (window.__rvDocappGiftAccordionNoJerkInitialized) return;\r\n  window.__rvDocappGiftAccordionNoJerkInitialized = true;\r\n\r\n  var observer = null;\r\n  var isUpdating = false;\r\n  var isQueued = false;\r\n  var accordionOpenState = true;\r\n\r\n  function getCartContainer() {\r\n    return document.querySelector('#cart-drawer .cart-drawer__line-items');\r\n  }\r\n\r\n  function isLineItem(element) {\r\n    return Boolean(element && element.matches && element.matches('line-item.line-item'));\r\n  }\r\n\r\n  function isDocappGift(element) {\r\n    if (!isLineItem(element)) return false;\r\n\r\n    if (element.hasAttribute('docapp-data-cart-item')) return true;\r\n    if (element.querySelector('.docapp-free-gift-cart-price')) return true;\r\n    if (element.querySelector('[docapp-data-href*=\"/products/docapp-free-gift-\"]')) return true;\r\n\r\n    var text = element.textContent || '';\r\n\r\n    return text.indexOf('Gift ID') !== -1 || text.indexOf('\uD83C\uDF81') !== -1;\r\n  }\r\n\r\n  function markPendingDirectGiftRows(container) {\r\n    if (!container) return;\r\n\r\n    Array.prototype.forEach.call(container.children, function (child) {\r\n      if (isDocappGift(child)) {\r\n        child.classList.add('rv-docapp-gift-pending');\r\n      }\r\n    });\r\n  }\r\n\r\n  function createAccordion() {\r\n    var accordion = document.createElement('details');\r\n\r\n    accordion.className = 'rv-cart-bundle-includes rv-docapp-gifts-accordion';\r\n    accordion.open = accordionOpenState;\r\n\r\n    accordion.innerHTML =\r\n      '<summary class=\"rv-cart-bundle-includes__header\">' +\r\n        '<span class=\"rv-cart-bundle-includes__title\">' +\r\n          '<span class=\"rv-cart-bundle-includes__chevron\" aria-hidden=\"true\">' +\r\n            '<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">' +\r\n              '<path d=\"M7 10L12 15L17 10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>' +\r\n            '</svg>' +\r\n          '</span>' +\r\n          ' Inclusief <span class=\"rv-docapp-gift-count-text\">cadeaus</span>:' +\r\n        '</span>' +\r\n        '<span class=\"rv-cart-bundle-includes__meta\">' +\r\n          '<span class=\"rv-cart-bundle-includes__free-label\">GRATIS</span>' +\r\n        '</span>' +\r\n      '</summary>' +\r\n      '<div class=\"gift-line-item-wrapper\"></div>';\r\n\r\n    return accordion;\r\n  }\r\n\r\n  function getDutchGiftCountText(count) {\r\n    var words = {\r\n      1: '\u00E9\u00E9n',\r\n      2: 'twee',\r\n      3: 'drie',\r\n      4: 'vier',\r\n      5: 'vijf',\r\n      6: 'zes',\r\n      7: 'zeven',\r\n      8: 'acht',\r\n      9: 'negen',\r\n      10: 'tien'\r\n    };\r\n\r\n    var countText = words[count] || count;\r\n\r\n    return count === 1\r\n      ? countText + ' cadeau'\r\n      : countText + ' cadeaus';\r\n  }\r\n\r\n  function updateAccordionCount(accordion) {\r\n    if (!accordion) return;\r\n\r\n    var wrapper = accordion.querySelector(':scope > .gift-line-item-wrapper');\r\n    if (!wrapper) return;\r\n\r\n    var gifts = Array.prototype.filter.call(wrapper.children, function (child) {\r\n      return isDocappGift(child);\r\n    });\r\n\r\n    var countTextElement = accordion.querySelector('.rv-docapp-gift-count-text');\r\n\r\n    if (countTextElement) {\r\n      countTextElement.textContent = getDutchGiftCountText(gifts.length);\r\n    }\r\n\r\n    if (!gifts.length) accordion.remove();\r\n  }\r\n\r\n  function collectDirectGiftBlocks(container) {\r\n    var blocks = [];\r\n    var currentBlock = [];\r\n\r\n    Array.prototype.forEach.call(container.children, function (child) {\r\n      if (isDocappGift(child)) {\r\n        currentBlock.push(child);\r\n        return;\r\n      }\r\n\r\n      if (currentBlock.length) {\r\n        blocks.push(currentBlock);\r\n        currentBlock = [];\r\n      }\r\n    });\r\n\r\n    if (currentBlock.length) blocks.push(currentBlock);\r\n\r\n    return blocks;\r\n  }\r\n\r\n  function findRelatedPaidProduct(giftBlock) {\r\n    if (!giftBlock.length) return null;\r\n\r\n    var sibling = giftBlock[giftBlock.length - 1].nextElementSibling;\r\n\r\n    while (sibling) {\r\n      if (isLineItem(sibling) && !isDocappGift(sibling)) return sibling;\r\n\r\n      if (sibling.matches && sibling.matches('.rv-cart-bundle-line')) return null;\r\n\r\n      sibling = sibling.nextElementSibling;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function getAccordionAfterPaidProduct(paidProduct) {\r\n    if (!paidProduct) return null;\r\n\r\n    var nextSibling = paidProduct.nextElementSibling;\r\n\r\n    if (nextSibling && nextSibling.matches && nextSibling.matches('.rv-docapp-gifts-accordion')) {\r\n      return nextSibling;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function moveGiftBlockIntoAccordion(giftBlock) {\r\n    if (!giftBlock.length) return;\r\n\r\n    var paidProduct = findRelatedPaidProduct(giftBlock);\r\n    if (!paidProduct) return;\r\n\r\n    var accordion = getAccordionAfterPaidProduct(paidProduct);\r\n\r\n    if (!accordion) {\r\n      accordion = createAccordion();\r\n      paidProduct.insertAdjacentElement('afterend', accordion);\r\n    }\r\n\r\n    var wrapper = accordion.querySelector(':scope > .gift-line-item-wrapper');\r\n    if (!wrapper) return;\r\n\r\n    giftBlock.forEach(function (giftItem) {\r\n      if (!isDocappGift(giftItem)) return;\r\n\r\n      wrapper.appendChild(giftItem);\r\n      giftItem.classList.remove('rv-docapp-gift-pending');\r\n    });\r\n\r\n    updateAccordionCount(accordion);\r\n  }\r\n\r\n  function cleanEmptyAccordions(container) {\r\n    var accordions = container.querySelectorAll(':scope > .rv-docapp-gifts-accordion');\r\n\r\n    accordions.forEach(function (accordion) {\r\n      updateAccordionCount(accordion);\r\n    });\r\n  }\r\n\r\n  function groupGiftItemsImmediately() {\r\n    if (isUpdating) return;\r\n\r\n    var container = getCartContainer();\r\n    if (!container) return;\r\n\r\n    markPendingDirectGiftRows(container);\r\n\r\n    var giftBlocks = collectDirectGiftBlocks(container);\r\n\r\n    if (!giftBlocks.length) {\r\n      cleanEmptyAccordions(container);\r\n      return;\r\n    }\r\n\r\n    isUpdating = true;\r\n\r\n    if (observer) observer.disconnect();\r\n\r\n    try {\r\n      giftBlocks.forEach(function (giftBlock) {\r\n        moveGiftBlockIntoAccordion(giftBlock);\r\n      });\r\n\r\n      cleanEmptyAccordions(container);\r\n    } finally {\r\n      isUpdating = false;\r\n      startObserver();\r\n    }\r\n  }\r\n\r\n  function queueImmediateGrouping() {\r\n    if (isQueued) return;\r\n\r\n    isQueued = true;\r\n\r\n    queueMicrotask(function () {\r\n      isQueued = false;\r\n      groupGiftItemsImmediately();\r\n    });\r\n  }\r\n\r\n  function mutationIsRelevant(mutation) {\r\n    if (mutation.type === 'attributes') {\r\n      var target = mutation.target;\r\n\r\n      return Boolean(target && (target.matches('line-item.line-item') || target.closest('line-item.line-item')));\r\n    }\r\n\r\n    if (mutation.type !== 'childList') return false;\r\n\r\n    return Array.prototype.some.call(mutation.addedNodes, function (node) {\r\n      if (!node || node.nodeType !== 1) return false;\r\n\r\n      if (node.matches && (\r\n        node.matches('#cart-drawer') ||\r\n        node.matches('.cart-drawer__line-items') ||\r\n        node.matches('line-item.line-item') ||\r\n        node.matches('[docapp-data-cart-item]')\r\n      )) {\r\n        return true;\r\n      }\r\n\r\n      return Boolean(node.querySelector && (\r\n        node.querySelector('#cart-drawer') ||\r\n        node.querySelector('.cart-drawer__line-items') ||\r\n        node.querySelector('line-item.line-item') ||\r\n        node.querySelector('[docapp-data-cart-item]')\r\n      ));\r\n    });\r\n  }\r\n\r\n  function startObserver() {\r\n    if (observer) observer.disconnect();\r\n\r\n    observer = new MutationObserver(function (mutations) {\r\n      if (isUpdating) return;\r\n\r\n      var container = getCartContainer();\r\n\r\n      if (container) markPendingDirectGiftRows(container);\r\n\r\n      if (mutations.some(mutationIsRelevant)) {\r\n        queueImmediateGrouping();\r\n      }\r\n    });\r\n\r\n    observer.observe(document.body, {\r\n      childList: true,\r\n      subtree: true,\r\n      attributes: true,\r\n      attributeFilter: ['docapp-data-cart-item']\r\n    });\r\n  }\r\n\r\n  function runFallbackSequence() {\r\n    queueImmediateGrouping();\r\n\r\n    setTimeout(queueImmediateGrouping, 50);\r\n    setTimeout(queueImmediateGrouping, 180);\r\n    setTimeout(queueImmediateGrouping, 500);\r\n  }\r\n\r\n  function initializeGiftAccordion() {\r\n    startObserver();\r\n    runFallbackSequence();\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', initializeGiftAccordion, { once: true });\r\n  } else {\r\n    initializeGiftAccordion();\r\n  }\r\n\r\n  document.addEventListener('toggle', function (event) {\r\n    if (event.target.matches && event.target.matches('.rv-docapp-gifts-accordion')) {\r\n      accordionOpenState = event.target.open;\r\n    }\r\n  }, true);\r\n\r\n  document.addEventListener('cart:updated', runFallbackSequence);\r\n  document.addEventListener('cart:change', runFallbackSequence);\r\n  document.addEventListener('cart:refresh', runFallbackSequence);\r\n  document.addEventListener('cart:rerender', runFallbackSequence);\r\n  document.addEventListener('cart-drawer:open', runFallbackSequence);\r\n  document.addEventListener('product:added', runFallbackSequence);\r\n\r\n  document.addEventListener('click', function (event) {\r\n    if (\r\n      event.target.closest('[name=\"add\"]') ||\r\n      event.target.closest('[data-add-to-cart]') ||\r\n      event.target.closest('.atc_btn_instant') ||\r\n      event.target.closest('#rv-add-to-cart')\r\n    ) {\r\n      runFallbackSequence();\r\n    }\r\n  });\r\n})();"],
  "mappings": "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",
  "names": []
}
