/** Node: web26 Source file: /Plugins/Lightgallery-v1.7.2/modules/lg-zoom.js */

/*! lg-zoom - v1.2.1 - 2020-06-13
* http://sachinchoolur.github.io/lightGallery
* Copyright (c) 2020 Sachin N; Licensed GPLv3 */
(function(root,factory){if(typeof define==='function'&&define.amd){define(['jquery'],function(a0){return(factory(a0))})}else if(typeof module==='object'&&module.exports){module.exports=factory(require('jquery'))}else{factory(root.jQuery)}}(this,function($){(function(){'use strict';var getUseLeft=function(){var useLeft=!1;var isChrome=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(isChrome&&parseInt(isChrome[2],10)<54){useLeft=!0}
return useLeft};var defaults={scale:1,zoom:!0,actualSize:!0,enableZoomAfter:300,useLeftForZoom:getUseLeft()};var Zoom=function(element){this.core=$(element).data('lightGallery');this.core.s=$.extend({},defaults,this.core.s);if(this.core.s.zoom&&this.core.doCss()){this.init();this.zoomabletimeout=!1;this.pageX=$(window).width()/2;this.pageY=($(window).height()/2)+$(window).scrollTop()}
return this};Zoom.prototype.init=function(){var _this=this;var zoomIcons='<button type="button" aria-label="Zoom in" id="lg-zoom-in" class="lg-icon"></button><button type="button" aria-label="Zoom out" id="lg-zoom-out" class="lg-icon"></button>';if(_this.core.s.actualSize){zoomIcons+='<button type="button" aria-label="Actual size" id="lg-actual-size" class="lg-icon"></button>'}
if(_this.core.s.useLeftForZoom){_this.core.$outer.addClass('lg-use-left-for-zoom')}else{_this.core.$outer.addClass('lg-use-transition-for-zoom')}
this.core.$outer.find('.lg-toolbar').append(zoomIcons);_this.core.$el.on('onSlideItemLoad.lg.tm.zoom',function(event,index,delay){var _speed=_this.core.s.enableZoomAfter+delay;if($('body').hasClass('lg-from-hash')&&delay){_speed=0}else{$('body').removeClass('lg-from-hash')}
_this.zoomabletimeout=setTimeout(function(){_this.core.$slide.eq(index).addClass('lg-zoomable')},_speed+30)});var scale=1;var zoom=function(scaleVal){var $image=_this.core.$outer.find('.lg-current .lg-image');var _x;var _y;var offsetX=($(window).width()-$image.prop('offsetWidth'))/2;var offsetY=(($(window).height()-$image.prop('offsetHeight'))/2)+$(window).scrollTop();_x=_this.pageX-offsetX;_y=_this.pageY-offsetY;var x=(scaleVal-1)*(_x);var y=(scaleVal-1)*(_y);$image.css('transform','scale3d('+scaleVal+', '+scaleVal+', 1)').attr('data-scale',scaleVal);if(_this.core.s.useLeftForZoom){$image.parent().css({left:-x+'px',top:-y+'px'}).attr('data-x',x).attr('data-y',y)}else{$image.parent().css('transform','translate3d(-'+x+'px, -'+y+'px, 0)').attr('data-x',x).attr('data-y',y)}};var callScale=function(){if(scale>1){_this.core.$outer.addClass('lg-zoomed')}else{_this.resetZoom()}
if(scale<1){scale=1}
zoom(scale)};var actualSize=function(event,$image,index,fromIcon){var w=$image.prop('offsetWidth');var nw;if(_this.core.s.dynamic){nw=_this.core.s.dynamicEl[index].width||$image[0].naturalWidth||w}else{nw=_this.core.$items.eq(index).attr('data-width')||$image[0].naturalWidth||w}
var _scale;if(_this.core.$outer.hasClass('lg-zoomed')){scale=1}else{if(nw>w){_scale=nw/w;scale=_scale||2}}
if(fromIcon){_this.pageX=$(window).width()/2;_this.pageY=($(window).height()/2)+$(window).scrollTop()}else{_this.pageX=event.pageX||event.originalEvent.targetTouches[0].pageX;_this.pageY=event.pageY||event.originalEvent.targetTouches[0].pageY}
callScale();setTimeout(function(){_this.core.$outer.removeClass('lg-grabbing').addClass('lg-grab')},10)};var tapped=!1;_this.core.$el.on('onAferAppendSlide.lg.tm.zoom',function(event,index){var $image=_this.core.$slide.eq(index).find('.lg-image');$image.on('dblclick',function(event){actualSize(event,$image,index)});$image.on('touchstart',function(event){if(!tapped){tapped=setTimeout(function(){tapped=null},300)}else{clearTimeout(tapped);tapped=null;actualSize(event,$image,index)}
event.preventDefault()})});$(window).on('resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom',function(){_this.pageX=$(window).width()/2;_this.pageY=($(window).height()/2)+$(window).scrollTop();zoom(scale)});$('#lg-zoom-out').on('click.lg',function(){if(_this.core.$outer.find('.lg-current .lg-image').length){scale-=_this.core.s.scale;callScale()}});$('#lg-zoom-in').on('click.lg',function(){if(_this.core.$outer.find('.lg-current .lg-image').length){scale+=_this.core.s.scale;callScale()}});$('#lg-actual-size').on('click.lg',function(event){actualSize(event,_this.core.$slide.eq(_this.core.index).find('.lg-image'),_this.core.index,!0)});_this.core.$el.on('onBeforeSlide.lg.tm',function(){scale=1;_this.resetZoom()});_this.zoomDrag();_this.zoomSwipe()};Zoom.prototype.resetZoom=function(){this.core.$outer.removeClass('lg-zoomed');this.core.$slide.find('.lg-img-wrap').removeAttr('style data-x data-y');this.core.$slide.find('.lg-image').removeAttr('style data-scale');this.pageX=$(window).width()/2;this.pageY=($(window).height()/2)+$(window).scrollTop()};Zoom.prototype.zoomSwipe=function(){var _this=this;var startCoords={};var endCoords={};var isMoved=!1;var allowX=!1;var allowY=!1;_this.core.$slide.on('touchstart.lg',function(e){if(_this.core.$outer.hasClass('lg-zoomed')){var $image=_this.core.$slide.eq(_this.core.index).find('.lg-object');allowY=$image.prop('offsetHeight')*$image.attr('data-scale')>_this.core.$outer.find('.lg').height();allowX=$image.prop('offsetWidth')*$image.attr('data-scale')>_this.core.$outer.find('.lg').width();if((allowX||allowY)){e.preventDefault();startCoords={x:e.originalEvent.targetTouches[0].pageX,y:e.originalEvent.targetTouches[0].pageY}}}});_this.core.$slide.on('touchmove.lg',function(e){if(_this.core.$outer.hasClass('lg-zoomed')){var _$el=_this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');var distanceX;var distanceY;e.preventDefault();isMoved=!0;endCoords={x:e.originalEvent.targetTouches[0].pageX,y:e.originalEvent.targetTouches[0].pageY};_this.core.$outer.addClass('lg-zoom-dragging');if(allowY){distanceY=(-Math.abs(_$el.attr('data-y')))+(endCoords.y-startCoords.y)}else{distanceY=-Math.abs(_$el.attr('data-y'))}
if(allowX){distanceX=(-Math.abs(_$el.attr('data-x')))+(endCoords.x-startCoords.x)}else{distanceX=-Math.abs(_$el.attr('data-x'))}
if((Math.abs(endCoords.x-startCoords.x)>15)||(Math.abs(endCoords.y-startCoords.y)>15)){if(_this.core.s.useLeftForZoom){_$el.css({left:distanceX+'px',top:distanceY+'px'})}else{_$el.css('transform','translate3d('+distanceX+'px, '+distanceY+'px, 0)')}}}});_this.core.$slide.on('touchend.lg',function(){if(_this.core.$outer.hasClass('lg-zoomed')){if(isMoved){isMoved=!1;_this.core.$outer.removeClass('lg-zoom-dragging');_this.touchendZoom(startCoords,endCoords,allowX,allowY)}}})};Zoom.prototype.zoomDrag=function(){var _this=this;var startCoords={};var endCoords={};var isDraging=!1;var isMoved=!1;var allowX=!1;var allowY=!1;_this.core.$slide.on('mousedown.lg.zoom',function(e){var $image=_this.core.$slide.eq(_this.core.index).find('.lg-object');allowY=$image.prop('offsetHeight')*$image.attr('data-scale')>_this.core.$outer.find('.lg').height();allowX=$image.prop('offsetWidth')*$image.attr('data-scale')>_this.core.$outer.find('.lg').width();if(_this.core.$outer.hasClass('lg-zoomed')){if($(e.target).hasClass('lg-object')&&(allowX||allowY)){e.preventDefault();startCoords={x:e.pageX,y:e.pageY};isDraging=!0;_this.core.$outer.scrollLeft+=1;_this.core.$outer.scrollLeft-=1;_this.core.$outer.removeClass('lg-grab').addClass('lg-grabbing')}}});$(window).on('mousemove.lg.zoom',function(e){if(isDraging){var _$el=_this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');var distanceX;var distanceY;isMoved=!0;endCoords={x:e.pageX,y:e.pageY};_this.core.$outer.addClass('lg-zoom-dragging');if(allowY){distanceY=(-Math.abs(_$el.attr('data-y')))+(endCoords.y-startCoords.y)}else{distanceY=-Math.abs(_$el.attr('data-y'))}
if(allowX){distanceX=(-Math.abs(_$el.attr('data-x')))+(endCoords.x-startCoords.x)}else{distanceX=-Math.abs(_$el.attr('data-x'))}
if(_this.core.s.useLeftForZoom){_$el.css({left:distanceX+'px',top:distanceY+'px'})}else{_$el.css('transform','translate3d('+distanceX+'px, '+distanceY+'px, 0)')}}});$(window).on('mouseup.lg.zoom',function(e){if(isDraging){isDraging=!1;_this.core.$outer.removeClass('lg-zoom-dragging');if(isMoved&&((startCoords.x!==endCoords.x)||(startCoords.y!==endCoords.y))){endCoords={x:e.pageX,y:e.pageY};_this.touchendZoom(startCoords,endCoords,allowX,allowY)}
isMoved=!1}
_this.core.$outer.removeClass('lg-grabbing').addClass('lg-grab')})};Zoom.prototype.touchendZoom=function(startCoords,endCoords,allowX,allowY){var _this=this;var _$el=_this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');var $image=_this.core.$slide.eq(_this.core.index).find('.lg-object');var distanceX=(-Math.abs(_$el.attr('data-x')))+(endCoords.x-startCoords.x);var distanceY=(-Math.abs(_$el.attr('data-y')))+(endCoords.y-startCoords.y);var minY=(_this.core.$outer.find('.lg').height()-$image.prop('offsetHeight'))/2;var maxY=Math.abs(($image.prop('offsetHeight')*Math.abs($image.attr('data-scale')))-_this.core.$outer.find('.lg').height()+minY);var minX=(_this.core.$outer.find('.lg').width()-$image.prop('offsetWidth'))/2;var maxX=Math.abs(($image.prop('offsetWidth')*Math.abs($image.attr('data-scale')))-_this.core.$outer.find('.lg').width()+minX);if((Math.abs(endCoords.x-startCoords.x)>15)||(Math.abs(endCoords.y-startCoords.y)>15)){if(allowY){if(distanceY<=-maxY){distanceY=-maxY}else if(distanceY>=-minY){distanceY=-minY}}
if(allowX){if(distanceX<=-maxX){distanceX=-maxX}else if(distanceX>=-minX){distanceX=-minX}}
if(allowY){_$el.attr('data-y',Math.abs(distanceY))}else{distanceY=-Math.abs(_$el.attr('data-y'))}
if(allowX){_$el.attr('data-x',Math.abs(distanceX))}else{distanceX=-Math.abs(_$el.attr('data-x'))}
if(_this.core.s.useLeftForZoom){_$el.css({left:distanceX+'px',top:distanceY+'px'})}else{_$el.css('transform','translate3d('+distanceX+'px, '+distanceY+'px, 0)')}}};Zoom.prototype.destroy=function(){var _this=this;_this.core.$el.off('.lg.zoom');$(window).off('.lg.zoom');_this.core.$slide.off('.lg.zoom');_this.core.$el.off('.lg.tm.zoom');_this.resetZoom();clearTimeout(_this.zoomabletimeout);_this.zoomabletimeout=!1};$.fn.lightGallery.modules.zoom=Zoom})()}))