{"version":3,"sources":["webpack://Lazyload/webpack/bootstrap","webpack://Lazyload/./source/App/Utils/lazyload.js","webpack://Lazyload/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://Lazyload/./node_modules/lozad/dist/lozad.min.js","webpack://Lazyload/./node_modules/intersection-observer/intersection-observer.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_interopRequireDefault","observe","_lozad","observer","default","document","onreadystatechange","obj","g","assign","e","arguments","length","documentMode","rootMargin","threshold","load","nodeName","toLowerCase","createElement","getAttribute","src","alt","appendChild","children","a","setAttribute","style","backgroundImage","classList","toggle","loaded","f","b","root","u","window","IntersectionObserver","forEach","intersectionRatio","isIntersecting","unobserve","target","Element","NodeList","querySelectorAll","triggerLoad","IntersectionObserverEntry","this","registry","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_observationTargets","some","item","element","nodeType","Error","_registerInstance","push","entry","_monitorIntersections","_checkForIntersections","filter","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","Array","isArray","sort","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","parseFloat","unit","_monitoringIntersections","_monitoringInterval","setInterval","addEvent","_domObserver","MutationObserver","attributes","childList","characterData","subtree","clearInterval","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","top","bottom","left","right","width","height","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","intersectionRect","_computeTargetAndRootIntersection","newEntry","time","performance","now","boundingClientRect","rootBounds","_hasCrossedThreshold","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","body","documentElement","overflow","Math","max","min","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","indexOf","index","splice","targetArea","intersectionArea","Number","toFixed","callback","opt_options","fn","timeout","timer","options","setTimeout","join","node","event","opt_useCapture","addEventListener","attachEvent","removeEventListener","detatchEvent","el","err","child","parentNode","host"],"mappings":"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","file":"scripts/lazyload.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/assets/version7.44.25.03.0328746/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.observe = void 0;\n\nvar _lozad = _interopRequireDefault(require(\"lozad\"));\n\nrequire('intersection-observer');\n\nvar observer = (0, _lozad.default)('.lazy');\nobserver.observe();\n\ndocument.onreadystatechange = function () {\n observer.observe();\n};\n\nvar observe = function observe() {\n return observer.observe();\n};\n\nexports.observe = observe;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*! lozad.js - v1.9.0 - 2019-02-09\n* https://github.com/ApoorvSaxena/lozad.js\n* Copyright (c) 2019 Apoorv Saxena; Licensed MIT */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.lozad=e()}(this,function(){\"use strict\";var g=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[o]=r[o])}return t},n=\"undefined\"!=typeof document&&document.documentMode,l={rootMargin:\"0px\",threshold:0,load:function(t){if(\"picture\"===t.nodeName.toLowerCase()){var e=document.createElement(\"img\");n&&t.getAttribute(\"data-iesrc\")&&(e.src=t.getAttribute(\"data-iesrc\")),t.getAttribute(\"data-alt\")&&(e.alt=t.getAttribute(\"data-alt\")),t.appendChild(e)}if(\"video\"===t.nodeName.toLowerCase()&&!t.getAttribute(\"data-src\")&&t.children){for(var r=t.children,o=void 0,a=0;a<=r.length-1;a++)(o=r[a].getAttribute(\"data-src\"))&&(r[a].src=o);t.load()}t.getAttribute(\"data-src\")&&(t.src=t.getAttribute(\"data-src\")),t.getAttribute(\"data-srcset\")&&t.setAttribute(\"srcset\",t.getAttribute(\"data-srcset\")),t.getAttribute(\"data-background-image\")&&(t.style.backgroundImage=\"url('\"+t.getAttribute(\"data-background-image\")+\"')\"),t.getAttribute(\"data-toggle-class\")&&t.classList.toggle(t.getAttribute(\"data-toggle-class\"))},loaded:function(){}};\n/**\n * Detect IE browser\n * @const {boolean}\n * @private\n */function f(t){t.setAttribute(\"data-loaded\",!0)}var b=function(t){return\"true\"===t.getAttribute(\"data-loaded\")};return function(){var r,o,a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:\".lozad\",t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=g({},l,t),n=e.root,i=e.rootMargin,d=e.threshold,c=e.load,u=e.loaded,s=void 0;return window.IntersectionObserver&&(s=new IntersectionObserver((r=c,o=u,function(t,e){t.forEach(function(t){(0<t.intersectionRatio||t.isIntersecting)&&(e.unobserve(t.target),b(t.target)||(r(t.target),f(t.target),o(t.target)))})}),{root:n,rootMargin:i,threshold:d})),{observe:function(){for(var t=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:document;return t instanceof Element?[t]:t instanceof NodeList?t:e.querySelectorAll(t)}(a,n),e=0;e<t.length;e++)b(t[e])||(s?s.observe(t[e]):(c(t[e]),f(t[e]),u(t[e])))},triggerLoad:function(t){b(t)||(c(t),f(t),u(t))},observer:s}}});\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\n(function(window, document) {\n'use strict';\n\n\n// Exits early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\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,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\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 */\nvar registry = [];\n\n\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 */\nfunction 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;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\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\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 */\nfunction IntersectionObserver(callback, opt_options) {\n\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 }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\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\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\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 */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\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 */\nIntersectionObserver.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 this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\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 */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\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 */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\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 return t !== a[i - 1];\n });\n};\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<Object>} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.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 if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\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 */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\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 this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\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 */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\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 var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n 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\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 */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\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 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\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 <body>\n // or <html> element, update the intersection rect.\n // Note: <body> and <html> 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 &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use <html>/<body> 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 return this._expandRectByRootMargin(rootRect);\n};\n\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 */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\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\n return newRect;\n};\n\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 */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\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 ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // 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 if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\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 */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\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 */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\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 */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\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 */\nfunction 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\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 */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\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 */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\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 */\nfunction 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\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\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 */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\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 return rect;\n}\n\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 */\nfunction 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/**\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 */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\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 */\nfunction 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 return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}(window, document));\n"],"sourceRoot":""}