{
  "version": 3,
  "sources": ["/cdn/shop/t/79/assets/sf-bundleimages.js?x=1789182362719"],
  "sourcesContent": ["/* Image strip on bundle cards.\n\n   The bundle builder keeps the shopper on one page, so a card is the only\n   view of a frame they get \u2014 and it showed the first photo only. Every\n   image the product page would show is now on the card: swipe on a phone,\n   arrows on hover on a desktop, with a counter.\n\n   The card's own tap still picks the frame. The arrows stop the event, so\n   browsing photos never adds something to a bundle by accident.\n\n   THE ARROWS ARE NOT CLIPPED, and that took three goes:\n     - .bshell carried overflow:hidden, which could cut the circles against\n       the tile edge. The strip clips its own images, so the shell does not\n       need it at all.\n     - The tile has 5px of padding and absolute positioning is measured\n       from the padding box, so a small inset put the circle over the tile\n       border. They now sit 14px in, clear of it on any width.\n     - A shadow and a solid white fill keep them readable over a photo\n       rather than relying on the tint behind.\n\n   THE ARROWS ANIMATE THE SCROLL THEMSELVES. Two native routes failed:\n   scrollBy({behavior:'smooth'}) is cancelled by scroll-snap-type mandatory,\n   and CSS scroll-behavior:smooth is cancelled when a lazy image further\n   along finishes loading and shifts layout. Both looked like a dead arrow.\n   The tween carries a deadline because requestAnimationFrame pauses in a\n   background tab, which would otherwise strand the strip between photos. */\n(function(){\n\"use strict\";\nvar CSS=\n '.bshell{position:relative}'+\n '.bstrip{display:flex;width:100%;height:100%;overflow-x:auto;scroll-snap-type:x mandatory;'+\n   '-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer}'+\n '.bstrip.sliding{scroll-snap-type:none}'+\n '.bstrip::-webkit-scrollbar{display:none}'+\n '.bstrip img{flex:0 0 100%;width:100%;height:100%;object-fit:contain;'+\n   'scroll-snap-align:start;pointer-events:none}'+\n '.bnav{position:absolute;top:50%;margin-top:-14px;z-index:4;width:28px;height:28px;'+\n   'border-radius:50%;border:0;background:#fff;box-shadow:0 1px 4px rgba(20,26,25,.18);'+\n   'color:#141a19;font-size:15px;line-height:28px;text-align:center;cursor:pointer;'+\n   'opacity:0;transition:opacity .15s;padding:0}'+\n '.bshell:hover .bnav{opacity:1}'+\n '.bnav:focus-visible{opacity:1}'+\n '.bnav.p{left:14px}.bnav.n{right:14px}'+\n '.bcount{position:absolute;right:12px;bottom:12px;z-index:4;font-size:10px;letter-spacing:.06em;'+\n   'background:rgba(255,255,255,.92);border-radius:999px;padding:3px 8px;color:#5d6564;pointer-events:none}'+\n '@media (hover:none){.bnav{display:none}}';\n\nfunction inject(){\n  var s=document.getElementById('sf-bimg-css');\n  if(!s){ s=document.createElement('style'); s.id='sf-bimg-css'; document.head.appendChild(s) }\n  if(s.textContent!==CSS) s.textContent=CSS;\n}\nfunction count(strip){\n  var tag=strip.parentNode.querySelector('.bcount'); if(!tag) return;\n  var n=strip.querySelectorAll('img').length;\n  var i=Math.round(strip.scrollLeft/Math.max(1,strip.clientWidth))+1;\n  tag.textContent=Math.min(Math.max(i,1),n)+' / '+n;\n}\nfunction land(strip, to){\n  strip.scrollLeft=to;\n  strip.classList.remove('sliding');\n  count(strip);\n}\nfunction tween(strip, to){\n  var from=strip.scrollLeft, d=to-from, t0=null, ms=240, done=false;\n  if(d===0){ land(strip,to); return }\n  strip.classList.add('sliding');\n  var deadline=setTimeout(function(){ if(!done){ done=true; land(strip,to) } }, ms+260);\n  function step(ts){\n    if(done) return;\n    if(t0===null) t0=ts;\n    var k=Math.min(1,(ts-t0)/ms);\n    var e = k<0.5 ? 2*k*k : 1-Math.pow(-2*k+2,2)/2;\n    strip.scrollLeft = from + d*e;\n    if(k<1){ requestAnimationFrame(step) }\n    else { done=true; clearTimeout(deadline); land(strip,to) }\n  }\n  requestAnimationFrame(step);\n}\n\nwindow.SFSlide=function(btn, dir, ev){\n  if(ev && ev.stopPropagation) ev.stopPropagation();\n  var shell=btn.parentNode, strip=shell.querySelector('.bstrip');\n  if(!strip) return;\n  var w=strip.clientWidth || 1;\n  var max=Math.max(0, strip.scrollWidth - w);\n  var next=Math.round(strip.scrollLeft/w)*w + dir*w;\n  if(next<0) next=max;\n  if(next>max) next=0;\n  tween(strip, next);\n};\n\nfunction watch(strip){\n  if(strip.dataset.watched) return;\n  strip.dataset.watched='1';\n  var t=null;\n  strip.addEventListener('scroll', function(){\n    if(strip.classList.contains('sliding')) return;\n    clearTimeout(t); t=setTimeout(function(){ count(strip) }, 60);\n  }, {passive:true});\n}\nfunction scan(){\n  inject();\n  var grid=document.getElementById('bGrid'); if(!grid) return;\n  [].slice.call(grid.querySelectorAll('.bstrip')).forEach(watch);\n}\n\ndocument.addEventListener('DOMContentLoaded', function(){\n  var grid=document.getElementById('bGrid'); if(!grid) return;\n  inject(); scan();\n  new MutationObserver(function(){ scan() }).observe(grid,{childList:true});\n});\n})();"],
  "mappings": "CA0BC,UAAU,CACX,aACA,IAAI,IACH,w+BAkBD,SAAS,QAAQ,CACf,IAAI,EAAE,SAAS,eAAe,aAAa,EACvC,IAAI,EAAE,SAAS,cAAc,OAAO,EAAG,EAAE,GAAG,cAAe,SAAS,KAAK,YAAY,CAAC,GACvF,EAAE,cAAc,MAAK,EAAE,YAAY,IACxC,CACA,SAAS,MAAM,MAAM,CACnB,IAAI,IAAI,MAAM,WAAW,cAAc,SAAS,EAAG,GAAI,IACvD,KAAI,EAAE,MAAM,iBAAiB,KAAK,EAAE,OAChC,EAAE,KAAK,MAAM,MAAM,WAAW,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC,EAAE,EACjE,IAAI,YAAY,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAClD,CACA,SAAS,KAAK,MAAO,GAAG,CACtB,MAAM,WAAW,GACjB,MAAM,UAAU,OAAO,SAAS,EAChC,MAAM,KAAK,CACb,CACA,SAAS,MAAM,MAAO,GAAG,CACvB,IAAI,KAAK,MAAM,WAAY,EAAE,GAAG,KAAM,GAAG,KAAM,GAAG,IAAK,KAAK,GAC5D,GAAG,IAAI,EAAE,CAAE,KAAK,MAAM,EAAE,EAAG,MAAO,CAClC,MAAM,UAAU,IAAI,SAAS,EAC7B,IAAI,SAAS,WAAW,UAAU,CAAM,OAAO,KAAK,GAAM,KAAK,MAAM,EAAE,EAAI,EAAG,GAAG,GAAG,EACpF,SAAS,KAAK,GAAG,CACf,GAAG,MACH,CAAG,KAAK,OAAM,GAAG,IACjB,IAAI,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,EAAE,EACvB,EAAI,EAAE,GAAM,EAAE,EAAE,EAAI,EAAE,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,EAC7C,MAAM,WAAa,KAAO,EAAE,EACzB,EAAE,EAAI,sBAAsB,IAAI,GAC5B,KAAK,GAAM,aAAa,QAAQ,EAAG,KAAK,MAAM,EAAE,GACzD,CACA,sBAAsB,IAAI,CAC5B,CAEA,OAAO,QAAQ,SAAS,IAAK,IAAK,GAAG,CAChC,IAAM,GAAG,iBAAiB,GAAG,gBAAgB,EAChD,IAAI,MAAM,IAAI,WAAY,MAAM,MAAM,cAAc,SAAS,EAC7D,GAAI,MACJ,KAAI,EAAE,MAAM,aAAe,EACvB,IAAI,KAAK,IAAI,EAAG,MAAM,YAAc,CAAC,EACrC,KAAK,KAAK,MAAM,MAAM,WAAW,CAAC,EAAE,EAAI,IAAI,EAC7C,KAAK,IAAG,KAAK,KACb,KAAK,MAAK,KAAK,GAClB,MAAM,MAAO,IAAI,EACnB,EAEA,SAAS,MAAM,MAAM,CACnB,GAAG,OAAM,QAAQ,QACjB,OAAM,QAAQ,QAAQ,IACtB,IAAI,EAAE,KACN,MAAM,iBAAiB,SAAU,UAAU,CACtC,MAAM,UAAU,SAAS,SAAS,IACrC,aAAa,CAAC,EAAG,EAAE,WAAW,UAAU,CAAE,MAAM,KAAK,CAAE,EAAG,EAAE,EAC9D,EAAG,CAAC,QAAQ,EAAI,CAAC,EACnB,CACA,SAAS,MAAM,CACb,OAAO,EACP,IAAI,KAAK,SAAS,eAAe,OAAO,EAAO,MAC/C,CAAC,EAAE,MAAM,KAAK,KAAK,iBAAiB,SAAS,CAAC,EAAE,QAAQ,KAAK,CAC/D,CAEA,SAAS,iBAAiB,mBAAoB,UAAU,CACtD,IAAI,KAAK,SAAS,eAAe,OAAO,EAAO,OAC/C,OAAO,EAAG,KAAK,EACf,IAAI,iBAAiB,UAAU,CAAE,KAAK,CAAE,CAAC,EAAE,QAAQ,KAAK,CAAC,UAAU,EAAI,CAAC,EAC1E,CAAC,CACD,GAAG",
  "names": []
}
