mirror of https://github.com/lxndrblz/anatole.git

Alexander Bilz
15.25.2020 d7e4796722a26582ca28c59f4fc58f2c355548d3
assets/js/medium-zoom.js
@@ -1,450 +1,458 @@
/*! medium-zoom 1.0.5 | MIT License | https://github.com/francoischalifour/medium-zoom */
(function(global, factory) {
    typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = global || self,
    global.mediumZoom = factory());
  })(this, function() {
(function (global, factory) {
    typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = global || self,
        global.mediumZoom = factory());
})(this, function () {
    "use strict";
    var _extends = Object.assign || function(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i];
        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
    var _extends = Object.assign || function (target) {
        for (var i = 1; i < arguments.length; i++) {
            var source = arguments[i];
            for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                    target[key] = source[key];
                }
            }
        }
      }
      return target;
        return target;
    };
    var isSupported = function isSupported(node) {
      return node.tagName === "IMG";
        return node.tagName === "IMG";
    };
    var isNodeList = function isNodeList(selector) {
      return NodeList.prototype.isPrototypeOf(selector);
        return NodeList.prototype.isPrototypeOf(selector);
    };
    var isNode = function isNode(selector) {
      return selector && selector.nodeType === 1;
        return selector && selector.nodeType === 1;
    };
    var isSvg = function isSvg(image) {
      var source = image.currentSrc || image.src;
      return source.substr(-4).toLowerCase() === ".svg";
        var source = image.currentSrc || image.src;
        return source.substr(-4).toLowerCase() === ".svg";
    };
    var getImagesFromSelector = function getImagesFromSelector(selector) {
      try {
        if (Array.isArray(selector)) {
          return selector.filter(isSupported);
        try {
            if (Array.isArray(selector)) {
                return selector.filter(isSupported);
            }
            if (isNodeList(selector)) {
                return [].slice.call(selector).filter(isSupported);
            }
            if (isNode(selector)) {
                return [selector].filter(isSupported);
            }
            if (typeof selector === "string") {
                return [].slice.call(document.querySelectorAll(selector)).filter(isSupported);
            }
            return [];
        } catch (err) {
            throw new TypeError("The provided selector is invalid.\n" + "Expects a CSS selector, a Node element, a NodeList or an array.\n" + "See: https://github.com/francoischalifour/medium-zoom");
        }
        if (isNodeList(selector)) {
          return [].slice.call(selector).filter(isSupported);
        }
        if (isNode(selector)) {
          return [ selector ].filter(isSupported);
        }
        if (typeof selector === "string") {
          return [].slice.call(document.querySelectorAll(selector)).filter(isSupported);
        }
        return [];
      } catch (err) {
        throw new TypeError("The provided selector is invalid.\n" + "Expects a CSS selector, a Node element, a NodeList or an array.\n" + "See: https://github.com/francoischalifour/medium-zoom");
      }
    };
    var createOverlay = function createOverlay() {
      var overlay = document.createElement("div");
      overlay.classList.add("medium-zoom-overlay");
      return overlay;
        var overlay = document.createElement("div");
        overlay.classList.add("medium-zoom-overlay");
        return overlay;
    };
    var cloneTarget = function cloneTarget(template) {
      var _template$getBounding = template.getBoundingClientRect(), top = _template$getBounding.top, left = _template$getBounding.left, width = _template$getBounding.width, height = _template$getBounding.height;
      var clone = template.cloneNode();
      var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
      var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
      clone.removeAttribute("id");
      clone.style.position = "absolute";
      clone.style.top = top + scrollTop + "px";
      clone.style.left = left + scrollLeft + "px";
      clone.style.width = width + "px";
      clone.style.height = height + "px";
      clone.style.transform = "";
      return clone;
        var _template$getBounding = template.getBoundingClientRect(), top = _template$getBounding.top,
            left = _template$getBounding.left, width = _template$getBounding.width,
            height = _template$getBounding.height;
        var clone = template.cloneNode();
        var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
        var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
        clone.removeAttribute("id");
        clone.style.position = "absolute";
        clone.style.top = top + scrollTop + "px";
        clone.style.left = left + scrollLeft + "px";
        clone.style.width = width + "px";
        clone.style.height = height + "px";
        clone.style.transform = "";
        return clone;
    };
    var createCustomEvent = function createCustomEvent(type, params) {
      var eventParams = _extends({
        bubbles: false,
        cancelable: false,
        detail: undefined
      }, params);
      if (typeof window.CustomEvent === "function") {
        return new CustomEvent(type, eventParams);
      }
      var customEvent = document.createEvent("CustomEvent");
      customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);
      return customEvent;
        var eventParams = _extends({
            bubbles: false,
            cancelable: false,
            detail: undefined
        }, params);
        if (typeof window.CustomEvent === "function") {
            return new CustomEvent(type, eventParams);
        }
        var customEvent = document.createEvent("CustomEvent");
        customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);
        return customEvent;
    };
    var mediumZoom = function mediumZoom(selector) {
      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
      var Promise = window.Promise || function Promise(fn) {
        function noop() {}
        fn(noop, noop);
      };
      var _handleClick = function _handleClick(event) {
        var target = event.target;
        if (target === overlay) {
          close();
          return;
        }
        if (images.indexOf(target) === -1) {
          return;
        }
        toggle({
          target: target
        });
      };
      var _handleScroll = function _handleScroll() {
        if (isAnimating || !active.original) {
          return;
        }
        var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
        if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) {
          setTimeout(close, 150);
        }
      };
      var _handleKeyUp = function _handleKeyUp(event) {
        var key = event.key || event.keyCode;
        if (key === "Escape" || key === "Esc" || key === 27) {
          close();
        }
      };
      var update = function update() {
        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
        var newOptions = options;
        if (options.container && options.container instanceof Object) {
          newOptions.container = _extends({}, zoomOptions.container, options.container);
        }
        if (options.template) {
          var template = isNode(options.template) ? options.template : document.querySelector(options.template);
          newOptions.template = template;
        }
        zoomOptions = _extends({}, zoomOptions, newOptions);
        images.forEach(function(image) {
          image.dispatchEvent(createCustomEvent("medium-zoom:update", {
            detail: {
              zoom: zoom
        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
        var Promise = window.Promise || function Promise(fn) {
            function noop() {
            }
          }));
        });
        return zoom;
      };
      var clone = function clone() {
        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
        return mediumZoom(_extends({}, zoomOptions, options));
      };
      var attach = function attach() {
        for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) {
          selectors[_key] = arguments[_key];
        }
        var newImages = selectors.reduce(function(imagesAccumulator, currentSelector) {
          return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));
        }, []);
        newImages.filter(function(newImage) {
          return images.indexOf(newImage) === -1;
        }).forEach(function(newImage) {
          images.push(newImage);
          newImage.classList.add("medium-zoom-image");
        });
        eventListeners.forEach(function(_ref) {
          var type = _ref.type, listener = _ref.listener, options = _ref.options;
          newImages.forEach(function(image) {
            image.addEventListener(type, listener, options);
          });
        });
        return zoom;
      };
      var detach = function detach() {
        for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          selectors[_key2] = arguments[_key2];
        }
        if (active.zoomed) {
          close();
        }
        var imagesToDetach = selectors.length > 0 ? selectors.reduce(function(imagesAccumulator, currentSelector) {
          return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));
        }, []) : images;
        imagesToDetach.forEach(function(image) {
          image.classList.remove("medium-zoom-image");
          image.dispatchEvent(createCustomEvent("medium-zoom:detach", {
            detail: {
              zoom: zoom
            }
          }));
        });
        images = images.filter(function(image) {
          return imagesToDetach.indexOf(image) === -1;
        });
        return zoom;
      };
      var on = function on(type, listener) {
        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
        images.forEach(function(image) {
          image.addEventListener("medium-zoom:" + type, listener, options);
        });
        eventListeners.push({
          type: "medium-zoom:" + type,
          listener: listener,
          options: options
        });
        return zoom;
      };
      var off = function off(type, listener) {
        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
        images.forEach(function(image) {
          image.removeEventListener("medium-zoom:" + type, listener, options);
        });
        eventListeners = eventListeners.filter(function(eventListener) {
          return !(eventListener.type === "medium-zoom:" + type && eventListener.listener.toString() === listener.toString());
        });
        return zoom;
      };
      var open = function open() {
        var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref2.target;
        var _animate = function _animate() {
          var container = {
            width: document.documentElement.clientWidth,
            height: document.documentElement.clientHeight,
            left: 0,
            top: 0,
            right: 0,
            bottom: 0
          };
          var viewportWidth = void 0;
          var viewportHeight = void 0;
          if (zoomOptions.container) {
            if (zoomOptions.container instanceof Object) {
              container = _extends({}, container, zoomOptions.container);
              viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;
              viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;
            } else {
              var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);
              var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(), _width = _zoomContainer$getBou.width, _height = _zoomContainer$getBou.height, _left = _zoomContainer$getBou.left, _top = _zoomContainer$getBou.top;
              container = _extends({}, container, {
                width: _width,
                height: _height,
                left: _left,
                top: _top
              });
            }
          }
          viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;
          viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;
          var zoomTarget = active.zoomedHd || active.original;
          var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;
          var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;
          var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), top = _zoomTarget$getBoundi.top, left = _zoomTarget$getBoundi.left, width = _zoomTarget$getBoundi.width, height = _zoomTarget$getBoundi.height;
          var scaleX = Math.min(naturalWidth, viewportWidth) / width;
          var scaleY = Math.min(naturalHeight, viewportHeight) / height;
          var scale = Math.min(scaleX, scaleY);
          var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;
          var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;
          var transform = "scale(" + scale + ") translate3d(" + translateX + "px, " + translateY + "px, 0)";
          active.zoomed.style.transform = transform;
          if (active.zoomedHd) {
            active.zoomedHd.style.transform = transform;
          }
            fn(noop, noop);
        };
        return new Promise(function(resolve) {
          if (target && images.indexOf(target) === -1) {
            resolve(zoom);
            return;
          }
          var _handleOpenEnd = function _handleOpenEnd() {
            isAnimating = false;
            active.zoomed.removeEventListener("transitionend", _handleOpenEnd);
            active.original.dispatchEvent(createCustomEvent("medium-zoom:opened", {
              detail: {
                zoom: zoom
              }
            }));
            resolve(zoom);
          };
          if (active.zoomed) {
            resolve(zoom);
            return;
          }
          if (target) {
            active.original = target;
          } else if (images.length > 0) {
            var _images = images;
            active.original = _images[0];
          } else {
            resolve(zoom);
            return;
          }
          active.original.dispatchEvent(createCustomEvent("medium-zoom:open", {
            detail: {
              zoom: zoom
        var _handleClick = function _handleClick(event) {
            var target = event.target;
            if (target === overlay) {
                close();
                return;
            }
          }));
          scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
          isAnimating = true;
          active.zoomed = cloneTarget(active.original);
          document.body.appendChild(overlay);
          if (zoomOptions.template) {
            var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);
            active.template = document.createElement("div");
            active.template.appendChild(template.content.cloneNode(true));
            document.body.appendChild(active.template);
          }
          document.body.appendChild(active.zoomed);
          window.requestAnimationFrame(function() {
            document.body.classList.add("medium-zoom--opened");
          });
          active.original.classList.add("medium-zoom-image--hidden");
          active.zoomed.classList.add("medium-zoom-image--opened");
          active.zoomed.addEventListener("click", close);
          active.zoomed.addEventListener("transitionend", _handleOpenEnd);
          if (active.original.getAttribute("data-zoom-src")) {
            active.zoomedHd = active.zoomed.cloneNode();
            active.zoomedHd.removeAttribute("srcset");
            active.zoomedHd.removeAttribute("sizes");
            active.zoomedHd.src = active.zoomed.getAttribute("data-zoom-src");
            active.zoomedHd.onerror = function() {
              clearInterval(getZoomTargetSize);
              console.warn("Unable to reach the zoom image target " + active.zoomedHd.src);
              active.zoomedHd = null;
              _animate();
            };
            var getZoomTargetSize = setInterval(function() {
              if (active.zoomedHd.complete) {
                clearInterval(getZoomTargetSize);
                active.zoomedHd.classList.add("medium-zoom-image--opened");
                active.zoomedHd.addEventListener("click", close);
                document.body.appendChild(active.zoomedHd);
                _animate();
              }
            }, 10);
          } else if (active.original.hasAttribute("srcset")) {
            active.zoomedHd = active.zoomed.cloneNode();
            active.zoomedHd.removeAttribute("sizes");
            var loadEventListener = active.zoomedHd.addEventListener("load", function() {
              active.zoomedHd.removeEventListener("load", loadEventListener);
              active.zoomedHd.classList.add("medium-zoom-image--opened");
              active.zoomedHd.addEventListener("click", close);
              document.body.appendChild(active.zoomedHd);
              _animate();
            if (images.indexOf(target) === -1) {
                return;
            }
            toggle({
                target: target
            });
          } else {
            _animate();
          }
        });
      };
      var close = function close() {
        return new Promise(function(resolve) {
          if (isAnimating || !active.original) {
            resolve(zoom);
            return;
          }
          var _handleCloseEnd = function _handleCloseEnd() {
            active.original.classList.remove("medium-zoom-image--hidden");
            document.body.removeChild(active.zoomed);
            if (active.zoomedHd) {
              document.body.removeChild(active.zoomedHd);
        };
        var _handleScroll = function _handleScroll() {
            if (isAnimating || !active.original) {
                return;
            }
            document.body.removeChild(overlay);
            active.zoomed.classList.remove("medium-zoom-image--opened");
            if (active.template) {
              document.body.removeChild(active.template);
            var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
            if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) {
                setTimeout(close, 150);
            }
            isAnimating = false;
            active.zoomed.removeEventListener("transitionend", _handleCloseEnd);
            active.original.dispatchEvent(createCustomEvent("medium-zoom:closed", {
              detail: {
                zoom: zoom
              }
            }));
            active.original = null;
            active.zoomed = null;
            active.zoomedHd = null;
            active.template = null;
            resolve(zoom);
          };
          isAnimating = true;
          document.body.classList.remove("medium-zoom--opened");
          active.zoomed.style.transform = "";
          if (active.zoomedHd) {
            active.zoomedHd.style.transform = "";
          }
          if (active.template) {
            active.template.style.transition = "opacity 150ms";
            active.template.style.opacity = 0;
          }
          active.original.dispatchEvent(createCustomEvent("medium-zoom:close", {
            detail: {
              zoom: zoom
        };
        var _handleKeyUp = function _handleKeyUp(event) {
            var key = event.key || event.keyCode;
            if (key === "Escape" || key === "Esc" || key === 27) {
                close();
            }
          }));
          active.zoomed.addEventListener("transitionend", _handleCloseEnd);
        });
      };
      var toggle = function toggle() {
        var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref3.target;
        if (active.original) {
          return close();
        };
        var update = function update() {
            var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
            var newOptions = options;
            if (options.container && options.container instanceof Object) {
                newOptions.container = _extends({}, zoomOptions.container, options.container);
            }
            if (options.template) {
                var template = isNode(options.template) ? options.template : document.querySelector(options.template);
                newOptions.template = template;
            }
            zoomOptions = _extends({}, zoomOptions, newOptions);
            images.forEach(function (image) {
                image.dispatchEvent(createCustomEvent("medium-zoom:update", {
                    detail: {
                        zoom: zoom
                    }
                }));
            });
            return zoom;
        };
        var clone = function clone() {
            var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
            return mediumZoom(_extends({}, zoomOptions, options));
        };
        var attach = function attach() {
            for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) {
                selectors[_key] = arguments[_key];
            }
            var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) {
                return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));
            }, []);
            newImages.filter(function (newImage) {
                return images.indexOf(newImage) === -1;
            }).forEach(function (newImage) {
                images.push(newImage);
                newImage.classList.add("medium-zoom-image");
            });
            eventListeners.forEach(function (_ref) {
                var type = _ref.type, listener = _ref.listener, options = _ref.options;
                newImages.forEach(function (image) {
                    image.addEventListener(type, listener, options);
                });
            });
            return zoom;
        };
        var detach = function detach() {
            for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                selectors[_key2] = arguments[_key2];
            }
            if (active.zoomed) {
                close();
            }
            var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) {
                return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));
            }, []) : images;
            imagesToDetach.forEach(function (image) {
                image.classList.remove("medium-zoom-image");
                image.dispatchEvent(createCustomEvent("medium-zoom:detach", {
                    detail: {
                        zoom: zoom
                    }
                }));
            });
            images = images.filter(function (image) {
                return imagesToDetach.indexOf(image) === -1;
            });
            return zoom;
        };
        var on = function on(type, listener) {
            var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
            images.forEach(function (image) {
                image.addEventListener("medium-zoom:" + type, listener, options);
            });
            eventListeners.push({
                type: "medium-zoom:" + type,
                listener: listener,
                options: options
            });
            return zoom;
        };
        var off = function off(type, listener) {
            var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
            images.forEach(function (image) {
                image.removeEventListener("medium-zoom:" + type, listener, options);
            });
            eventListeners = eventListeners.filter(function (eventListener) {
                return !(eventListener.type === "medium-zoom:" + type && eventListener.listener.toString() === listener.toString());
            });
            return zoom;
        };
        var open = function open() {
            var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref2.target;
            var _animate = function _animate() {
                var container = {
                    width: document.documentElement.clientWidth,
                    height: document.documentElement.clientHeight,
                    left: 0,
                    top: 0,
                    right: 0,
                    bottom: 0
                };
                var viewportWidth = void 0;
                var viewportHeight = void 0;
                if (zoomOptions.container) {
                    if (zoomOptions.container instanceof Object) {
                        container = _extends({}, container, zoomOptions.container);
                        viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;
                        viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;
                    } else {
                        var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);
                        var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(),
                            _width = _zoomContainer$getBou.width, _height = _zoomContainer$getBou.height,
                            _left = _zoomContainer$getBou.left, _top = _zoomContainer$getBou.top;
                        container = _extends({}, container, {
                            width: _width,
                            height: _height,
                            left: _left,
                            top: _top
                        });
                    }
                }
                viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;
                viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;
                var zoomTarget = active.zoomedHd || active.original;
                var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;
                var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;
                var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), top = _zoomTarget$getBoundi.top,
                    left = _zoomTarget$getBoundi.left, width = _zoomTarget$getBoundi.width,
                    height = _zoomTarget$getBoundi.height;
                var scaleX = Math.min(naturalWidth, viewportWidth) / width;
                var scaleY = Math.min(naturalHeight, viewportHeight) / height;
                var scale = Math.min(scaleX, scaleY);
                var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;
                var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;
                var transform = "scale(" + scale + ") translate3d(" + translateX + "px, " + translateY + "px, 0)";
                active.zoomed.style.transform = transform;
                if (active.zoomedHd) {
                    active.zoomedHd.style.transform = transform;
                }
            };
            return new Promise(function (resolve) {
                if (target && images.indexOf(target) === -1) {
                    resolve(zoom);
                    return;
                }
                var _handleOpenEnd = function _handleOpenEnd() {
                    isAnimating = false;
                    active.zoomed.removeEventListener("transitionend", _handleOpenEnd);
                    active.original.dispatchEvent(createCustomEvent("medium-zoom:opened", {
                        detail: {
                            zoom: zoom
                        }
                    }));
                    resolve(zoom);
                };
                if (active.zoomed) {
                    resolve(zoom);
                    return;
                }
                if (target) {
                    active.original = target;
                } else if (images.length > 0) {
                    var _images = images;
                    active.original = _images[0];
                } else {
                    resolve(zoom);
                    return;
                }
                active.original.dispatchEvent(createCustomEvent("medium-zoom:open", {
                    detail: {
                        zoom: zoom
                    }
                }));
                scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
                isAnimating = true;
                active.zoomed = cloneTarget(active.original);
                document.body.appendChild(overlay);
                if (zoomOptions.template) {
                    var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);
                    active.template = document.createElement("div");
                    active.template.appendChild(template.content.cloneNode(true));
                    document.body.appendChild(active.template);
                }
                document.body.appendChild(active.zoomed);
                window.requestAnimationFrame(function () {
                    document.body.classList.add("medium-zoom--opened");
                });
                active.original.classList.add("medium-zoom-image--hidden");
                active.zoomed.classList.add("medium-zoom-image--opened");
                active.zoomed.addEventListener("click", close);
                active.zoomed.addEventListener("transitionend", _handleOpenEnd);
                if (active.original.getAttribute("data-zoom-src")) {
                    active.zoomedHd = active.zoomed.cloneNode();
                    active.zoomedHd.removeAttribute("srcset");
                    active.zoomedHd.removeAttribute("sizes");
                    active.zoomedHd.src = active.zoomed.getAttribute("data-zoom-src");
                    active.zoomedHd.onerror = function () {
                        clearInterval(getZoomTargetSize);
                        console.warn("Unable to reach the zoom image target " + active.zoomedHd.src);
                        active.zoomedHd = null;
                        _animate();
                    };
                    var getZoomTargetSize = setInterval(function () {
                        if (active.zoomedHd.complete) {
                            clearInterval(getZoomTargetSize);
                            active.zoomedHd.classList.add("medium-zoom-image--opened");
                            active.zoomedHd.addEventListener("click", close);
                            document.body.appendChild(active.zoomedHd);
                            _animate();
                        }
                    }, 10);
                } else if (active.original.hasAttribute("srcset")) {
                    active.zoomedHd = active.zoomed.cloneNode();
                    active.zoomedHd.removeAttribute("sizes");
                    var loadEventListener = active.zoomedHd.addEventListener("load", function () {
                        active.zoomedHd.removeEventListener("load", loadEventListener);
                        active.zoomedHd.classList.add("medium-zoom-image--opened");
                        active.zoomedHd.addEventListener("click", close);
                        document.body.appendChild(active.zoomedHd);
                        _animate();
                    });
                } else {
                    _animate();
                }
            });
        };
        var close = function close() {
            return new Promise(function (resolve) {
                if (isAnimating || !active.original) {
                    resolve(zoom);
                    return;
                }
                var _handleCloseEnd = function _handleCloseEnd() {
                    active.original.classList.remove("medium-zoom-image--hidden");
                    document.body.removeChild(active.zoomed);
                    if (active.zoomedHd) {
                        document.body.removeChild(active.zoomedHd);
                    }
                    document.body.removeChild(overlay);
                    active.zoomed.classList.remove("medium-zoom-image--opened");
                    if (active.template) {
                        document.body.removeChild(active.template);
                    }
                    isAnimating = false;
                    active.zoomed.removeEventListener("transitionend", _handleCloseEnd);
                    active.original.dispatchEvent(createCustomEvent("medium-zoom:closed", {
                        detail: {
                            zoom: zoom
                        }
                    }));
                    active.original = null;
                    active.zoomed = null;
                    active.zoomedHd = null;
                    active.template = null;
                    resolve(zoom);
                };
                isAnimating = true;
                document.body.classList.remove("medium-zoom--opened");
                active.zoomed.style.transform = "";
                if (active.zoomedHd) {
                    active.zoomedHd.style.transform = "";
                }
                if (active.template) {
                    active.template.style.transition = "opacity 150ms";
                    active.template.style.opacity = 0;
                }
                active.original.dispatchEvent(createCustomEvent("medium-zoom:close", {
                    detail: {
                        zoom: zoom
                    }
                }));
                active.zoomed.addEventListener("transitionend", _handleCloseEnd);
            });
        };
        var toggle = function toggle() {
            var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref3.target;
            if (active.original) {
                return close();
            }
            return open({
                target: target
            });
        };
        var getOptions = function getOptions() {
            return zoomOptions;
        };
        var getImages = function getImages() {
            return images;
        };
        var getZoomedImage = function getZoomedImage() {
            return active.original;
        };
        var images = [];
        var eventListeners = [];
        var isAnimating = false;
        var scrollTop = 0;
        var zoomOptions = options;
        var active = {
            original: null,
            zoomed: null,
            zoomedHd: null,
            template: null
        };
        if (Object.prototype.toString.call(selector) === "[object Object]") {
            zoomOptions = selector;
        } else if (selector || typeof selector === "string") {
            attach(selector);
        }
        return open({
          target: target
        });
      };
      var getOptions = function getOptions() {
        return zoomOptions;
      };
      var getImages = function getImages() {
        return images;
      };
      var getZoomedImage = function getZoomedImage() {
        return active.original;
      };
      var images = [];
      var eventListeners = [];
      var isAnimating = false;
      var scrollTop = 0;
      var zoomOptions = options;
      var active = {
        original: null,
        zoomed: null,
        zoomedHd: null,
        template: null
      };
      if (Object.prototype.toString.call(selector) === "[object Object]") {
        zoomOptions = selector;
      } else if (selector || typeof selector === "string") {
        attach(selector);
      }
      zoomOptions = _extends({
        margin: 0,
        scrollOffset: 40,
        container: null,
        template: null
      }, zoomOptions);
      var overlay = createOverlay();
      document.addEventListener("click", _handleClick);
      document.addEventListener("keyup", _handleKeyUp);
      document.addEventListener("scroll", _handleScroll);
      window.addEventListener("resize", close);
      var zoom = {
        open: open,
        close: close,
        toggle: toggle,
        update: update,
        clone: clone,
        attach: attach,
        detach: detach,
        on: on,
        off: off,
        getOptions: getOptions,
        getImages: getImages,
        getZoomedImage: getZoomedImage
      };
      return zoom;
        zoomOptions = _extends({
            margin: 0,
            scrollOffset: 40,
            container: null,
            template: null
        }, zoomOptions);
        var overlay = createOverlay();
        document.addEventListener("click", _handleClick);
        document.addEventListener("keyup", _handleKeyUp);
        document.addEventListener("scroll", _handleScroll);
        window.addEventListener("resize", close);
        var zoom = {
            open: open,
            close: close,
            toggle: toggle,
            update: update,
            clone: clone,
            attach: attach,
            detach: detach,
            on: on,
            off: off,
            getOptions: getOptions,
            getImages: getImages,
            getZoomedImage: getZoomedImage
        };
        return zoom;
    };
    return mediumZoom;
  });
});
mediumZoom(document.querySelectorAll('div.post-content img'));
mediumZoom(document.querySelectorAll('div.post-content img'));