{"version":3,"sources":["jsdelivr-header.js","/npm/@icetee/react-image-lightbox@5.1.4/dist/index.cjs.js"],"names":[],"mappings":"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","file":"/npm/@icetee/react-image-lightbox@5.1.4/dist/index.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@icetee/react-image-lightbox@5.1.4/dist/index.cjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar Modal = require('react-modal');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\nvar PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);\nvar Modal__default = /*#__PURE__*/_interopDefaultLegacy(Modal);\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/**\n * Placeholder for future translate functionality\n */\nfunction translate(str) {\n  var replaceStrings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n  if (!str) {\n    return '';\n  }\n\n  var translated = str;\n\n  if (replaceStrings) {\n    Object.keys(replaceStrings).forEach(function (placeholder) {\n      translated = translated.replace(placeholder, replaceStrings[placeholder]);\n    });\n  }\n\n  return translated;\n}\nfunction getWindowWidth() {\n  return typeof global.window !== 'undefined' ? global.window.innerWidth : 0;\n}\nfunction getWindowHeight() {\n  return typeof global.window !== 'undefined' ? global.window.innerHeight : 0;\n}\n\nvar isCrossOriginFrame = function isCrossOriginFrame() {\n  try {\n    return global.window.location.hostname !== global.window.parent.location.hostname;\n  } catch (e) {\n    return true;\n  }\n}; // Get the highest window context that isn't cross-origin\n// (When in an iframe)\n\n\nfunction getHighestSafeWindowContext() {\n  var self = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : global.window.self;\n\n  // If we reached the top level, return self\n  if (self === global.window.top) {\n    return self;\n  } // If parent is the same origin, we can move up one context\n  // Reference: https://stackoverflow.com/a/21965342/1601953\n\n\n  if (!isCrossOriginFrame()) {\n    return getHighestSafeWindowContext(self.parent);\n  } // If a different origin, we consider the current level\n  // as the top reachable one\n\n\n  return self;\n}\n\n// Min image zoom level\nvar MIN_ZOOM_LEVEL = 0; // Max image zoom level\n\nvar MAX_ZOOM_LEVEL = 300; // Size ratio between previous and next zoom levels\n\nvar ZOOM_RATIO = 1.007; // How much to increase/decrease the zoom level when the zoom buttons are clicked\n\nvar ZOOM_BUTTON_INCREMENT_SIZE = 100; // Used to judge the amount of horizontal scroll needed to initiate a image move\n\nvar WHEEL_MOVE_X_THRESHOLD = 200; // Used to judge the amount of vertical scroll needed to initiate a zoom action\n\nvar WHEEL_MOVE_Y_THRESHOLD = 1;\nvar KEYS = {\n  ESC: 27,\n  LEFT_ARROW: 37,\n  RIGHT_ARROW: 39\n}; // Actions\n\nvar ACTION_NONE = 0;\nvar ACTION_MOVE = 1;\nvar ACTION_SWIPE = 2;\nvar ACTION_PINCH = 3;\n\nvar SOURCE_ANY = 0;\nvar SOURCE_MOUSE = 1;\nvar SOURCE_TOUCH = 2;\nvar SOURCE_POINTER = 3; // Minimal swipe distance\n\nvar MIN_SWIPE_DISTANCE = 200;\n\nvar ReactImageLightbox = /*#__PURE__*/function (_Component) {\n  _inherits(ReactImageLightbox, _Component);\n\n  var _super = _createSuper(ReactImageLightbox);\n\n  function ReactImageLightbox(props) {\n    var _this;\n\n    _classCallCheck(this, ReactImageLightbox);\n\n    _this = _super.call(this, props);\n    _this.state = {\n      //-----------------------------\n      // Animation\n      //-----------------------------\n      // Lightbox is closing\n      // When Lightbox is mounted, if animation is enabled it will open with the reverse of the closing animation\n      isClosing: !props.animationDisabled,\n      // Component parts should animate (e.g., when images are moving, or image is being zoomed)\n      shouldAnimate: false,\n      //-----------------------------\n      // Zoom settings\n      //-----------------------------\n      // Zoom level of image\n      zoomLevel: MIN_ZOOM_LEVEL,\n      //-----------------------------\n      // Image position settings\n      //-----------------------------\n      // Horizontal offset from center\n      offsetX: 0,\n      // Vertical offset from center\n      offsetY: 0,\n      // image load error for srcType\n      loadErrorStatus: {}\n    }; // Refs\n\n    _this.outerEl = /*#__PURE__*/React__default['default'].createRef();\n    _this.zoomInBtn = /*#__PURE__*/React__default['default'].createRef();\n    _this.zoomOutBtn = /*#__PURE__*/React__default['default'].createRef();\n    _this.caption = /*#__PURE__*/React__default['default'].createRef();\n    _this.closeIfClickInner = _this.closeIfClickInner.bind(_assertThisInitialized(_this));\n    _this.handleImageDoubleClick = _this.handleImageDoubleClick.bind(_assertThisInitialized(_this));\n    _this.handleImageMouseWheel = _this.handleImageMouseWheel.bind(_assertThisInitialized(_this));\n    _this.handleKeyInput = _this.handleKeyInput.bind(_assertThisInitialized(_this));\n    _this.handleMouseUp = _this.handleMouseUp.bind(_assertThisInitialized(_this));\n    _this.handleMouseDown = _this.handleMouseDown.bind(_assertThisInitialized(_this));\n    _this.handleMouseMove = _this.handleMouseMove.bind(_assertThisInitialized(_this));\n    _this.handleOuterMousewheel = _this.handleOuterMousewheel.bind(_assertThisInitialized(_this));\n    _this.handleTouchStart = _this.handleTouchStart.bind(_assertThisInitialized(_this));\n    _this.handleTouchMove = _this.handleTouchMove.bind(_assertThisInitialized(_this));\n    _this.handleTouchEnd = _this.handleTouchEnd.bind(_assertThisInitialized(_this));\n    _this.handlePointerEvent = _this.handlePointerEvent.bind(_assertThisInitialized(_this));\n    _this.handleCaptionMousewheel = _this.handleCaptionMousewheel.bind(_assertThisInitialized(_this));\n    _this.handleWindowResize = _this.handleWindowResize.bind(_assertThisInitialized(_this));\n    _this.handleZoomInButtonClick = _this.handleZoomInButtonClick.bind(_assertThisInitialized(_this));\n    _this.handleZoomOutButtonClick = _this.handleZoomOutButtonClick.bind(_assertThisInitialized(_this));\n    _this.requestClose = _this.requestClose.bind(_assertThisInitialized(_this));\n    _this.requestMoveNext = _this.requestMoveNext.bind(_assertThisInitialized(_this));\n    _this.requestMovePrev = _this.requestMovePrev.bind(_assertThisInitialized(_this)); // Timeouts - always clear it before umount\n\n    _this.timeouts = []; // Current action\n\n    _this.currentAction = ACTION_NONE; // Events source\n\n    _this.eventsSource = SOURCE_ANY; // Empty pointers list\n\n    _this.pointerList = []; // Prevent inner close\n\n    _this.preventInnerClose = false;\n    _this.preventInnerCloseTimeout = null; // Used to disable animation when changing props.mainSrc|nextSrc|prevSrc\n\n    _this.keyPressed = false; // Used to store load state / dimensions of images\n\n    _this.imageCache = {}; // Time the last keydown event was called (used in keyboard action rate limiting)\n\n    _this.lastKeyDownTime = 0; // Used for debouncing window resize event\n\n    _this.resizeTimeout = null; // Used to determine when actions are triggered by the scroll wheel\n\n    _this.wheelActionTimeout = null;\n    _this.resetScrollTimeout = null;\n    _this.scrollX = 0;\n    _this.scrollY = 0; // Used in panning zoomed images\n\n    _this.moveStartX = 0;\n    _this.moveStartY = 0;\n    _this.moveStartOffsetX = 0;\n    _this.moveStartOffsetY = 0; // Used to swipe\n\n    _this.swipeStartX = 0;\n    _this.swipeStartY = 0;\n    _this.swipeEndX = 0;\n    _this.swipeEndY = 0; // Used to pinch\n\n    _this.pinchTouchList = null;\n    _this.pinchDistance = 0; // Used to differentiate between images with identical src\n\n    _this.keyCounter = 0; // Used to detect a move when all src's remain unchanged (four or more of the same image in a row)\n\n    _this.moveRequested = false;\n    return _this;\n  }\n\n  _createClass(ReactImageLightbox, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      if (!this.props.animationDisabled) {\n        // Make opening animation play\n        this.setState({\n          isClosing: false\n        });\n      } // Prevents cross-origin errors when using a cross-origin iframe\n\n\n      this.windowContext = getHighestSafeWindowContext();\n      this.listeners = {\n        resize: this.handleWindowResize,\n        mouseup: this.handleMouseUp,\n        touchend: this.handleTouchEnd,\n        touchcancel: this.handleTouchEnd,\n        pointerdown: this.handlePointerEvent,\n        pointermove: this.handlePointerEvent,\n        pointerup: this.handlePointerEvent,\n        pointercancel: this.handlePointerEvent\n      };\n      Object.keys(this.listeners).forEach(function (type) {\n        _this2.windowContext.addEventListener(type, _this2.listeners[type]);\n      });\n      this.loadAllImages();\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      var _this3 = this;\n\n      this.getSrcTypes().forEach(function (srcType) {\n        if (_this3.props[srcType.name] !== nextProps[srcType.name]) {\n          _this3.moveRequested = false;\n        }\n      }); // Wait for move...\n\n      return !this.moveRequested;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this4 = this;\n\n      var sourcesChanged = false;\n      var prevSrcDict = {};\n      var nextSrcDict = {};\n      this.getSrcTypes().forEach(function (srcType) {\n        if (prevProps[srcType.name] !== _this4.props[srcType.name]) {\n          sourcesChanged = true;\n          prevSrcDict[prevProps[srcType.name]] = true;\n          nextSrcDict[_this4.props[srcType.name]] = true;\n        }\n      });\n\n      if (sourcesChanged || this.moveRequested) {\n        // Reset the loaded state for images not rendered next\n        Object.keys(prevSrcDict).forEach(function (prevSrc) {\n          if (!(prevSrc in nextSrcDict) && prevSrc in _this4.imageCache) {\n            _this4.imageCache[prevSrc].loaded = false;\n          }\n        });\n        this.moveRequested = false; // Load any new images\n\n        this.loadAllImages(this.props);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var _this5 = this;\n\n      this.didUnmount = true;\n      Object.keys(this.listeners).forEach(function (type) {\n        _this5.windowContext.removeEventListener(type, _this5.listeners[type]);\n      });\n      this.timeouts.forEach(function (tid) {\n        return clearTimeout(tid);\n      });\n    }\n  }, {\n    key: \"setTimeout\",\n    value: function (_setTimeout) {\n      function setTimeout(_x, _x2) {\n        return _setTimeout.apply(this, arguments);\n      }\n\n      setTimeout.toString = function () {\n        return _setTimeout.toString();\n      };\n\n      return setTimeout;\n    }(function (func, time) {\n      var _this6 = this;\n\n      var id = setTimeout(function () {\n        _this6.timeouts = _this6.timeouts.filter(function (tid) {\n          return tid !== id;\n        });\n        func();\n      }, time);\n      this.timeouts.push(id);\n      return id;\n    })\n  }, {\n    key: \"setPreventInnerClose\",\n    value: function setPreventInnerClose() {\n      var _this7 = this;\n\n      if (this.preventInnerCloseTimeout) {\n        this.clearTimeout(this.preventInnerCloseTimeout);\n      }\n\n      this.preventInnerClose = true;\n      this.preventInnerCloseTimeout = this.setTimeout(function () {\n        _this7.preventInnerClose = false;\n        _this7.preventInnerCloseTimeout = null;\n      }, 100);\n    } // Get info for the best suited image to display with the given srcType\n\n  }, {\n    key: \"getBestImageForType\",\n    value: function getBestImageForType(srcType) {\n      var imageSrc = this.props[srcType];\n      var fitSizes = {};\n\n      if (this.isImageLoaded(imageSrc)) {\n        // Use full-size image if available\n        fitSizes = this.getFitSizes(this.imageCache[imageSrc].width, this.imageCache[imageSrc].height);\n      } else if (this.isImageLoaded(this.props[\"\".concat(srcType, \"Thumbnail\")])) {\n        // Fall back to using thumbnail if the image has not been loaded\n        imageSrc = this.props[\"\".concat(srcType, \"Thumbnail\")];\n        fitSizes = this.getFitSizes(this.imageCache[imageSrc].width, this.imageCache[imageSrc].height, true);\n      } else {\n        return null;\n      }\n\n      return {\n        src: imageSrc,\n        height: this.imageCache[imageSrc].height,\n        width: this.imageCache[imageSrc].width,\n        targetHeight: fitSizes.height,\n        targetWidth: fitSizes.width\n      };\n    } // Get sizing for when an image is larger than the window\n\n  }, {\n    key: \"getFitSizes\",\n    value: function getFitSizes(width, height, stretch) {\n      var boxSize = this.getLightboxRect();\n      var maxHeight = boxSize.height - this.props.imagePadding * 2;\n      var maxWidth = boxSize.width - this.props.imagePadding * 2;\n\n      if (!stretch) {\n        maxHeight = Math.min(maxHeight, height);\n        maxWidth = Math.min(maxWidth, width);\n      }\n\n      var maxRatio = maxWidth / maxHeight;\n      var srcRatio = width / height;\n\n      if (maxRatio > srcRatio) {\n        // height is the constraining dimension of the photo\n        return {\n          width: width * maxHeight / height,\n          height: maxHeight\n        };\n      }\n\n      return {\n        width: maxWidth,\n        height: height * maxWidth / width\n      };\n    }\n  }, {\n    key: \"getMaxOffsets\",\n    value: function getMaxOffsets() {\n      var zoomLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state.zoomLevel;\n      var currentImageInfo = this.getBestImageForType('mainSrc');\n\n      if (currentImageInfo === null) {\n        return {\n          maxX: 0,\n          minX: 0,\n          maxY: 0,\n          minY: 0\n        };\n      }\n\n      var boxSize = this.getLightboxRect();\n      var zoomMultiplier = this.getZoomMultiplier(zoomLevel);\n      var maxX = 0;\n\n      if (zoomMultiplier * currentImageInfo.width - boxSize.width < 0) {\n        // if there is still blank space in the X dimension, don't limit except to the opposite edge\n        maxX = (boxSize.width - zoomMultiplier * currentImageInfo.width) / 2;\n      } else {\n        maxX = (zoomMultiplier * currentImageInfo.width - boxSize.width) / 2;\n      }\n\n      var maxY = 0;\n\n      if (zoomMultiplier * currentImageInfo.height - boxSize.height < 0) {\n        // if there is still blank space in the Y dimension, don't limit except to the opposite edge\n        maxY = (boxSize.height - zoomMultiplier * currentImageInfo.height) / 2;\n      } else {\n        maxY = (zoomMultiplier * currentImageInfo.height - boxSize.height) / 2;\n      }\n\n      return {\n        maxX: maxX,\n        maxY: maxY,\n        minX: -1 * maxX,\n        minY: -1 * maxY\n      };\n    } // Get image src types\n\n  }, {\n    key: \"getSrcTypes\",\n    value: function getSrcTypes() {\n      return [{\n        name: 'mainSrc',\n        keyEnding: \"i\".concat(this.keyCounter)\n      }, {\n        name: 'mainSrcThumbnail',\n        keyEnding: \"t\".concat(this.keyCounter)\n      }, {\n        name: 'nextSrc',\n        keyEnding: \"i\".concat(this.keyCounter + 1)\n      }, {\n        name: 'nextSrcThumbnail',\n        keyEnding: \"t\".concat(this.keyCounter + 1)\n      }, {\n        name: 'prevSrc',\n        keyEnding: \"i\".concat(this.keyCounter - 1)\n      }, {\n        name: 'prevSrcThumbnail',\n        keyEnding: \"t\".concat(this.keyCounter - 1)\n      }];\n    }\n    /**\n     * Get sizing when the image is scaled\n     */\n\n  }, {\n    key: \"getZoomMultiplier\",\n    value: function getZoomMultiplier() {\n      var zoomLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state.zoomLevel;\n      return Math.pow(ZOOM_RATIO, zoomLevel);\n    }\n    /**\n     * Get the size of the lightbox in pixels\n     */\n\n  }, {\n    key: \"getLightboxRect\",\n    value: function getLightboxRect() {\n      if (this.outerEl.current) {\n        return this.outerEl.current.getBoundingClientRect();\n      }\n\n      return {\n        width: getWindowWidth(),\n        height: getWindowHeight(),\n        top: 0,\n        right: 0,\n        bottom: 0,\n        left: 0\n      };\n    }\n  }, {\n    key: \"clearTimeout\",\n    value: function (_clearTimeout) {\n      function clearTimeout(_x3) {\n        return _clearTimeout.apply(this, arguments);\n      }\n\n      clearTimeout.toString = function () {\n        return _clearTimeout.toString();\n      };\n\n      return clearTimeout;\n    }(function (id) {\n      this.timeouts = this.timeouts.filter(function (tid) {\n        return tid !== id;\n      });\n      clearTimeout(id);\n    } // Change zoom level\n    )\n  }, {\n    key: \"changeZoom\",\n    value: function changeZoom(zoomLevel, clientX, clientY) {\n      // Ignore if zoom disabled\n      if (!this.props.enableZoom) {\n        return;\n      } // Constrain zoom level to the set bounds\n\n\n      var nextZoomLevel = Math.max(MIN_ZOOM_LEVEL, Math.min(MAX_ZOOM_LEVEL, zoomLevel)); // Ignore requests that don't change the zoom level\n\n      if (nextZoomLevel === this.state.zoomLevel) {\n        return;\n      }\n\n      if (nextZoomLevel === MIN_ZOOM_LEVEL) {\n        // Snap back to center if zoomed all the way out\n        this.setState({\n          zoomLevel: nextZoomLevel,\n          offsetX: 0,\n          offsetY: 0\n        });\n        return;\n      }\n\n      var imageBaseSize = this.getBestImageForType('mainSrc');\n\n      if (imageBaseSize === null) {\n        return;\n      }\n\n      var currentZoomMultiplier = this.getZoomMultiplier();\n      var nextZoomMultiplier = this.getZoomMultiplier(nextZoomLevel); // Default to the center of the image to zoom when no mouse position specified\n\n      var boxRect = this.getLightboxRect();\n      var pointerX = typeof clientX !== 'undefined' ? clientX - boxRect.left : boxRect.width / 2;\n      var pointerY = typeof clientY !== 'undefined' ? clientY - boxRect.top : boxRect.height / 2;\n      var currentImageOffsetX = (boxRect.width - imageBaseSize.width * currentZoomMultiplier) / 2;\n      var currentImageOffsetY = (boxRect.height - imageBaseSize.height * currentZoomMultiplier) / 2;\n      var currentImageRealOffsetX = currentImageOffsetX - this.state.offsetX;\n      var currentImageRealOffsetY = currentImageOffsetY - this.state.offsetY;\n      var currentPointerXRelativeToImage = (pointerX - currentImageRealOffsetX) / currentZoomMultiplier;\n      var currentPointerYRelativeToImage = (pointerY - currentImageRealOffsetY) / currentZoomMultiplier;\n      var nextImageRealOffsetX = pointerX - currentPointerXRelativeToImage * nextZoomMultiplier;\n      var nextImageRealOffsetY = pointerY - currentPointerYRelativeToImage * nextZoomMultiplier;\n      var nextImageOffsetX = (boxRect.width - imageBaseSize.width * nextZoomMultiplier) / 2;\n      var nextImageOffsetY = (boxRect.height - imageBaseSize.height * nextZoomMultiplier) / 2;\n      var nextOffsetX = nextImageOffsetX - nextImageRealOffsetX;\n      var nextOffsetY = nextImageOffsetY - nextImageRealOffsetY; // When zooming out, limit the offset so things don't get left askew\n\n      if (this.currentAction !== ACTION_PINCH) {\n        var maxOffsets = this.getMaxOffsets();\n\n        if (this.state.zoomLevel > nextZoomLevel) {\n          nextOffsetX = Math.max(maxOffsets.minX, Math.min(maxOffsets.maxX, nextOffsetX));\n          nextOffsetY = Math.max(maxOffsets.minY, Math.min(maxOffsets.maxY, nextOffsetY));\n        }\n      }\n\n      this.setState({\n        zoomLevel: nextZoomLevel,\n        offsetX: nextOffsetX,\n        offsetY: nextOffsetY\n      });\n    }\n  }, {\n    key: \"closeIfClickInner\",\n    value: function closeIfClickInner(event) {\n      if (!this.preventInnerClose && event.target.className.search(/\\bril-inner\\b/) > -1) {\n        this.requestClose(event);\n      }\n    }\n    /**\n     * Handle user keyboard actions\n     */\n\n  }, {\n    key: \"handleKeyInput\",\n    value: function handleKeyInput(event) {\n      event.stopPropagation(); // Ignore key input during animations\n\n      if (this.isAnimating()) {\n        return;\n      } // Allow slightly faster navigation through the images when user presses keys repeatedly\n\n\n      if (event.type === 'keyup') {\n        this.lastKeyDownTime -= this.props.keyRepeatKeyupBonus;\n        return;\n      }\n\n      var keyCode = event.which || event.keyCode; // Ignore key presses that happen too close to each other (when rapid fire key pressing or holding down the key)\n      // But allow it if it's a lightbox closing action\n\n      var currentTime = new Date();\n\n      if (currentTime.getTime() - this.lastKeyDownTime < this.props.keyRepeatLimit && keyCode !== KEYS.ESC) {\n        return;\n      }\n\n      this.lastKeyDownTime = currentTime.getTime();\n\n      switch (keyCode) {\n        // ESC key closes the lightbox\n        case KEYS.ESC:\n          event.preventDefault();\n          this.requestClose(event);\n          break;\n        // Left arrow key moves to previous image\n\n        case KEYS.LEFT_ARROW:\n          if (!this.props.prevSrc) {\n            return;\n          }\n\n          event.preventDefault();\n          this.keyPressed = true;\n          this.requestMovePrev(event);\n          break;\n        // Right arrow key moves to next image\n\n        case KEYS.RIGHT_ARROW:\n          if (!this.props.nextSrc) {\n            return;\n          }\n\n          event.preventDefault();\n          this.keyPressed = true;\n          this.requestMoveNext(event);\n          break;\n      }\n    }\n    /**\n     * Handle a mouse wheel event over the lightbox container\n     */\n\n  }, {\n    key: \"handleOuterMousewheel\",\n    value: function handleOuterMousewheel(event) {\n      var _this8 = this;\n\n      // Prevent scrolling of the background\n      event.stopPropagation();\n      var xThreshold = WHEEL_MOVE_X_THRESHOLD;\n      var actionDelay = 0;\n      var imageMoveDelay = 500;\n      this.clearTimeout(this.resetScrollTimeout);\n      this.resetScrollTimeout = this.setTimeout(function () {\n        _this8.scrollX = 0;\n        _this8.scrollY = 0;\n      }, 300); // Prevent rapid-fire zoom behavior\n\n      if (this.wheelActionTimeout !== null || this.isAnimating()) {\n        return;\n      }\n\n      if (Math.abs(event.deltaY) < Math.abs(event.deltaX)) {\n        // handle horizontal scrolls with image moves\n        this.scrollY = 0;\n        this.scrollX += event.deltaX;\n        var bigLeapX = xThreshold / 2; // If the scroll amount has accumulated sufficiently, or a large leap was taken\n\n        if (this.scrollX >= xThreshold || event.deltaX >= bigLeapX) {\n          // Scroll right moves to next\n          this.requestMoveNext(event);\n          actionDelay = imageMoveDelay;\n          this.scrollX = 0;\n        } else if (this.scrollX <= -1 * xThreshold || event.deltaX <= -1 * bigLeapX) {\n          // Scroll left moves to previous\n          this.requestMovePrev(event);\n          actionDelay = imageMoveDelay;\n          this.scrollX = 0;\n        }\n      } // Allow successive actions after the set delay\n\n\n      if (actionDelay !== 0) {\n        this.wheelActionTimeout = this.setTimeout(function () {\n          _this8.wheelActionTimeout = null;\n        }, actionDelay);\n      }\n    }\n  }, {\n    key: \"handleImageMouseWheel\",\n    value: function handleImageMouseWheel(event) {\n      var yThreshold = WHEEL_MOVE_Y_THRESHOLD;\n\n      if (Math.abs(event.deltaY) >= Math.abs(event.deltaX)) {\n        event.stopPropagation(); // If the vertical scroll amount was large enough, perform a zoom\n\n        if (Math.abs(event.deltaY) < yThreshold) {\n          return;\n        }\n\n        this.scrollX = 0;\n        this.scrollY += event.deltaY;\n        this.changeZoom(this.state.zoomLevel - event.deltaY, event.clientX, event.clientY);\n      }\n    }\n    /**\n     * Handle a double click on the current image\n     */\n\n  }, {\n    key: \"handleImageDoubleClick\",\n    value: function handleImageDoubleClick(event) {\n      if (this.state.zoomLevel > MIN_ZOOM_LEVEL) {\n        // A double click when zoomed in zooms all the way out\n        this.changeZoom(MIN_ZOOM_LEVEL, event.clientX, event.clientY);\n      } else {\n        // A double click when zoomed all the way out zooms in\n        this.changeZoom(this.state.zoomLevel + ZOOM_BUTTON_INCREMENT_SIZE, event.clientX, event.clientY);\n      }\n    }\n  }, {\n    key: \"shouldHandleEvent\",\n    value: function shouldHandleEvent(source) {\n      if (this.eventsSource === source) {\n        return true;\n      }\n\n      if (this.eventsSource === SOURCE_ANY) {\n        this.eventsSource = source;\n        return true;\n      }\n\n      switch (source) {\n        case SOURCE_MOUSE:\n          return false;\n\n        case SOURCE_TOUCH:\n          this.eventsSource = SOURCE_TOUCH;\n          this.filterPointersBySource();\n          return true;\n\n        case SOURCE_POINTER:\n          if (this.eventsSource === SOURCE_MOUSE) {\n            this.eventsSource = SOURCE_POINTER;\n            this.filterPointersBySource();\n            return true;\n          }\n\n          return false;\n\n        default:\n          return false;\n      }\n    }\n  }, {\n    key: \"addPointer\",\n    value: function addPointer(pointer) {\n      this.pointerList.push(pointer);\n    }\n  }, {\n    key: \"removePointer\",\n    value: function removePointer(pointer) {\n      this.pointerList = this.pointerList.filter(function (_ref) {\n        var id = _ref.id;\n        return id !== pointer.id;\n      });\n    }\n  }, {\n    key: \"filterPointersBySource\",\n    value: function filterPointersBySource() {\n      var _this9 = this;\n\n      this.pointerList = this.pointerList.filter(function (_ref2) {\n        var source = _ref2.source;\n        return source === _this9.eventsSource;\n      });\n    }\n  }, {\n    key: \"handleMouseDown\",\n    value: function handleMouseDown(event) {\n      if (this.shouldHandleEvent(SOURCE_MOUSE) && ReactImageLightbox.isTargetMatchImage(event.target)) {\n        this.addPointer(ReactImageLightbox.parseMouseEvent(event));\n        this.multiPointerStart(event);\n      }\n    }\n  }, {\n    key: \"handleMouseMove\",\n    value: function handleMouseMove(event) {\n      if (this.shouldHandleEvent(SOURCE_MOUSE)) {\n        this.multiPointerMove(event, [ReactImageLightbox.parseMouseEvent(event)]);\n      }\n    }\n  }, {\n    key: \"handleMouseUp\",\n    value: function handleMouseUp(event) {\n      if (this.shouldHandleEvent(SOURCE_MOUSE)) {\n        this.removePointer(ReactImageLightbox.parseMouseEvent(event));\n        this.multiPointerEnd(event);\n      }\n    }\n  }, {\n    key: \"handlePointerEvent\",\n    value: function handlePointerEvent(event) {\n      if (this.shouldHandleEvent(SOURCE_POINTER)) {\n        switch (event.type) {\n          case 'pointerdown':\n            if (ReactImageLightbox.isTargetMatchImage(event.target)) {\n              this.addPointer(ReactImageLightbox.parsePointerEvent(event));\n              this.multiPointerStart(event);\n            }\n\n            break;\n\n          case 'pointermove':\n            this.multiPointerMove(event, [ReactImageLightbox.parsePointerEvent(event)]);\n            break;\n\n          case 'pointerup':\n          case 'pointercancel':\n            this.removePointer(ReactImageLightbox.parsePointerEvent(event));\n            this.multiPointerEnd(event);\n            break;\n        }\n      }\n    }\n  }, {\n    key: \"handleTouchStart\",\n    value: function handleTouchStart(event) {\n      var _this10 = this;\n\n      if (this.shouldHandleEvent(SOURCE_TOUCH) && ReactImageLightbox.isTargetMatchImage(event.target)) {\n        [].forEach.call(event.changedTouches, function (eventTouch) {\n          return _this10.addPointer(ReactImageLightbox.parseTouchPointer(eventTouch));\n        });\n        this.multiPointerStart(event);\n      }\n    }\n  }, {\n    key: \"handleTouchMove\",\n    value: function handleTouchMove(event) {\n      if (this.shouldHandleEvent(SOURCE_TOUCH)) {\n        this.multiPointerMove(event, [].map.call(event.changedTouches, function (eventTouch) {\n          return ReactImageLightbox.parseTouchPointer(eventTouch);\n        }));\n      }\n    }\n  }, {\n    key: \"handleTouchEnd\",\n    value: function handleTouchEnd(event) {\n      var _this11 = this;\n\n      if (this.shouldHandleEvent(SOURCE_TOUCH)) {\n        [].map.call(event.changedTouches, function (touch) {\n          return _this11.removePointer(ReactImageLightbox.parseTouchPointer(touch));\n        });\n        this.multiPointerEnd(event);\n      }\n    }\n  }, {\n    key: \"decideMoveOrSwipe\",\n    value: function decideMoveOrSwipe(pointer) {\n      if (this.state.zoomLevel <= MIN_ZOOM_LEVEL) {\n        this.handleSwipeStart(pointer);\n      } else {\n        this.handleMoveStart(pointer);\n      }\n    }\n  }, {\n    key: \"multiPointerStart\",\n    value: function multiPointerStart(event) {\n      this.handleEnd(null);\n\n      switch (this.pointerList.length) {\n        case 1:\n          {\n            event.preventDefault();\n            this.decideMoveOrSwipe(this.pointerList[0]);\n            break;\n          }\n\n        case 2:\n          {\n            event.preventDefault();\n            this.handlePinchStart(this.pointerList);\n            break;\n          }\n      }\n    }\n  }, {\n    key: \"multiPointerMove\",\n    value: function multiPointerMove(event, pointerList) {\n      switch (this.currentAction) {\n        case ACTION_MOVE:\n          {\n            event.preventDefault();\n            this.handleMove(pointerList[0]);\n            break;\n          }\n\n        case ACTION_SWIPE:\n          {\n            event.preventDefault();\n            this.handleSwipe(pointerList[0]);\n            break;\n          }\n\n        case ACTION_PINCH:\n          {\n            event.preventDefault();\n            this.handlePinch(pointerList);\n            break;\n          }\n      }\n    }\n  }, {\n    key: \"multiPointerEnd\",\n    value: function multiPointerEnd(event) {\n      if (this.currentAction !== ACTION_NONE) {\n        this.setPreventInnerClose();\n        this.handleEnd(event);\n      }\n\n      switch (this.pointerList.length) {\n        case 0:\n          {\n            this.eventsSource = SOURCE_ANY;\n            break;\n          }\n\n        case 1:\n          {\n            event.preventDefault();\n            this.decideMoveOrSwipe(this.pointerList[0]);\n            break;\n          }\n\n        case 2:\n          {\n            event.preventDefault();\n            this.handlePinchStart(this.pointerList);\n            break;\n          }\n      }\n    }\n  }, {\n    key: \"handleEnd\",\n    value: function handleEnd(event) {\n      switch (this.currentAction) {\n        case ACTION_MOVE:\n          this.handleMoveEnd(event);\n          break;\n\n        case ACTION_SWIPE:\n          this.handleSwipeEnd(event);\n          break;\n\n        case ACTION_PINCH:\n          this.handlePinchEnd(event);\n          break;\n      }\n    } // Handle move start over the lightbox container\n    // This happens:\n    // - On a mouseDown event\n    // - On a touchstart event\n\n  }, {\n    key: \"handleMoveStart\",\n    value: function handleMoveStart(_ref3) {\n      var clientX = _ref3.x,\n          clientY = _ref3.y;\n\n      if (!this.props.enableZoom) {\n        return;\n      }\n\n      this.currentAction = ACTION_MOVE;\n      this.moveStartX = clientX;\n      this.moveStartY = clientY;\n      this.moveStartOffsetX = this.state.offsetX;\n      this.moveStartOffsetY = this.state.offsetY;\n    } // Handle dragging over the lightbox container\n    // This happens:\n    // - After a mouseDown and before a mouseUp event\n    // - After a touchstart and before a touchend event\n\n  }, {\n    key: \"handleMove\",\n    value: function handleMove(_ref4) {\n      var clientX = _ref4.x,\n          clientY = _ref4.y;\n      var newOffsetX = this.moveStartX - clientX + this.moveStartOffsetX;\n      var newOffsetY = this.moveStartY - clientY + this.moveStartOffsetY;\n\n      if (this.state.offsetX !== newOffsetX || this.state.offsetY !== newOffsetY) {\n        this.setState({\n          offsetX: newOffsetX,\n          offsetY: newOffsetY\n        });\n      }\n    }\n  }, {\n    key: \"handleMoveEnd\",\n    value: function handleMoveEnd() {\n      var _this12 = this;\n\n      this.currentAction = ACTION_NONE;\n      this.moveStartX = 0;\n      this.moveStartY = 0;\n      this.moveStartOffsetX = 0;\n      this.moveStartOffsetY = 0; // Snap image back into frame if outside max offset range\n\n      var maxOffsets = this.getMaxOffsets();\n      var nextOffsetX = Math.max(maxOffsets.minX, Math.min(maxOffsets.maxX, this.state.offsetX));\n      var nextOffsetY = Math.max(maxOffsets.minY, Math.min(maxOffsets.maxY, this.state.offsetY));\n\n      if (nextOffsetX !== this.state.offsetX || nextOffsetY !== this.state.offsetY) {\n        this.setState({\n          offsetX: nextOffsetX,\n          offsetY: nextOffsetY,\n          shouldAnimate: true\n        });\n        this.setTimeout(function () {\n          _this12.setState({\n            shouldAnimate: false\n          });\n        }, this.props.animationDuration);\n      }\n    }\n  }, {\n    key: \"handleSwipeStart\",\n    value: function handleSwipeStart(_ref5) {\n      var clientX = _ref5.x,\n          clientY = _ref5.y;\n      this.currentAction = ACTION_SWIPE;\n      this.swipeStartX = clientX;\n      this.swipeStartY = clientY;\n      this.swipeEndX = clientX;\n      this.swipeEndY = clientY;\n    }\n  }, {\n    key: \"handleSwipe\",\n    value: function handleSwipe(_ref6) {\n      var clientX = _ref6.x,\n          clientY = _ref6.y;\n      this.swipeEndX = clientX;\n      this.swipeEndY = clientY;\n    }\n  }, {\n    key: \"handleSwipeEnd\",\n    value: function handleSwipeEnd(event) {\n      var xDiff = this.swipeEndX - this.swipeStartX;\n      var xDiffAbs = Math.abs(xDiff);\n      var yDiffAbs = Math.abs(this.swipeEndY - this.swipeStartY);\n      this.currentAction = ACTION_NONE;\n      this.swipeStartX = 0;\n      this.swipeStartY = 0;\n      this.swipeEndX = 0;\n      this.swipeEndY = 0;\n\n      if (!event || this.isAnimating() || xDiffAbs < yDiffAbs * 1.5) {\n        return;\n      }\n\n      if (xDiffAbs < MIN_SWIPE_DISTANCE) {\n        var boxRect = this.getLightboxRect();\n\n        if (xDiffAbs < boxRect.width / 4) {\n          return;\n        }\n      }\n\n      if (xDiff > 0 && this.props.prevSrc) {\n        event.preventDefault();\n        this.requestMovePrev();\n      } else if (xDiff < 0 && this.props.nextSrc) {\n        event.preventDefault();\n        this.requestMoveNext();\n      }\n    }\n  }, {\n    key: \"calculatePinchDistance\",\n    value: function calculatePinchDistance() {\n      var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.pinchTouchList,\n          _ref8 = _slicedToArray(_ref7, 2),\n          a = _ref8[0],\n          b = _ref8[1];\n\n      return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));\n    }\n  }, {\n    key: \"calculatePinchCenter\",\n    value: function calculatePinchCenter() {\n      var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.pinchTouchList,\n          _ref10 = _slicedToArray(_ref9, 2),\n          a = _ref10[0],\n          b = _ref10[1];\n\n      return {\n        x: a.x - (a.x - b.x) / 2,\n        y: a.y - (a.y - b.y) / 2\n      };\n    }\n  }, {\n    key: \"handlePinchStart\",\n    value: function handlePinchStart(pointerList) {\n      if (!this.props.enableZoom) {\n        return;\n      }\n\n      this.currentAction = ACTION_PINCH;\n      this.pinchTouchList = pointerList.map(function (_ref11) {\n        var id = _ref11.id,\n            x = _ref11.x,\n            y = _ref11.y;\n        return {\n          id: id,\n          x: x,\n          y: y\n        };\n      });\n      this.pinchDistance = this.calculatePinchDistance();\n    }\n  }, {\n    key: \"handlePinch\",\n    value: function handlePinch(pointerList) {\n      this.pinchTouchList = this.pinchTouchList.map(function (oldPointer) {\n        for (var i = 0; i < pointerList.length; i += 1) {\n          if (pointerList[i].id === oldPointer.id) {\n            return pointerList[i];\n          }\n        }\n\n        return oldPointer;\n      });\n      var newDistance = this.calculatePinchDistance();\n      var zoomLevel = this.state.zoomLevel + newDistance - this.pinchDistance;\n      this.pinchDistance = newDistance;\n\n      var _this$calculatePinchC = this.calculatePinchCenter(this.pinchTouchList),\n          clientX = _this$calculatePinchC.x,\n          clientY = _this$calculatePinchC.y;\n\n      this.changeZoom(zoomLevel, clientX, clientY);\n    }\n  }, {\n    key: \"handlePinchEnd\",\n    value: function handlePinchEnd() {\n      this.currentAction = ACTION_NONE;\n      this.pinchTouchList = null;\n      this.pinchDistance = 0;\n    } // Handle the window resize event\n\n  }, {\n    key: \"handleWindowResize\",\n    value: function handleWindowResize() {\n      this.clearTimeout(this.resizeTimeout);\n      this.resizeTimeout = this.setTimeout(this.forceUpdate.bind(this), 100);\n    }\n  }, {\n    key: \"handleZoomInButtonClick\",\n    value: function handleZoomInButtonClick() {\n      var nextZoomLevel = this.state.zoomLevel + ZOOM_BUTTON_INCREMENT_SIZE;\n      this.changeZoom(nextZoomLevel);\n\n      if (nextZoomLevel === MAX_ZOOM_LEVEL) {\n        this.zoomOutBtn.current.focus();\n      }\n    }\n  }, {\n    key: \"handleZoomOutButtonClick\",\n    value: function handleZoomOutButtonClick() {\n      var nextZoomLevel = this.state.zoomLevel - ZOOM_BUTTON_INCREMENT_SIZE;\n      this.changeZoom(nextZoomLevel);\n\n      if (nextZoomLevel === MIN_ZOOM_LEVEL) {\n        this.zoomInBtn.current.focus();\n      }\n    }\n  }, {\n    key: \"handleCaptionMousewheel\",\n    value: function handleCaptionMousewheel(event) {\n      event.stopPropagation();\n\n      if (!this.caption.current) {\n        return;\n      }\n\n      var _this$caption$current = this.caption.current.getBoundingClientRect(),\n          height = _this$caption$current.height;\n\n      var _this$caption$current2 = this.caption.current,\n          scrollHeight = _this$caption$current2.scrollHeight,\n          scrollTop = _this$caption$current2.scrollTop;\n\n      if (event.deltaY > 0 && height + scrollTop >= scrollHeight || event.deltaY < 0 && scrollTop <= 0) {\n        event.preventDefault();\n      }\n    } // Detach key and mouse input events\n\n  }, {\n    key: \"isAnimating\",\n    value: function isAnimating() {\n      return this.state.shouldAnimate || this.state.isClosing;\n    } // Check if image is loaded\n\n  }, {\n    key: \"isImageLoaded\",\n    value: function isImageLoaded(imageSrc) {\n      return imageSrc && imageSrc in this.imageCache && this.imageCache[imageSrc].loaded;\n    } // Load image from src and call callback with image width and height on load\n\n  }, {\n    key: \"loadImage\",\n    value: function loadImage(srcType, imageSrc, done) {\n      var _this13 = this;\n\n      // Return the image info if it is already cached\n      if (this.isImageLoaded(imageSrc)) {\n        this.setTimeout(function () {\n          done();\n        }, 1);\n        return;\n      }\n\n      var inMemoryImage = new global.Image();\n\n      if (this.props.imageCrossOrigin) {\n        inMemoryImage.crossOrigin = this.props.imageCrossOrigin;\n      }\n\n      inMemoryImage.onerror = function (errorEvent) {\n        _this13.props.onImageLoadError(imageSrc, srcType, errorEvent); // failed to load so set the state loadErrorStatus\n\n\n        _this13.setState(function (prevState) {\n          return {\n            loadErrorStatus: _objectSpread2(_objectSpread2({}, prevState.loadErrorStatus), {}, _defineProperty({}, srcType, true))\n          };\n        });\n\n        done(errorEvent);\n      };\n\n      inMemoryImage.onload = function () {\n        _this13.props.onImageLoad(imageSrc, srcType, inMemoryImage);\n\n        _this13.imageCache[imageSrc] = {\n          loaded: true,\n          width: inMemoryImage.width,\n          height: inMemoryImage.height\n        };\n        done();\n      };\n\n      inMemoryImage.src = imageSrc;\n    } // Load all images and their thumbnails\n\n  }, {\n    key: \"loadAllImages\",\n    value: function loadAllImages() {\n      var _this14 = this;\n\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n\n      var generateLoadDoneCallback = function generateLoadDoneCallback(srcType, imageSrc) {\n        return function (err) {\n          // Give up showing image on error\n          if (err) {\n            return;\n          } // Don't rerender if the src is not the same as when the load started\n          // or if the component has unmounted\n\n\n          if (_this14.props[srcType] !== imageSrc || _this14.didUnmount) {\n            return;\n          } // Force rerender with the new image\n\n\n          _this14.forceUpdate();\n        };\n      }; // Load the images\n\n\n      this.getSrcTypes().forEach(function (srcType) {\n        var type = srcType.name; // there is no error when we try to load it initially\n\n        if (props[type] && _this14.state.loadErrorStatus[type]) {\n          _this14.setState(function (prevState) {\n            return {\n              loadErrorStatus: _objectSpread2(_objectSpread2({}, prevState.loadErrorStatus), {}, _defineProperty({}, type, false))\n            };\n          });\n        } // Load unloaded images\n\n\n        if (props[type] && !_this14.isImageLoaded(props[type])) {\n          _this14.loadImage(type, props[type], generateLoadDoneCallback(type, props[type]));\n        }\n      });\n    } // Request that the lightbox be closed\n\n  }, {\n    key: \"requestClose\",\n    value: function requestClose(event) {\n      var _this15 = this;\n\n      // Call the parent close request\n      var closeLightbox = function closeLightbox() {\n        return _this15.props.onCloseRequest(event);\n      };\n\n      if (this.props.animationDisabled || event.type === 'keydown' && !this.props.animationOnKeyInput) {\n        // No animation\n        closeLightbox();\n        return;\n      } // With animation\n      // Start closing animation\n\n\n      this.setState({\n        isClosing: true\n      }); // Perform the actual closing at the end of the animation\n\n      this.setTimeout(closeLightbox, this.props.animationDuration);\n    }\n  }, {\n    key: \"requestMove\",\n    value: function requestMove(direction, event) {\n      var _this16 = this;\n\n      // Reset the zoom level on image move\n      var nextState = {\n        zoomLevel: MIN_ZOOM_LEVEL,\n        offsetX: 0,\n        offsetY: 0\n      }; // Enable animated states\n\n      if (!this.props.animationDisabled && (!this.keyPressed || this.props.animationOnKeyInput)) {\n        nextState.shouldAnimate = true;\n        this.setTimeout(function () {\n          return _this16.setState({\n            shouldAnimate: false\n          });\n        }, this.props.animationDuration);\n      }\n\n      this.keyPressed = false;\n      this.moveRequested = true;\n\n      if (direction === 'prev') {\n        this.keyCounter -= 1;\n        this.setState(nextState);\n        this.props.onMovePrevRequest(event);\n      } else {\n        this.keyCounter += 1;\n        this.setState(nextState);\n        this.props.onMoveNextRequest(event);\n      }\n    } // Request to transition to the next image\n\n  }, {\n    key: \"requestMoveNext\",\n    value: function requestMoveNext(event) {\n      this.requestMove('next', event);\n    } // Request to transition to the previous image\n\n  }, {\n    key: \"requestMovePrev\",\n    value: function requestMovePrev(event) {\n      this.requestMove('prev', event);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this17 = this;\n\n      var _this$props = this.props,\n          animationDisabled = _this$props.animationDisabled,\n          animationDuration = _this$props.animationDuration,\n          clickOutsideToClose = _this$props.clickOutsideToClose,\n          discourageDownloads = _this$props.discourageDownloads,\n          enableZoom = _this$props.enableZoom,\n          imageTitle = _this$props.imageTitle,\n          nextSrc = _this$props.nextSrc,\n          prevSrc = _this$props.prevSrc,\n          toolbarButtons = _this$props.toolbarButtons,\n          reactModalStyle = _this$props.reactModalStyle,\n          _onAfterOpen = _this$props.onAfterOpen,\n          imageCrossOrigin = _this$props.imageCrossOrigin,\n          reactModalProps = _this$props.reactModalProps,\n          loader = _this$props.loader;\n      var _this$state = this.state,\n          zoomLevel = _this$state.zoomLevel,\n          offsetX = _this$state.offsetX,\n          offsetY = _this$state.offsetY,\n          isClosing = _this$state.isClosing,\n          loadErrorStatus = _this$state.loadErrorStatus;\n      var boxSize = this.getLightboxRect();\n      var transitionStyle = {}; // Transition settings for sliding animations\n\n      if (!animationDisabled && this.isAnimating()) {\n        transitionStyle = _objectSpread2(_objectSpread2({}, transitionStyle), {}, {\n          transition: \"transform \".concat(animationDuration, \"ms\")\n        });\n      } // Key endings to differentiate between images with the same src\n\n\n      var keyEndings = {};\n      this.getSrcTypes().forEach(function (_ref12) {\n        var name = _ref12.name,\n            keyEnding = _ref12.keyEnding;\n        keyEndings[name] = keyEnding;\n      }); // Images to be displayed\n\n      var images = [];\n\n      var addImage = function addImage(srcType, imageClass, transforms) {\n        // Ignore types that have no source defined for their full size image\n        if (!_this17.props[srcType]) {\n          return;\n        }\n\n        var bestImageInfo = _this17.getBestImageForType(srcType);\n\n        var imageStyle = _objectSpread2(_objectSpread2({}, transitionStyle), ReactImageLightbox.getTransform(_objectSpread2(_objectSpread2({}, transforms), bestImageInfo)));\n\n        if (zoomLevel > MIN_ZOOM_LEVEL) {\n          imageStyle.cursor = 'move';\n        } // support IE 9 and 11\n\n\n        var hasTrueValue = function hasTrueValue(object) {\n          return Object.keys(object).some(function (key) {\n            return object[key];\n          });\n        }; // when error on one of the loads then push custom error stuff\n\n\n        if (bestImageInfo === null && hasTrueValue(loadErrorStatus)) {\n          images.push( /*#__PURE__*/React__default['default'].createElement(\"div\", {\n            className: \"\".concat(imageClass, \" ril__image ril-errored\"),\n            style: imageStyle,\n            key: _this17.props[srcType] + keyEndings[srcType]\n          }, /*#__PURE__*/React__default['default'].createElement(\"div\", {\n            className: \"ril__errorContainer\"\n          }, _this17.props.imageLoadErrorMessage)));\n          return;\n        }\n\n        if (bestImageInfo === null) {\n          var loadingIcon = loader !== undefined ? loader : /*#__PURE__*/React__default['default'].createElement(\"div\", {\n            className: \"ril-loading-circle ril__loadingCircle ril__loadingContainer__icon\"\n          }, _toConsumableArray(new Array(12)).map(function (_, index) {\n            return /*#__PURE__*/React__default['default'].createElement(\"div\", {\n              // eslint-disable-next-line react/no-array-index-key\n              key: index,\n              className: \"ril-loading-circle-point ril__loadingCirclePoint\"\n            });\n          })); // Fall back to loading icon if the thumbnail has not been loaded\n\n          images.push( /*#__PURE__*/React__default['default'].createElement(\"div\", {\n            className: \"\".concat(imageClass, \" ril__image ril-not-loaded\"),\n            style: imageStyle,\n            key: _this17.props[srcType] + keyEndings[srcType]\n          }, /*#__PURE__*/React__default['default'].createElement(\"div\", {\n            className: \"ril__loadingContainer\"\n          }, loadingIcon)));\n          return;\n        }\n\n        var imageSrc = bestImageInfo.src;\n\n        if (discourageDownloads) {\n          imageStyle.backgroundImage = \"url('\".concat(imageSrc, \"')\");\n          images.push( /*#__PURE__*/React__default['default'].createElement(\"div\", {\n            className: \"\".concat(imageClass, \" ril__image ril__imageDiscourager\"),\n            onDoubleClick: _this17.handleImageDoubleClick,\n            onWheel: _this17.handleImageMouseWheel,\n            style: imageStyle,\n            key: imageSrc + keyEndings[srcType]\n          }, /*#__PURE__*/React__default['default'].createElement(\"div\", {\n            className: \"ril-download-blocker ril__downloadBlocker\"\n          })));\n        } else {\n          images.push( /*#__PURE__*/React__default['default'].createElement(\"img\", _extends({}, imageCrossOrigin ? {\n            crossOrigin: imageCrossOrigin\n          } : {}, {\n            className: \"\".concat(imageClass, \" ril__image\"),\n            onDoubleClick: _this17.handleImageDoubleClick,\n            onWheel: _this17.handleImageMouseWheel,\n            onDragStart: function onDragStart(e) {\n              return e.preventDefault();\n            },\n            style: imageStyle,\n            src: imageSrc,\n            key: imageSrc + keyEndings[srcType],\n            alt: typeof imageTitle === 'string' ? imageTitle : translate('Image'),\n            draggable: false\n          })));\n        }\n      };\n\n      var zoomMultiplier = this.getZoomMultiplier(); // Next Image (displayed on the right)\n\n      addImage('nextSrc', 'ril-image-next ril__imageNext', {\n        x: boxSize.width\n      }); // Main Image\n\n      addImage('mainSrc', 'ril-image-current', {\n        x: -1 * offsetX,\n        y: -1 * offsetY,\n        zoom: zoomMultiplier\n      }); // Previous Image (displayed on the left)\n\n      addImage('prevSrc', 'ril-image-prev ril__imagePrev', {\n        x: -1 * boxSize.width\n      });\n      var modalStyle = {\n        overlay: _objectSpread2({\n          zIndex: 1000,\n          backgroundColor: 'transparent'\n        }, reactModalStyle.overlay),\n        content: _objectSpread2({\n          backgroundColor: 'transparent',\n          overflow: 'hidden',\n          // Needed, otherwise keyboard shortcuts scroll the page\n          border: 'none',\n          borderRadius: 0,\n          padding: 0,\n          top: 0,\n          left: 0,\n          right: 0,\n          bottom: 0\n        }, reactModalStyle.content)\n      };\n      return /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], _extends({\n        isOpen: true,\n        onRequestClose: clickOutsideToClose ? this.requestClose : undefined,\n        onAfterOpen: function onAfterOpen() {\n          // Focus on the div with key handlers\n          if (_this17.outerEl.current) {\n            _this17.outerEl.current.focus();\n          }\n\n          _onAfterOpen();\n        },\n        style: modalStyle,\n        contentLabel: translate('Lightbox'),\n        appElement: typeof global.window !== 'undefined' ? global.window.document.body : undefined\n      }, reactModalProps), /*#__PURE__*/React__default['default'].createElement(\"div\", {\n        // eslint-disable-line jsx-a11y/no-static-element-interactions\n        // Floating modal with closing animations\n        className: \"ril-outer ril__outer ril__outerAnimating \".concat(this.props.wrapperClassName, \" \").concat(isClosing ? 'ril-closing ril__outerClosing' : ''),\n        style: {\n          transition: \"opacity \".concat(animationDuration, \"ms\"),\n          animationDuration: \"\".concat(animationDuration, \"ms\"),\n          animationDirection: isClosing ? 'normal' : 'reverse'\n        },\n        ref: this.outerEl,\n        onWheel: this.handleOuterMousewheel,\n        onMouseMove: this.handleMouseMove,\n        onMouseDown: this.handleMouseDown,\n        onTouchStart: this.handleTouchStart,\n        onTouchMove: this.handleTouchMove,\n        tabIndex: \"-1\" // Enables key handlers on div\n        ,\n        onKeyDown: this.handleKeyInput,\n        onKeyUp: this.handleKeyInput\n      }, /*#__PURE__*/React__default['default'].createElement(\"div\", {\n        // eslint-disable-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events\n        // Image holder\n        className: \"ril-inner ril__inner\",\n        onClick: clickOutsideToClose ? this.closeIfClickInner : undefined\n      }, images), prevSrc && /*#__PURE__*/React__default['default'].createElement(\"button\", {\n        // Move to previous image button\n        type: \"button\",\n        className: \"ril-prev-button ril__navButtons ril__navButtonPrev\",\n        key: \"prev\",\n        \"aria-label\": this.props.prevLabel,\n        title: this.props.prevLabel,\n        onClick: !this.isAnimating() ? this.requestMovePrev : undefined // Ignore clicks during animation\n\n      }), nextSrc && /*#__PURE__*/React__default['default'].createElement(\"button\", {\n        // Move to next image button\n        type: \"button\",\n        className: \"ril-next-button ril__navButtons ril__navButtonNext\",\n        key: \"next\",\n        \"aria-label\": this.props.nextLabel,\n        title: this.props.nextLabel,\n        onClick: !this.isAnimating() ? this.requestMoveNext : undefined // Ignore clicks during animation\n\n      }), /*#__PURE__*/React__default['default'].createElement(\"div\", {\n        // Lightbox toolbar\n        className: \"ril-toolbar ril__toolbar\"\n      }, /*#__PURE__*/React__default['default'].createElement(\"ul\", {\n        className: \"ril-toolbar-left ril__toolbarSide ril__toolbarLeftSide\"\n      }, /*#__PURE__*/React__default['default'].createElement(\"li\", {\n        className: \"ril-toolbar__item ril__toolbarItem\"\n      }, /*#__PURE__*/React__default['default'].createElement(\"span\", {\n        className: \"ril-toolbar__item__child ril__toolbarItemChild\"\n      }, imageTitle))), /*#__PURE__*/React__default['default'].createElement(\"ul\", {\n        className: \"ril-toolbar-right ril__toolbarSide ril__toolbarRightSide\"\n      }, toolbarButtons && toolbarButtons.map(function (button, i) {\n        return /*#__PURE__*/React__default['default'].createElement(\"li\", {\n          key: \"button_\".concat(i + 1),\n          className: \"ril-toolbar__item ril__toolbarItem\"\n        }, button);\n      }), enableZoom && /*#__PURE__*/React__default['default'].createElement(\"li\", {\n        className: \"ril-toolbar__item ril__toolbarItem\"\n      }, /*#__PURE__*/React__default['default'].createElement(\"button\", {\n        // Lightbox zoom in button\n        type: \"button\",\n        key: \"zoom-in\",\n        \"aria-label\": this.props.zoomInLabel,\n        title: this.props.zoomInLabel,\n        className: ['ril-zoom-in', 'ril__toolbarItemChild', 'ril__builtinButton', 'ril__zoomInButton'].concat(_toConsumableArray(zoomLevel === MAX_ZOOM_LEVEL ? ['ril__builtinButtonDisabled'] : [])).join(' '),\n        ref: this.zoomInBtn,\n        disabled: this.isAnimating() || zoomLevel === MAX_ZOOM_LEVEL,\n        onClick: !this.isAnimating() && zoomLevel !== MAX_ZOOM_LEVEL ? this.handleZoomInButtonClick : undefined\n      })), enableZoom && /*#__PURE__*/React__default['default'].createElement(\"li\", {\n        className: \"ril-toolbar__item ril__toolbarItem\"\n      }, /*#__PURE__*/React__default['default'].createElement(\"button\", {\n        // Lightbox zoom out button\n        type: \"button\",\n        key: \"zoom-out\",\n        \"aria-label\": this.props.zoomOutLabel,\n        title: this.props.zoomOutLabel,\n        className: ['ril-zoom-out', 'ril__toolbarItemChild', 'ril__builtinButton', 'ril__zoomOutButton'].concat(_toConsumableArray(zoomLevel === MIN_ZOOM_LEVEL ? ['ril__builtinButtonDisabled'] : [])).join(' '),\n        ref: this.zoomOutBtn,\n        disabled: this.isAnimating() || zoomLevel === MIN_ZOOM_LEVEL,\n        onClick: !this.isAnimating() && zoomLevel !== MIN_ZOOM_LEVEL ? this.handleZoomOutButtonClick : undefined\n      })), /*#__PURE__*/React__default['default'].createElement(\"li\", {\n        className: \"ril-toolbar__item ril__toolbarItem\"\n      }, /*#__PURE__*/React__default['default'].createElement(\"button\", {\n        // Lightbox close button\n        type: \"button\",\n        key: \"close\",\n        \"aria-label\": this.props.closeLabel,\n        title: this.props.closeLabel,\n        className: \"ril-close ril-toolbar__item__child ril__toolbarItemChild ril__builtinButton ril__closeButton\",\n        onClick: !this.isAnimating() ? this.requestClose : undefined // Ignore clicks during animation\n\n      })))), this.props.imageCaption &&\n      /*#__PURE__*/\n      // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n      React__default['default'].createElement(\"div\", {\n        // Image caption\n        onWheel: this.handleCaptionMousewheel,\n        onMouseDown: function onMouseDown(event) {\n          return event.stopPropagation();\n        },\n        className: \"ril-caption ril__caption\",\n        ref: this.caption\n      }, /*#__PURE__*/React__default['default'].createElement(\"div\", {\n        className: \"ril-caption-content ril__captionContent\"\n      }, this.props.imageCaption))));\n    }\n  }], [{\n    key: \"isTargetMatchImage\",\n    value: function isTargetMatchImage(target) {\n      return target && /ril-image-current/.test(target.className);\n    }\n  }, {\n    key: \"parseMouseEvent\",\n    value: function parseMouseEvent(mouseEvent) {\n      return {\n        id: 'mouse',\n        source: SOURCE_MOUSE,\n        x: parseInt(mouseEvent.clientX, 10),\n        y: parseInt(mouseEvent.clientY, 10)\n      };\n    }\n  }, {\n    key: \"parseTouchPointer\",\n    value: function parseTouchPointer(touchPointer) {\n      return {\n        id: touchPointer.identifier,\n        source: SOURCE_TOUCH,\n        x: parseInt(touchPointer.clientX, 10),\n        y: parseInt(touchPointer.clientY, 10)\n      };\n    }\n  }, {\n    key: \"parsePointerEvent\",\n    value: function parsePointerEvent(pointerEvent) {\n      return {\n        id: pointerEvent.pointerId,\n        source: SOURCE_POINTER,\n        x: parseInt(pointerEvent.clientX, 10),\n        y: parseInt(pointerEvent.clientY, 10)\n      };\n    } // Request to transition to the previous image\n\n  }, {\n    key: \"getTransform\",\n    value: function getTransform(_ref13) {\n      var _ref13$x = _ref13.x,\n          x = _ref13$x === void 0 ? 0 : _ref13$x,\n          _ref13$y = _ref13.y,\n          y = _ref13$y === void 0 ? 0 : _ref13$y,\n          _ref13$zoom = _ref13.zoom,\n          zoom = _ref13$zoom === void 0 ? 1 : _ref13$zoom,\n          width = _ref13.width,\n          targetWidth = _ref13.targetWidth;\n      var nextX = x;\n      var windowWidth = getWindowWidth();\n\n      if (width > windowWidth) {\n        nextX += (windowWidth - width) / 2;\n      }\n\n      var scaleFactor = zoom * (targetWidth / width);\n      return {\n        transform: \"translate3d(\".concat(nextX, \"px,\").concat(y, \"px,0) scale3d(\").concat(scaleFactor, \",\").concat(scaleFactor, \",1)\")\n      };\n    }\n  }]);\n\n  return ReactImageLightbox;\n}(React.Component);\n\nReactImageLightbox.propTypes = {\n  //-----------------------------\n  // Image sources\n  //-----------------------------\n  // Main display image url\n  mainSrc: PropTypes__default['default'].string.isRequired,\n  // eslint-disable-line react/no-unused-prop-types\n  // Previous display image url (displayed to the left)\n  // If left undefined, movePrev actions will not be performed, and the button not displayed\n  prevSrc: PropTypes__default['default'].string,\n  // Next display image url (displayed to the right)\n  // If left undefined, moveNext actions will not be performed, and the button not displayed\n  nextSrc: PropTypes__default['default'].string,\n  //-----------------------------\n  // Image thumbnail sources\n  //-----------------------------\n  // Thumbnail image url corresponding to props.mainSrc\n  mainSrcThumbnail: PropTypes__default['default'].string,\n  // eslint-disable-line react/no-unused-prop-types\n  // Thumbnail image url corresponding to props.prevSrc\n  prevSrcThumbnail: PropTypes__default['default'].string,\n  // eslint-disable-line react/no-unused-prop-types\n  // Thumbnail image url corresponding to props.nextSrc\n  nextSrcThumbnail: PropTypes__default['default'].string,\n  // eslint-disable-line react/no-unused-prop-types\n  //-----------------------------\n  // Event Handlers\n  //-----------------------------\n  // Close window event\n  // Should change the parent state such that the lightbox is not rendered\n  onCloseRequest: PropTypes__default['default'].func.isRequired,\n  // Move to previous image event\n  // Should change the parent state such that props.prevSrc becomes props.mainSrc,\n  //  props.mainSrc becomes props.nextSrc, etc.\n  onMovePrevRequest: PropTypes__default['default'].func,\n  // Move to next image event\n  // Should change the parent state such that props.nextSrc becomes props.mainSrc,\n  //  props.mainSrc becomes props.prevSrc, etc.\n  onMoveNextRequest: PropTypes__default['default'].func,\n  // Called when an image fails to load\n  // (imageSrc: string, srcType: string, errorEvent: object): void\n  onImageLoadError: PropTypes__default['default'].func,\n  // Called when image successfully loads\n  onImageLoad: PropTypes__default['default'].func,\n  // Open window event\n  onAfterOpen: PropTypes__default['default'].func,\n  //-----------------------------\n  // Download discouragement settings\n  //-----------------------------\n  // Enable download discouragement (prevents [right-click -> Save Image As...])\n  discourageDownloads: PropTypes__default['default'].bool,\n  //-----------------------------\n  // Animation settings\n  //-----------------------------\n  // Disable all animation\n  animationDisabled: PropTypes__default['default'].bool,\n  // Disable animation on actions performed with keyboard shortcuts\n  animationOnKeyInput: PropTypes__default['default'].bool,\n  // Animation duration (ms)\n  animationDuration: PropTypes__default['default'].number,\n  //-----------------------------\n  // Keyboard shortcut settings\n  //-----------------------------\n  // Required interval of time (ms) between key actions\n  // (prevents excessively fast navigation of images)\n  keyRepeatLimit: PropTypes__default['default'].number,\n  // Amount of time (ms) restored after each keyup\n  // (makes rapid key presses slightly faster than holding down the key to navigate images)\n  keyRepeatKeyupBonus: PropTypes__default['default'].number,\n  //-----------------------------\n  // Image info\n  //-----------------------------\n  // Image title\n  imageTitle: PropTypes__default['default'].node,\n  // Image caption\n  imageCaption: PropTypes__default['default'].node,\n  // Optional crossOrigin attribute\n  imageCrossOrigin: PropTypes__default['default'].string,\n  //-----------------------------\n  // Lightbox style\n  //-----------------------------\n  // Set z-index style, etc., for the parent react-modal (format: https://github.com/reactjs/react-modal#styles )\n  reactModalStyle: PropTypes__default['default'].shape({}),\n  // Padding (px) between the edge of the window and the lightbox\n  imagePadding: PropTypes__default['default'].number,\n  wrapperClassName: PropTypes__default['default'].string,\n  //-----------------------------\n  // Other\n  //-----------------------------\n  // Array of custom toolbar buttons\n  toolbarButtons: PropTypes__default['default'].arrayOf(PropTypes__default['default'].node),\n  // When true, clicks outside of the image close the lightbox\n  clickOutsideToClose: PropTypes__default['default'].bool,\n  // Set to false to disable zoom functionality and hide zoom buttons\n  enableZoom: PropTypes__default['default'].bool,\n  // Override props set on react-modal (https://github.com/reactjs/react-modal)\n  reactModalProps: PropTypes__default['default'].shape({}),\n  // Aria-labels\n  nextLabel: PropTypes__default['default'].string,\n  prevLabel: PropTypes__default['default'].string,\n  zoomInLabel: PropTypes__default['default'].string,\n  zoomOutLabel: PropTypes__default['default'].string,\n  closeLabel: PropTypes__default['default'].string,\n  imageLoadErrorMessage: PropTypes__default['default'].node,\n  // custom loader\n  loader: PropTypes__default['default'].node\n};\nReactImageLightbox.defaultProps = {\n  imageTitle: null,\n  imageCaption: null,\n  toolbarButtons: null,\n  reactModalProps: {},\n  animationDisabled: false,\n  animationDuration: 300,\n  animationOnKeyInput: false,\n  clickOutsideToClose: true,\n  closeLabel: 'Close lightbox',\n  discourageDownloads: false,\n  enableZoom: true,\n  imagePadding: 10,\n  imageCrossOrigin: null,\n  keyRepeatKeyupBonus: 40,\n  keyRepeatLimit: 180,\n  mainSrcThumbnail: null,\n  nextLabel: 'Next image',\n  nextSrc: null,\n  nextSrcThumbnail: null,\n  onAfterOpen: function onAfterOpen() {},\n  onImageLoadError: function onImageLoadError() {},\n  onImageLoad: function onImageLoad() {},\n  onMoveNextRequest: function onMoveNextRequest() {},\n  onMovePrevRequest: function onMovePrevRequest() {},\n  prevLabel: 'Previous image',\n  prevSrc: null,\n  prevSrcThumbnail: null,\n  reactModalStyle: {},\n  wrapperClassName: '',\n  zoomInLabel: 'Zoom in',\n  zoomOutLabel: 'Zoom out',\n  imageLoadErrorMessage: 'This image failed to load',\n  loader: undefined\n};\n\nexports.default = ReactImageLightbox;\n"]}