PageSourceSearch

https://www.batterytender.com/cdn/shop/t/31/assets/custom-slider-a…?v=61078117306514713131785613197

js batterytender.com collected 2026-09-25 18:57:10 UTC 11,939 bytes, 2 lines download raw bytes

1$(document).ready(()=>{gsap.registerPlugin(ScrollTrigger);const initGsapAndLenis=()=>{const lenis=new Lenis;lenis.on("scroll",()=>{ScrollTrigger.update()}),gsap.ticker.add(time=>{lenis.raf(time*1e3)}),$(window).scrollTop(0),ScrollTrigger.refresh()},customCarousel=()=>{const WIDTH_MODE="100vw";function applySliderWidth($root){const $wrap=$root;WIDTH_MODE==="100vw"?$wrap.css({"--slider-w":"100vw","--slider-max":"100vw"}):WIDTH_MODE==="100%"?$wrap.css({"--slider-w":"100%","--slider-max":"100%"}):$wrap.css({"--slider-w":"100%","--slider-max":"1200px"})}function preloadSlides($slides){$slides.find("img").each((_,img)=>{img&&img.decode&&img.decode().catch(()=>{})})}function cloneCenterMetaToArc($root,$slides,current){const $live=$root.find(".sbv-liveMeta"),$src=$slides.eq(current).find(".sbv-meta"),$kicker=$src.find(".sbv-kicker, .kicker").first(),$name=$src.find(".sbv-name, .name").first(),$cta=$src.find(".sbv-cta, .cta").first(),frag=document.createDocumentFragment();if($kicker.length){const k=document.createElement("div");k.className="sbv-kicker",k.textContent=$kicker.text(),frag.appendChild(k)}if($name.length){const n=document.createElement("div");n.className="sbv-name",n.textContent=$name.text(),frag.appendChild(n)}if($cta.length){const a=document.createElement("a");a.className="sbv-cta",a.href=$cta.attr("href")||"#",$cta.contents().each(function(){a.appendChild(this.cloneNode(!0))}),frag.appendChild(a)}$live.empty().append(frag)}function updateArcSideNames($root,$slides,current,LOOP){const count=$slides.length,leftIndex=LOOP?(current-1+count)%count:current-1,rightIndex=LOOP?(current+1)%count:current+1,$left=$root.find(".sbv-sideLabel--left"),$right=$root.find(".sbv-sideLabel--right");if(leftIndex>=0){const leftName=$slides.eq(leftIndex).find(".sbv-meta .sbv-name, .sbv-meta .name").first().text().trim();leftName?$left.text(leftName).css({visibility:"visible",opacity:1}):$left.css({visibility:"hidden",opacity:0}).text("")}else $left.css({visibility:"hidden",opacity:0}).text("");if(rightIndex<=count-1){const rightName=$slides.eq(rightIndex).find(".sbv-meta .sbv-name, .sbv-meta .name").first().text().trim();rightName?$right.text(rightName).css({visibility:"visible",opacity:1}):$right.css({visibility:"hidden",opacity:0}).text("")}else $right.css({visibility:"hidden",opacity:0}).text("")}function updateDotVisibility($root,current,count,LOOP){const $dotPrev=$root.find(".sbv-dotPrev"),$dotNext=$root.find(".sbv-dotNext");if(LOOP){$dotPrev.removeClass("sbv-hidden"),$dotNext.removeClass("sbv-hidden");return}$dotPrev.toggleClass("sbv-hidden",current===0),$dotNext.toggleClass("sbv-hidden",current===count-1)}$(".sbv-wrap").each(function(){const $root=$(this),$slider=$root.find(".sbv-slider"),$track=$slider.find(".sbv-track"),$slides=$slider.find(".sbv-slide"),$prevBtn=$root.find(".sbv-prev"),$nextBtn=$root.find(".sbv-next"),$dotPrev=$root.find(".sbv-dotPrev"),$dotNext=$root.find(".sbv-dotNext"),$dotCenter=$root.find(".sbv-dotCenter"),$currentStart=$root.attr("data-startIndex"),count=$slides.length,LOOP=String($root.data("loop")).toLowerCase()==="true";applySliderWidth($root),preloadSlides($slides),gsap.set($slides,{transformPerspective:800,transformOrigin:"50% 60%",force3D:!0,willChange:"transform, opacity"});let current=parseInt($currentStart,10)||0,isAnimating=!1;function computeFrame(){const W=$slider.innerWidth(),cw=Math.max(200,Math.round(W*.35)),sw=Math.max(160,Math.round(W*.25)),leftX=-(cw/2+40+sw/2),rightX=-leftX;return{W,cw,sw,leftX,rightX}}function allowedRels(){if(count<=1)return[0];if(!LOOP){if(current===0)return[0,1];if(current===count-1)return[-1,0]}return[-1,0,1]}function targetState(i,cur,frame){const{leftX,rightX}=frame;let rel;LOOP?(rel=(i-cur+count)%count,rel>count/2&&(rel-=count)):rel=i-cur;let x=0,scale=1,rot=0,z=100;return rel===-1&&(x=leftX,scale=.84,rot=8,z=90),rel===1&&(x=rightX,scale=.84,rot=-8,z=90),{rel,x,scale,rot,z}}function updateNavVisibility(){if(LOOP){$prevBtn.removeClass("sbv-hidden"),$nextBtn.removeClass("sbv-hidden");return}$prevBtn.toggleClass("sbv-hidden",current===0),$nextBtn.toggleClass("sbv-hidden",current===count-1)}function layout(instant=!1){const frame=computeFrame(),allowed=allowedRels(),tl=gsap.timeline({defaults:{ease:"power3.out",duration:instant?0:.75*.75}});
1return $slides.each(function(i){const $el=$(this),t=targetState(i,current,frame),vis=allowed.includes(t.rel);$el.toggleClass("sbvOff",!vis),t.rel===0?$el.removeClass("sbvFade").addClass("sbvCenter"):vis?$el.addClass("sbvFade").removeClass("sbvCenter"):$el.removeClass("sbvCenter sbvFade"),tl.to($el,{x:vis?t.x:0,scale:vis?t.scale:.84,rotateY:vis?t.rot:0,zIndex:vis?t.z:1,autoAlpha:vis?t.rel===0?1:.35:0,visibility:vis?"visible":"hidden"},0)}),cloneCenterMetaToArc($root,$slides,current),updateArcSideNames($root,$slides,current,LOOP),updateNavVisibility(),updateDotVisibility($root,current,count,LOOP),tl}function goTo(nextIndex,dir=1){if(isAnimating||nextIndex===current||!LOOP&&(nextIndex<0||nextIndex>count-1))return;isAnimating=!0;const prevIndex=current;current=LOOP?(nextIndex+count)%count:nextIndex;const frame=computeFrame(),allowed=allowedRels(),prevT=targetState(prevIndex,current,frame),nextT=targetState(current,current,frame),$prev=$slides.eq(prevIndex),$next=$slides.eq(current);$slides.each(function(i){const t=targetState(i,current,frame),vis=allowed.includes(t.rel);$(this).toggleClass("sbvOff",!vis).toggleClass("sbvCenter",t.rel===0&&vis).toggleClass("sbvFade",t.rel!==0&&vis)}),gsap.set($next,{zIndex:1e3});const tl=gsap.timeline({defaults:{ease:"power3.inOut"}});tl.to($track,{rotationY:dir*3,duration:.75*.35,ease:"power2.out"},0),$slides.each(function(i){if(i===prevIndex||i===current)return;const $el=$(this),t=targetState(i,current,frame),vis=allowed.includes(t.rel);tl.to($el,vis?{x:t.x,scale:t.scale,rotateY:t.rot,zIndex:t.z,autoAlpha:t.rel===0?1:.35,visibility:"visible",duration:.75*.65}:{autoAlpha:0,visibility:"hidden",zIndex:1,rotateY:0,duration:.75*.5},0)}),tl.to($prev,{x:prevT.x,scale:prevT.scale,rotateY:prevT.rot,zIndex:prevT.z,autoAlpha:.35,ease:"power3.inOut",duration:.75*.7},.05);const slideOffset=Math.max(16,40*.45);tl.fromTo($next,{x:nextT.x-dir*slideOffset,scale:Math.max(nextT.scale*.96,.84),autoAlpha:.95,rotateY:0},{x:nextT.x,scale:nextT.scale*1.02,autoAlpha:1,zIndex:1e3,duration:.75*.85,ease:"power3.out"},.08).to($next,{scale:nextT.scale,duration:.75*.25,ease:"power2.out"},"-=0.12"),tl.to($track,{rotationY:0,duration:.75*.35,ease:"power2.inOut"},.75*.35),tl.eventCallback("onComplete",()=>{const fr=computeFrame();$slides.each(function(i){const t=targetState(i,current,fr),vis=allowed.includes(t.rel);gsap.set(this,{zIndex:vis?t.z:1})}),cloneCenterMetaToArc($root,$slides,current),updateArcSideNames($root,$slides,current,LOOP),updateNavVisibility(),updateDotVisibility($root,current,count,LOOP),isAnimating=!1})}$nextBtn.on("click",()=>goTo(LOOP?(current+1)%count:Math.min(current+1,count-1),1)),$prevBtn.on("click",()=>goTo(LOOP?(current-1+count)%count:Math.max(current-1,0),-1)),$dotNext.on("click",()=>$nextBtn.trigger("click")),$dotPrev.on("click",()=>$prevBtn.trigger("click")),$dotCenter.on("click",()=>{const $cta=$root.find(".sbv-liveMeta .sbv-cta").first();$cta.length&&(window.location.href=$cta.attr("href"))}),$slides.each(function(i){$(this).on("click",()=>{if(!LOOP&&Math.abs(i-current)>1)return;const forward=LOOP?(i-current+count)%count<=(current-i+count)%count:i>=current;goTo(i,forward?1:-1)})});let resizeTO;$(window).on("resize",()=>{clearTimeout(resizeTO),resizeTO=setTimeout(()=>layout(!0),80)}),$slides.addClass("sbvFade").removeClass("sbvCenter sbvOff"),layout(!0)})},scrollScaleUpMediaAnim=()=>{const $container=$(".showScrollScaleAnim"),headerSelector=".homeHeader",headerActiveClass="showBG";console.log("Calling Fucntion"),$(".showScrollScaleAnim .slideshow__slide").each(function(index){const $slide=$(this),$content=$slide.find(".content-over-media");console.log("before condition"),$content.length!==0&&(console.log("After condition"),gsap.set($slide[0],{paddingTop:28,paddingRight:28,paddingBottom:28,paddingLeft:28,boxSizing:"border-box"}),gsap.set($content[0],{scale:1}),gsap.to($slide[0],{paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0,ease:"none",scrollTrigger:{id:"slide-padding-"+(index+1),trigger:$slide[0],start:"top top",end:"bottom top+=10%",scrub:.35,markers:!1,fastScrollEnd:!0,invalidateOnRefresh:!0,anticipatePin:1}}),gsap.to($content[0],{scale:1.3,ease:"none",scrollTrigger:{id:"content-scale-"+(index+1),trigger:$slide[0],start:"top top",end:"bottom top+=10%",scrub:.35,markers:!1,fastScrollEnd:!0,invalidateOnRefresh:!0}}),ScrollTrigger.create({trigger:$slide[0],start:"top top",end:"bottom top",onEnter:()=>{console.log("ON ENTER Removing class"),$(headerSelector).removeClass(headerActiveClass)},onEnterBack:()=>{$(headerSelector).removeClass(headerActiveClass)},onLeave:()=>{$(headerSelector).addClass(headerActiveClass)},onLeaveBack:()=>{}}))}),ScrollTrigger.refresh()},initPlpQuickAddMinQty=()=>{const forms=document.querySelectorAll('.product-card__quick-buy form.tt-plp-quick-add-form[is="product-form"]');
1forms.length&&forms.forEach(form=>{form.dataset.ttPlpMinQtyBound!=="true"&&(form.dataset.ttPlpMinQtyBound="true",form.addEventListener("submit",async event=>{event.preventDefault(),event.stopImmediatePropagation();const qtyInput=form.querySelector('input[name="quantity"]'),idInput=form.querySelector('input[name="id"]');if(!qtyInput||!idInput)return;const minQty=Math.max(1,parseInt(qtyInput.getAttribute("data-min-qty")||"1",10)||1),maxQtyRaw=qtyInput.getAttribute("data-max-qty"),maxQty=maxQtyRaw?parseInt(maxQtyRaw,10):null,variantId=parseInt(idInput.value,10);try{const lineItem=(await fetch("/cart.js").then(r=>r.json())).items?.find(item=>item.id===variantId),currentQty=lineItem?lineItem.quantity:0;if(currentQty===0){const addQty=maxQty!=null?Math.min(minQty,maxQty):minQty;let sectionsToBundle=["variant-added"];document.documentElement.dispatchEvent(new CustomEvent("cart:prepare-bundled-sections",{bubbles:!0,detail:{sections:sectionsToBundle}}));const formData=new FormData(form);formData.set("quantity",addQty),formData.set("sections",sectionsToBundle.join(",")),formData.set("sections_url",`${Shopify.routes.root}variants/${variantId}`);const addRes=await fetch("/cart/add.js",{method:"POST",body:formData,headers:{"X-Requested-With":"XMLHttpRequest"}});if(!addRes.ok){console.warn("[PLP MinQty] cart/add.js failed");return}const addJson=await addRes.json(),freshCart=await fetch("/cart.js").then(r=>r.json());freshCart.sections=addJson.sections,form.dispatchEvent(new CustomEvent("variant:add",{bubbles:!0,detail:{items:addJson.items||[addJson],cart:freshCart}})),document.documentElement.dispatchEvent(new CustomEvent("cart:change",{bubbles:!0,detail:{baseEvent:"variant:add",cart:freshCart}}))}else{const doChange=async qty=>{let sectionsToBundle=[];return document.documentElement.dispatchEvent(new CustomEvent("cart:prepare-bundled-sections",{bubbles:!0,detail:{sections:sectionsToBundle}})),fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:lineItem.key,quantity:qty,sections:sectionsToBundle})})},targetQty=maxQty!=null?Math.min(currentQty+minQty,maxQty):currentQty+minQty;let changeRes=await doChange(targetQty);if(!changeRes.ok){const fillTarget=maxQty??currentQty+99999;changeRes=await doChange(fillTarget)}let cartContent;changeRes.ok?cartContent=await changeRes.json():cartContent=await fetch("/cart.js").then(r=>r.json()),document.documentElement.dispatchEvent(new CustomEvent("cart:change",{bubbles:!0,detail:{baseEvent:"line-item:change",cart:cartContent}})),document.dispatchEvent(new CustomEvent("cart:refresh"))}}catch(err){console.error("[PLP MinQty]",err)}},!0))})};scrollScaleUpMediaAnim(),customCarousel(),initPlpQuickAddMinQty()});
2//# sourceMappingURL=/cdn/shop/t/31/assets/custom-slider-and-animations.js.map?v=61078117306514713131785613197

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.