PageSourceSearch

https://ultimatesetup.com/cdn/shop/t/8/assets/vely-pdp-horizontal-slider.js?v=68882260457978692291791138113

js ultimatesetup.com collected 2026-10-07 01:49:46 UTC 9,498 bytes, 2 lines download raw bytes

1function applyVelyMoneyFormat(cents,format){const value=Number(cents)||0,placeholderMatch=String(format).match(/\{\{\s*(amount(?:_[a-z_]+)?)\s*\}\}/),placeholder=placeholderMatch?placeholderMatch[1]:"amount";let precision=2,thousands=",",decimal=".";switch(placeholder){case"amount_no_decimals":precision=0;break;case"amount_with_comma_separator":thousands=".",decimal=",";break;case"amount_no_decimals_with_comma_separator":precision=0,thousands=".",decimal=",";break;case"amount_with_apostrophe_separator":thousands="'";break;case"amount_no_decimals_with_space_separator":precision=0,thousands=" ";break;case"amount_with_space_separator":thousands=" ",decimal=",";break;case"amount_with_period_and_space_separator":thousands=" ";break}const negative=value<0,base=(Math.abs(value)/100).toFixed(precision),[integerPart,fractionPart=""]=base.split("."),withThousands=integerPart.replace(/\B(?=(\d{3})+(?!\d))/g,thousands),formatted=(negative?"-":"")+withThousands+(precision>0?decimal+fractionPart:"");return String(format).replace(/\{\{\s*amount(?:_[a-z_]+)?\s*\}\}/,formatted)}function initVelyHorizontalSlider(host,config){typeof host._velySliderCleanup=="function"&&(host._velySliderCleanup(),host._velySliderCleanup=null);const slider=host.querySelector(config.sliderSelector),track=host.querySelector(config.trackSelector),slides=[...host.querySelectorAll(config.slideSelector)],nav=host.querySelector(config.navSelector),prev=host.querySelector(config.prevSelector),next=host.querySelector(config.nextSelector);if(!track||slides.length===0)return null;const state={host,slider,track,slides,nav,prev,next,index:0,desktopSlides:Number(config.desktopSlides)||3,mobileSlides:Number(config.mobileSlides)||1.3,showNav:config.showNav!==!1,onResize:null,onPrev:null,onNext:null,onTouchStart:null,onTouchEnd:null};state.slidesVisible=()=>window.matchMedia("(min-width: 768px)").matches?state.desktopSlides:state.mobileSlides,state.stepSize=()=>{const slide=state.slides[0];if(!slide)return 212;const style=getComputedStyle(state.track),gap=parseFloat(style.gap)||12,width=slide.offsetWidth;return width?width+gap:212},state.maxOffset=()=>{const sliderWidth=state.slider?.clientWidth||0,trackWidth=state.track?.scrollWidth||0;return Math.max(0,trackWidth-sliderWidth)},state.maxIndex=()=>{const maxOffset=state.maxOffset(),step=state.stepSize();return maxOffset<=0||step<=0?0:Math.ceil(maxOffset/step-1e-6)},state.update=()=>{const maxOffset=state.maxOffset(),max=state.maxIndex();state.index>max&&(state.index=max),state.index<0&&(state.index=0);const offset=Math.min(state.index*state.stepSize(),maxOffset);state.track.style.transform=`translate3d(-${offset}px, 0, 0)`;const needsNav=state.showNav&&maxOffset>1;state.nav&&(state.nav.hidden=!needsNav),state.prev&&(state.prev.disabled=state.index<=0),state.next&&(state.next.disabled=state.index>=max)},state.onPrev=()=>{state.index>0&&(state.index-=1,state.update())},state.onNext=()=>{state.index<state.maxIndex()&&(state.index+=1,state.update())},state.prev?.addEventListener("click",state.onPrev),state.next?.addEventListener("click",state.onNext);let touchStartX=0;return state.onTouchStart=e=>{touchStartX=e.changedTouches[0].screenX},state.onTouchEnd=e=>{const dx=e.changedTouches[0].screenX-touchStartX;Math.abs(dx)<40||(dx<0&&state.index<state.maxIndex()?(state.index+=1,state.update()):dx>0&&state.index>0&&(state.index-=1,state.update()))},state.slider?.addEventListener("touchstart",state.onTouchStart,{passive:!0}),state.slider?.addEventListener("touchend",state.onTouchEnd,{passive:!0}),state.onResize=()=>state.update(),window.addEventListener("resize",state.onResize,{passive:!0}),typeof ResizeObserver=="function"&&(state.resizeObserver=new ResizeObserver(()=>state.update()),state.resizeObserver.observe(state.slider||state.host)),state.update(),window.requestAnimationFrame(()=>state.update()),host._velySliderCleanup=()=>{window.removeEventListener("resize",state.onResize),state.resizeObserver?.disconnect(),state.prev?.removeEventListener("click",state.onPrev),state.next?.removeEventListener("click",state.onNext),state.slider?.removeEventListener("touchstart",state.onTouchStart),state.slider?.removeEventListener("touchend",state.onTouchEnd)},state}class VelyUgcGallery extends HTMLElement{connectedCallback(){if(this._source=this.dataset.source||"metafield",this._sliderState=null,this._source==="app"){this._initAppMode();return}this._sliderState=initVelyHorizontalSlider(this,{sliderSelector:"[data-ugc-slider]",trackSelector:"[data-ugc-track]",slideSelector:"[data-ugc-slide]",navSelector:"[data-ugc-nav]",prevSelector:"[data-ugc-prev]",nextSelector:"[data-ugc-next]",desktopSlides:Number(this.dataset.desktopSlides)||3,mobileSlides:Number(this.dataset.mobileSlides)||1.3,showNav:this.dataset.showNav!=="false"}),this._sliderState||this.remove()}disconnectedCallback(){typeof this._velySliderCleanup=="function"&&(this._velySliderCleanup(),this._velySliderCleanup=null),this._sliderState=null}_initAppMode(){const slot=this.querySelector("[data-ugc-app-slot]"),slider=this.querySelector("[data-ugc-slider]");if(!(slot&&(slot.children.length>0||(slot.textContent||"").trim().length>0))){this.remove();return}slider&&(slider.hidden=!0);const nav=this.querySelector("[data-ugc-nav]");nav&&(nav.hidden=!0)}}class VelyPdpAccessories extends HTMLElement{connectedCallback(){this._context=this.dataset.context||"pdp",this._initSlider(),this._context==="cart"&&(this._bindCartCardUi(),this._observeInjectedSlides())}disconnectedCallback(){this._observer?.disconnect(),typeof this._velySliderCleanup=="function"&&(this._velySliderCleanup(),this._velySliderCleanup=null),this._sliderState=null}_sliderConfig(){return{sliderSelector:"[data-acc-slider]",trackSelector:"[data-acc-track]",slideSelector:"[data-acc-slide]",navSelector:"[data-acc-nav]",prevSelector:"[data-acc-prev]",nextSelector:"[data-acc-next]",desktopSlides:Number(this.dataset.desktopSlides)||3,mobileSlides:Number(this.dataset.mobileSlides)||1.3,showNav:this.dataset.showNav!=="false"}}_initSlider(){this._sliderState=initVelyHorizontalSlider(this,this._sliderConfig())}_observeInjectedSlides(){const track=this.querySelector("[data-acc-track]");!track||this._observer||(this._observer=new MutationObserver(()=>{this.querySelectorAll("[data-acc-slide]").length!==0&&(this._initSlider(),this._bindCartCardUi())}),this._observer.observe(track,{childList:!0}))}_bindCartCardUi(){this.querySelectorAll("[data-acc-card]").forEach(card=>{this._syncCartCard(card)}),this.querySelectorAll("[data-acc-swatch]").forEach(swatchBtn=>{swatchBtn.dataset.velyAccSwatchBound!=="true"&&(swatchBtn.dataset.velyAccSwatchBound="true",swatchBtn.addEventListener("click",event=>{event.preventDefault(),event.stopPropagation();const card=swatchBtn.closest("[data-acc-card]");card&&this._updateCartVariant(card,swatchBtn),requestAnimationFrame(()=>swatchBtn.blur())}))})}_parsePercent(value){if(value==null||value==="")return 0;const num=Number(String(value).trim().replace(/%/g,""));return!Number.isFinite(num)||num<=0?0:Math.round(num)}_formatMoney(cents){const format=this.dataset.moneyFormat||window.themeGlobalVariables?.settings?.money_format||window.cartStrings?.money_format||document.querySelector("[data-money-format]")?.getAttribute("data-money-format")||"{{amount}}";return applyVelyMoneyFormat(cents,format)}_syncCartCard(card){card.classList.remove("is-selected");const checkbox=card.querySelector(".vely-pdp-accessory__checkbox");checkbox&&card.classList.toggle("is-unavailable",checkbox.disabled)}_updateCartVariant(card,swatchBtn){const checkbox=card.querySelector(".vely-pdp-accessory__checkbox"),variantId=swatchBtn.dataset.variantId,price=Number(swatchBtn.dataset.price)||0,compareAt=Number(swatchBtn.dataset.compareAt)||price,available=String(swatchBtn.dataset.available).toLowerCase()!=="false",salePercent=this._parsePercent(swatchBtn.dataset.salePercent),currentPrice
1=card.querySelector("[data-acc-price]"),comparePrice=card.querySelector("[data-acc-compare]"),imageEl=card.querySelector(".vely-pdp-accessory__img");if(checkbox&&(checkbox.value=variantId,checkbox.dataset.variantId=variantId,checkbox.dataset.price=String(price),checkbox.dataset.compareAt=String(compareAt),checkbox.dataset.salePercent=String(salePercent),checkbox.dataset.available=available?"true":"false",checkbox.disabled=!available,available||(checkbox.checked=!1)),imageEl&&swatchBtn.dataset.imageUrl&&(imageEl.src=swatchBtn.dataset.imageUrl,swatchBtn.dataset.imageAlt&&(imageEl.alt=swatchBtn.dataset.imageAlt)),currentPrice&&(currentPrice.textContent=this._formatMoney(price)),comparePrice){const hasCompare=compareAt>price;comparePrice.textContent=hasCompare?this._formatMoney(compareAt):"",comparePrice.classList.toggle("hidden",!hasCompare)}const saleBadge=card.querySelector("[data-acc-sale-badge]");saleBadge&&(saleBadge.textContent=salePercent>0?`-${salePercent}%`:"",saleBadge.hidden=salePercent<=0,saleBadge.classList.toggle("hidden",salePercent<=0)),card.querySelectorAll("[data-acc-swatch]").forEach(el=>{const isCurrent=el===swatchBtn;el.classList.toggle("is-selected",isCurrent),el.setAttribute("aria-checked",isCurrent?"true":"false")}),this._syncCartCard(card)}}customElements.get("vely-ugc-gallery")||customElements.define("vely-ugc-gallery",VelyUgcGallery),customElements.get("vely-pdp-accessories")||customElements.define("vely-pdp-accessories",VelyPdpAccessories);
2//# sourceMappingURL=/cdn/shop/t/8/assets/vely-pdp-horizontal-slider.js.map?v=68882260457978692291791138113

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.