1(function(){'use strict';function init(){var wraps=document.querySelectorAll('.product-content-thumb-wrap');if(!wraps.length)return;var items=[];for(var i=0;i<wraps.length;i++){var wrap=wraps[i];var img=wrap.querySelector('.product-content-thumb');if(img)items.push({wrap:wrap,img:img})} 2if(!items.length)return;var ticking=!1;function update(){var vh=window.innerHeight||document.documentElement.clientHeight;for(var i=0;i<items.length;i++){var wrap=items[i].wrap;var img=items[i].img;var rect=wrap.getBoundingClientRect();var wrapH=rect.height;var imgH=img.offsetHeight;if(imgH<=wrapH+1){img.style.transform='translate3d(0,'+((wrapH-imgH)/2).toFixed(1)+'px,0)';continue} 3var excess=imgH-wrapH;var travel=vh+wrapH;var raw=(vh-rect.top)/travel;var p=raw<0?0:raw>1?1:raw;var ty=-p*excess;img.style.transform='translate3d(0,'+ty.toFixed(1)+'px,0)'} 4ticking=!1} 5function onScroll(){if(!ticking){window.requestAnimationFrame(update);ticking=!0}} 6for(var i=0;i<items.length;i++){var im=items[i].img;if(!im.complete)im.addEventListener('load',onScroll,{once:!0})} 7window.addEventListener('scroll',onScroll,{passive:!0});window.addEventListener('resize',onScroll,{passive:!0});update()} 8if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init)}else{init()}})()
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.