PageSourceSearch

https://somnhome.com/cdn/shop/t/221/assets/product-images.js?v=65627153360220065831774866909

js somnhome.com collected 2026-10-10 01:05:53 UTC 7,960 bytes, 2 lines download raw bytes

1(function(){"use strict";function e(){return(document.documentElement.clientWidth||document.body.clientWidth||window.innerWidth)<window.theme.sizes.small}const t="[data-button-arrow]",s="[data-deferred-media-button]",i="model-viewer, video, iframe, button, [href], input, [tabindex]",n="[data-image-id]",o="[data-product-media-list]",d="[data-section-type]",a="slider__arrows",r="is-dragging",h="is-focused",u="media--active",c="media--hidden",l="media--hiding",v="data-active-media",m="data-button-prev",M="data-button-next",g="data-image-id",L="data-media-id",p="data-type",E="data-fader-desktop",b="data-fader-mobile";customElements.get("product-images")||customElements.define("product-images",class extends HTMLElement{constructor(){super(),this.initialized=!1,this.buttons=!1,this.isDown=!1,this.startX=0,this.startY=0,this.scrollLeft=0,this.onButtonArrowClick=e2=>this.buttonArrowClickEvent(e2),this.container=this.closest(d),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleKeyUp=this.handleKeyUp.bind(this),this.productMediaItems=this.querySelectorAll(n),this.productMediaList=this.querySelector(o),this.setHeight=this.setHeight.bind(this),this.toggleEvents=this.toggleEvents.bind(this),this.selectMediaEvent=e2=>this.showMediaOnVariantSelect(e2)}connectedCallback(){Object.keys(this.productMediaItems).length!==1&&(this.productMediaObserver(),this.toggleEvents(),this.listen(),this.setHeight())}disconnectedCallback(){this.unlisten()}listen(){document.addEventListener("theme:resize:width",this.toggleEvents),document.addEventListener("theme:resize:width",this.setHeight),this.addEventListener("theme:media:select",this.selectMediaEvent)}unlisten(){document.removeEventListener("theme:resize:width",this.toggleEvents),document.removeEventListener("theme:resize:width",this.setHeight),this.removeEventListener("theme:media:select",this.selectMediaEvent)}toggleEvents(){const t2=e();t2&&this.hasAttribute(b)||!t2&&this.hasAttribute(E)?this.bindEventListeners():this.unbindEventListeners()}bindEventListeners(){this.initialized||(this.productMediaList.addEventListener("mousedown",this.handleMouseDown),this.productMediaList.addEventListener("mouseleave",this.handleMouseLeave),this.productMediaList.addEventListener("mouseup",this.handleMouseUp),this.productMediaList.addEventListener("mousemove",this.handleMouseMove),this.productMediaList.addEventListener("touchstart",this.handleMouseDown,{passive:!0}),this.productMediaList.addEventListener("touchend",this.handleMouseUp,{passive:!0}),this.productMediaList.addEventListener("touchmove",this.handleMouseMove,{passive:!0}),this.productMediaList.addEventListener("keyup",this.handleKeyUp),this.initArrows(),this.resetScrollPosition(),this.initialized=!0)}unbindEventListeners(){this.initialized&&(this.productMediaList.removeEventListener("mousedown",this.handleMouseDown),this.productMediaList.removeEventListener("mouseleave",this.handleMouseLeave),this.productMediaList.removeEventListener("mouseup",this.handleMouseUp),this.productMediaList.removeEventListener("mousemove",this.handleMouseMove),this.productMediaList.removeEventListener("touchstart",this.handleMouseDown),this.productMediaList.removeEventListener("touchend",this.handleMouseUp),this.productMediaList.removeEventListener("touchmove",this.handleMouseMove),this.productMediaList.removeEventListener("keyup",this.handleKeyUp),this.removeArrows(),this.initialized=!1)}handleMouseDown(e2){this.isDown=!0,this.startX=(e2.pageX||e2.changedTouches[0].screenX)-this.offsetLeft,this.startY=(e2.pageY||e2.changedTouches[0].screenY)-this.offsetTop}handleMouseLeave(){this.isDown&&(this.isDown=!1)}handleMouseUp(e2){const t2=(e2.pageX||e2.changedTouches[0].screenX)-this.offsetLeft,s2=(e2.pageY||e2.changedTouches[0].screenY)-this.offsetTop,i2=t2-this.startX,n2=s2-this.startY,o2=i2>0?1:-1,d2=this.getCurrentMedia().hasAttribute(p)&&this.getCurrentMedia().getAttribute(p)==="image";Math.abs(i2)>10&&Math.abs(i2)>Math.abs(n2)&&d2&&(o2<0?this.showNextImage():this.showPreviousImage()),this.isDown=!1,requestAnimationFrame(()=>{this.classList.remove(r)})}handleMouseMove(){this.isDown&&this.classList.add(r)}handleKeyUp(e2){e2.code==="ArrowLeft"&&this.showPreviousImage(),e2.code==="ArrowRight"&&this.showNextImage()}handleArrowsClickEvent(){this.querySelectorAll(t)?.forEach(e2=>{e2.addEventListener("click",e3=>{e3.preventDefault(),e3.target.hasAttribute(m)&&this.showPreviousImage(),e3.target.hasAttribute(M)&&this.showNextImage()})})}resetScrollPosition(){this.productMediaList.scrollLeft!==0&&(this.productMediaList.scrollLeft=0)}initArrows(){if(!this.buttons.length){const e2=document.createElement("div");e2.classList.add(a),e2.innerHTML=theme.sliderArrows.prev+theme.sliderArrows.next,this.productMediaList.append(e2),this.buttons=this.querySelectorAll(t),this.buttonPrev=this.querySelector(`[${m}]`),this.buttonNext=this.querySelector(`[${M}]`)}this.handleArrowsClickEvent(),this.preloadImageOnArrowHover()}removeArrows(){this.querySelector(`.${a}`)?.remove()}preloadImageOnArrowHover(){this.buttonPrev?.addEventListener("mouseover",()=>{const e2=this.getPreviousMediaId();this.preloadImage(e2)}),this.buttonNext?.addEventListener("mouseover",()=>{const e2=this.getNextMediaId();this.preloadImage(e2)})}preloadImage(e2){this.querySelector(`[${L}="${e2}"] img`)?.setAttribute("loading","eager")}showMediaOnVariantSelect(e2){const t2=e2.detail.id;this.setActiveMedia(t2)}getCurrentMedia(){return this.querySelector(`${n}.${u}`)}getNextMediaId(){let nextElement=this.getCurrentMedia()?.nextElementSibling;for(;nextElement&&nextElement.classList.contains("abz_color_inactive");)nextElement=nextElement.nextElementSibling;if(!nextElement||!nextElement.hasAttribute(g)){for(let i2=0;i2<this.productMediaItems.length;i2++)if(!this.productMediaItems[i2].classList.contains("abz_color_inactive"))return this.productMediaItems[i2].getAttribute(L);return this.querySelector(n)?.getAttribute(L)}return nextElement.getAttribute(L)}getPreviousMediaId(){let prevElement=this.getCurrentMedia()?.previousElementSibling;for(;prevElement&&prevElement.classList.contains("abz_color_inactive");)prevElement=prevElement.previousElementSibling;if(!prevElement||!prevElement.hasAttribute(g)){for(let i2=this.productMediaItems.length-1;i2>=0;i2--)if(!this.productMediaItems[i2].classList.contains("abz_color_inactive"))return this.productMediaItems[i2].getAttribute(L);return this.productMediaItems[this.productMediaItems.length-1]?.getAttribute(L)}return prevElement.getAttribute(L)}showNextImage(){const e2=this.getNextMediaId();this.selectMedia(e2)}showPreviousImage(){const e2=this.getPreviousMediaId();this.selectMedia(e2)}selectMedia(e2){this.dispatchEvent(new CustomEvent("theme:media:select",{detail:{id:e2}}))}setActiveMedia(e2){if(!e2)return;this.setAttribute(v,e2);const t2=this.querySelector(`${n}.${u}`),o2=this.querySelector(`[${L}="${e2}"]`),d2=o2?.querySelector(i),a2=o2.querySelector("deferred-media");t2?.classList.add(l),t2?.classList.remove(u),o2?.classList.remove(l,c),o2?.classList.add(u),a2&&a2.getAttribute("loaded")!==!0&&o2.querySelector(s)?.dispatchEvent(new Event("click",{bubbles:!1})),requestAnimationFrame(()=>{this.setHeight(),document.body.classList.contains(h)&&d2?.focus()})}setHeight(){const e2=this.querySelector(`${n}.${u}`)?.offsetHeight||this.productMediaItems[0]?.offsetHeight;this.style.setProperty("--height",`${e2}px`)}
1productMediaObserver(){this.productMediaItems.forEach(e2=>{e2.addEventListener("transitionend",t2=>{t2.target==e2&&e2.classList.contains(l)&&(e2.classList.remove(l),e2.classList.add(c))}),e2.addEventListener("transitioncancel",t2=>{t2.target==e2&&e2.classList.contains(l)&&(e2.classList.remove(l),e2.classList.add(c))})})}})})();
2//# sourceMappingURL=/cdn/shop/t/221/assets/product-images.js.map?v=65627153360220065831774866909

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.