{
  "version": 3,
  "sources": ["/cdn/shop/t/19/assets/rp-tap-scroll-guard.js?rptapscroll=20260922a"],
  "sourcesContent": ["/**\n * Mobile reco rails only: a swipe on a product card scrolls the page,\n * a short tap still opens the product. Never intercept header, search,\n * account, cart, pills, or any non-card tap.\n * fingerprint: rptapscroll=20260922a\n */\n(function rpTapScrollGuard() {\n  'use strict';\n\n  if (window.__rpTapScrollGuard) return;\n  window.__rpTapScrollGuard = 1;\n\n  var TAP_PX = 12;\n  var SCROLL_PX = 4;\n  var CLEAR_MS = 400;\n  var CARD_SEL = [\n    '.rp-txp__col-link',\n    '.rp-txp__col-see',\n    '.rp-txp__col-cta',\n    '.rp-txp__col-card a[href]',\n    '.rp-cross-sell__card-link',\n    '.rp-cross-sell__voir',\n    '.rp-cross-sell__item a[href]',\n    '.rp-cross-sell__atc',\n    '.rp-txp__col-atc',\n    '.product-card__link',\n    'product-card a[href]',\n    '.collection-card a[href]',\n    '.resource-card a[href]',\n    '.royal-pop-colors__card-link',\n    '[data-rp-color-card] a[href]',\n    '.bracelet-type-menu__card-link',\n  ].join(',');\n\n  var tracking = false;\n  var moved = false;\n  var pointerType = '';\n  var startX = 0;\n  var startY = 0;\n  var startPageY = 0;\n  var startRailX = 0;\n  var rail = null;\n  var lastCard = null;\n  var clearTimer = 0;\n  var suppressUntil = 0;\n\n  function cardFrom(el) {\n    if (!el || !el.closest) return null;\n    if (el.closest('header, header-component, header-drawer, header-actions, .header, .header__row, .header-actions, search-button, predictive-search, cart-drawer-component, shopify-account')) {\n      return null;\n    }\n    return el.closest(CARD_SEL);\n  }\n\n  function currentPageY() {\n    return window.scrollY || window.pageYOffset || 0;\n  }\n\n  function armSuppress() {\n    moved = true;\n    suppressUntil = Date.now() + CLEAR_MS;\n  }\n\n  function markIfFar(x, y) {\n    if (!tracking) return;\n    if (Math.abs(x - startX) > TAP_PX || Math.abs(y - startY) > TAP_PX) armSuppress();\n    if (Math.abs(currentPageY() - startPageY) > SCROLL_PX) armSuppress();\n    if (rail && Math.abs(rail.scrollLeft - startRailX) > SCROLL_PX) armSuppress();\n  }\n\n  function beginTrack(card, x, y, type) {\n    window.clearTimeout(clearTimer);\n    tracking = true;\n    moved = false;\n    // A fresh touch must not inherit the previous swipe suppression window.\n    suppressUntil = 0;\n    pointerType = type || '';\n    startX = x;\n    startY = y;\n    startPageY = currentPageY();\n    lastCard = card;\n    rail = card.closest(\n      '[data-rp-col-track], .rp-txp__col-grid, .rp-cross-sell__list, [data-rp-col-rail]'\n    );\n    startRailX = rail ? rail.scrollLeft : 0;\n  }\n\n  function endPointer(e) {\n    if (!tracking) return;\n    if (e && e.clientX != null) markIfFar(e.clientX, e.clientY);\n    tracking = false;\n    window.clearTimeout(clearTimer);\n    clearTimer = window.setTimeout(function () {\n      moved = false;\n      pointerType = '';\n      rail = null;\n      lastCard = null;\n    }, CLEAR_MS);\n  }\n\n  document.addEventListener(\n    'pointerdown',\n    function (e) {\n      if (e.isPrimary === false) return;\n      if (e.button != null && e.button !== 0) return;\n      var card = cardFrom(e.target);\n      if (!card) {\n        tracking = false;\n        moved = false;\n        return;\n      }\n      beginTrack(card, e.clientX, e.clientY, e.pointerType || '');\n    },\n    { capture: true, passive: true }\n  );\n\n  document.addEventListener(\n    'touchstart',\n    function (e) {\n      if (!e.touches || !e.touches[0]) return;\n      var card = cardFrom(e.target);\n      if (!card) {\n        tracking = false;\n        moved = false;\n        return;\n      }\n      beginTrack(card, e.touches[0].clientX, e.touches[0].clientY, 'touch');\n    },\n    { capture: true, passive: true }\n  );\n\n  document.addEventListener(\n    'touchmove',\n    function (e) {\n      if (!tracking || !e.touches || !e.touches[0]) return;\n      markIfFar(e.touches[0].clientX, e.touches[0].clientY);\n    },\n    { capture: true, passive: true }\n  );\n\n  document.addEventListener(\n    'pointermove',\n    function (e) {\n      if (!tracking || e.isPrimary === false) return;\n      markIfFar(e.clientX, e.clientY);\n    },\n    { capture: true, passive: true }\n  );\n\n  document.addEventListener(\n    'touchend',\n    function (e) {\n      if (!tracking) return;\n      var t = (e.changedTouches && e.changedTouches[0]) || null;\n      if (t) markIfFar(t.clientX, t.clientY);\n      if (moved && e.cancelable) e.preventDefault();\n      endPointer(t);\n    },\n    { capture: true, passive: false }\n  );\n\n  document.addEventListener('pointerup', endPointer, { capture: true, passive: true });\n  document.addEventListener(\n    'pointercancel',\n    function (e) {\n      if (tracking) moved = true;\n      endPointer(e);\n    },\n    { capture: true, passive: true }\n  );\n\n  document.addEventListener(\n    'scroll',\n    function () {\n      if (tracking) armSuppress();\n    },\n    { capture: true, passive: true }\n  );\n\n  document.addEventListener(\n    'click',\n    function (e) {\n      var card = cardFrom(e.target);\n      if (!card || card !== lastCard) return;\n      if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\n      if (pointerType === 'mouse' && !moved) return;\n      if (!moved && Date.now() >= suppressUntil) return;\n      e.preventDefault();\n      e.stopPropagation();\n      if (e.stopImmediatePropagation) e.stopImmediatePropagation();\n    },\n    true\n  );\n})();\n"],
  "mappings": "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",
  "names": []
}
