PageSourceSearch

https://www.lyleandscott.com/cdn/shop/t/458/assets/pinch-zoom.esm.js?v=9570118113848091481788364388

js lyleandscott.com collected 2026-09-24 22:59:56 UTC 14,392 bytes, 2 lines download raw bytes

1typeof Object.assign!="function"&&Object.defineProperty(Object,"assign",{value:function(target,varArgs){if(target==null)throw new TypeError("Cannot convert undefined or null to object");for(var to=Object(target),index=1;index<arguments.length;index++){var nextSource=arguments[index];if(nextSource!=null)for(var nextKey in nextSource)Object.prototype.hasOwnProperty.call(nextSource,nextKey)&&(to[nextKey]=nextSource[nextKey])}return to},writable:!0,configurable:!0}),typeof Array.from!="function"&&(Array.from=function(object){return[].slice.call(object)});var buildElement=function(str){var tmp=document.implementation.createHTMLDocument("");return tmp.body.innerHTML=str,Array.from(tmp.body.children)[0]},triggerEvent=function(el,name){var event2=document.createEvent("HTMLEvents");event2.initEvent(name,!0,!1),el.dispatchEvent(event2)},definePinchZoom=function(){var PinchZoom2=function(el,options){this.el=el,this.zoomFactor=1,this.lastScale=1,this.offset={x:0,y:0},this.initialOffset={x:0,y:0},this.options=Object.assign({},this.defaults,options),this.setupMarkup(),this.bindEvents(),this.update(),this.isImageLoaded(this.el)&&(this.updateAspectRatio(),this.setupOffsets()),this.enable()},sum=function(a,b){return a+b},isCloseTo=function(value,expected){return value>expected-.01&&value<expected+.01};PinchZoom2.prototype={defaults:{tapZoomFactor:2,zoomOutFactor:1.3,animationDuration:300,maxZoom:4,minZoom:.5,draggableUnzoomed:!0,lockDragAxis:!1,setOffsetsOnce:!1,use2d:!0,zoomStartEventName:"pz_zoomstart",zoomUpdateEventName:"pz_zoomupdate",zoomEndEventName:"pz_zoomend",dragStartEventName:"pz_dragstart",dragUpdateEventName:"pz_dragupdate",dragEndEventName:"pz_dragend",doubleTapEventName:"pz_doubletap",verticalPadding:0,horizontalPadding:0,onZoomStart:null,onZoomEnd:null,onZoomUpd
1ate:null,onDragStart:null,onDragEnd:null,onDragUpdate:null,onDoubleTap:null},handleDragStart:function(event2){triggerEvent(this.el,this.options.dragStartEventName),typeof this.options.onDragStart=="function"&&this.options.onDragStart(this,event2),this.stopAnimation(),this.lastDragPosition=!1,this.hasInteraction=!0,this.handleDrag(event2)},handleDrag:function(event2){var touch=this.getTouches(event2)[0];this.drag(touch,this.lastDragPosition),this.offset=this.sanitizeOffset(this.offset),this.lastDragPosition=touch},handleDragEnd:function(){triggerEvent(this.el,this.options.dragEndEventName),typeof this.options.onDragEnd=="function"&&this.options.onDragEnd(this,event),this.end()},handleZoomStart:function(event2){triggerEvent(this.el,this.options.zoomStartEventName),typeof this.options.onZoomStart=="function"&&this.options.onZoomStart(this,event2),this.stopAnimation(),this.lastScale=1,this.nthZoom=0,this.lastZoomCenter=!1,this.hasInteraction=!0},handleZoom:function(event2,newScale){var touchCenter=this.getTouchCenter(this.getTouches(event2)),scale=newScale/this.lastScale;this.lastScale=newScale,this.nthZoom+=1,this.nthZoom>3&&(this.scale(scale,touchCenter),this.drag(touchCenter,this.lastZoomCenter)),this.lastZoomCenter=touchCenter},handleZoomEnd:function(){triggerEvent(this.el,this.options.zoomEndEventName),typeof this.options.onZoomEnd=="function"&&this.options.onZoomEnd(this,event),this.end()},handleDoubleTap:function(event2){var center=this.getTouches(event2)[0],zoomFactor=this.zoomFactor>1?1:this.options.tapZoomFactor,startZoomFactor=this.zoomFactor,updateProgress=(function(progress){this.scaleTo(startZoomFactor+progress*(zoomFactor-startZoomFactor),center)}).bind(this);this.hasInteraction||(this.isDoubleTap=!0,startZoomFactor>zoomFactor&&(center=this.getCurrentZoomCenter()),this.animate(this.options.animationDuration,updateProgress,this.swing),triggerEvent(this.el,this.options.doubleTapEventName),typeof this.options.onDoubleTap=="function"&&this.options.onDoubleTap(this,event2))},computeInitialOffset:function(){this.initialOffset={x:-Math.abs(this.el.offsetWidth*this.getInitialZoomFactor()-this.container.offsetWidth)/2,y:-Math.abs(this.el.offsetHeight*this.getInitialZoomFactor()-this.container.offsetHeight)/2}},resetOffset:function(){this.offset.x=this.initialOffset.x,this.offset.y=this.initialOffset.y},isImageLoaded:function(el){return el.nodeName==="IMG"?el.complete&&el.naturalHeight!==0:Array.from(el.querySelectorAll("img")).every(this.isImageLoaded)},setupOffsets:function(){this.options.setOffsetsOnce&&this._isOffsetsSet||(this._isOffsetsSet=!0,this.computeInitialOffset(),this.resetOffset())},sanitizeOffset:function(offset){var elWidth=this.el.offsetWidth*this.getInitialZoomFactor()*this.zoomFactor,elHeight=this.el.offsetHeight*this.getInitialZoomFactor()*this.zoomFactor,maxX=elWidth-this.getContainerX()+this.options.horizontalPadding,maxY=elHeight-this.getContainerY()+this.options.verticalPadding,maxOffsetX=Math.max(maxX,0),maxOffsetY=Math.max(maxY,0),minOffsetX=Math.min(maxX,0)-this.options.horizontalPadding,minOffsetY=Math.min(maxY,0)-this.options.verticalPadding;return{x:Math.min(Math.max(offset.x,minOffsetX),maxOffsetX),y:Math.min(Math.max(offset.y,minOffsetY),maxOffsetY)}},scaleTo:function(zoomFactor,center){this.scale(zoomFactor/this.zoomFactor,center)},scale:function(scale,center){scale=this.scaleZoomFactor(scale),this.addOffset({x:(scale-1)*(center.x+this.offset.x),y:(scale-1)*(center.y+this.offset.y)}),triggerEvent(this.el,this.options.zoomUpdateEventName),typeof this.options.onZoomUpdate=="function"&&this.options.onZoomUpdate(this,event)},scaleZoomFactor:function(scale){var originalZoomFactor=this.zoomFactor;return this.zoomFactor*=scale,this.zoomFactor=Math.min(this.options.maxZoom,Math.max(this.zoomFactor,this.options.minZoom)),this.zoomFactor/originalZoomFactor},canDrag:function(){return this.options.draggableUnzoomed||!isCloseTo(this.zoomFactor,1)},drag:function(center,lastCenter){lastCenter&&(this.options.lockDragAxis?Math.abs(center.x-lastCenter.x)>Math.abs(center.y-lastCenter.y)?this.addOffset({x:-(center.x-lastCenter.x),y:0}):this.addOffset({y:-(center.y-lastCenter.y),x:0}):this.addOffset({y:-(center.y-lastCenter.y),x:-(center.x-lastCenter.x)}),triggerEvent(this.el,this.options.dragUpdateEventName),typeof this.options.onDragUpdate=="function"&&this.options.onDragUpdate(this,event))},getTouchCenter:function(touches){return this.getVectorAvg(touches)},getVectorAvg:function(vectors){return{x:vectors.map(function(v){return v.x}).reduce(sum)/vectors.length,y:vectors.map(function(v){return v.y}).reduce(sum)/vectors.length}},addOffset:function(offset){this.offset={x:this.offset.x+offset.x,y:this.offset.y+offset.y}},sanitize:function(){this.zoomFactor<this.options.zoomOutFactor?this.zoomOutAnimation():this.isInsaneOffset(this.offset)&&this.sanitizeOffsetAnimation()},isInsaneOffset:function(offset){var sanitizedOffset=this.sanitizeOffset(offset);
1return sanitizedOffset.x!==offset.x||sanitizedOffset.y!==offset.y},sanitizeOffsetAnimation:function(){var targetOffset=this.sanitizeOffset(this.offset),startOffset={x:this.offset.x,y:this.offset.y},updateProgress=(function(progress){this.offset.x=startOffset.x+progress*(targetOffset.x-startOffset.x),this.offset.y=startOffset.y+progress*(targetOffset.y-startOffset.y),this.update()}).bind(this);this.animate(this.options.animationDuration,updateProgress,this.swing)},zoomOutAnimation:function(){if(this.zoomFactor!==1){var startZoomFactor=this.zoomFactor,zoomFactor=1,center=this.getCurrentZoomCenter(),updateProgress=(function(progress){this.scaleTo(startZoomFactor+progress*(zoomFactor-startZoomFactor),center)}).bind(this);this.animate(this.options.animationDuration,updateProgress,this.swing)}},updateAspectRatio:function(){this.unsetContainerY(),this.setContainerY(this.container.parentElement.offsetHeight)},getInitialZoomFactor:function(){var xZoomFactor=this.container.offsetWidth/this.el.offsetWidth,yZoomFactor=this.container.offsetHeight/this.el.offsetHeight;return Math.min(xZoomFactor,yZoomFactor)},getAspectRatio:function(){return this.el.offsetWidth/this.el.offsetHeight},getCurrentZoomCenter:function(){var offsetLeft=this.offset.x-this.initialOffset.x,centerX=-1*this.offset.x-offsetLeft/(1/this.zoomFactor-1),offsetTop=this.offset.y-this.initialOffset.y,centerY=-1*this.offset.y-offsetTop/(1/this.zoomFactor-1);return{x:centerX,y:centerY}},getTouches:function(event2){var rect=this.container.getBoundingClientRect(),scrollTop=document.documentElement.scrollTop||document.body.scrollTop,scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft,posTop=rect.top+scrollTop,posLeft=rect.left+scrollLeft;return Array.prototype.slice.call(event2.touches).map(function(touch){return{x:touch.pageX-posLeft,y:touch.pageY-posTop}})},animate:function(duration,framefn,timefn,callback){var startTime=new Date().getTime(),renderFrame=(function(){if(this.inAnimation){var frameTime=new Date().getTime()-startTime,progress=frameTime/duration;frameTime>=duration?(framefn(1),callback&&callback(),this.update(),this.stopAnimation(),this.update()):(timefn&&(progress=timefn(progress)),framefn(progress),this.update(),requestAnimationFrame(renderFrame))}}).bind(this);this.inAnimation=!0,requestAnimationFrame(renderFrame)},stopAnimation:function(){this.inAnimation=!1},swing:function(p){return-Math.cos(p*Math.PI)/2+.5},getContainerX:function(){return this.container.offsetWidth},getContainerY:function(){return this.container.offsetHeight},setContainerY:function(y){return this.container.style.height=y+"px"},unsetContainerY:function(){this.container.style.height=null},setupMarkup:function(){this.container=buildElement('<div class="pinch-zoom-container"></div>'),this.el.parentNode.insertBefore(this.container,this.el),this.container.appendChild(this.el),this.container.style.overflow="hidden",this.container.style.position="relative",this.el.style.webkitTransformOrigin="0% 0%",this.el.style.mozTransformOrigin="0% 0%",this.el.style.msTransformOrigin="0% 0%",this.el.style.oTransformOrigin="0% 0%",this.el.style.transformOrigin="0% 0%",this.el.style.position="absolute"},end:function(){this.hasInteraction=!1,this.sanitize(),this.update()},bindEvents:function(){var self=this;detectGestures(this.container,this),this.resizeHandler=this.update.bind(this),window.addEventListener("resize",this.resizeHandler),Array.from(this.el.querySelectorAll("img")).forEach(function(imgEl){imgEl.addEventListener("load",self.update.bind(self))}),this.el.nodeName==="IMG"&&this.el.addEventListener("load",this.update.bind(this))},update:function(event2){event2&&event2.type==="resize"&&(this.updateAspectRatio(),this.setupOffsets()),event2&&event2.type==="load"&&(this.updateAspectRatio(),this.setupOffsets()),!this.updatePlanned&&(this.updatePlanned=!0,window.setTimeout((function(){this.updatePlanned=!1;var zoomFactor=this.getInitialZoomFactor()*this.zoomFactor,offsetX=-this.offset.x/zoomFactor,offsetY=-this.offset.y/zoomFactor,transform3d="scale3d("+zoomFactor+", "+zoomFactor+",1) translate3d("+offsetX+"px,"+offsetY+"px,0px)",transform2d="scale("+zoomFactor+", "+zoomFactor+") translate("+offsetX+"px,"+offsetY+"px)",removeClone=(function(){this.clone&&(this.clone.parentNode.removeChild(this.clone),delete this.clone)}).bind(this);!this.options.use2d||this.hasInteraction||this.inAnimation?(this.is3d=!0,removeClone(),this.el.style.webkitTransform=transform3d,this.el.style.mozTransform=transform2d,this.el.style.msTransform=transform2d,this.el.style.oTransform=transform2d,this.el.style.transform=transform3d):(this.is3d&&(this.clone=this.el.cloneNode(!0),this.clone.style.pointerEvents="none",this.container.appendChild(this.clone),window.setTimeout(removeClone,200)),this.el.style.webkitTransform=transform2d,this.el.style.mozTransform=transform2d,this.el.style.msTransform=transform2d,this.el.style.oTransform=transform2d,this.el.style.transform=transform2d,this.is3d=!1)}).bind(this),0))},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},destroy:function(){window.removeEventListener("resize",this.resizeHandler),this.container&&(this.container.remove(),this.container=null)}};var detectGestures=function(el,target){var interaction=null,fingers=0,lastTouchStart=null,startTouches=null,
1setInteraction=function(newInteraction,event2){if(interaction!==newInteraction){if(interaction&&!newInteraction)switch(interaction){case"zoom":target.handleZoomEnd(event2);break;case"drag":target.handleDragEnd(event2);break}switch(newInteraction){case"zoom":target.handleZoomStart(event2);break;case"drag":target.handleDragStart(event2);break}}interaction=newInteraction},updateInteraction=function(event2){fingers===2?setInteraction("zoom"):fingers===1&&target.canDrag()?setInteraction("drag",event2):setInteraction(null,event2)},targetTouches=function(touches){return Array.from(touches).map(function(touch){return{x:touch.pageX,y:touch.pageY}})},getDistance=function(a,b){var x,y;return x=a.x-b.x,y=a.y-b.y,Math.sqrt(x*x+y*y)},calculateScale=function(startTouches2,endTouches){var startDistance=getDistance(startTouches2[0],startTouches2[1]),endDistance=getDistance(endTouches[0],endTouches[1]);return endDistance/startDistance},cancelEvent=function(event2){event2.stopPropagation(),event2.preventDefault()},detectDoubleTap=function(event2){var time=new Date().getTime();if(fingers>1&&(lastTouchStart=null),time-lastTouchStart<300)switch(cancelEvent(event2),target.handleDoubleTap(event2),interaction){case"zoom":target.handleZoomEnd(event2);break;case"drag":target.handleDragEnd(event2);break}else target.isDoubleTap=!1;fingers===1&&(lastTouchStart=time)},firstMove=!0;el.addEventListener("touchstart",function(event2){target.enabled&&(firstMove=!0,fingers=event2.touches.length,detectDoubleTap(event2))},{passive:!1}),el.addEventListener("touchmove",function(event2){if(target.enabled&&!target.isDoubleTap){if(firstMove)updateInteraction(event2),interaction&&cancelEvent(event2),startTouches=targetTouches(event2.touches);else{switch(interaction){case"zoom":startTouches.length==2&&event2.touches.length==2&&target.handleZoom(event2,calculateScale(startTouches,targetTouches(event2.touches)));break;case"drag":target.handleDrag(event2);break}interaction&&(cancelEvent(event2),target.update())}firstMove=!1}},{passive:!1}),el.addEventListener("touchend",function(event2){target.enabled&&(fingers=event2.touches.length,updateInteraction(event2))})};return PinchZoom2},PinchZoom=definePinchZoom();export default PinchZoom;
2//# sourceMappingURL=/cdn/shop/t/458/assets/pinch-zoom.esm.js.map?v=9570118113848091481788364388

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.