{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/offsure-mobile-drawer.js?revision=20260918"],
  "sourcesContent": ["/**\n * Offsure mobile navigation drawer (right-side sheet).\n * Scope: mobile drawer only \u2014 does not touch the desktop mega menu.\n *\n * Behavior:\n *  - Staggered entrance for drawer rows (transform + opacity, 30ms step, 320ms ease-out),\n *    skipped under prefers-reduced-motion (fade only).\n *  - Close via Escape, backdrop click, close button, and swipe-right gesture.\n *  - Focus trap while open; body scroll lock; focus returns to the trigger on close.\n */\n(function () {\n  var STAGGER_STEP_MS = 30;\n  var ITEM_DUR_MS = 320;\n  var STAGGER_MAX_STEPS = 4; // cap total stagger delay so late rows don't lag noticeably\n\n  function init(root) {\n    var drawer = root.querySelector('[data-ohd2-sheet]');\n    var scrim = root.querySelector('[data-ohd2-scrim]');\n    if (!drawer || !scrim || root.__ohd2) return;\n\n    var openers = root.querySelectorAll('[data-ohd-open]');\n    var closers = root.querySelectorAll('[data-ohd-close]');\n    var staggerItems = Array.prototype.slice.call(drawer.querySelectorAll('[data-ohd2-stagger]'));\n    var lastFocus = null;\n    var scrollLockY = 0;\n    var isOpen = false;\n    var savedPageStyles = null;\n    var desktop = window.matchMedia('(min-width: 901px)');\n\n    function reducedMotion() {\n      return window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    }\n\n    function lockPage() {\n      scrollLockY = window.scrollY || window.pageYOffset || 0;\n      savedPageStyles = {htmlOverflow: document.documentElement.style.overflow, overflow: document.body.style.overflow, position: document.body.style.position, top: document.body.style.top, width: document.body.style.width};\n      document.documentElement.style.overflow = 'hidden';\n      document.body.style.overflow = 'hidden';\n      document.body.style.position = 'fixed';\n      document.body.style.top = '-' + scrollLockY + 'px';\n      document.body.style.width = '100%';\n    }\n\n    function unlockPage() {\n      var previous = savedPageStyles || {};\n      document.documentElement.style.overflow = previous.htmlOverflow || '';\n      ['overflow', 'position', 'top', 'width'].forEach(function (key) { document.body.style[key] = previous[key] || ''; });\n      savedPageStyles = null;\n      window.scrollTo(0, scrollLockY);\n    }\n\n    function focusables() {\n      return Array.prototype.filter.call(drawer.querySelectorAll(\n        'a[href], button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n      ), function (element) { return element.getClientRects().length && !element.closest('[inert]'); });\n    }\n\n    function playStagger() {\n      if (reducedMotion()) { resetStagger(); return; }\n      staggerItems.forEach(function (el) {\n        el.style.transition = 'none';\n        el.style.transform = 'translateX(14px)';\n        el.style.opacity = '0';\n      });\n      // One layout read for the whole group, rather than a reflow per row.\n      void drawer.offsetHeight;\n      requestAnimationFrame(function () {\n        if (!isOpen) return;\n        staggerItems.forEach(function (el, i) {\n          var delay = Math.min(i, STAGGER_MAX_STEPS) * STAGGER_STEP_MS;\n          el.style.transition = 'transform ' + ITEM_DUR_MS + 'ms cubic-bezier(.23,1,.32,1) ' + delay + 'ms, opacity ' + ITEM_DUR_MS + 'ms ease-out ' + delay + 'ms';\n          el.style.transform = 'none';\n          el.style.opacity = '1';\n        });\n      });\n    }\n\n    function resetStagger() {\n      staggerItems.forEach(function (el) {\n        el.style.transition = 'none';\n        el.style.transform = '';\n        el.style.opacity = '';\n      });\n    }\n\n    function open() {\n      if (isOpen || desktop.matches) return;\n      isOpen = true;\n      lastFocus = document.activeElement;\n      drawer.removeAttribute('inert');\n      drawer.setAttribute('aria-hidden', 'false');\n      resetStagger();\n      drawer.classList.add('open');\n      scrim.classList.add('open');\n      lockPage();\n      openers.forEach(function (b) { b.setAttribute('aria-expanded', 'true'); });\n      requestAnimationFrame(function () {\n        if (!isOpen) return;\n        playStagger();\n        var f = focusables();\n        if (f.length) f[0].focus();\n      });\n      document.addEventListener('keydown', onKeydown);\n      scrim.addEventListener('click', close);\n      drawer.addEventListener('touchstart', onTouchStart, { passive: true });\n      drawer.addEventListener('touchmove', onTouchMove, { passive: true });\n      drawer.addEventListener('touchend', onTouchEnd, { passive: true });\n      drawer.addEventListener('touchcancel', onTouchCancel, { passive: true });\n    }\n\n    function close() {\n      if (!isOpen) return;\n      isOpen = false;\n      drawer.classList.remove('open');\n      scrim.classList.remove('open');\n      unlockPage();\n      drawer.setAttribute('aria-hidden', 'true');\n      drawer.setAttribute('inert', '');\n      openers.forEach(function (b) { b.setAttribute('aria-expanded', 'false'); });\n      document.removeEventListener('keydown', onKeydown);\n      scrim.removeEventListener('click', close);\n      drawer.removeEventListener('touchstart', onTouchStart);\n      drawer.removeEventListener('touchmove', onTouchMove);\n      drawer.removeEventListener('touchend', onTouchEnd);\n      drawer.removeEventListener('touchcancel', onTouchCancel);\n      onTouchCancel();\n      var toFocus = lastFocus || (openers.length ? openers[0] : null);\n      if (toFocus && toFocus.getClientRects().length) toFocus.focus({ preventScroll: true });\n    }\n\n    function onKeydown(e) {\n      if (e.key === 'Escape') { e.preventDefault(); close(); return; }\n      if (e.key !== 'Tab') return;\n      var f = focusables();\n      if (!f.length) return;\n      var first = f[0], last = f[f.length - 1];\n      if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }\n      else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }\n    }\n\n    desktop.addEventListener('change', function () { if (desktop.matches) close(); });\n    // Only reset a restored page; initial image loading must not close a menu the shopper just opened.\n    window.addEventListener('pageshow', function (event) { if (event.persisted && isOpen) close(); });\n\n    // Swipe-right-to-close gesture\n    var touchStartX = 0, touchStartY = 0, touchDX = 0, touching = false;\n    function onTouchStart(e) {\n      if (!e.touches || e.touches.length !== 1) return;\n      // Horizontal swatch browsing should not drag the whole menu.\n      if (e.target.closest('.ohd2-colorscroll, input, textarea')) return;\n      touching = true;\n      touchStartX = e.touches[0].clientX;\n      touchStartY = e.touches[0].clientY;\n      touchDX = 0;\n      drawer.style.transition = 'none';\n    }\n    function onTouchMove(e) {\n      if (!touching || !e.touches || e.touches.length !== 1) return;\n      var dx = e.touches[0].clientX - touchStartX;\n      var dy = e.touches[0].clientY - touchStartY;\n      if (Math.abs(dy) > Math.abs(dx) && Math.abs(dy) > 10) { onTouchCancel(); return; }\n      touchDX = Math.max(0, dx); // only allow rightward drag (toward close)\n      drawer.style.transform = 'translateX(' + touchDX + 'px)';\n    }\n    function onTouchEnd() {\n      if (!touching) return;\n      touching = false;\n      drawer.style.transition = '';\n      drawer.style.transform = '';\n      if (touchDX > 90) {\n        close();\n      }\n      touchDX = 0;\n    }\n\n    function onTouchCancel() {\n      touching = false; touchDX = 0;\n      drawer.style.transition = ''; drawer.style.transform = '';\n    }\n\n    openers.forEach(function (b) { b.addEventListener('click', open); });\n    closers.forEach(function (b) { b.addEventListener('click', close); });\n\n    root.__ohd2 = { open: open, close: close };\n  }\n\n  document.querySelectorAll('[data-ohd2-root]').forEach(init);\n})();\n"],
  "mappings": "CAUC,UAAY,CACX,IAAI,gBAAkB,GAClB,YAAc,IACd,kBAAoB,EAExB,SAAS,KAAK,KAAM,CAClB,IAAI,OAAS,KAAK,cAAc,mBAAmB,EAC/C,MAAQ,KAAK,cAAc,mBAAmB,EAClD,GAAI,CAAC,QAAU,CAAC,OAAS,KAAK,OAAQ,OAEtC,IAAI,QAAU,KAAK,iBAAiB,iBAAiB,EACjD,QAAU,KAAK,iBAAiB,kBAAkB,EAClD,aAAe,MAAM,UAAU,MAAM,KAAK,OAAO,iBAAiB,qBAAqB,CAAC,EACxF,UAAY,KACZ,YAAc,EACd,OAAS,GACT,gBAAkB,KAClB,QAAU,OAAO,WAAW,oBAAoB,EAEpD,SAAS,eAAgB,CACvB,OAAO,OAAO,YAAc,OAAO,WAAW,kCAAkC,EAAE,OACpF,CAEA,SAAS,UAAW,CAClB,YAAc,OAAO,SAAW,OAAO,aAAe,EACtD,gBAAkB,CAAC,aAAc,SAAS,gBAAgB,MAAM,SAAU,SAAU,SAAS,KAAK,MAAM,SAAU,SAAU,SAAS,KAAK,MAAM,SAAU,IAAK,SAAS,KAAK,MAAM,IAAK,MAAO,SAAS,KAAK,MAAM,KAAK,EACxN,SAAS,gBAAgB,MAAM,SAAW,SAC1C,SAAS,KAAK,MAAM,SAAW,SAC/B,SAAS,KAAK,MAAM,SAAW,QAC/B,SAAS,KAAK,MAAM,IAAM,IAAM,YAAc,KAC9C,SAAS,KAAK,MAAM,MAAQ,MAC9B,CAEA,SAAS,YAAa,CACpB,IAAI,SAAW,iBAAmB,CAAC,EACnC,SAAS,gBAAgB,MAAM,SAAW,SAAS,cAAgB,GACnE,CAAC,WAAY,WAAY,MAAO,OAAO,EAAE,QAAQ,SAAU,IAAK,CAAE,SAAS,KAAK,MAAM,GAAG,EAAI,SAAS,GAAG,GAAK,EAAI,CAAC,EACnH,gBAAkB,KAClB,OAAO,SAAS,EAAG,WAAW,CAChC,CAEA,SAAS,YAAa,CACpB,OAAO,MAAM,UAAU,OAAO,KAAK,OAAO,iBACxC,yFACF,EAAG,SAAU,QAAS,CAAE,OAAO,QAAQ,eAAe,EAAE,QAAU,CAAC,QAAQ,QAAQ,SAAS,CAAG,CAAC,CAClG,CAEA,SAAS,aAAc,CACrB,GAAI,cAAc,EAAG,CAAE,aAAa,EAAG,MAAQ,CAC/C,aAAa,QAAQ,SAAU,GAAI,CACjC,GAAG,MAAM,WAAa,OACtB,GAAG,MAAM,UAAY,mBACrB,GAAG,MAAM,QAAU,GACrB,CAAC,EAEI,OAAO,aACZ,sBAAsB,UAAY,CAC3B,QACL,aAAa,QAAQ,SAAU,GAAI,EAAG,CACpC,IAAI,MAAQ,KAAK,IAAI,EAAG,iBAAiB,EAAI,gBAC7C,GAAG,MAAM,WAAa,aAAe,YAAc,gCAAkC,MAAQ,eAAiB,YAAc,eAAiB,MAAQ,KACrJ,GAAG,MAAM,UAAY,OACrB,GAAG,MAAM,QAAU,GACrB,CAAC,CACH,CAAC,CACH,CAEA,SAAS,cAAe,CACtB,aAAa,QAAQ,SAAU,GAAI,CACjC,GAAG,MAAM,WAAa,OACtB,GAAG,MAAM,UAAY,GACrB,GAAG,MAAM,QAAU,EACrB,CAAC,CACH,CAEA,SAAS,MAAO,CACV,QAAU,QAAQ,UACtB,OAAS,GACT,UAAY,SAAS,cACrB,OAAO,gBAAgB,OAAO,EAC9B,OAAO,aAAa,cAAe,OAAO,EAC1C,aAAa,EACb,OAAO,UAAU,IAAI,MAAM,EAC3B,MAAM,UAAU,IAAI,MAAM,EAC1B,SAAS,EACT,QAAQ,QAAQ,SAAU,EAAG,CAAE,EAAE,aAAa,gBAAiB,MAAM,CAAG,CAAC,EACzE,sBAAsB,UAAY,CAChC,GAAK,OACL,aAAY,EACZ,IAAI,EAAI,WAAW,EACf,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAC3B,CAAC,EACD,SAAS,iBAAiB,UAAW,SAAS,EAC9C,MAAM,iBAAiB,QAAS,KAAK,EACrC,OAAO,iBAAiB,aAAc,aAAc,CAAE,QAAS,EAAK,CAAC,EACrE,OAAO,iBAAiB,YAAa,YAAa,CAAE,QAAS,EAAK,CAAC,EACnE,OAAO,iBAAiB,WAAY,WAAY,CAAE,QAAS,EAAK,CAAC,EACjE,OAAO,iBAAiB,cAAe,cAAe,CAAE,QAAS,EAAK,CAAC,EACzE,CAEA,SAAS,OAAQ,CACf,GAAK,OACL,QAAS,GACT,OAAO,UAAU,OAAO,MAAM,EAC9B,MAAM,UAAU,OAAO,MAAM,EAC7B,WAAW,EACX,OAAO,aAAa,cAAe,MAAM,EACzC,OAAO,aAAa,QAAS,EAAE,EAC/B,QAAQ,QAAQ,SAAU,EAAG,CAAE,EAAE,aAAa,gBAAiB,OAAO,CAAG,CAAC,EAC1E,SAAS,oBAAoB,UAAW,SAAS,EACjD,MAAM,oBAAoB,QAAS,KAAK,EACxC,OAAO,oBAAoB,aAAc,YAAY,EACrD,OAAO,oBAAoB,YAAa,WAAW,EACnD,OAAO,oBAAoB,WAAY,UAAU,EACjD,OAAO,oBAAoB,cAAe,aAAa,EACvD,cAAc,EACd,IAAI,QAAU,YAAc,QAAQ,OAAS,QAAQ,CAAC,EAAI,MACtD,SAAW,QAAQ,eAAe,EAAE,QAAQ,QAAQ,MAAM,CAAE,cAAe,EAAK,CAAC,EACvF,CAEA,SAAS,UAAU,EAAG,CACpB,GAAI,EAAE,MAAQ,SAAU,CAAE,EAAE,eAAe,EAAG,MAAM,EAAG,MAAQ,CAC/D,GAAI,EAAE,MAAQ,MACd,KAAI,EAAI,WAAW,EACnB,GAAK,EAAE,OACP,KAAI,MAAQ,EAAE,CAAC,EAAG,KAAO,EAAE,EAAE,OAAS,CAAC,EACnC,EAAE,UAAY,SAAS,gBAAkB,OAAS,EAAE,eAAe,EAAG,KAAK,MAAM,GAC5E,CAAC,EAAE,UAAY,SAAS,gBAAkB,OAAQ,EAAE,eAAe,EAAG,MAAM,MAAM,IAC7F,CAEA,QAAQ,iBAAiB,SAAU,UAAY,CAAM,QAAQ,SAAS,MAAM,CAAG,CAAC,EAEhF,OAAO,iBAAiB,WAAY,SAAU,MAAO,CAAM,MAAM,WAAa,QAAQ,MAAM,CAAG,CAAC,EAGhG,IAAI,YAAc,EAAG,YAAc,EAAG,QAAU,EAAG,SAAW,GAC9D,SAAS,aAAa,EAAG,CACnB,CAAC,EAAE,SAAW,EAAE,QAAQ,SAAW,GAEnC,EAAE,OAAO,QAAQ,oCAAoC,IACzD,SAAW,GACX,YAAc,EAAE,QAAQ,CAAC,EAAE,QAC3B,YAAc,EAAE,QAAQ,CAAC,EAAE,QAC3B,QAAU,EACV,OAAO,MAAM,WAAa,OAC5B,CACA,SAAS,YAAY,EAAG,CACtB,GAAI,GAAC,UAAY,CAAC,EAAE,SAAW,EAAE,QAAQ,SAAW,GACpD,KAAI,GAAK,EAAE,QAAQ,CAAC,EAAE,QAAU,YAC5B,GAAK,EAAE,QAAQ,CAAC,EAAE,QAAU,YAChC,GAAI,KAAK,IAAI,EAAE,EAAI,KAAK,IAAI,EAAE,GAAK,KAAK,IAAI,EAAE,EAAI,GAAI,CAAE,cAAc,EAAG,MAAQ,CACjF,QAAU,KAAK,IAAI,EAAG,EAAE,EACxB,OAAO,MAAM,UAAY,cAAgB,QAAU,MACrD,CACA,SAAS,YAAa,CACf,WACL,SAAW,GACX,OAAO,MAAM,WAAa,GAC1B,OAAO,MAAM,UAAY,GACrB,QAAU,IACZ,MAAM,EAER,QAAU,EACZ,CAEA,SAAS,eAAgB,CACvB,SAAW,GAAO,QAAU,EAC5B,OAAO,MAAM,WAAa,GAAI,OAAO,MAAM,UAAY,EACzD,CAEA,QAAQ,QAAQ,SAAU,EAAG,CAAE,EAAE,iBAAiB,QAAS,IAAI,CAAG,CAAC,EACnE,QAAQ,QAAQ,SAAU,EAAG,CAAE,EAAE,iBAAiB,QAAS,KAAK,CAAG,CAAC,EAEpE,KAAK,OAAS,CAAE,KAAM,KAAM,MAAO,KAAM,CAC3C,CAEA,SAAS,iBAAiB,kBAAkB,EAAE,QAAQ,IAAI,CAC5D,GAAG",
  "names": []
}
