{"version":3,"sources":["webpack:///./node_modules/react-reveal/Fade.js","webpack:///./node_modules/react-simple-img/lib/index.js","webpack:///./node_modules/intersection-observer/intersection-observer.js"],"names":["_objectWithoutProperties","o","e","r","t","indexOf","Object","prototype","hasOwnProperty","call","make","distance","left","p","right","a","up","l","down","i","top","u","bottom","n","big","s","mirror","d","opposite","_","toString","lookup","f","y","b","v","c","_globals","animation","Fade","arguments","length","defaults","children","out","forever","timeout","duration","delay","count","style","animationFillMode","reverse","_wrap2","default","defineProperty","exports","value","_propTypes","_wrap","__esModule","propTypes","bool","number","string","module","ex","React","_defineProperties","target","props","descriptor","enumerable","configurable","writable","key","_defineProperty","obj","_extends","assign","source","apply","this","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","_objectSpread2","forEach","getOwnPropertyDescriptors","defineProperties","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_assertThisInitialized","self","ReferenceError","pathRegex","filterImgSrc","_ref","_ref$dataset","dataset","src","srcset","result","clientWidth","document","documentElement","window","innerWidth","devicePixelRatio","srcInArray","sSources","match","Array","isArray","Error","concat","JSON","stringify","sources","sSource","trim","substr","parts","split","url","width","undefined","dpr","spec","toLowerCase","lastChar","substring","parseFloat","parseSrcset","map","foundSrc","find","_ref2","reduce","prev","curr","Math","abs","applyStyle","withoutPlaceholder","opacity","logError","message","__REACT_SIMPLE_IMG__","logConsoleError","console","error","outerHTML","imageLoader","image","Image","_window$__REACT_SIMPL","observer","imgLoadingRefs","unobserve","set","parentNode","height","addEventListener","visibility","setImageHeight","imageSrc","Promise","resolve","onload","onerror","fetchImage","then","getAttribute","targetElement","nextSibling","removeEventListener","applyImage","_window$__REACT_SIMPL2","disableAnimateCachedImg","callBackRefs","cachedImages","parse","sessionStorage","getItem","Date","setItem","updateSessionStorage","callback","get","defaultConfig","rootMargin","threshold","onIntersection","entries","len","_entries$i","intersectionRatio","observerStart","config","IntersectionObserver","Map","initSimpleImg","commonStyle","position","hiddenStyle","expendWidth","aspectRatioChildStyle","wrapperCommonStyle","overflow","display","flexDirection","justifyContent","alignItems","SimpleImg","_React$PureComponent","_this","instance","Constructor","TypeError","_classCallCheck","isDocumentLoad","isCached","createRef","setState","protoProps","staticProps","subClass","superClass","create","constructor","_inherits","element","current","cachedImagesRefString","readyState","triggerImageLoadOrObserver","setDocumentLoaded","prevProps","prevState","state","has","_this$props","importance","onComplete","observe","_this$props2","className","alt","srcSet","applyAspectRatio","_this$props2$animatio","animationDuration","_this$props2$placehol","placeholder","_this$props2$style","restProps","disablePlaceholder","isValidImgSrc","test","validImgSrc","inlineStyle","background","transition","imgPlaceholder","isSrcSetFulfilled","imgStyle","restImgProps","heightWidth","isHeightAndWidthNotSet","_getAspectRatio","_ref$height","_ref$width","aspectRatio","parseInt","shouldUseAspectRatio","isNaN","aspectRatioStyle","paddingBottom","getAspectRatio","imageProps","ref","noScript","createElement","Fragment","placeholderComponent","PureComponent","IntersectionObserverEntry","registry","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_observationTargets","some","item","nodeType","_registerInstance","entry","_monitorIntersections","_checkForIntersections","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","sort","_parseRootMargin","opt_rootMargin","margins","margin","exec","unit","_monitoringIntersections","_monitoringInterval","setInterval","addEvent","_domObserver","MutationObserver","attributes","childList","characterData","subtree","clearInterval","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","intersectionRect","_computeTargetAndRootIntersection","newEntry","time","performance","now","boundingClientRect","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","root","body","max","min","html","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","index","splice","targetArea","intersectionArea","Number","toFixed","opt_options","fn","timer","options","bind","setTimeout","join","node","event","opt_useCapture","attachEvent","detatchEvent","el","err","child","host"],"mappings":"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","file":"7e9d24b57440727cf3caeaef272b47b7c2e713ad-d686167761e9abb54d79.js","sourcesContent":["\"use strict\";\n\nfunction _interopRequireDefault(o) {\n return o && o.__esModule ? o : {\n default: o\n };\n}\n\nfunction _objectWithoutProperties(o, e) {\n var r = {};\n\n for (var t in o) {\n e.indexOf(t) >= 0 || Object.prototype.hasOwnProperty.call(o, t) && (r[t] = o[t]);\n }\n\n return r;\n}\n\nfunction make(o, e) {\n var r = e.distance,\n t = e.left,\n p = e.right,\n a = e.up,\n l = e.down,\n i = e.top,\n u = e.bottom,\n n = e.big,\n s = e.mirror,\n d = e.opposite,\n _ = (r ? r.toString() : 0) + ((t ? 1 : 0) | (p ? 2 : 0) | (i || l ? 4 : 0) | (u || a ? 8 : 0) | (s ? 16 : 0) | (d ? 32 : 0) | (o ? 64 : 0) | (n ? 128 : 0));\n\n if (lookup.hasOwnProperty(_)) return lookup[_];\n var f = t || p || a || l || i || u,\n y = void 0,\n b = void 0;\n\n if (f) {\n if (!s != !(o && d)) {\n var v = [p, t, u, i, l, a];\n t = v[0], p = v[1], i = v[2], u = v[3], a = v[4], l = v[5];\n }\n\n var c = r || (n ? \"2000px\" : \"100%\");\n y = t ? \"-\" + c : p ? c : \"0\", b = l || i ? \"-\" + c : a || u ? c : \"0\";\n }\n\n return lookup[_] = (0, _globals.animation)((o ? \"to\" : \"from\") + \" {opacity: 0;\" + (f ? \" transform: translate3d(\" + y + \", \" + b + \", 0);\" : \"\") + \"}\\n \" + (o ? \"from\" : \"to\") + \" {opacity: 1;transform: none;} \"), lookup[_];\n}\n\nfunction Fade() {\n var o = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : _globals.defaults,\n e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],\n r = o.children,\n t = (o.out, o.forever),\n p = o.timeout,\n a = o.duration,\n l = void 0 === a ? _globals.defaults.duration : a,\n i = o.delay,\n u = void 0 === i ? _globals.defaults.delay : i,\n n = o.count,\n s = void 0 === n ? _globals.defaults.count : n,\n d = _objectWithoutProperties(o, [\"children\", \"out\", \"forever\", \"timeout\", \"duration\", \"delay\", \"count\"]),\n _ = {\n make: make,\n duration: void 0 === p ? l : p,\n delay: u,\n forever: t,\n count: s,\n style: {\n animationFillMode: \"both\"\n },\n reverse: d.left\n };\n\n return e ? (0, _wrap2.default)(d, _, _, r) : _;\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n});\n\nvar _propTypes = require(\"prop-types\"),\n _globals = require(\"./globals\"),\n _wrap = require(\"./wrap\"),\n _wrap2 = _interopRequireDefault(_wrap),\n propTypes = {\n out: _propTypes.bool,\n left: _propTypes.bool,\n right: _propTypes.bool,\n top: _propTypes.bool,\n bottom: _propTypes.bool,\n big: _propTypes.bool,\n mirror: _propTypes.bool,\n opposite: _propTypes.bool,\n duration: _propTypes.number,\n timeout: _propTypes.number,\n distance: _propTypes.string,\n delay: _propTypes.number,\n count: _propTypes.number,\n forever: _propTypes.bool\n},\n lookup = {};\n\nFade.propTypes = propTypes, exports.default = Fade, module.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = _interopDefault(require('react'));\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 ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\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(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(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\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 _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\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\nvar pathRegex = /^(.*\\/)([^/]*)$/;\n\nfunction validImgSrc(placeholder) {\n return placeholder && (pathRegex.test(placeholder) || placeholder.indexOf('data:image') === 0);\n} // \n\n\nfunction parseSrcset(srcset) {\n var sSources = srcset.match(/\\s*(?:[\\S]*)(?:\\s+(?:-?(?:\\d+(?:\\.(?:\\d+)?)?|\\.\\d+)[a-zA-Z]))?(?:\\s*,)?/g);\n if (!Array.isArray(sSources)) throw new Error(\"\\uD83D\\uDCA9 srcset is invalid \".concat(JSON.stringify(sSources, null, 2)));\n var sources = [];\n\n for (var i = 0; i < sSources.length; i += 1) {\n var sSource = sSources[i].trim();\n\n if (sSource.substr(-1) === ',') {\n sSource = sSource.substr(0, sSource.length - 1).trim();\n }\n\n var parts = sSource.split(/\\s+/, 2);\n\n if (parts.length === 0 || parts.length === 1 && !parts[0] || parts.length === 2 && !parts[0] && !parts[1]) {\n continue; // eslint-disable-line no-continue\n }\n\n var url = parts[0];\n\n if (parts.length === 1 || parts.length === 2 && !parts[1]) {\n // If no \"w\" or \"x\" specified, we assume it's \"1x\".\n sources.push({\n url: url,\n width: undefined,\n dpr: 1\n });\n } else {\n var spec = parts[1].toLowerCase();\n var lastChar = spec.substring(spec.length - 1);\n\n if (lastChar === 'w') {\n sources.push({\n url: url,\n width: parseFloat(spec),\n dpr: undefined\n });\n } else if (lastChar === 'x') {\n sources.push({\n url: url,\n width: undefined,\n dpr: parseFloat(spec)\n });\n }\n }\n }\n\n return sources;\n} // \n\n\nvar findClosestDpr = function findClosestDpr(result, target) {\n return result.reduce(function (prev, curr) {\n return Math.abs(curr.dpr - target) < Math.abs(prev.dpr - target) ? curr : prev;\n });\n};\n\nfunction filterImgSrc(_ref) {\n var _ref$dataset = _ref.dataset,\n src = _ref$dataset.src,\n srcset = _ref$dataset.srcset;\n if (!srcset) return src; // $FlowIgnoreLine: DOM api\n\n var clientWidth = document.documentElement.clientWidth || window.innerWidth; // eslint-disable-line no-undef\n\n var devicePixelRatio = window.devicePixelRatio; // eslint-disable-line no-undef\n\n var parsedSrcset = parseSrcset(srcset);\n var srcInArray = parsedSrcset.map(function (s) {\n return _objectSpread2({}, s, {}, !s.dpr && s.width ? {\n dpr: s.width / clientWidth\n } : null);\n });\n var foundSrc = srcInArray.find(function (_ref2) {\n var dpr = _ref2.dpr;\n return devicePixelRatio === dpr;\n });\n return foundSrc ? foundSrc.url : findClosestDpr(srcInArray, devicePixelRatio).url;\n} // \n\n\nvar fetchImage = function fetchImage(image, imageSrc) {\n return new Promise(function (resolve, error) {\n image.src = imageSrc; // eslint-disable-line no-param-reassign\n\n image.onload = resolve; // eslint-disable-line no-param-reassign\n\n image.onerror = error; // eslint-disable-line no-param-reassign\n });\n}; // \n\n\nfunction applyStyle(target, withoutPlaceholder) {\n /* eslint-disable */\n target.style.opacity = withoutPlaceholder ? 1 : 0;\n /* eslint-enable */\n}\n\nfunction applyImage(target, image, src) {\n /* eslint-disable */\n target.src = src;\n target.style.visibility = 'visible';\n\n if (target.dataset.srcset) {\n target.srcset = target.dataset.srcset;\n }\n\n var withoutPlaceholder = target.getAttribute('data-placeholder') === 'false';\n /* eslint-enable */\n\n var targetElement = withoutPlaceholder ? target : target.nextSibling;\n\n if (targetElement) {\n target.addEventListener('load', function () {\n if (!target) return;\n applyStyle(targetElement, withoutPlaceholder);\n target.removeEventListener('load', applyStyle);\n });\n }\n\n window.__REACT_SIMPLE_IMG__.imgLoadingRefs[\"delete\"](target);\n} // \n\n\nfunction logError(message, target) {\n var e = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (window.__REACT_SIMPLE_IMG__.logConsoleError) {\n console.error(\"\".concat(message, \"\\n\\n\").concat(target.outerHTML, \"\\n\\nand error message \").concat(e.message));\n }\n}\n\nfunction setImageHeight(image, target) {\n image.addEventListener('load', function (e) {\n target.parentNode.style.height = \"\".concat(e.target.height, \"px\"); // eslint-disable-line\n\n target.parentNode.style.visibility = 'visible'; // eslint-disable-line\n });\n} // \n\n\nfunction updateSessionStorage(src) {\n try {\n var cachedImages = JSON.parse(window.sessionStorage.getItem('__REACT_SIMPLE_IMG__')) || {};\n cachedImages[src] = +new Date();\n window.sessionStorage.setItem('__REACT_SIMPLE_IMG__', JSON.stringify(cachedImages));\n } catch (e) {\n logError(\"Error marking image as cached \".concat(e));\n }\n} // \n\n\nfunction imageLoader(target) {\n try {\n var image = new Image(); // eslint-disable-line no-undef\n\n var _window$__REACT_SIMPL = window.__REACT_SIMPLE_IMG__,\n observer = _window$__REACT_SIMPL.observer,\n imgLoadingRefs = _window$__REACT_SIMPL.imgLoadingRefs;\n var src = filterImgSrc(target);\n observer.unobserve(target);\n imgLoadingRefs.set(target, image);\n\n if (!src) {\n logError('Filter Image source returned empty image source', target);\n return;\n }\n\n if (target.parentNode && target.parentNode.style.height === '1px') {\n setImageHeight(image, target);\n }\n\n fetchImage(image, src).then(function () {\n if (target) {\n applyImage(target, image, src);\n if (!window.__REACT_SIMPLE_IMG__) return;\n var _window$__REACT_SIMPL2 = window.__REACT_SIMPLE_IMG__,\n disableAnimateCachedImg = _window$__REACT_SIMPL2.disableAnimateCachedImg,\n callBackRefs = _window$__REACT_SIMPL2.callBackRefs;\n\n if (disableAnimateCachedImg) {\n updateSessionStorage(src);\n }\n\n var callback = callBackRefs.get(target);\n if (!callback) return;\n callback();\n callBackRefs[\"delete\"](target);\n }\n })[\"catch\"](function (e) {\n logError('Fetch image failed with target', target, e);\n });\n } catch (e) {\n logError('Image loader failed with target', target, e);\n }\n} // \n\n\nvar defaultConfig = {\n rootMargin: '0px 0px',\n threshold: [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]\n};\n\nfunction onIntersection(entries) {\n for (var i = 0, len = entries.length; i < len; i++) {\n var _entries$i = entries[i],\n intersectionRatio = _entries$i.intersectionRatio,\n target = _entries$i.target;\n\n if (intersectionRatio > 0) {\n imageLoader(target);\n }\n }\n}\n\nfunction observerStart() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultConfig;\n var disableAnimateCachedImg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var logConsoleError = arguments.length > 2 ? arguments[2] : undefined;\n if (!window.IntersectionObserver) require('intersection-observer'); // $FlowIgnoreLine:\n\n var observer = new IntersectionObserver(function (entries) {\n return onIntersection(entries);\n }, config);\n window.__REACT_SIMPLE_IMG__ = {\n observer: observer,\n imgLoadingRefs: new Map(),\n callBackRefs: new Map(),\n disableAnimateCachedImg: disableAnimateCachedImg,\n logConsoleError: logConsoleError\n };\n return undefined;\n} // \n\n\nfunction initSimpleImg() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultConfig;\n var disableAnimateCachedImg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var logConsoleError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (typeof window === 'undefined') return;\n observerStart(config, disableAnimateCachedImg, logConsoleError);\n}\n\nvar commonStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%'\n};\nvar defaultImgPlaceholder = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\nvar defaultPlaceholderColor = 'white';\nvar hiddenStyle = {\n visibility: 'hidden'\n};\nvar expendWidth = {\n width: '100%'\n};\nvar aspectRatioChildStyle = {\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0\n};\nvar wrapperCommonStyle = {\n position: 'relative',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center'\n}; // \n\nfunction getAspectRatio(_ref) {\n var _ref$height = _ref.height,\n height = _ref$height === void 0 ? 0 : _ref$height,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? 0 : _ref$width,\n applyAspectRatio = _ref.applyAspectRatio;\n var aspectRatio = parseInt(height, 10) / parseInt(width, 10);\n var shouldUseAspectRatio = applyAspectRatio && !isNaN(aspectRatio); // eslint-disable-line\n\n var aspectRatioStyle = {\n position: 'relative',\n display: 'block',\n paddingBottom: shouldUseAspectRatio ? \"\".concat(Math.abs(aspectRatio * 100), \"%\") : ''\n };\n return {\n shouldUseAspectRatio: shouldUseAspectRatio,\n aspectRatioStyle: aspectRatioStyle\n };\n}\n\nvar SimpleImg = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(SimpleImg, _React$PureComponent);\n\n function SimpleImg(props) {\n var _this;\n\n _classCallCheck(this, SimpleImg);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SimpleImg).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isDocumentLoad: false,\n isCached: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"element\", React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"setDocumentLoaded\", function () {\n _this.setState({\n isDocumentLoad: true\n });\n });\n\n if (typeof window !== 'undefined' && !window.__REACT_SIMPLE_IMG__) {\n initSimpleImg();\n }\n\n return _this;\n }\n\n _createClass(SimpleImg, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var src = this.props.src;\n var element = this.element.current;\n\n if (window.__REACT_SIMPLE_IMG__.disableAnimateCachedImg && element // && element.getAttribute('data-from-server') === 'no'\n ) {\n try {\n // Browsers with strict privacy settings could throw an error when\n // attempting to use localStorage and sessionStorage.\n var cachedImagesRefString = window.sessionStorage.getItem('__REACT_SIMPLE_IMG__');\n var cachedImagesRef = JSON.parse(cachedImagesRefString) || {};\n\n if (cachedImagesRef[src]) {\n this.setState({\n isCached: true\n });\n return;\n }\n } catch (e) {\n logError(\"Error retrieving cached images \".concat(e));\n }\n }\n\n if (document.readyState === 'complete') {\n this.triggerImageLoadOrObserver();\n } else {\n window.addEventListener('load', this.setDocumentLoaded);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (!prevState.isDocumentLoad && this.state.isDocumentLoad) {\n this.triggerImageLoadOrObserver();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('load', this.setDocumentLoaded);\n if (!this.element.current) return;\n var element = this.element.current;\n var _window$__REACT_SIMPL = window.__REACT_SIMPLE_IMG__,\n observer = _window$__REACT_SIMPL.observer,\n imgLoadingRefs = _window$__REACT_SIMPL.imgLoadingRefs,\n callBackRefs = _window$__REACT_SIMPL.callBackRefs;\n observer.unobserve(element);\n\n if (imgLoadingRefs.has(element)) {\n imgLoadingRefs.get(element).src = '';\n imgLoadingRefs[\"delete\"](element);\n }\n\n callBackRefs[\"delete\"](element);\n }\n }, {\n key: \"triggerImageLoadOrObserver\",\n value: function triggerImageLoadOrObserver() {\n var _this$props = this.props,\n importance = _this$props.importance,\n onComplete = _this$props.onComplete;\n var _window$__REACT_SIMPL2 = window.__REACT_SIMPLE_IMG__,\n observer = _window$__REACT_SIMPL2.observer,\n callBackRefs = _window$__REACT_SIMPL2.callBackRefs;\n\n if (importance === 'auto') {\n imageLoader(this.element.current);\n } else {\n observer.observe(this.element.current);\n }\n\n if (onComplete) callBackRefs.set(this.element.current, onComplete);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n src = _this$props2.src,\n className = _this$props2.className,\n height = _this$props2.height,\n width = _this$props2.width,\n alt = _this$props2.alt,\n srcSet = _this$props2.srcSet,\n applyAspectRatio = _this$props2.applyAspectRatio,\n _this$props2$animatio = _this$props2.animationDuration,\n animationDuration = _this$props2$animatio === void 0 ? 0.3 : _this$props2$animatio,\n _this$props2$placehol = _this$props2.placeholder,\n placeholder = _this$props2$placehol === void 0 ? defaultPlaceholderColor : _this$props2$placehol,\n _this$props2$style = _this$props2.style,\n style = _this$props2$style === void 0 ? {} : _this$props2$style,\n restProps = _objectWithoutProperties(_this$props2, [\"src\", \"className\", \"height\", \"width\", \"alt\", \"srcSet\", \"applyAspectRatio\", \"animationDuration\", \"placeholder\", \"style\"]);\n\n var isCached = this.state.isCached;\n var disablePlaceholder = placeholder === false;\n var isValidImgSrc = validImgSrc(placeholder);\n\n var inlineStyle = _objectSpread2({}, commonStyle, {}, !isValidImgSrc ? {\n background: placeholder\n } : null, {\n transition: \"\".concat(animationDuration, \"s opacity\")\n });\n\n var imgPlaceholder = isValidImgSrc ? placeholder : defaultImgPlaceholder;\n var isSrcSetFulfilled = this.element.current && this.element.current.src !== imgPlaceholder;\n\n var importance = restProps.importance,\n onComplete = restProps.onComplete,\n imgStyle = restProps.imgStyle,\n restImgProps = _objectWithoutProperties(restProps, [\"importance\", \"onComplete\", \"imgStyle\"]);\n\n var heightWidth = _objectSpread2({}, height ? {\n height: style.height || height\n } : null, {}, width ? {\n width: style.width || width\n } : null);\n\n var isHeightAndWidthNotSet = !height && !width;\n\n var _getAspectRatio = getAspectRatio({\n height: height,\n width: width,\n applyAspectRatio: applyAspectRatio\n }),\n shouldUseAspectRatio = _getAspectRatio.shouldUseAspectRatio,\n aspectRatioStyle = _getAspectRatio.aspectRatioStyle;\n\n var imageProps = _objectSpread2({\n alt: alt,\n src: isCached ? src : imgPlaceholder,\n srcSet: isCached ? srcSet : null\n }, isCached ? null : _objectSpread2({\n ref: this.element\n }, disablePlaceholder ? {\n 'data-placeholder': 'false'\n } : null, {\n 'data-src': src,\n 'data-srcset': srcSet\n }), {}, restImgProps);\n\n var noScript = React.createElement(\"noscript\", null, React.createElement(\"img\", {\n src: src,\n alt: alt,\n style: imgStyle,\n className: className\n }));\n\n if (disablePlaceholder && !applyAspectRatio) {\n return React.createElement(React.Fragment, null, noScript, React.createElement(\"img\", _extends({\n style: _objectSpread2({}, style, {}, isCached ? null : {\n transition: \"\".concat(animationDuration, \"s opacity\"),\n opacity: 0\n }, {}, imgStyle),\n className: className\n }, heightWidth, imageProps)));\n }\n\n var placeholderComponent = isValidImgSrc ? React.createElement(\"img\", _extends({\n style: inlineStyle,\n src: placeholder,\n alt: alt\n }, restImgProps)) : React.createElement(\"div\", {\n style: inlineStyle\n });\n\n if (isCached) {\n return React.createElement(\"div\", {\n style: _objectSpread2({}, shouldUseAspectRatio ? aspectRatioStyle : _objectSpread2({}, heightWidth, {}, wrapperCommonStyle, {}, style)),\n className: className\n }, React.createElement(\"img\", _extends({\n style: _objectSpread2({}, isHeightAndWidthNotSet ? expendWidth : heightWidth, {}, shouldUseAspectRatio ? aspectRatioChildStyle : null, {}, imgStyle)\n }, imageProps)), noScript);\n }\n\n return React.createElement(\"div\", {\n style: _objectSpread2({}, shouldUseAspectRatio ? aspectRatioStyle : _objectSpread2({}, wrapperCommonStyle, {}, height ? {\n height: height\n } : {\n height: 1,\n visibility: 'hidden'\n }, {}, style)),\n className: className\n }, noScript, React.createElement(\"img\", _extends({\n style: _objectSpread2({}, isHeightAndWidthNotSet ? expendWidth : heightWidth, {}, !isValidImgSrc && !isSrcSetFulfilled ? hiddenStyle : {}, {}, shouldUseAspectRatio ? aspectRatioChildStyle : null, {}, disablePlaceholder ? {\n transition: \"\".concat(animationDuration, \"s opacity\"),\n opacity: 0\n } : null, {}, imgStyle)\n }, imageProps)), !disablePlaceholder && placeholderComponent);\n }\n }]);\n\n return SimpleImg;\n}(React.PureComponent);\n\n_defineProperty(SimpleImg, \"defaultProps\", {\n animationDuration: 0.3,\n importance: 'low',\n placeholder: defaultPlaceholderColor\n});\n\nexports.SimpleImg = SimpleImg;\nexports.initSimpleImg = initSimpleImg;","require(\"core-js/modules/es.array.sort.js\");\n\n/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function (window, document) {\n 'use strict'; // Exits early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n\n if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function get() {\n return this.intersectionRatio > 0;\n }\n });\n }\n\n return;\n }\n /**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\n\n\n var registry = [];\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n\n function IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect; // Calculates the intersection ratio.\n\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height; // Sets intersection ratio.\n\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n }\n /**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\n\n\n function IntersectionObserver(callback, opt_options) {\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n } // Binds and throttles `this._checkForIntersections`.\n\n\n this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT); // Private properties.\n\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin); // Public properties.\n\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function (margin) {\n return margin.value + margin.unit;\n }).join(' ');\n }\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n\n\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n /**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\n\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n /**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\n\n IntersectionObserver.prototype.observe = function (target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n\n this._observationTargets.push({\n element: target,\n entry: null\n });\n\n this._monitorIntersections();\n\n this._checkForIntersections();\n };\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n\n\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets = this._observationTargets.filter(function (item) {\n return item.element != target;\n });\n\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n\n this._unregisterInstance();\n }\n };\n /**\n * Stops observing all target elements for intersection changes.\n */\n\n\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n\n this._unmonitorIntersections();\n\n this._unregisterInstance();\n };\n /**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\n\n\n IntersectionObserver.prototype.takeRecords = function () {\n var records = this._queuedEntries.slice();\n\n this._queuedEntries = [];\n return records;\n };\n /**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\n\n\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n return threshold.sort().filter(function (t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n\n return t !== a[i - 1];\n });\n };\n /**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\n\n\n IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function (margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n\n return {\n value: parseFloat(parts[1]),\n unit: parts[2]\n };\n }); // Handles shorthand.\n\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n return margins;\n };\n /**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\n\n\n IntersectionObserver.prototype._monitorIntersections = function () {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true; // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL);\n } else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n };\n /**\n * Stops polling for intersection changes.\n * @private\n */\n\n\n IntersectionObserver.prototype._unmonitorIntersections = function () {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n\n this._domObserver = null;\n }\n }\n };\n /**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\n\n\n IntersectionObserver.prototype._checkForIntersections = function () {\n var rootIsInDom = this._rootIsInDom();\n\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function (item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n\n var rootContainsTarget = this._rootContainsTarget(target);\n\n var oldEntry = item.entry;\n\n var intersectionRect = rootIsInDom && rootContainsTarget && this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n };\n /**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\n\n\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ? window.getComputedStyle(parent) : {}; // If the parent isn't displayed, an intersection can't happen.\n\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body && parent != document.documentElement && parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n } // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n\n\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n if (!intersectionRect) break;\n }\n\n parent = getParentNode(parent);\n }\n\n return intersectionRect;\n };\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n\n\n IntersectionObserver.prototype._getRootRect = function () {\n var rootRect;\n\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n\n return this._expandRectByRootMargin(rootRect);\n };\n /**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\n\n\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n var margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit == 'px' ? margin.value : margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n return newRect;\n };\n /**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\n\n\n IntersectionObserver.prototype._hasCrossedThreshold = function (oldEntry, newEntry) {\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1; // Ignore unchanged ratios\n\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i]; // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n\n if (threshold == oldRatio || threshold == newRatio || threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n };\n /**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\n\n\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\n };\n /**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\n\n\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n return containsDeep(this.root || document, target);\n };\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n\n\n IntersectionObserver.prototype._registerInstance = function () {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n };\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n\n\n IntersectionObserver.prototype._unregisterInstance = function () {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n };\n /**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\n\n\n function now() {\n return window.performance && performance.now && performance.now();\n }\n /**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\n\n\n function throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function () {\n fn();\n timer = null;\n }, timeout);\n }\n };\n }\n /**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\n\n\n function addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n }\n /**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\n\n\n function removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n }\n /**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\n\n\n function computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n return width >= 0 && height >= 0 && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n /**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\n\n\n function getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {// Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect(); // Older IE\n\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n\n return rect;\n }\n /**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\n\n\n function getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n /**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\n\n\n function containsDeep(parent, child) {\n var node = child;\n\n while (node) {\n if (node == parent) return true;\n node = getParentNode(node);\n }\n\n return false;\n }\n /**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\n\n\n function getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n return parent;\n } // Exposes the constructors globally.\n\n\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n})(window, document);"],"sourceRoot":""}