From 162fbbc35952b35779b3c0d503d8890d9e6c484e Mon Sep 17 00:00:00 2001 From: Arinas Date: Thu, 30 Sep 2021 06:34:46 +0200 Subject: [PATCH] mousescroll-feature --- dist/simple-lightbox.esm.js | 70 +++++++++++----------- dist/simple-lightbox.jquery.js | 93 +++++++++++++----------------- dist/simple-lightbox.jquery.min.js | 2 +- dist/simple-lightbox.js | 93 +++++++++++++----------------- dist/simple-lightbox.legacy.js | 91 +++++++++++++---------------- dist/simple-lightbox.legacy.min.js | 2 +- dist/simple-lightbox.min.js | 2 +- dist/simple-lightbox.modules.js | 93 +++++++++++++----------------- src/simple-lightbox.js | 70 +++++++++++----------- 9 files changed, 238 insertions(+), 278 deletions(-) diff --git a/dist/simple-lightbox.esm.js b/dist/simple-lightbox.esm.js index 4f39473..e2c103c 100644 --- a/dist/simple-lightbox.esm.js +++ b/dist/simple-lightbox.esm.js @@ -702,17 +702,25 @@ class SimpleLightbox { }); if (this.options.scrollZoom) { - let pos = {x:0,y:0} - let zoom_target = {x:0,y:0} - let zoom_point = {x:0,y:0} let scale = 1 this.addEventListener(this.domNodes.image, ['mousewheel','DOMMouseScroll'], (event) => { + if (this.controlCoordinates.mousedown || this.isAnimating || this.isClosing || !this.isOpen) { + return true; + } + if(this.controlCoordinates.containerHeight == 0) { + this.controlCoordinates.containerHeight = this.getDimensions(this.domNodes.image).height; + this.controlCoordinates.containerWidth = this.getDimensions(this.domNodes.image).width; + this.controlCoordinates.imgHeight = this.getDimensions(this.currentImage).height; + this.controlCoordinates.imgWidth = this.getDimensions(this.currentImage).width; + this.controlCoordinates.containerOffsetX = this.domNodes.image.offsetLeft; + this.controlCoordinates.containerOffsetY = this.domNodes.image.offsetTop; + this.controlCoordinates.initialOffsetX = parseFloat(this.currentImage.dataset.translateX); + this.controlCoordinates.initialOffsetY = parseFloat(this.currentImage.dataset.translateY); + } event.preventDefault(); - zoom_point.x = event.pageX - this.domNodes.image.offsetLeft; - zoom_point.y = event.pageY - this.domNodes.image.offsetTop; let delta = event.delta || event.wheelDelta; if (delta === undefined) { //we are on firefox @@ -720,53 +728,47 @@ class SimpleLightbox { } delta = Math.max(-1,Math.min(1,delta)); // cap the delta to [-1,1] for cross browser consistency - // determine the point on where the slide is zoomed in - zoom_target.x = (zoom_point.x - pos.x)/scale; - zoom_target.y = (zoom_point.y - pos.y)/scale; - // apply zoom scale += delta * this.options.scrollZoomFactor * scale; scale = Math.max(1, Math.min( this.options.maxZoom, scale)); - // calculate x and y based on zoom - pos.x = -zoom_target.x * scale + zoom_point.x; - pos.y = -zoom_target.y * scale + zoom_point.y; - - this.controlCoordinates.targetOffsetX = pos.x; - this.controlCoordinates.targetOffsetY = pos.y; this.controlCoordinates.targetScale = scale; - // handle captions - if (this.controlCoordinates.targetScale > 1) { - this.controlCoordinates.initialScale = this.controlCoordinates.targetScale; - this.currentImage.style[this.transitionPrefix + 'transform-origin'] = '0 0'; + this.controlCoordinates.pinchOffsetX = event.pageX; + this.controlCoordinates.pinchOffsetY = event.pageY; + + this.controlCoordinates.limitOffsetX = ((this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) - this.controlCoordinates.containerWidth) / 2; + this.controlCoordinates.limitOffsetY = ((this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) - this.controlCoordinates.containerHeight) / 2; + this.controlCoordinates.scaleDifference = this.controlCoordinates.targetScale - this.controlCoordinates.initialScale; + this.controlCoordinates.targetOffsetX = (this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerWidth ? 0 : this.minMax(this.controlCoordinates.initialOffsetX - ((((((this.controlCoordinates.pinchOffsetX - this.controlCoordinates.containerOffsetX) - (this.controlCoordinates.containerWidth / 2)) - this.controlCoordinates.initialOffsetX) / (this.controlCoordinates.targetScale - this.controlCoordinates.scaleDifference))) * this.controlCoordinates.scaleDifference), this.controlCoordinates.limitOffsetX * (-1), this.controlCoordinates.limitOffsetX); + this.controlCoordinates.targetOffsetY = (this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerHeight ? 0 : this.minMax(this.controlCoordinates.initialOffsetY - ((((((this.controlCoordinates.pinchOffsetY - this.controlCoordinates.containerOffsetY) - (this.controlCoordinates.containerHeight / 2)) - this.controlCoordinates.initialOffsetY) / (this.controlCoordinates.targetScale - this.controlCoordinates.scaleDifference))) * this.controlCoordinates.scaleDifference), this.controlCoordinates.limitOffsetY * (-1), this.controlCoordinates.limitOffsetY); + this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale); + + if (this.controlCoordinates.targetScale > 1) { this.controlCoordinates.zoomed = true; if (!this.domNodes.caption.style.opacity && this.domNodes.caption.style.display !== 'none') { this.fadeOut(this.domNodes.caption, this.options.fadeSpeed); } } else { - this.controlCoordinates.initialScale = 1; - this.controlCoordinates.targetOffsetX = 0; - this.controlCoordinates.targetOffsetY = 0; - this.controlCoordinates.zoomed = false; - pos = {x:0,y:0} - zoom_target = {x:0,y:0} - zoom_point = {x:0,y:0} - scale = 1 - - if (this.domNodes.caption.style.display === 'none') { - this.fadeIn(this.domNodes.caption, this.options.fadeSpeed); + if (this.controlCoordinates.initialScale === 1) { + this.controlCoordinates.zoomed = false; + if (this.domNodes.caption.style.display === 'none') { + this.fadeIn(this.domNodes.caption, this.options.fadeSpeed); + } } + this.controlCoordinates.initialPinchDistance = null; + this.controlCoordinates.capture = false; } + this.controlCoordinates.initialPinchDistance = this.controlCoordinates.targetPinchDistance; + this.controlCoordinates.initialScale = this.controlCoordinates.targetScale; + this.controlCoordinates.initialOffsetX = this.controlCoordinates.targetOffsetX; + this.controlCoordinates.initialOffsetY = this.controlCoordinates.targetOffsetY; + this.setZoomData(this.controlCoordinates.targetScale, this.controlCoordinates.targetOffsetX, this.controlCoordinates.targetOffsetY); this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale); - // remove transform origin - if (this.controlCoordinates.targetScale == 1) { - this.currentImage.style[this.transitionPrefix + 'transform-origin'] = null; - } }); } diff --git a/dist/simple-lightbox.jquery.js b/dist/simple-lightbox.jquery.js index a527cb2..022fb80 100644 --- a/dist/simple-lightbox.jquery.js +++ b/dist/simple-lightbox.jquery.js @@ -778,23 +778,24 @@ var SimpleLightbox = /*#__PURE__*/function () { }); if (this.options.scrollZoom) { - var pos = { - x: 0, - y: 0 - }; - var zoom_target = { - x: 0, - y: 0 - }; - var zoom_point = { - x: 0, - y: 0 - }; var scale = 1; this.addEventListener(this.domNodes.image, ['mousewheel', 'DOMMouseScroll'], function (event) { + if (_this6.controlCoordinates.mousedown || _this6.isAnimating || _this6.isClosing || !_this6.isOpen) { + return true; + } + + if (_this6.controlCoordinates.containerHeight == 0) { + _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height; + _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width; + _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height; + _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width; + _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft; + _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop; + _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX); + _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY); + } + event.preventDefault(); - zoom_point.x = event.pageX - _this6.domNodes.image.offsetLeft; - zoom_point.y = event.pageY - _this6.domNodes.image.offsetTop; var delta = event.delta || event.wheelDelta; if (delta === undefined) { @@ -803,60 +804,48 @@ var SimpleLightbox = /*#__PURE__*/function () { } delta = Math.max(-1, Math.min(1, delta)); // cap the delta to [-1,1] for cross browser consistency - // determine the point on where the slide is zoomed in - - zoom_target.x = (zoom_point.x - pos.x) / scale; - zoom_target.y = (zoom_point.y - pos.y) / scale; // apply zoom + // apply zoom scale += delta * _this6.options.scrollZoomFactor * scale; - scale = Math.max(1, Math.min(_this6.options.maxZoom, scale)); // calculate x and y based on zoom + scale = Math.max(1, Math.min(_this6.options.maxZoom, scale)); + _this6.controlCoordinates.targetScale = scale; + _this6.controlCoordinates.pinchOffsetX = event.pageX; + _this6.controlCoordinates.pinchOffsetY = event.pageY; + _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2; + _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2; + _this6.controlCoordinates.scaleDifference = _this6.controlCoordinates.targetScale - _this6.controlCoordinates.initialScale; + _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetX - (_this6.controlCoordinates.pinchOffsetX - _this6.controlCoordinates.containerOffsetX - _this6.controlCoordinates.containerWidth / 2 - _this6.controlCoordinates.initialOffsetX) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX); + _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetY - (_this6.controlCoordinates.pinchOffsetY - _this6.controlCoordinates.containerOffsetY - _this6.controlCoordinates.containerHeight / 2 - _this6.controlCoordinates.initialOffsetY) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY); - pos.x = -zoom_target.x * scale + zoom_point.x; - pos.y = -zoom_target.y * scale + zoom_point.y; - _this6.controlCoordinates.targetOffsetX = pos.x; - _this6.controlCoordinates.targetOffsetY = pos.y; - _this6.controlCoordinates.targetScale = scale; // handle captions + _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); if (_this6.controlCoordinates.targetScale > 1) { - _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale; - _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = '0 0'; _this6.controlCoordinates.zoomed = true; if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') { _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed); } } else { - _this6.controlCoordinates.initialScale = 1; - _this6.controlCoordinates.targetOffsetX = 0; - _this6.controlCoordinates.targetOffsetY = 0; - _this6.controlCoordinates.zoomed = false; - pos = { - x: 0, - y: 0 - }; - zoom_target = { - x: 0, - y: 0 - }; - zoom_point = { - x: 0, - y: 0 - }; - scale = 1; - - if (_this6.domNodes.caption.style.display === 'none') { - _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed); + if (_this6.controlCoordinates.initialScale === 1) { + _this6.controlCoordinates.zoomed = false; + + if (_this6.domNodes.caption.style.display === 'none') { + _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed); + } } - } - _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY); + _this6.controlCoordinates.initialPinchDistance = null; + _this6.controlCoordinates.capture = false; + } - _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); // remove transform origin + _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance; + _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale; + _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX; + _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY; + _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY); - if (_this6.controlCoordinates.targetScale == 1) { - _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = null; - } + _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); }); } diff --git a/dist/simple-lightbox.jquery.min.js b/dist/simple-lightbox.jquery.min.js index 03f76ce..9677f62 100644 --- a/dist/simple-lightbox.jquery.min.js +++ b/dist/simple-lightbox.jquery.min.js @@ -1 +1 @@ -!function s(a,r,l){function d(e,t){if(!r[e]){if(!a[e]){var o="function"==typeof require&&require;if(!t&&o)return o(e,!0);if(c)return c(e,!0);var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}var n=r[e]={exports:{}};a[e][0].call(n.exports,function(t){return d(a[e][1][t]||t)},n,n.exports,s,a,r,l)}return r[e].exports}for(var c="function"==typeof require&&require,t=0;t=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){o=o.call(t)},n:function(){var t=o.next();return a=t.done,t},e:function(t){r=!0,s=t},f:function(){try{a||null==o.return||o.return()}finally{if(r)throw s}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,i=new Array(e);o",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='/',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(t,e){var o;return function(){o||(t.apply(this,arguments),o=!0,setTimeout(function(){return o=!1},e))}}},{key:"isValidLink",value:function(t){return!this.options.fileExt||t.getAttribute(this.options.sourceAttr)&&new RegExp("("+this.options.fileExt+")$","i").test(t.getAttribute(this.options.sourceAttr))}},{key:"calculateTransitionPrefix",value:function(){var t=(document.body||document.documentElement).style;return"transition"in t?"":"WebkitTransition"in t?"-webkit-":"MozTransition"in t?"-moz-":"OTransition"in t&&"-o"}},{key:"toggleScrollbar",value:function(t){var i=0,e=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===t){var o=window.innerWidth;if(!o){var n=document.documentElement.getBoundingClientRect();o=n.right-Math.abs(n.left)}if(document.body.clientWidth=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=i<0?this.relatedElements.length-1:i>this.relatedElements.length-1?0:i,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*o-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){e.isAnimating=!0,e.isClosing?e.isAnimating=!1:setTimeout(function(){var t=e.relatedElements[e.currentImageIndex];e.currentImage.setAttribute("src",t.getAttribute(e.options.sourceAttr)),-1===e.loadedImages.indexOf(t.getAttribute(e.options.sourceAttr))&&e.show(e.domNodes.spinner),e.domNodes.image.contains(e.domNodes.caption)&&e.domNodes.image.removeChild(e.domNodes.caption),e.adjustImage(o),e.options.preloading&&e.preload()},100)})}},{key:"adjustImage",value:function(a){var r=this;if(!this.currentImage)return!1;var t=new Image,l=window.innerWidth*this.options.widthRatio,d=window.innerHeight*this.options.heightRatio;t.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),t.addEventListener("error",function(t){r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("error."+r.eventNamespace)),r.isAnimating=!1,r.isOpen=!0,r.domNodes.spinner.style.display="none";var e=1===a||-1===a;if(r.initialImageIndex===r.currentImageIndex&&e)return r.close();r.options.alertError&&alert(r.options.alertErrorMessage),r.loadImage(e?a:1)}),t.addEventListener("load",function(t){void 0!==a&&(r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("changed."+r.eventNamespace)),r.relatedElements[r.currentImageIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+r.eventNamespace))),r.options.history&&r.updateURL(),-1===r.loadedImages.indexOf(r.currentImage.getAttribute("src"))&&r.loadedImages.push(r.currentImage.getAttribute("src"));var e,o,i=t.target.width,n=t.target.height;if(r.options.scaleImageToRatio||l=r.relatedElements.length-1&&r.hide(r.domNodes.navigation.querySelector(".sl-next")),0=o.relatedElements.length-1&&0o.options.swipeTolerance&&e?o.loadImage(0d){var o,i=m(a);try{for(i.s();!(o=i.n()).done;){o.value.style.opacity=""}}catch(t){i.e(t)}finally{i.f()}r&&r.call(l,a)}else{var n,s=m(a);try{for(s.s();!(n=s.n()).done;){n.value.style.opacity=e}}catch(t){s.e(t)}finally{s.f()}if(!l.isFadeIn)return;requestAnimationFrame(t)}}()}},{key:"hide",value:function(t){var e,o=m(t=this.wrap(t));try{for(o.s();!(e=o.n()).done;){var i=e.value;i.dataset.initialDisplay=i.style.display,i.style.display="none"}}catch(t){o.e(t)}finally{o.f()}}},{key:"show",value:function(t,e){var o,i=m(t=this.wrap(t));try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.display=n.dataset.initialDisplay||e||"block"}}catch(t){i.e(t)}finally{i.f()}}},{key:"wrap",value:function(t){return"function"==typeof t[Symbol.iterator]&&"string"!=typeof t?t:[t]}},{key:"on",value:function(t,e){t=this.wrap(t);var o,i=m(this.elements);try{for(i.s();!(o=i.n()).done;){var n=o.value;n.fullyNamespacedEvents||(n.fullyNamespacedEvents={});var s,a=m(t);try{for(a.s();!(s=a.n()).done;){var r=s.value;n.fullyNamespacedEvents[r]=e,n.addEventListener(r,e)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){i.e(t)}finally{i.f()}return this}},{key:"off",value:function(t){t=this.wrap(t);var e,o=m(this.elements);try{for(o.s();!(e=o.n()).done;){var i,n=e.value,s=m(t);try{for(s.s();!(i=s.n()).done;){var a=i.value;void 0!==n.fullyNamespacedEvents&&a in n.fullyNamespacedEvents&&n.removeEventListener(a,n.fullyNamespacedEvents[a])}}catch(t){s.e(t)}finally{s.f()}}}catch(t){o.e(t)}finally{o.f()}return this}},{key:"open",value:function(t){t=t||this.elements[0],"undefined"!=typeof jQuery&&t instanceof jQuery&&(t=t.get(0)),this.initialImageIndex=this.elements.indexOf(t),-1=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){o=o.call(t)},n:function(){var t=o.next();return a=t.done,t},e:function(t){r=!0,s=t},f:function(){try{a||null==o.return||o.return()}finally{if(r)throw s}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,i=new Array(e);o",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='/',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(t,e){var o;return function(){o||(t.apply(this,arguments),o=!0,setTimeout(function(){return o=!1},e))}}},{key:"isValidLink",value:function(t){return!this.options.fileExt||t.getAttribute(this.options.sourceAttr)&&new RegExp("("+this.options.fileExt+")$","i").test(t.getAttribute(this.options.sourceAttr))}},{key:"calculateTransitionPrefix",value:function(){var t=(document.body||document.documentElement).style;return"transition"in t?"":"WebkitTransition"in t?"-webkit-":"MozTransition"in t?"-moz-":"OTransition"in t&&"-o"}},{key:"toggleScrollbar",value:function(t){var i=0,e=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===t){var o=window.innerWidth;if(!o){var n=document.documentElement.getBoundingClientRect();o=n.right-Math.abs(n.left)}if(document.body.clientWidth=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=i<0?this.relatedElements.length-1:i>this.relatedElements.length-1?0:i,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*o-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){e.isAnimating=!0,e.isClosing?e.isAnimating=!1:setTimeout(function(){var t=e.relatedElements[e.currentImageIndex];e.currentImage.setAttribute("src",t.getAttribute(e.options.sourceAttr)),-1===e.loadedImages.indexOf(t.getAttribute(e.options.sourceAttr))&&e.show(e.domNodes.spinner),e.domNodes.image.contains(e.domNodes.caption)&&e.domNodes.image.removeChild(e.domNodes.caption),e.adjustImage(o),e.options.preloading&&e.preload()},100)})}},{key:"adjustImage",value:function(a){var r=this;if(!this.currentImage)return!1;var t=new Image,l=window.innerWidth*this.options.widthRatio,d=window.innerHeight*this.options.heightRatio;t.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),t.addEventListener("error",function(t){r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("error."+r.eventNamespace)),r.isAnimating=!1,r.isOpen=!0,r.domNodes.spinner.style.display="none";var e=1===a||-1===a;if(r.initialImageIndex===r.currentImageIndex&&e)return r.close();r.options.alertError&&alert(r.options.alertErrorMessage),r.loadImage(e?a:1)}),t.addEventListener("load",function(t){void 0!==a&&(r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("changed."+r.eventNamespace)),r.relatedElements[r.currentImageIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+r.eventNamespace))),r.options.history&&r.updateURL(),-1===r.loadedImages.indexOf(r.currentImage.getAttribute("src"))&&r.loadedImages.push(r.currentImage.getAttribute("src"));var e,o,i=t.target.width,n=t.target.height;if(r.options.scaleImageToRatio||l=r.relatedElements.length-1&&r.hide(r.domNodes.navigation.querySelector(".sl-next")),0=o.relatedElements.length-1&&0o.options.swipeTolerance&&e?o.loadImage(0d){var o,i=f(a);try{for(i.s();!(o=i.n()).done;){o.value.style.opacity=""}}catch(t){i.e(t)}finally{i.f()}r&&r.call(l,a)}else{var n,s=f(a);try{for(s.s();!(n=s.n()).done;){n.value.style.opacity=e}}catch(t){s.e(t)}finally{s.f()}if(!l.isFadeIn)return;requestAnimationFrame(t)}}()}},{key:"hide",value:function(t){var e,o=f(t=this.wrap(t));try{for(o.s();!(e=o.n()).done;){var i=e.value;i.dataset.initialDisplay=i.style.display,i.style.display="none"}}catch(t){o.e(t)}finally{o.f()}}},{key:"show",value:function(t,e){var o,i=f(t=this.wrap(t));try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.display=n.dataset.initialDisplay||e||"block"}}catch(t){i.e(t)}finally{i.f()}}},{key:"wrap",value:function(t){return"function"==typeof t[Symbol.iterator]&&"string"!=typeof t?t:[t]}},{key:"on",value:function(t,e){t=this.wrap(t);var o,i=f(this.elements);try{for(i.s();!(o=i.n()).done;){var n=o.value;n.fullyNamespacedEvents||(n.fullyNamespacedEvents={});var s,a=f(t);try{for(a.s();!(s=a.n()).done;){var r=s.value;n.fullyNamespacedEvents[r]=e,n.addEventListener(r,e)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){i.e(t)}finally{i.f()}return this}},{key:"off",value:function(t){t=this.wrap(t);var e,o=f(this.elements);try{for(o.s();!(e=o.n()).done;){var i,n=e.value,s=f(t);try{for(s.s();!(i=s.n()).done;){var a=i.value;void 0!==n.fullyNamespacedEvents&&a in n.fullyNamespacedEvents&&n.removeEventListener(a,n.fullyNamespacedEvents[a])}}catch(t){s.e(t)}finally{s.f()}}}catch(t){o.e(t)}finally{o.f()}return this}},{key:"open",value:function(t){t=t||this.elements[0],"undefined"!=typeof jQuery&&t instanceof jQuery&&(t=t.get(0)),this.initialImageIndex=this.elements.indexOf(t),-1 1) { - _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale; - _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = '0 0'; _this6.controlCoordinates.zoomed = true; if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') { _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed); } } else { - _this6.controlCoordinates.initialScale = 1; - _this6.controlCoordinates.targetOffsetX = 0; - _this6.controlCoordinates.targetOffsetY = 0; - _this6.controlCoordinates.zoomed = false; - pos = { - x: 0, - y: 0 - }; - zoom_target = { - x: 0, - y: 0 - }; - zoom_point = { - x: 0, - y: 0 - }; - scale = 1; - - if (_this6.domNodes.caption.style.display === 'none') { - _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed); + if (_this6.controlCoordinates.initialScale === 1) { + _this6.controlCoordinates.zoomed = false; + + if (_this6.domNodes.caption.style.display === 'none') { + _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed); + } } - } - _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY); + _this6.controlCoordinates.initialPinchDistance = null; + _this6.controlCoordinates.capture = false; + } - _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); // remove transform origin + _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance; + _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale; + _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX; + _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY; + _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY); - if (_this6.controlCoordinates.targetScale == 1) { - _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = null; - } + _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); }); } diff --git a/dist/simple-lightbox.legacy.js b/dist/simple-lightbox.legacy.js index 2641740..03dd1f4 100644 --- a/dist/simple-lightbox.legacy.js +++ b/dist/simple-lightbox.legacy.js @@ -4790,23 +4790,24 @@ var SimpleLightbox = /*#__PURE__*/function () { }); if (this.options.scrollZoom) { - var pos = { - x: 0, - y: 0 - }; - var zoom_target = { - x: 0, - y: 0 - }; - var zoom_point = { - x: 0, - y: 0 - }; var scale = 1; this.addEventListener(this.domNodes.image, ['mousewheel', 'DOMMouseScroll'], function (event) { + if (_this6.controlCoordinates.mousedown || _this6.isAnimating || _this6.isClosing || !_this6.isOpen) { + return true; + } + + if (_this6.controlCoordinates.containerHeight == 0) { + _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height; + _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width; + _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height; + _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width; + _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft; + _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop; + _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX); + _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY); + } + event.preventDefault(); - zoom_point.x = event.pageX - _this6.domNodes.image.offsetLeft; - zoom_point.y = event.pageY - _this6.domNodes.image.offsetTop; var delta = event.delta || event.wheelDelta; if (delta === undefined) { @@ -4815,60 +4816,48 @@ var SimpleLightbox = /*#__PURE__*/function () { } delta = Math.max(-1, Math.min(1, delta)); // cap the delta to [-1,1] for cross browser consistency - // determine the point on where the slide is zoomed in - - zoom_target.x = (zoom_point.x - pos.x) / scale; - zoom_target.y = (zoom_point.y - pos.y) / scale; // apply zoom + // apply zoom scale += delta * _this6.options.scrollZoomFactor * scale; - scale = Math.max(1, Math.min(_this6.options.maxZoom, scale)); // calculate x and y based on zoom + scale = Math.max(1, Math.min(_this6.options.maxZoom, scale)); + _this6.controlCoordinates.targetScale = scale; + _this6.controlCoordinates.pinchOffsetX = event.pageX; + _this6.controlCoordinates.pinchOffsetY = event.pageY; + _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2; + _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2; + _this6.controlCoordinates.scaleDifference = _this6.controlCoordinates.targetScale - _this6.controlCoordinates.initialScale; + _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetX - (_this6.controlCoordinates.pinchOffsetX - _this6.controlCoordinates.containerOffsetX - _this6.controlCoordinates.containerWidth / 2 - _this6.controlCoordinates.initialOffsetX) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX); + _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetY - (_this6.controlCoordinates.pinchOffsetY - _this6.controlCoordinates.containerOffsetY - _this6.controlCoordinates.containerHeight / 2 - _this6.controlCoordinates.initialOffsetY) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY); - pos.x = -zoom_target.x * scale + zoom_point.x; - pos.y = -zoom_target.y * scale + zoom_point.y; - _this6.controlCoordinates.targetOffsetX = pos.x; - _this6.controlCoordinates.targetOffsetY = pos.y; - _this6.controlCoordinates.targetScale = scale; // handle captions + _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); if (_this6.controlCoordinates.targetScale > 1) { - _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale; - _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = '0 0'; _this6.controlCoordinates.zoomed = true; if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') { _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed); } } else { - _this6.controlCoordinates.initialScale = 1; - _this6.controlCoordinates.targetOffsetX = 0; - _this6.controlCoordinates.targetOffsetY = 0; - _this6.controlCoordinates.zoomed = false; - pos = { - x: 0, - y: 0 - }; - zoom_target = { - x: 0, - y: 0 - }; - zoom_point = { - x: 0, - y: 0 - }; - scale = 1; + if (_this6.controlCoordinates.initialScale === 1) { + _this6.controlCoordinates.zoomed = false; - if (_this6.domNodes.caption.style.display === 'none') { - _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed); + if (_this6.domNodes.caption.style.display === 'none') { + _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed); + } } - } - _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY); + _this6.controlCoordinates.initialPinchDistance = null; + _this6.controlCoordinates.capture = false; + } - _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); // remove transform origin + _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance; + _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale; + _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX; + _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY; + _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY); - if (_this6.controlCoordinates.targetScale == 1) { - _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = null; - } + _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); }); } diff --git a/dist/simple-lightbox.legacy.min.js b/dist/simple-lightbox.legacy.min.js index 1213f48..2a308e8 100644 --- a/dist/simple-lightbox.legacy.min.js +++ b/dist/simple-lightbox.legacy.min.js @@ -1 +1 @@ -!function i(s,a,l){function c(t,e){if(!a[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(d)return d(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=a[t]={exports:{}};s[t][0].call(o.exports,function(e){return c(s[t][1][e]||e)},o,o.exports,i,s,a,l)}return a[t].exports}for(var d="function"==typeof require&&require,e=0;e")}),b="$0"==="a".replace(/./,"$0"),r=m("replace"),w=!!/./[r]&&""===/./[r]("a","$0"),x=!p(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});t.exports=function(n,e,t,r){var o=m(n),s=!p(function(){var e={};return e[o]=function(){return 7},7!=""[n](e)}),i=s&&!p(function(){var e=!1,t=/a/;return"split"===n&&((t={constructor:{}}).constructor[g]=function(){return t},t.flags="",t[o]=/./[o]),t.exec=function(){return e=!0,null},t[o](""),!e});if(!s||!i||"replace"===n&&(!v||!b||w)||"split"===n&&!x){var a=/./[o],l=t(o,""[n],function(e,t,n,r,o){var i=t.exec;return i===f||i===y.exec?s&&!o?{done:!0,value:a.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:b,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:w}),c=l[0],d=l[1];u(String.prototype,n,c),u(y,o,2==e?function(e,t){return d.call(e,this,t)}:function(e){return d.call(e,this)})}r&&h(y[o],"sham",!0)}},{"../internals/create-non-enumerable-property":21,"../internals/fails":33,"../internals/redefine":79,"../internals/regexp-exec":81,"../internals/well-known-symbol":105,"../modules/es.regexp.exec":127}],35:[function(e,t,n){var i=e("../internals/a-function");t.exports=function(r,o,e){if(i(r),void 0===o)return r;switch(e){case 0:return function(){return r.call(o)};case 1:return function(e){return r.call(o,e)};case 2:return function(e,t){return r.call(o,e,t)};case 3:return function(e,t,n){return r.call(o,e,t,n)}}return function(){return r.apply(o,arguments)}}},{"../internals/a-function":1}],36:[function(e,t,n){"use strict";var i=e("../internals/a-function"),s=e("../internals/is-object"),a=[].slice,l={};t.exports=Function.bind||function(t){var n=i(this),r=a.call(arguments,1),o=function(){var e=r.concat(a.call(arguments));return this instanceof o?function(e,t,n){if(!(t in l)){for(var r=[],o=0;o]*>)/g,m=/\$([$&'`]|\d{1,2})/g;t.exports=function(i,s,a,l,c,e){var d=a+i.length,u=l.length,t=m;return void 0!==c&&(c=r(c),t=p),o.call(e,t,function(e,t){var n;switch(t.charAt(0)){case"$":return"$";case"&":return i;case"`":return s.slice(0,a);case"'":return s.slice(d);case"<":n=c[t.slice(1,-1)];break;default:var r=+t;if(0==r)return e;if(u>>0||(a.test(n)?16:10))}:s},{"../internals/global":40,"../internals/string-trim":94,"../internals/whitespaces":106}],63:[function(e,t,n){"use strict";var f=e("../internals/descriptors"),r=e("../internals/fails"),p=e("../internals/object-keys"),m=e("../internals/object-get-own-property-symbols"),h=e("../internals/object-property-is-enumerable"),g=e("../internals/to-object"),y=e("../internals/indexed-object"),o=Object.assign,i=Object.defineProperty;t.exports=!o||r(function(){if(f&&1!==o({b:1},o(i({},"a",{enumerable:!0,get:function(){i(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=o({},e)[n]||p(o({},t)).join("")!=r})?function(e,t){for(var n=g(e),r=arguments.length,o=1,i=m.f,s=h.f;o"+e+""}var i,s=e("../internals/an-object"),a=e("../internals/object-define-properties"),l=e("../internals/enum-bug-keys"),c=e("../internals/hidden-keys"),d=e("../internals/html"),u=e("../internals/document-create-element"),f=e("../internals/shared-key"),p="prototype",m="script",h=f("IE_PROTO"),g=function(){try{i=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;g=i?function(e){e.write(o("")),e.close();var t=e.parentWindow.Object;return e=null,t}(i):((t=u("iframe")).style.display="none",d.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(o("document.F=Object")),e.close(),e.F);for(var n=l.length;n--;)delete g[p][l[n]];return g()};c[h]=!0,t.exports=Object.create||function(e,t){var n;return null!==e?(r[p]=s(e),n=new r,r[p]=null,n[h]=e):n=g(),void 0===t?n:a(n,t)}},{"../internals/an-object":5,"../internals/document-create-element":27,"../internals/enum-bug-keys":31,"../internals/hidden-keys":42,"../internals/html":43,"../internals/object-define-properties":65,"../internals/shared-key":89}],65:[function(e,t,n){var r=e("../internals/descriptors"),s=e("../internals/object-define-property"),a=e("../internals/an-object"),l=e("../internals/object-keys");t.exports=r?Object.defineProperties:function(e,t){a(e);for(var n,r=l(t),o=r.length,i=0;io;)s(r,n=t[o++])&&(~l(i,n)||i.push(n));return i}},{"../internals/array-includes":8,"../internals/has":41,"../internals/hidden-keys":42,"../internals/to-indexed-object":96}],73:[function(e,t,n){var r=e("../internals/object-keys-internal"),o=e("../internals/enum-bug-keys");t.exports=Object.keys||function(e){return r(e,o)}},{"../internals/enum-bug-keys":31,"../internals/object-keys-internal":72}],74:[function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);n.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},{}],75:[function(e,t,n){var o=e("../internals/an-object"),i=e("../internals/a-possible-prototype");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var n,r=!1,e={};try{(n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),r=e instanceof Array}catch(e){}return function(e,t){return o(e),i(t),r?n.call(e,t):e.__proto__=t,e}}():void 0)},{"../internals/a-possible-prototype":2,"../internals/an-object":5}],76:[function(e,t,n){"use strict";var r=e("../internals/to-string-tag-support"),o=e("../internals/classof");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},{"../internals/classof":16,"../internals/to-string-tag-support":101}],77:[function(e,t,n){var r=e("../internals/get-built-in"),o=e("../internals/object-get-own-property-names"),i=e("../internals/object-get-own-property-symbols"),s=e("../internals/an-object");t.exports=r("Reflect","ownKeys")||function(e){var t=o.f(s(e)),n=i.f;return n?t.concat(n(e)):t}},{"../internals/an-object":5,"../internals/get-built-in":37,"../internals/object-get-own-property-names":69,"../internals/object-get-own-property-symbols":70}],78:[function(e,t,n){var r=e("../internals/global");t.exports=r},{"../internals/global":40}],79:[function(e,t,n){var l=e("../internals/global"),c=e("../internals/create-non-enumerable-property"),d=e("../internals/has"),u=e("../internals/set-global"),r=e("../internals/inspect-source"),o=e("../internals/internal-state"),i=o.get,f=o.enforce,p=String(String).split("String");(t.exports=function(e,t,n,r){var o,i=!!r&&!!r.unsafe,s=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet;"function"==typeof n&&("string"!=typeof t||d(n,"name")||c(n,"name",t),(o=f(n)).source||(o.source=p.join("string"==typeof t?t:""))),e!==l?(i?!a&&e[t]&&(s=!0):delete e[t],s?e[t]=n:c(e,t,n)):s?e[t]=n:u(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&i(this).source||r(this)})},{"../internals/create-non-enumerable-property":21,"../internals/global":40,"../internals/has":41,"../internals/inspect-source":47,"../internals/internal-state":48,"../internals/set-global":86}],80:[function(e,t,n){var o=e("./classof-raw"),i=e("./regexp-exec");t.exports=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==o(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},{"./classof-raw":15,"./regexp-exec":81}],81:[function(e,t,n){"use strict";var r,o,u=e("./regexp-flags"),i=e("./regexp-sticky-helpers"),s=e("./shared"),f=RegExp.prototype.exec,p=s("native-string-replace",String.prototype.replace),a=f,m=(r=/a/,o=/b*/g,f.call(r,"a"),f.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),h=i.UNSUPPORTED_Y||i.BROKEN_CARET,g=void 0!==/()??/.exec("")[1];(m||g||h)&&(a=function(e){var t,n,r,o,i=this,s=h&&i.sticky,a=u.call(i),l=i.source,c=0,d=e;return s&&(-1===(a=a.replace("y","")).indexOf("g")&&(a+="g"),d=String(e).slice(i.lastIndex),0=t.length?{value:e.target=void 0,done:!0}:"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},{"../internals/add-to-unscopables":3,"../internals/define-iterator":24,"../internals/internal-state":48,"../internals/iterators":57,"../internals/to-indexed-object":96}],115:[function(e,t,n){"use strict";var r=e("../internals/export"),c=e("../internals/is-object"),d=e("../internals/is-array"),u=e("../internals/to-absolute-index"),f=e("../internals/to-length"),p=e("../internals/to-indexed-object"),m=e("../internals/create-property"),o=e("../internals/well-known-symbol"),i=e("../internals/array-method-has-species-support")("slice"),h=o("species"),g=[].slice,y=Math.max;r({target:"Array",proto:!0,forced:!i},{slice:function(e,t){var n,r,o,i=p(this),s=f(i.length),a=u(e,s),l=u(void 0===t?s:t,s);if(d(i)&&("function"!=typeof(n=i.constructor)||n!==Array&&!d(n.prototype)?c(n)&&null===(n=n[h])&&(n=void 0):n=void 0,n===Array||void 0===n))return g.call(i,a,l);for(r=new(void 0===n?Array:n)(y(l-a,0)),o=0;aO;O++)l(b,j=E[O])&&!l(C,j)&&g(C,j,h(b,j));(C.prototype=w).constructor=C,a(i,v,C)}},{"../internals/classof-raw":15,"../internals/descriptors":26,"../internals/fails":33,"../internals/global":40,"../internals/has":41,"../internals/inherit-if-required":46,"../internals/is-forced":51,"../internals/object-create":64,"../internals/object-define-property":66,"../internals/object-get-own-property-descriptor":67,"../internals/object-get-own-property-names":69,"../internals/redefine":79,"../internals/string-trim":94,"../internals/to-primitive":100}],121:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/object-assign");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},{"../internals/export":32,"../internals/object-assign":63}],122:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/descriptors");r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperty:e("../internals/object-define-property").f})},{"../internals/descriptors":26,"../internals/export":32,"../internals/object-define-property":66}],123:[function(e,t,n){var r=e("../internals/to-string-tag-support"),o=e("../internals/redefine"),i=e("../internals/object-to-string");r||o(Object.prototype,"toString",i,{unsafe:!0})},{"../internals/object-to-string":76,"../internals/redefine":79,"../internals/to-string-tag-support":101}],124:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/number-parse-float");r({global:!0,forced:parseFloat!=o},{parseFloat:o})},{"../internals/export":32,"../internals/number-parse-float":61}],125:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/number-parse-int");r({global:!0,forced:parseInt!=o},{parseInt:o})},{"../internals/export":32,"../internals/number-parse-int":62}],126:[function(e,t,n){var r=e("../internals/descriptors"),o=e("../internals/global"),i=e("../internals/is-forced"),a=e("../internals/inherit-if-required"),s=e("../internals/object-define-property").f,l=e("../internals/object-get-own-property-names").f,c=e("../internals/is-regexp"),d=e("../internals/regexp-flags"),u=e("../internals/regexp-sticky-helpers"),f=e("../internals/redefine"),p=e("../internals/fails"),m=e("../internals/internal-state").enforce,h=e("../internals/set-species"),g=e("../internals/well-known-symbol")("match"),y=o.RegExp,v=y.prototype,b=/a/g,w=/a/g,x=new y(b)!==b,j=u.UNSUPPORTED_Y;if(r&&i("RegExp",!x||j||p(function(){return w[g]=!1,y(b)!=b||y(w)==w||"/a/i"!=y(b,"i")}))){function C(t){t in E||s(E,t,{configurable:!0,get:function(){return y[t]},set:function(e){y[t]=e}})}for(var E=function(e,t){var n,r=this instanceof E,o=c(e),i=void 0===t;if(!r&&o&&e.constructor===E&&i)return e;x?o&&!i&&(e=e.source):e instanceof E&&(i&&(t=d.call(e)),e=e.source),j&&(n=!!t&&-1S;)C(O[S++]);(v.constructor=E).prototype=v,f(o,"RegExp",E)}h("RegExp")},{"../internals/descriptors":26,"../internals/fails":33,"../internals/global":40,"../internals/inherit-if-required":46,"../internals/internal-state":48,"../internals/is-forced":51,"../internals/is-regexp":54,"../internals/object-define-property":66,"../internals/object-get-own-property-names":69,"../internals/redefine":79,"../internals/regexp-flags":82,"../internals/regexp-sticky-helpers":83,"../internals/set-species":87,"../internals/well-known-symbol":105}],127:[function(e,t,n){"use strict";var r=e("../internals/export"),o=e("../internals/regexp-exec");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},{"../internals/export":32,"../internals/regexp-exec":81}],128:[function(e,t,n){"use strict";var r=e("../internals/redefine"),o=e("../internals/an-object"),i=e("../internals/fails"),s=e("../internals/regexp-flags"),a="toString",l=RegExp.prototype,c=l[a],d=i(function(){return"/a/b"!=c.call({source:"a",flags:"b"})}),u=c.name!=a;(d||u)&&r(RegExp.prototype,a,function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in l)?s.call(e):n)},{unsafe:!0})},{"../internals/an-object":5,"../internals/fails":33,"../internals/redefine":79,"../internals/regexp-flags":82}],129:[function(e,t,n){"use strict";var r=e("../internals/export"),o=e("../internals/not-a-regexp"),i=e("../internals/require-object-coercible");r({target:"String",proto:!0,forced:!e("../internals/correct-is-regexp-logic")("includes")},{includes:function(e,t){return!!~String(i(this)).indexOf(o(e),1=n.length?{value:void 0,done:!0}:(e=o(n,r),t.index+=e.length,{value:e,done:!1})})},{"../internals/define-iterator":24,"../internals/internal-state":48,"../internals/string-multibyte":93}],131:[function(e,t,n){"use strict";var r=e("../internals/fix-regexp-well-known-symbol-logic"),u=e("../internals/an-object"),f=e("../internals/to-length"),o=e("../internals/require-object-coercible"),p=e("../internals/advance-string-index"),m=e("../internals/regexp-exec-abstract");r("match",1,function(r,c,d){return[function(e){var t=o(this),n=null==e?void 0:e[r];return void 0!==n?n.call(e,t):new RegExp(e)[r](String(t))},function(e){var t=d(c,e,this);if(t.done)return t.value;var n=u(e),r=String(this);if(!n.global)return m(n,r);for(var o,i=n.unicode,s=[],a=n.lastIndex=0;null!==(o=m(n,r));){var l=String(o[0]);""===(s[a]=l)&&(n.lastIndex=p(r,f(n.lastIndex),i)),a++}return 0===a?null:s}]})},{"../internals/advance-string-index":4,"../internals/an-object":5,"../internals/fix-regexp-well-known-symbol-logic":34,"../internals/regexp-exec-abstract":80,"../internals/require-object-coercible":84,"../internals/to-length":98}],132:[function(e,t,n){"use strict";var r=e("../internals/fix-regexp-well-known-symbol-logic"),S=e("../internals/an-object"),N=e("../internals/to-length"),I=e("../internals/to-integer"),i=e("../internals/require-object-coercible"),k=e("../internals/advance-string-index"),P=e("../internals/get-substitution"),T=e("../internals/regexp-exec-abstract"),A=Math.max,L=Math.min;r("replace",2,function(o,x,j,e){var C=e.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,E=e.REPLACE_KEEPS_$0,O=C?"$":"$0";return[function(e,t){var n=i(this),r=null==e?void 0:e[o];return void 0!==r?r.call(e,n,t):x.call(String(n),e,t)},function(e,t){if(!C&&E||"string"==typeof t&&-1===t.indexOf(O)){var n=j(x,e,this,t);if(n.done)return n.value}var r=S(e),o=String(this),i="function"==typeof t;i||(t=String(t));var s=r.global;if(s){var a=r.unicode;r.lastIndex=0}for(var l=[];;){var c=T(r,o);if(null===c)break;if(l.push(c),!s)break;""===String(c[0])&&(r.lastIndex=k(o,N(r.lastIndex),a))}for(var d,u="",f=0,p=0;p>>0;if(0==r)return[];if(void 0===e)return[n];if(!u(e))return g.call(n,e,r);for(var o,i,s,a=[],l=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),c=0,d=new RegExp(e.source,l+"g");(o=p.call(d,n))&&!(c<(i=d.lastIndex)&&(a.push(n.slice(c,o.index)),1=r));)d.lastIndex===o.index&&d.lastIndex++;return c===n.length?!s&&d.test("")||a.push(""):a.push(n.slice(c)),a.length>r?a.slice(0,r):a}:"0".split(void 0,0).length?function(e,t){return void 0===e&&0===t?[]:g.call(this,e,t)}:g,[function(e,t){var n=f(this),r=null==e?void 0:e[o];return void 0!==r?r.call(e,n,t):v.call(String(n),e,t)},function(e,t){var n=y(v,e,this,t,v!==g);if(n.done)return n.value;var r=b(e),o=String(this),i=w(r,RegExp),s=r.unicode,a=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(E?"g":"y"),l=new i(E?"^(?:"+r.source+")":r,a),c=void 0===t?S:t>>>0;if(0==c)return[];if(0===o.length)return null===C(l,o)?[o]:[];for(var d=0,u=0,f=[];u=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='/',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(e,t){var n;return function(){n||(e.apply(this,arguments),n=!0,setTimeout(function(){return n=!1},t))}}},{key:"isValidLink",value:function(e){return!this.options.fileExt||e.getAttribute(this.options.sourceAttr)&&new RegExp("("+this.options.fileExt+")$","i").test(e.getAttribute(this.options.sourceAttr))}},{key:"calculateTransitionPrefix",value:function(){var e=(document.body||document.documentElement).style;return"transition"in e?"":"WebkitTransition"in e?"-webkit-":"MozTransition"in e?"-moz-":"OTransition"in e&&"-o"}},{key:"toggleScrollbar",value:function(e){var r=0,t=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===e){var n=window.innerWidth;if(!n){var o=document.documentElement.getBoundingClientRect();n=o.right-Math.abs(o.left)}if(document.body.clientWidth=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=r<0?this.relatedElements.length-1:r>this.relatedElements.length-1?0:r,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*n-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){t.isAnimating=!0,t.isClosing?t.isAnimating=!1:setTimeout(function(){var e=t.relatedElements[t.currentImageIndex];t.currentImage.setAttribute("src",e.getAttribute(t.options.sourceAttr)),-1===t.loadedImages.indexOf(e.getAttribute(t.options.sourceAttr))&&t.show(t.domNodes.spinner),t.domNodes.image.contains(t.domNodes.caption)&&t.domNodes.image.removeChild(t.domNodes.caption),t.adjustImage(n),t.options.preloading&&t.preload()},100)})}},{key:"adjustImage",value:function(s){var a=this;if(!this.currentImage)return!1;var e=new Image,l=window.innerWidth*this.options.widthRatio,c=window.innerHeight*this.options.heightRatio;e.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),e.addEventListener("error",function(e){a.relatedElements[a.currentImageIndex].dispatchEvent(new Event("error."+a.eventNamespace)),a.isAnimating=!1,a.isOpen=!0,a.domNodes.spinner.style.display="none";var t=1===s||-1===s;if(a.initialImageIndex===a.currentImageIndex&&t)return a.close();a.options.alertError&&alert(a.options.alertErrorMessage),a.loadImage(t?s:1)}),e.addEventListener("load",function(e){void 0!==s&&(a.relatedElements[a.currentImageIndex].dispatchEvent(new Event("changed."+a.eventNamespace)),a.relatedElements[a.currentImageIndex].dispatchEvent(new Event((1===s?"nextDone":"prevDone")+"."+a.eventNamespace))),a.options.history&&a.updateURL(),-1===a.loadedImages.indexOf(a.currentImage.getAttribute("src"))&&a.loadedImages.push(a.currentImage.getAttribute("src"));var t,n,r=e.target.width,o=e.target.height;if(a.options.scaleImageToRatio||l=a.relatedElements.length-1&&a.hide(a.domNodes.navigation.querySelector(".sl-next")),0=n.relatedElements.length-1&&0n.options.swipeTolerance&&t?n.loadImage(0c){var n,r=f(s);try{for(r.s();!(n=r.n()).done;){n.value.style.opacity=""}}catch(e){r.e(e)}finally{r.f()}a&&a.call(l,s)}else{var o,i=f(s);try{for(i.s();!(o=i.n()).done;){o.value.style.opacity=t}}catch(e){i.e(e)}finally{i.f()}if(!l.isFadeIn)return;requestAnimationFrame(e)}}()}},{key:"hide",value:function(e){var t,n=f(e=this.wrap(e));try{for(n.s();!(t=n.n()).done;){var r=t.value;r.dataset.initialDisplay=r.style.display,r.style.display="none"}}catch(e){n.e(e)}finally{n.f()}}},{key:"show",value:function(e,t){var n,r=f(e=this.wrap(e));try{for(r.s();!(n=r.n()).done;){var o=n.value;o.style.display=o.dataset.initialDisplay||t||"block"}}catch(e){r.e(e)}finally{r.f()}}},{key:"wrap",value:function(e){return"function"==typeof e[Symbol.iterator]&&"string"!=typeof e?e:[e]}},{key:"on",value:function(e,t){e=this.wrap(e);var n,r=f(this.elements);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.fullyNamespacedEvents||(o.fullyNamespacedEvents={});var i,s=f(e);try{for(s.s();!(i=s.n()).done;){var a=i.value;o.fullyNamespacedEvents[a]=t,o.addEventListener(a,t)}}catch(e){s.e(e)}finally{s.f()}}}catch(e){r.e(e)}finally{r.f()}return this}},{key:"off",value:function(e){e=this.wrap(e);var t,n=f(this.elements);try{for(n.s();!(t=n.n()).done;){var r,o=t.value,i=f(e);try{for(i.s();!(r=i.n()).done;){var s=r.value;void 0!==o.fullyNamespacedEvents&&s in o.fullyNamespacedEvents&&o.removeEventListener(s,o.fullyNamespacedEvents[s])}}catch(e){i.e(e)}finally{i.f()}}}catch(e){n.e(e)}finally{n.f()}return this}},{key:"open",value:function(e){e=e||this.elements[0],"undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e.get(0)),this.initialImageIndex=this.elements.indexOf(e),-1")}),b="$0"==="a".replace(/./,"$0"),r=h("replace"),w=!!/./[r]&&""===/./[r]("a","$0"),x=!p(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});t.exports=function(n,e,t,r){var o=h(n),s=!p(function(){var e={};return e[o]=function(){return 7},7!=""[n](e)}),i=s&&!p(function(){var e=!1,t=/a/;return"split"===n&&((t={constructor:{}}).constructor[g]=function(){return t},t.flags="",t[o]=/./[o]),t.exec=function(){return e=!0,null},t[o](""),!e});if(!s||!i||"replace"===n&&(!v||!b||w)||"split"===n&&!x){var a=/./[o],l=t(o,""[n],function(e,t,n,r,o){var i=t.exec;return i===f||i===y.exec?s&&!o?{done:!0,value:a.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:b,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:w}),c=l[0],d=l[1];u(String.prototype,n,c),u(y,o,2==e?function(e,t){return d.call(e,this,t)}:function(e){return d.call(e,this)})}r&&m(y[o],"sham",!0)}},{"../internals/create-non-enumerable-property":21,"../internals/fails":33,"../internals/redefine":79,"../internals/regexp-exec":81,"../internals/well-known-symbol":105,"../modules/es.regexp.exec":127}],35:[function(e,t,n){var i=e("../internals/a-function");t.exports=function(r,o,e){if(i(r),void 0===o)return r;switch(e){case 0:return function(){return r.call(o)};case 1:return function(e){return r.call(o,e)};case 2:return function(e,t){return r.call(o,e,t)};case 3:return function(e,t,n){return r.call(o,e,t,n)}}return function(){return r.apply(o,arguments)}}},{"../internals/a-function":1}],36:[function(e,t,n){"use strict";var i=e("../internals/a-function"),s=e("../internals/is-object"),a=[].slice,l={};t.exports=Function.bind||function(t){var n=i(this),r=a.call(arguments,1),o=function(){var e=r.concat(a.call(arguments));return this instanceof o?function(e,t,n){if(!(t in l)){for(var r=[],o=0;o]*>)/g,h=/\$([$&'`]|\d{1,2})/g;t.exports=function(i,s,a,l,c,e){var d=a+i.length,u=l.length,t=h;return void 0!==c&&(c=r(c),t=p),o.call(e,t,function(e,t){var n;switch(t.charAt(0)){case"$":return"$";case"&":return i;case"`":return s.slice(0,a);case"'":return s.slice(d);case"<":n=c[t.slice(1,-1)];break;default:var r=+t;if(0==r)return e;if(u>>0||(a.test(n)?16:10))}:s},{"../internals/global":40,"../internals/string-trim":94,"../internals/whitespaces":106}],63:[function(e,t,n){"use strict";var f=e("../internals/descriptors"),r=e("../internals/fails"),p=e("../internals/object-keys"),h=e("../internals/object-get-own-property-symbols"),m=e("../internals/object-property-is-enumerable"),g=e("../internals/to-object"),y=e("../internals/indexed-object"),o=Object.assign,i=Object.defineProperty;t.exports=!o||r(function(){if(f&&1!==o({b:1},o(i({},"a",{enumerable:!0,get:function(){i(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=o({},e)[n]||p(o({},t)).join("")!=r})?function(e,t){for(var n=g(e),r=arguments.length,o=1,i=h.f,s=m.f;o"+e+""}var i,s=e("../internals/an-object"),a=e("../internals/object-define-properties"),l=e("../internals/enum-bug-keys"),c=e("../internals/hidden-keys"),d=e("../internals/html"),u=e("../internals/document-create-element"),f=e("../internals/shared-key"),p="prototype",h="script",m=f("IE_PROTO"),g=function(){try{i=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;g=i?function(e){e.write(o("")),e.close();var t=e.parentWindow.Object;return e=null,t}(i):((t=u("iframe")).style.display="none",d.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(o("document.F=Object")),e.close(),e.F);for(var n=l.length;n--;)delete g[p][l[n]];return g()};c[m]=!0,t.exports=Object.create||function(e,t){var n;return null!==e?(r[p]=s(e),n=new r,r[p]=null,n[m]=e):n=g(),void 0===t?n:a(n,t)}},{"../internals/an-object":5,"../internals/document-create-element":27,"../internals/enum-bug-keys":31,"../internals/hidden-keys":42,"../internals/html":43,"../internals/object-define-properties":65,"../internals/shared-key":89}],65:[function(e,t,n){var r=e("../internals/descriptors"),s=e("../internals/object-define-property"),a=e("../internals/an-object"),l=e("../internals/object-keys");t.exports=r?Object.defineProperties:function(e,t){a(e);for(var n,r=l(t),o=r.length,i=0;io;)s(r,n=t[o++])&&(~l(i,n)||i.push(n));return i}},{"../internals/array-includes":8,"../internals/has":41,"../internals/hidden-keys":42,"../internals/to-indexed-object":96}],73:[function(e,t,n){var r=e("../internals/object-keys-internal"),o=e("../internals/enum-bug-keys");t.exports=Object.keys||function(e){return r(e,o)}},{"../internals/enum-bug-keys":31,"../internals/object-keys-internal":72}],74:[function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);n.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},{}],75:[function(e,t,n){var o=e("../internals/an-object"),i=e("../internals/a-possible-prototype");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var n,r=!1,e={};try{(n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),r=e instanceof Array}catch(e){}return function(e,t){return o(e),i(t),r?n.call(e,t):e.__proto__=t,e}}():void 0)},{"../internals/a-possible-prototype":2,"../internals/an-object":5}],76:[function(e,t,n){"use strict";var r=e("../internals/to-string-tag-support"),o=e("../internals/classof");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},{"../internals/classof":16,"../internals/to-string-tag-support":101}],77:[function(e,t,n){var r=e("../internals/get-built-in"),o=e("../internals/object-get-own-property-names"),i=e("../internals/object-get-own-property-symbols"),s=e("../internals/an-object");t.exports=r("Reflect","ownKeys")||function(e){var t=o.f(s(e)),n=i.f;return n?t.concat(n(e)):t}},{"../internals/an-object":5,"../internals/get-built-in":37,"../internals/object-get-own-property-names":69,"../internals/object-get-own-property-symbols":70}],78:[function(e,t,n){var r=e("../internals/global");t.exports=r},{"../internals/global":40}],79:[function(e,t,n){var l=e("../internals/global"),c=e("../internals/create-non-enumerable-property"),d=e("../internals/has"),u=e("../internals/set-global"),r=e("../internals/inspect-source"),o=e("../internals/internal-state"),i=o.get,f=o.enforce,p=String(String).split("String");(t.exports=function(e,t,n,r){var o,i=!!r&&!!r.unsafe,s=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet;"function"==typeof n&&("string"!=typeof t||d(n,"name")||c(n,"name",t),(o=f(n)).source||(o.source=p.join("string"==typeof t?t:""))),e!==l?(i?!a&&e[t]&&(s=!0):delete e[t],s?e[t]=n:c(e,t,n)):s?e[t]=n:u(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&i(this).source||r(this)})},{"../internals/create-non-enumerable-property":21,"../internals/global":40,"../internals/has":41,"../internals/inspect-source":47,"../internals/internal-state":48,"../internals/set-global":86}],80:[function(e,t,n){var o=e("./classof-raw"),i=e("./regexp-exec");t.exports=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==o(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},{"./classof-raw":15,"./regexp-exec":81}],81:[function(e,t,n){"use strict";var r,o,u=e("./regexp-flags"),i=e("./regexp-sticky-helpers"),s=e("./shared"),f=RegExp.prototype.exec,p=s("native-string-replace",String.prototype.replace),a=f,h=(r=/a/,o=/b*/g,f.call(r,"a"),f.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),m=i.UNSUPPORTED_Y||i.BROKEN_CARET,g=void 0!==/()??/.exec("")[1];(h||g||m)&&(a=function(e){var t,n,r,o,i=this,s=m&&i.sticky,a=u.call(i),l=i.source,c=0,d=e;return s&&(-1===(a=a.replace("y","")).indexOf("g")&&(a+="g"),d=String(e).slice(i.lastIndex),0=t.length?{value:e.target=void 0,done:!0}:"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},{"../internals/add-to-unscopables":3,"../internals/define-iterator":24,"../internals/internal-state":48,"../internals/iterators":57,"../internals/to-indexed-object":96}],115:[function(e,t,n){"use strict";var r=e("../internals/export"),c=e("../internals/is-object"),d=e("../internals/is-array"),u=e("../internals/to-absolute-index"),f=e("../internals/to-length"),p=e("../internals/to-indexed-object"),h=e("../internals/create-property"),o=e("../internals/well-known-symbol"),i=e("../internals/array-method-has-species-support")("slice"),m=o("species"),g=[].slice,y=Math.max;r({target:"Array",proto:!0,forced:!i},{slice:function(e,t){var n,r,o,i=p(this),s=f(i.length),a=u(e,s),l=u(void 0===t?s:t,s);if(d(i)&&("function"!=typeof(n=i.constructor)||n!==Array&&!d(n.prototype)?c(n)&&null===(n=n[m])&&(n=void 0):n=void 0,n===Array||void 0===n))return g.call(i,a,l);for(r=new(void 0===n?Array:n)(y(l-a,0)),o=0;aE;E++)l(b,C=O[E])&&!l(j,C)&&g(j,C,m(b,C));(j.prototype=w).constructor=j,a(i,v,j)}},{"../internals/classof-raw":15,"../internals/descriptors":26,"../internals/fails":33,"../internals/global":40,"../internals/has":41,"../internals/inherit-if-required":46,"../internals/is-forced":51,"../internals/object-create":64,"../internals/object-define-property":66,"../internals/object-get-own-property-descriptor":67,"../internals/object-get-own-property-names":69,"../internals/redefine":79,"../internals/string-trim":94,"../internals/to-primitive":100}],121:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/object-assign");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},{"../internals/export":32,"../internals/object-assign":63}],122:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/descriptors");r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperty:e("../internals/object-define-property").f})},{"../internals/descriptors":26,"../internals/export":32,"../internals/object-define-property":66}],123:[function(e,t,n){var r=e("../internals/to-string-tag-support"),o=e("../internals/redefine"),i=e("../internals/object-to-string");r||o(Object.prototype,"toString",i,{unsafe:!0})},{"../internals/object-to-string":76,"../internals/redefine":79,"../internals/to-string-tag-support":101}],124:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/number-parse-float");r({global:!0,forced:parseFloat!=o},{parseFloat:o})},{"../internals/export":32,"../internals/number-parse-float":61}],125:[function(e,t,n){var r=e("../internals/export"),o=e("../internals/number-parse-int");r({global:!0,forced:parseInt!=o},{parseInt:o})},{"../internals/export":32,"../internals/number-parse-int":62}],126:[function(e,t,n){var r=e("../internals/descriptors"),o=e("../internals/global"),i=e("../internals/is-forced"),a=e("../internals/inherit-if-required"),s=e("../internals/object-define-property").f,l=e("../internals/object-get-own-property-names").f,c=e("../internals/is-regexp"),d=e("../internals/regexp-flags"),u=e("../internals/regexp-sticky-helpers"),f=e("../internals/redefine"),p=e("../internals/fails"),h=e("../internals/internal-state").enforce,m=e("../internals/set-species"),g=e("../internals/well-known-symbol")("match"),y=o.RegExp,v=y.prototype,b=/a/g,w=/a/g,x=new y(b)!==b,C=u.UNSUPPORTED_Y;if(r&&i("RegExp",!x||C||p(function(){return w[g]=!1,y(b)!=b||y(w)==w||"/a/i"!=y(b,"i")}))){function j(t){t in O||s(O,t,{configurable:!0,get:function(){return y[t]},set:function(e){y[t]=e}})}for(var O=function(e,t){var n,r=this instanceof O,o=c(e),i=void 0===t;if(!r&&o&&e.constructor===O&&i)return e;x?o&&!i&&(e=e.source):e instanceof O&&(i&&(t=d.call(e)),e=e.source),C&&(n=!!t&&-1S;)j(E[S++]);(v.constructor=O).prototype=v,f(o,"RegExp",O)}m("RegExp")},{"../internals/descriptors":26,"../internals/fails":33,"../internals/global":40,"../internals/inherit-if-required":46,"../internals/internal-state":48,"../internals/is-forced":51,"../internals/is-regexp":54,"../internals/object-define-property":66,"../internals/object-get-own-property-names":69,"../internals/redefine":79,"../internals/regexp-flags":82,"../internals/regexp-sticky-helpers":83,"../internals/set-species":87,"../internals/well-known-symbol":105}],127:[function(e,t,n){"use strict";var r=e("../internals/export"),o=e("../internals/regexp-exec");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},{"../internals/export":32,"../internals/regexp-exec":81}],128:[function(e,t,n){"use strict";var r=e("../internals/redefine"),o=e("../internals/an-object"),i=e("../internals/fails"),s=e("../internals/regexp-flags"),a="toString",l=RegExp.prototype,c=l[a],d=i(function(){return"/a/b"!=c.call({source:"a",flags:"b"})}),u=c.name!=a;(d||u)&&r(RegExp.prototype,a,function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in l)?s.call(e):n)},{unsafe:!0})},{"../internals/an-object":5,"../internals/fails":33,"../internals/redefine":79,"../internals/regexp-flags":82}],129:[function(e,t,n){"use strict";var r=e("../internals/export"),o=e("../internals/not-a-regexp"),i=e("../internals/require-object-coercible");r({target:"String",proto:!0,forced:!e("../internals/correct-is-regexp-logic")("includes")},{includes:function(e,t){return!!~String(i(this)).indexOf(o(e),1=n.length?{value:void 0,done:!0}:(e=o(n,r),t.index+=e.length,{value:e,done:!1})})},{"../internals/define-iterator":24,"../internals/internal-state":48,"../internals/string-multibyte":93}],131:[function(e,t,n){"use strict";var r=e("../internals/fix-regexp-well-known-symbol-logic"),u=e("../internals/an-object"),f=e("../internals/to-length"),o=e("../internals/require-object-coercible"),p=e("../internals/advance-string-index"),h=e("../internals/regexp-exec-abstract");r("match",1,function(r,c,d){return[function(e){var t=o(this),n=null==e?void 0:e[r];return void 0!==n?n.call(e,t):new RegExp(e)[r](String(t))},function(e){var t=d(c,e,this);if(t.done)return t.value;var n=u(e),r=String(this);if(!n.global)return h(n,r);for(var o,i=n.unicode,s=[],a=n.lastIndex=0;null!==(o=h(n,r));){var l=String(o[0]);""===(s[a]=l)&&(n.lastIndex=p(r,f(n.lastIndex),i)),a++}return 0===a?null:s}]})},{"../internals/advance-string-index":4,"../internals/an-object":5,"../internals/fix-regexp-well-known-symbol-logic":34,"../internals/regexp-exec-abstract":80,"../internals/require-object-coercible":84,"../internals/to-length":98}],132:[function(e,t,n){"use strict";var r=e("../internals/fix-regexp-well-known-symbol-logic"),S=e("../internals/an-object"),N=e("../internals/to-length"),I=e("../internals/to-integer"),i=e("../internals/require-object-coercible"),k=e("../internals/advance-string-index"),P=e("../internals/get-substitution"),T=e("../internals/regexp-exec-abstract"),A=Math.max,L=Math.min;r("replace",2,function(o,x,C,e){var j=e.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,O=e.REPLACE_KEEPS_$0,E=j?"$":"$0";return[function(e,t){var n=i(this),r=null==e?void 0:e[o];return void 0!==r?r.call(e,n,t):x.call(String(n),e,t)},function(e,t){if(!j&&O||"string"==typeof t&&-1===t.indexOf(E)){var n=C(x,e,this,t);if(n.done)return n.value}var r=S(e),o=String(this),i="function"==typeof t;i||(t=String(t));var s=r.global;if(s){var a=r.unicode;r.lastIndex=0}for(var l=[];;){var c=T(r,o);if(null===c)break;if(l.push(c),!s)break;""===String(c[0])&&(r.lastIndex=k(o,N(r.lastIndex),a))}for(var d,u="",f=0,p=0;p>>0;if(0==r)return[];if(void 0===e)return[n];if(!u(e))return g.call(n,e,r);for(var o,i,s,a=[],l=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),c=0,d=new RegExp(e.source,l+"g");(o=p.call(d,n))&&!(c<(i=d.lastIndex)&&(a.push(n.slice(c,o.index)),1=r));)d.lastIndex===o.index&&d.lastIndex++;return c===n.length?!s&&d.test("")||a.push(""):a.push(n.slice(c)),a.length>r?a.slice(0,r):a}:"0".split(void 0,0).length?function(e,t){return void 0===e&&0===t?[]:g.call(this,e,t)}:g,[function(e,t){var n=f(this),r=null==e?void 0:e[o];return void 0!==r?r.call(e,n,t):v.call(String(n),e,t)},function(e,t){var n=y(v,e,this,t,v!==g);if(n.done)return n.value;var r=b(e),o=String(this),i=w(r,RegExp),s=r.unicode,a=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(O?"g":"y"),l=new i(O?"^(?:"+r.source+")":r,a),c=void 0===t?S:t>>>0;if(0==c)return[];if(0===o.length)return null===j(l,o)?[o]:[];for(var d=0,u=0,f=[];u=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='/',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(e,t){var n;return function(){n||(e.apply(this,arguments),n=!0,setTimeout(function(){return n=!1},t))}}},{key:"isValidLink",value:function(e){return!this.options.fileExt||e.getAttribute(this.options.sourceAttr)&&new RegExp("("+this.options.fileExt+")$","i").test(e.getAttribute(this.options.sourceAttr))}},{key:"calculateTransitionPrefix",value:function(){var e=(document.body||document.documentElement).style;return"transition"in e?"":"WebkitTransition"in e?"-webkit-":"MozTransition"in e?"-moz-":"OTransition"in e&&"-o"}},{key:"toggleScrollbar",value:function(e){var r=0,t=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===e){var n=window.innerWidth;if(!n){var o=document.documentElement.getBoundingClientRect();n=o.right-Math.abs(o.left)}if(document.body.clientWidth=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=r<0?this.relatedElements.length-1:r>this.relatedElements.length-1?0:r,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*n-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){t.isAnimating=!0,t.isClosing?t.isAnimating=!1:setTimeout(function(){var e=t.relatedElements[t.currentImageIndex];t.currentImage.setAttribute("src",e.getAttribute(t.options.sourceAttr)),-1===t.loadedImages.indexOf(e.getAttribute(t.options.sourceAttr))&&t.show(t.domNodes.spinner),t.domNodes.image.contains(t.domNodes.caption)&&t.domNodes.image.removeChild(t.domNodes.caption),t.adjustImage(n),t.options.preloading&&t.preload()},100)})}},{key:"adjustImage",value:function(s){var a=this;if(!this.currentImage)return!1;var e=new Image,l=window.innerWidth*this.options.widthRatio,c=window.innerHeight*this.options.heightRatio;e.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),e.addEventListener("error",function(e){a.relatedElements[a.currentImageIndex].dispatchEvent(new Event("error."+a.eventNamespace)),a.isAnimating=!1,a.isOpen=!0,a.domNodes.spinner.style.display="none";var t=1===s||-1===s;if(a.initialImageIndex===a.currentImageIndex&&t)return a.close();a.options.alertError&&alert(a.options.alertErrorMessage),a.loadImage(t?s:1)}),e.addEventListener("load",function(e){void 0!==s&&(a.relatedElements[a.currentImageIndex].dispatchEvent(new Event("changed."+a.eventNamespace)),a.relatedElements[a.currentImageIndex].dispatchEvent(new Event((1===s?"nextDone":"prevDone")+"."+a.eventNamespace))),a.options.history&&a.updateURL(),-1===a.loadedImages.indexOf(a.currentImage.getAttribute("src"))&&a.loadedImages.push(a.currentImage.getAttribute("src"));var t,n,r=e.target.width,o=e.target.height;if(a.options.scaleImageToRatio||l=a.relatedElements.length-1&&a.hide(a.domNodes.navigation.querySelector(".sl-next")),0=n.relatedElements.length-1&&0n.options.swipeTolerance&&t?n.loadImage(0c){var n,r=f(s);try{for(r.s();!(n=r.n()).done;){n.value.style.opacity=""}}catch(e){r.e(e)}finally{r.f()}a&&a.call(l,s)}else{var o,i=f(s);try{for(i.s();!(o=i.n()).done;){o.value.style.opacity=t}}catch(e){i.e(e)}finally{i.f()}if(!l.isFadeIn)return;requestAnimationFrame(e)}}()}},{key:"hide",value:function(e){var t,n=f(e=this.wrap(e));try{for(n.s();!(t=n.n()).done;){var r=t.value;r.dataset.initialDisplay=r.style.display,r.style.display="none"}}catch(e){n.e(e)}finally{n.f()}}},{key:"show",value:function(e,t){var n,r=f(e=this.wrap(e));try{for(r.s();!(n=r.n()).done;){var o=n.value;o.style.display=o.dataset.initialDisplay||t||"block"}}catch(e){r.e(e)}finally{r.f()}}},{key:"wrap",value:function(e){return"function"==typeof e[Symbol.iterator]&&"string"!=typeof e?e:[e]}},{key:"on",value:function(e,t){e=this.wrap(e);var n,r=f(this.elements);try{for(r.s();!(n=r.n()).done;){var o=n.value;o.fullyNamespacedEvents||(o.fullyNamespacedEvents={});var i,s=f(e);try{for(s.s();!(i=s.n()).done;){var a=i.value;o.fullyNamespacedEvents[a]=t,o.addEventListener(a,t)}}catch(e){s.e(e)}finally{s.f()}}}catch(e){r.e(e)}finally{r.f()}return this}},{key:"off",value:function(e){e=this.wrap(e);var t,n=f(this.elements);try{for(n.s();!(t=n.n()).done;){var r,o=t.value,i=f(e);try{for(i.s();!(r=i.n()).done;){var s=r.value;void 0!==o.fullyNamespacedEvents&&s in o.fullyNamespacedEvents&&o.removeEventListener(s,o.fullyNamespacedEvents[s])}}catch(e){i.e(e)}finally{i.f()}}}catch(e){n.e(e)}finally{n.f()}return this}},{key:"open",value:function(e){e=e||this.elements[0],"undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e.get(0)),this.initialImageIndex=this.elements.indexOf(e),-1=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){o=o.call(t)},n:function(){var t=o.next();return a=t.done,t},e:function(t){r=!0,s=t},f:function(){try{a||null==o.return||o.return()}finally{if(r)throw s}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,i=new Array(e);o",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='/',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(t,e){var o;return function(){o||(t.apply(this,arguments),o=!0,setTimeout(function(){return o=!1},e))}}},{key:"isValidLink",value:function(t){return!this.options.fileExt||t.getAttribute(this.options.sourceAttr)&&new RegExp("("+this.options.fileExt+")$","i").test(t.getAttribute(this.options.sourceAttr))}},{key:"calculateTransitionPrefix",value:function(){var t=(document.body||document.documentElement).style;return"transition"in t?"":"WebkitTransition"in t?"-webkit-":"MozTransition"in t?"-moz-":"OTransition"in t&&"-o"}},{key:"toggleScrollbar",value:function(t){var i=0,e=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===t){var o=window.innerWidth;if(!o){var n=document.documentElement.getBoundingClientRect();o=n.right-Math.abs(n.left)}if(document.body.clientWidth=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=i<0?this.relatedElements.length-1:i>this.relatedElements.length-1?0:i,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*o-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){e.isAnimating=!0,e.isClosing?e.isAnimating=!1:setTimeout(function(){var t=e.relatedElements[e.currentImageIndex];e.currentImage.setAttribute("src",t.getAttribute(e.options.sourceAttr)),-1===e.loadedImages.indexOf(t.getAttribute(e.options.sourceAttr))&&e.show(e.domNodes.spinner),e.domNodes.image.contains(e.domNodes.caption)&&e.domNodes.image.removeChild(e.domNodes.caption),e.adjustImage(o),e.options.preloading&&e.preload()},100)})}},{key:"adjustImage",value:function(a){var r=this;if(!this.currentImage)return!1;var t=new Image,l=window.innerWidth*this.options.widthRatio,d=window.innerHeight*this.options.heightRatio;t.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),t.addEventListener("error",function(t){r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("error."+r.eventNamespace)),r.isAnimating=!1,r.isOpen=!0,r.domNodes.spinner.style.display="none";var e=1===a||-1===a;if(r.initialImageIndex===r.currentImageIndex&&e)return r.close();r.options.alertError&&alert(r.options.alertErrorMessage),r.loadImage(e?a:1)}),t.addEventListener("load",function(t){void 0!==a&&(r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("changed."+r.eventNamespace)),r.relatedElements[r.currentImageIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+r.eventNamespace))),r.options.history&&r.updateURL(),-1===r.loadedImages.indexOf(r.currentImage.getAttribute("src"))&&r.loadedImages.push(r.currentImage.getAttribute("src"));var e,o,i=t.target.width,n=t.target.height;if(r.options.scaleImageToRatio||l=r.relatedElements.length-1&&r.hide(r.domNodes.navigation.querySelector(".sl-next")),0=o.relatedElements.length-1&&0o.options.swipeTolerance&&e?o.loadImage(0d){var o,i=m(a);try{for(i.s();!(o=i.n()).done;){o.value.style.opacity=""}}catch(t){i.e(t)}finally{i.f()}r&&r.call(l,a)}else{var n,s=m(a);try{for(s.s();!(n=s.n()).done;){n.value.style.opacity=e}}catch(t){s.e(t)}finally{s.f()}if(!l.isFadeIn)return;requestAnimationFrame(t)}}()}},{key:"hide",value:function(t){var e,o=m(t=this.wrap(t));try{for(o.s();!(e=o.n()).done;){var i=e.value;i.dataset.initialDisplay=i.style.display,i.style.display="none"}}catch(t){o.e(t)}finally{o.f()}}},{key:"show",value:function(t,e){var o,i=m(t=this.wrap(t));try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.display=n.dataset.initialDisplay||e||"block"}}catch(t){i.e(t)}finally{i.f()}}},{key:"wrap",value:function(t){return"function"==typeof t[Symbol.iterator]&&"string"!=typeof t?t:[t]}},{key:"on",value:function(t,e){t=this.wrap(t);var o,i=m(this.elements);try{for(i.s();!(o=i.n()).done;){var n=o.value;n.fullyNamespacedEvents||(n.fullyNamespacedEvents={});var s,a=m(t);try{for(a.s();!(s=a.n()).done;){var r=s.value;n.fullyNamespacedEvents[r]=e,n.addEventListener(r,e)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){i.e(t)}finally{i.f()}return this}},{key:"off",value:function(t){t=this.wrap(t);var e,o=m(this.elements);try{for(o.s();!(e=o.n()).done;){var i,n=e.value,s=m(t);try{for(s.s();!(i=s.n()).done;){var a=i.value;void 0!==n.fullyNamespacedEvents&&a in n.fullyNamespacedEvents&&n.removeEventListener(a,n.fullyNamespacedEvents[a])}}catch(t){s.e(t)}finally{s.f()}}}catch(t){o.e(t)}finally{o.f()}return this}},{key:"open",value:function(t){t=t||this.elements[0],"undefined"!=typeof jQuery&&t instanceof jQuery&&(t=t.get(0)),this.initialImageIndex=this.elements.indexOf(t),-1=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){o=o.call(t)},n:function(){var t=o.next();return a=t.done,t},e:function(t){r=!0,s=t},f:function(){try{a||null==o.return||o.return()}finally{if(r)throw s}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,i=new Array(e);o",this.domNodes.navigation=document.createElement("div"),this.domNodes.navigation.classList.add("sl-navigation"),this.domNodes.navigation.innerHTML='"),this.domNodes.counter=document.createElement("div"),this.domNodes.counter.classList.add("sl-counter"),this.domNodes.counter.innerHTML='/',this.domNodes.caption=document.createElement("div"),this.domNodes.caption.classList.add("sl-caption","pos-"+this.options.captionPosition),this.options.captionClass&&this.domNodes.caption.classList.add(this.options.captionClass),this.domNodes.image=document.createElement("div"),this.domNodes.image.classList.add("sl-image"),this.domNodes.wrapper=document.createElement("div"),this.domNodes.wrapper.classList.add("sl-wrapper"),this.domNodes.wrapper.setAttribute("tabindex",-1),this.domNodes.wrapper.setAttribute("role","dialog"),this.domNodes.wrapper.setAttribute("aria-hidden",!1),this.options.className&&this.domNodes.wrapper.classList.add(this.options.className),this.options.rtl&&this.domNodes.wrapper.classList.add("sl-dir-rtl")}},{key:"throttle",value:function(t,e){var o;return function(){o||(t.apply(this,arguments),o=!0,setTimeout(function(){return o=!1},e))}}},{key:"isValidLink",value:function(t){return!this.options.fileExt||t.getAttribute(this.options.sourceAttr)&&new RegExp("("+this.options.fileExt+")$","i").test(t.getAttribute(this.options.sourceAttr))}},{key:"calculateTransitionPrefix",value:function(){var t=(document.body||document.documentElement).style;return"transition"in t?"":"WebkitTransition"in t?"-webkit-":"MozTransition"in t?"-moz-":"OTransition"in t&&"-o"}},{key:"toggleScrollbar",value:function(t){var i=0,e=[].slice.call(document.querySelectorAll("."+this.options.fixedClass));if("hide"===t){var o=window.innerWidth;if(!o){var n=document.documentElement.getBoundingClientRect();o=n.right-Math.abs(n.left)}if(document.body.clientWidth=this.relatedElements.length)&&!1===this.options.loop)return!1;this.currentImageIndex=i<0?this.relatedElements.length-1:i>this.relatedElements.length-1?0:i,this.domNodes.counter.querySelector(".sl-current").innerHTML=this.currentImageIndex+1,this.options.animationSlide&&this.slide(this.options.animationSpeed/1e3,-100*o-this.controlCoordinates.swipeDiff+"px"),this.fadeOut(this.domNodes.image,this.options.fadeSpeed,function(){e.isAnimating=!0,e.isClosing?e.isAnimating=!1:setTimeout(function(){var t=e.relatedElements[e.currentImageIndex];e.currentImage.setAttribute("src",t.getAttribute(e.options.sourceAttr)),-1===e.loadedImages.indexOf(t.getAttribute(e.options.sourceAttr))&&e.show(e.domNodes.spinner),e.domNodes.image.contains(e.domNodes.caption)&&e.domNodes.image.removeChild(e.domNodes.caption),e.adjustImage(o),e.options.preloading&&e.preload()},100)})}},{key:"adjustImage",value:function(a){var r=this;if(!this.currentImage)return!1;var t=new Image,l=window.innerWidth*this.options.widthRatio,d=window.innerHeight*this.options.heightRatio;t.setAttribute("src",this.currentImage.getAttribute("src")),this.currentImage.dataset.scale=1,this.currentImage.dataset.translateX=0,this.currentImage.dataset.translateY=0,this.zoomPanElement(0,0,1),t.addEventListener("error",function(t){r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("error."+r.eventNamespace)),r.isAnimating=!1,r.isOpen=!0,r.domNodes.spinner.style.display="none";var e=1===a||-1===a;if(r.initialImageIndex===r.currentImageIndex&&e)return r.close();r.options.alertError&&alert(r.options.alertErrorMessage),r.loadImage(e?a:1)}),t.addEventListener("load",function(t){void 0!==a&&(r.relatedElements[r.currentImageIndex].dispatchEvent(new Event("changed."+r.eventNamespace)),r.relatedElements[r.currentImageIndex].dispatchEvent(new Event((1===a?"nextDone":"prevDone")+"."+r.eventNamespace))),r.options.history&&r.updateURL(),-1===r.loadedImages.indexOf(r.currentImage.getAttribute("src"))&&r.loadedImages.push(r.currentImage.getAttribute("src"));var e,o,i=t.target.width,n=t.target.height;if(r.options.scaleImageToRatio||l=r.relatedElements.length-1&&r.hide(r.domNodes.navigation.querySelector(".sl-next")),0=o.relatedElements.length-1&&0o.options.swipeTolerance&&e?o.loadImage(0d){var o,i=f(a);try{for(i.s();!(o=i.n()).done;){o.value.style.opacity=""}}catch(t){i.e(t)}finally{i.f()}r&&r.call(l,a)}else{var n,s=f(a);try{for(s.s();!(n=s.n()).done;){n.value.style.opacity=e}}catch(t){s.e(t)}finally{s.f()}if(!l.isFadeIn)return;requestAnimationFrame(t)}}()}},{key:"hide",value:function(t){var e,o=f(t=this.wrap(t));try{for(o.s();!(e=o.n()).done;){var i=e.value;i.dataset.initialDisplay=i.style.display,i.style.display="none"}}catch(t){o.e(t)}finally{o.f()}}},{key:"show",value:function(t,e){var o,i=f(t=this.wrap(t));try{for(i.s();!(o=i.n()).done;){var n=o.value;n.style.display=n.dataset.initialDisplay||e||"block"}}catch(t){i.e(t)}finally{i.f()}}},{key:"wrap",value:function(t){return"function"==typeof t[Symbol.iterator]&&"string"!=typeof t?t:[t]}},{key:"on",value:function(t,e){t=this.wrap(t);var o,i=f(this.elements);try{for(i.s();!(o=i.n()).done;){var n=o.value;n.fullyNamespacedEvents||(n.fullyNamespacedEvents={});var s,a=f(t);try{for(a.s();!(s=a.n()).done;){var r=s.value;n.fullyNamespacedEvents[r]=e,n.addEventListener(r,e)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){i.e(t)}finally{i.f()}return this}},{key:"off",value:function(t){t=this.wrap(t);var e,o=f(this.elements);try{for(o.s();!(e=o.n()).done;){var i,n=e.value,s=f(t);try{for(s.s();!(i=s.n()).done;){var a=i.value;void 0!==n.fullyNamespacedEvents&&a in n.fullyNamespacedEvents&&n.removeEventListener(a,n.fullyNamespacedEvents[a])}}catch(t){s.e(t)}finally{s.f()}}}catch(t){o.e(t)}finally{o.f()}return this}},{key:"open",value:function(t){t=t||this.elements[0],"undefined"!=typeof jQuery&&t instanceof jQuery&&(t=t.get(0)),this.initialImageIndex=this.elements.indexOf(t),-1 1) { - _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale; - _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = '0 0'; _this6.controlCoordinates.zoomed = true; if (!_this6.domNodes.caption.style.opacity && _this6.domNodes.caption.style.display !== 'none') { _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed); } } else { - _this6.controlCoordinates.initialScale = 1; - _this6.controlCoordinates.targetOffsetX = 0; - _this6.controlCoordinates.targetOffsetY = 0; - _this6.controlCoordinates.zoomed = false; - pos = { - x: 0, - y: 0 - }; - zoom_target = { - x: 0, - y: 0 - }; - zoom_point = { - x: 0, - y: 0 - }; - scale = 1; - - if (_this6.domNodes.caption.style.display === 'none') { - _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed); + if (_this6.controlCoordinates.initialScale === 1) { + _this6.controlCoordinates.zoomed = false; + + if (_this6.domNodes.caption.style.display === 'none') { + _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed); + } } - } - _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY); + _this6.controlCoordinates.initialPinchDistance = null; + _this6.controlCoordinates.capture = false; + } - _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); // remove transform origin + _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance; + _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale; + _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX; + _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY; + _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY); - if (_this6.controlCoordinates.targetScale == 1) { - _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = null; - } + _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + "px", _this6.controlCoordinates.targetOffsetY + "px", _this6.controlCoordinates.targetScale); }); } diff --git a/src/simple-lightbox.js b/src/simple-lightbox.js index 409f3ea..9c6a2b8 100644 --- a/src/simple-lightbox.js +++ b/src/simple-lightbox.js @@ -696,17 +696,25 @@ class SimpleLightbox { }); if (this.options.scrollZoom) { - let pos = {x:0,y:0} - let zoom_target = {x:0,y:0} - let zoom_point = {x:0,y:0} let scale = 1 this.addEventListener(this.domNodes.image, ['mousewheel','DOMMouseScroll'], (event) => { + if (this.controlCoordinates.mousedown || this.isAnimating || this.isClosing || !this.isOpen) { + return true; + } + if(this.controlCoordinates.containerHeight == 0) { + this.controlCoordinates.containerHeight = this.getDimensions(this.domNodes.image).height; + this.controlCoordinates.containerWidth = this.getDimensions(this.domNodes.image).width; + this.controlCoordinates.imgHeight = this.getDimensions(this.currentImage).height; + this.controlCoordinates.imgWidth = this.getDimensions(this.currentImage).width; + this.controlCoordinates.containerOffsetX = this.domNodes.image.offsetLeft; + this.controlCoordinates.containerOffsetY = this.domNodes.image.offsetTop; + this.controlCoordinates.initialOffsetX = parseFloat(this.currentImage.dataset.translateX); + this.controlCoordinates.initialOffsetY = parseFloat(this.currentImage.dataset.translateY); + } event.preventDefault(); - zoom_point.x = event.pageX - this.domNodes.image.offsetLeft; - zoom_point.y = event.pageY - this.domNodes.image.offsetTop; let delta = event.delta || event.wheelDelta; if (delta === undefined) { //we are on firefox @@ -714,53 +722,47 @@ class SimpleLightbox { } delta = Math.max(-1,Math.min(1,delta)); // cap the delta to [-1,1] for cross browser consistency - // determine the point on where the slide is zoomed in - zoom_target.x = (zoom_point.x - pos.x)/scale; - zoom_target.y = (zoom_point.y - pos.y)/scale; - // apply zoom scale += delta * this.options.scrollZoomFactor * scale; scale = Math.max(1, Math.min( this.options.maxZoom, scale)); - // calculate x and y based on zoom - pos.x = -zoom_target.x * scale + zoom_point.x; - pos.y = -zoom_target.y * scale + zoom_point.y; - - this.controlCoordinates.targetOffsetX = pos.x; - this.controlCoordinates.targetOffsetY = pos.y; this.controlCoordinates.targetScale = scale; - // handle captions - if (this.controlCoordinates.targetScale > 1) { - this.controlCoordinates.initialScale = this.controlCoordinates.targetScale; - this.currentImage.style[this.transitionPrefix + 'transform-origin'] = '0 0'; + this.controlCoordinates.pinchOffsetX = event.pageX; + this.controlCoordinates.pinchOffsetY = event.pageY; + + this.controlCoordinates.limitOffsetX = ((this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) - this.controlCoordinates.containerWidth) / 2; + this.controlCoordinates.limitOffsetY = ((this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) - this.controlCoordinates.containerHeight) / 2; + this.controlCoordinates.scaleDifference = this.controlCoordinates.targetScale - this.controlCoordinates.initialScale; + this.controlCoordinates.targetOffsetX = (this.controlCoordinates.imgWidth * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerWidth ? 0 : this.minMax(this.controlCoordinates.initialOffsetX - ((((((this.controlCoordinates.pinchOffsetX - this.controlCoordinates.containerOffsetX) - (this.controlCoordinates.containerWidth / 2)) - this.controlCoordinates.initialOffsetX) / (this.controlCoordinates.targetScale - this.controlCoordinates.scaleDifference))) * this.controlCoordinates.scaleDifference), this.controlCoordinates.limitOffsetX * (-1), this.controlCoordinates.limitOffsetX); + this.controlCoordinates.targetOffsetY = (this.controlCoordinates.imgHeight * this.controlCoordinates.targetScale) <= this.controlCoordinates.containerHeight ? 0 : this.minMax(this.controlCoordinates.initialOffsetY - ((((((this.controlCoordinates.pinchOffsetY - this.controlCoordinates.containerOffsetY) - (this.controlCoordinates.containerHeight / 2)) - this.controlCoordinates.initialOffsetY) / (this.controlCoordinates.targetScale - this.controlCoordinates.scaleDifference))) * this.controlCoordinates.scaleDifference), this.controlCoordinates.limitOffsetY * (-1), this.controlCoordinates.limitOffsetY); + this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale); + + if (this.controlCoordinates.targetScale > 1) { this.controlCoordinates.zoomed = true; if (!this.domNodes.caption.style.opacity && this.domNodes.caption.style.display !== 'none') { this.fadeOut(this.domNodes.caption, this.options.fadeSpeed); } } else { - this.controlCoordinates.initialScale = 1; - this.controlCoordinates.targetOffsetX = 0; - this.controlCoordinates.targetOffsetY = 0; - this.controlCoordinates.zoomed = false; - pos = {x:0,y:0} - zoom_target = {x:0,y:0} - zoom_point = {x:0,y:0} - scale = 1 - - if (this.domNodes.caption.style.display === 'none') { - this.fadeIn(this.domNodes.caption, this.options.fadeSpeed); + if (this.controlCoordinates.initialScale === 1) { + this.controlCoordinates.zoomed = false; + if (this.domNodes.caption.style.display === 'none') { + this.fadeIn(this.domNodes.caption, this.options.fadeSpeed); + } } + this.controlCoordinates.initialPinchDistance = null; + this.controlCoordinates.capture = false; } + this.controlCoordinates.initialPinchDistance = this.controlCoordinates.targetPinchDistance; + this.controlCoordinates.initialScale = this.controlCoordinates.targetScale; + this.controlCoordinates.initialOffsetX = this.controlCoordinates.targetOffsetX; + this.controlCoordinates.initialOffsetY = this.controlCoordinates.targetOffsetY; + this.setZoomData(this.controlCoordinates.targetScale, this.controlCoordinates.targetOffsetX, this.controlCoordinates.targetOffsetY); this.zoomPanElement(this.controlCoordinates.targetOffsetX + "px", this.controlCoordinates.targetOffsetY + "px", this.controlCoordinates.targetScale); - // remove transform origin - if (this.controlCoordinates.targetScale == 1) { - this.currentImage.style[this.transitionPrefix + 'transform-origin'] = null; - } }); }