X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=priv%2Fstatic%2Fpacks%2Fextra_polyfills.js.map;h=8427824b0a967523ba185e54ead57dd19d9026e3;hb=756bdef5f5a879d6a817d833e7b9428f8c7b0c22;hp=885e7bc30f18977b6aefea41138f7d1cbee6e061;hpb=de0c1c641a1709cf393aecc3ef666d827ef5ebde;p=akkoma diff --git a/priv/static/packs/extra_polyfills.js.map b/priv/static/packs/extra_polyfills.js.map index 885e7bc30..8427824b0 100644 --- a/priv/static/packs/extra_polyfills.js.map +++ b/priv/static/packs/extra_polyfills.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/mastodon/extra_polyfills.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/util/extra_polyfills.js","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./node_modules/requestidlecallback/index.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js"],"names":["__webpack_require__","r","__webpack_exports__","object_fit_images__WEBPACK_IMPORTED_MODULE_2__","n","objectFitImages","window","document","IntersectionObserverEntry","prototype","Object","defineProperty","get","this","intersectionRatio","registry","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","target","_observationTargets","some","item","element","nodeType","Error","_registerInstance","push","entry","_monitorIntersections","_checkForIntersections","unobserve","filter","length","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","threshold","Array","isArray","sort","t","i","a","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","value","parseFloat","unit","_monitoringIntersections","_monitoringInterval","setInterval","addEvent","_domObserver","MutationObserver","attributes","childList","characterData","subtree","clearInterval","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","top","bottom","left","right","width","height","forEach","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","intersectionRect","_computeTargetAndRootIntersection","newEntry","time","performance","now","boundingClientRect","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","root","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","bind","setTimeout","rootMargin","join","node","event","opt_useCapture","addEventListener","attachEvent","removeEventListener","detatchEvent","el","err","child","parentNode","host","global","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","define","undefined","scheduleStart","throttleDelay","lazytimer","lazyraf","id","timestamp","check","requestAnimationFrame","cancelRequestAnimationFrame","clearTimeout","tasks","runAttempts","isRunning","remainingTime","minThrottle","throttle","taskStart","tasklength","IdleDeadline","didTimeout","timeRemaining","Date","setInactive","last","onInputorMutation","scheduleLazy","scheduleAfterRaf","runTasks","scheduleRaf","task","len","timeThreshold","shift","requestIdleCallbackShim","cancelIdleCallbackShim","requestIdleCallback","cancelIdleCallback","e","rIC","timeRemainingProto","IdleCallbackDeadline","getOwnPropertyDescriptor","configurable","call","enumerable","name","capture","passive","request","cancel","apply","exports","module","OFI","propRegex","testImg","Image","style","object-position","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","getAttribute","nativeSetAttribute","setAttribute","autoModeEnabled","setPlaceholder","img","placeholder","onImageReady","naturalWidth","fixOne","descriptors","parsed","fontFamily","props","getStyle","ofi","skipTest","srcset","src","naturalHeight","prop","set","ss","console","warn","picturefill","pf","_","ns","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","replace","backgroundPosition","backgroundRepeat","backgroundOrigin","test","backgroundSize","fix","imgs","opts","startAutoMode","getElementsByTagName","querySelectorAll","tagName","watchMQ","getOfiImageMaybe","HTMLImageElement","String","hijackAttributes"],"mappings":"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","file":"extra_polyfills.js","sourcesContent":["import 'intersection-observer';\nimport 'requestidlecallback';\nimport objectFitImages from 'object-fit-images';\n\nobjectFitImages();\n","import 'intersection-observer';\nimport 'requestidlecallback';\nimport objectFitImages from 'object-fit-images';\n\nobjectFitImages();\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} 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 \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 &&\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 / 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","(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine([], factory);\n\t} else if (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory();\n\t} else {\n\t\twindow.idleCallbackShim = factory();\n\t}\n}(function(){\n\t'use strict';\n\tvar scheduleStart, throttleDelay, lazytimer, lazyraf;\n\tvar root = typeof window != 'undefined' ?\n\t\twindow :\n\t\ttypeof global != undefined ?\n\t\t\tglobal :\n\t\t\tthis || {};\n\tvar requestAnimationFrame = root.cancelRequestAnimationFrame && root.requestAnimationFrame || setTimeout;\n\tvar cancelRequestAnimationFrame = root.cancelRequestAnimationFrame || clearTimeout;\n\tvar tasks = [];\n\tvar runAttempts = 0;\n\tvar isRunning = false;\n\tvar remainingTime = 7;\n\tvar minThrottle = 35;\n\tvar throttle = 125;\n\tvar index = 0;\n\tvar taskStart = 0;\n\tvar tasklength = 0;\n\tvar IdleDeadline = {\n\t\tget didTimeout(){\n\t\t\treturn false;\n\t\t},\n\t\ttimeRemaining: function(){\n\t\t\tvar timeRemaining = remainingTime - (Date.now() - taskStart);\n\t\t\treturn timeRemaining < 0 ? 0 : timeRemaining;\n\t\t},\n\t};\n\tvar setInactive = debounce(function(){\n\t\tremainingTime = 22;\n\t\tthrottle = 66;\n\t\tminThrottle = 0;\n\t});\n\n\tfunction debounce(fn){\n\t\tvar id, timestamp;\n\t\tvar wait = 99;\n\t\tvar check = function(){\n\t\t\tvar last = (Date.now()) - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tid = setTimeout(check, wait - last);\n\t\t\t} else {\n\t\t\t\tid = null;\n\t\t\t\tfn();\n\t\t\t}\n\t\t};\n\t\treturn function(){\n\t\t\ttimestamp = Date.now();\n\t\t\tif(!id){\n\t\t\t\tid = setTimeout(check, wait);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction abortRunning(){\n\t\tif(isRunning){\n\t\t\tif(lazyraf){\n\t\t\t\tcancelRequestAnimationFrame(lazyraf);\n\t\t\t}\n\t\t\tif(lazytimer){\n\t\t\t\tclearTimeout(lazytimer);\n\t\t\t}\n\t\t\tisRunning = false;\n\t\t}\n\t}\n\n\tfunction onInputorMutation(){\n\t\tif(throttle != 125){\n\t\t\tremainingTime = 7;\n\t\t\tthrottle = 125;\n\t\t\tminThrottle = 35;\n\n\t\t\tif(isRunning) {\n\t\t\t\tabortRunning();\n\t\t\t\tscheduleLazy();\n\t\t\t}\n\t\t}\n\t\tsetInactive();\n\t}\n\n\tfunction scheduleAfterRaf() {\n\t\tlazyraf = null;\n\t\tlazytimer = setTimeout(runTasks, 0);\n\t}\n\n\tfunction scheduleRaf(){\n\t\tlazytimer = null;\n\t\trequestAnimationFrame(scheduleAfterRaf);\n\t}\n\n\tfunction scheduleLazy(){\n\n\t\tif(isRunning){return;}\n\t\tthrottleDelay = throttle - (Date.now() - taskStart);\n\n\t\tscheduleStart = Date.now();\n\n\t\tisRunning = true;\n\n\t\tif(minThrottle && throttleDelay < minThrottle){\n\t\t\tthrottleDelay = minThrottle;\n\t\t}\n\n\t\tif(throttleDelay > 9){\n\t\t\tlazytimer = setTimeout(scheduleRaf, throttleDelay);\n\t\t} else {\n\t\t\tthrottleDelay = 0;\n\t\t\tscheduleRaf();\n\t\t}\n\t}\n\n\tfunction runTasks(){\n\t\tvar task, i, len;\n\t\tvar timeThreshold = remainingTime > 9 ?\n\t\t\t9 :\n\t\t\t1\n\t\t;\n\n\t\ttaskStart = Date.now();\n\t\tisRunning = false;\n\n\t\tlazytimer = null;\n\n\t\tif(runAttempts > 2 || taskStart - throttleDelay - 50 < scheduleStart){\n\t\t\tfor(i = 0, len = tasks.length; i < len && IdleDeadline.timeRemaining() > timeThreshold; i++){\n\t\t\t\ttask = tasks.shift();\n\t\t\t\ttasklength++;\n\t\t\t\tif(task){\n\t\t\t\t\ttask(IdleDeadline);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(tasks.length){\n\t\t\tscheduleLazy();\n\t\t} else {\n\t\t\trunAttempts = 0;\n\t\t}\n\t}\n\n\tfunction requestIdleCallbackShim(task){\n\t\tindex++;\n\t\ttasks.push(task);\n\t\tscheduleLazy();\n\t\treturn index;\n\t}\n\n\tfunction cancelIdleCallbackShim(id){\n\t\tvar index = id - 1 - tasklength;\n\t\tif(tasks[index]){\n\t\t\ttasks[index] = null;\n\t\t}\n\t}\n\n\tif(!root.requestIdleCallback || !root.cancelIdleCallback){\n\t\troot.requestIdleCallback = requestIdleCallbackShim;\n\t\troot.cancelIdleCallback = cancelIdleCallbackShim;\n\n\t\tif(root.document && document.addEventListener){\n\t\t\troot.addEventListener('scroll', onInputorMutation, true);\n\t\t\troot.addEventListener('resize', onInputorMutation);\n\n\t\t\tdocument.addEventListener('focus', onInputorMutation, true);\n\t\t\tdocument.addEventListener('mouseover', onInputorMutation, true);\n\t\t\t['click', 'keypress', 'touchstart', 'mousedown'].forEach(function(name){\n\t\t\t\tdocument.addEventListener(name, onInputorMutation, {capture: true, passive: true});\n\t\t\t});\n\n\t\t\tif(root.MutationObserver){\n\t\t\t\tnew MutationObserver( onInputorMutation ).observe( document.documentElement, {childList: true, subtree: true, attributes: true} );\n\t\t\t}\n\t\t}\n\t} else {\n\t\ttry{\n\t\t\troot.requestIdleCallback(function(){}, {timeout: 0});\n\t\t} catch(e){\n\t\t\t(function(rIC){\n\t\t\t\tvar timeRemainingProto, timeRemaining;\n\t\t\t\troot.requestIdleCallback = function(fn, timeout){\n\t\t\t\t\tif(timeout && typeof timeout.timeout == 'number'){\n\t\t\t\t\t\treturn rIC(fn, timeout.timeout);\n\t\t\t\t\t}\n\t\t\t\t\treturn rIC(fn);\n\t\t\t\t};\n\t\t\t\tif(root.IdleCallbackDeadline && (timeRemainingProto = IdleCallbackDeadline.prototype)){\n\t\t\t\t\ttimeRemaining = Object.getOwnPropertyDescriptor(timeRemainingProto, 'timeRemaining');\n\t\t\t\t\tif(!timeRemaining || !timeRemaining.configurable || !timeRemaining.get){return;}\n\t\t\t\t\tObject.defineProperty(timeRemainingProto, 'timeRemaining', {\n\t\t\t\t\t\tvalue: function(){\n\t\t\t\t\t\t\treturn timeRemaining.get.call(this);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})(root.requestIdleCallback)\n\t\t}\n\t}\n\n\treturn {\n\t\trequest: requestIdleCallbackShim,\n\t\tcancel: cancelIdleCallbackShim,\n\t};\n}));\n","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/extra_polyfills.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/extra_polyfills.js","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./node_modules/requestidlecallback/index.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js"],"names":["__webpack_require__","r","__webpack_exports__","object_fit_images__WEBPACK_IMPORTED_MODULE_2__","n","objectFitImages","window","document","IntersectionObserverEntry","prototype","Object","defineProperty","get","this","intersectionRatio","registry","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","target","_observationTargets","some","item","element","nodeType","Error","_registerInstance","push","entry","_monitorIntersections","_checkForIntersections","unobserve","filter","length","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","threshold","Array","isArray","sort","t","i","a","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","value","parseFloat","unit","_monitoringIntersections","_monitoringInterval","setInterval","addEvent","_domObserver","MutationObserver","attributes","childList","characterData","subtree","clearInterval","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","top","bottom","left","right","width","height","forEach","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","intersectionRect","_computeTargetAndRootIntersection","newEntry","time","performance","now","boundingClientRect","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","root","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","bind","setTimeout","rootMargin","join","node","event","opt_useCapture","addEventListener","attachEvent","removeEventListener","detatchEvent","el","err","child","parentNode","host","global","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","undefined","scheduleStart","throttleDelay","lazytimer","lazyraf","id","timestamp","check","requestAnimationFrame","cancelRequestAnimationFrame","clearTimeout","tasks","runAttempts","isRunning","remainingTime","minThrottle","throttle","taskStart","tasklength","IdleDeadline","didTimeout","timeRemaining","Date","setInactive","last","onInputorMutation","scheduleLazy","scheduleAfterRaf","runTasks","scheduleRaf","task","len","timeThreshold","shift","requestIdleCallbackShim","cancelIdleCallbackShim","requestIdleCallback","cancelIdleCallback","e","rIC","timeRemainingProto","IdleCallbackDeadline","getOwnPropertyDescriptor","configurable","call","enumerable","name","capture","passive","request","cancel","apply","exports","module","OFI","propRegex","testImg","Image","style","object-position","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","getAttribute","nativeSetAttribute","setAttribute","autoModeEnabled","setPlaceholder","img","placeholder","onImageReady","naturalWidth","fixOne","descriptors","parsed","fontFamily","props","getStyle","ofi","skipTest","srcset","src","naturalHeight","prop","set","ss","console","warn","picturefill","pf","_","ns","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","replace","backgroundPosition","backgroundRepeat","backgroundOrigin","test","backgroundSize","fix","imgs","opts","startAutoMode","getElementsByTagName","querySelectorAll","tagName","watchMQ","getOfiImageMaybe","HTMLImageElement","String","hijackAttributes"],"mappings":"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","file":"extra_polyfills.js","sourcesContent":["import 'intersection-observer';\nimport 'requestidlecallback';\nimport objectFitImages from 'object-fit-images';\n\nobjectFitImages();\n","import 'intersection-observer';\nimport 'requestidlecallback';\nimport objectFitImages from 'object-fit-images';\n\nobjectFitImages();\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);","(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n window.idleCallbackShim = factory();\n }\n})(function () {\n 'use strict';\n\n var scheduleStart, throttleDelay, lazytimer, lazyraf;\n var root = typeof window != 'undefined' ? window : typeof global != undefined ? global : this || {};\n var requestAnimationFrame = root.cancelRequestAnimationFrame && root.requestAnimationFrame || setTimeout;\n var cancelRequestAnimationFrame = root.cancelRequestAnimationFrame || clearTimeout;\n var tasks = [];\n var runAttempts = 0;\n var isRunning = false;\n var remainingTime = 7;\n var minThrottle = 35;\n var throttle = 125;\n var index = 0;\n var taskStart = 0;\n var tasklength = 0;\n var IdleDeadline = {\n get didTimeout() {\n return false;\n },\n\n timeRemaining: function timeRemaining() {\n var timeRemaining = remainingTime - (Date.now() - taskStart);\n return timeRemaining < 0 ? 0 : timeRemaining;\n }\n };\n var setInactive = debounce(function () {\n remainingTime = 22;\n throttle = 66;\n minThrottle = 0;\n });\n\n function debounce(fn) {\n var id, timestamp;\n var wait = 99;\n\n var check = function check() {\n var last = Date.now() - timestamp;\n\n if (last < wait) {\n id = setTimeout(check, wait - last);\n } else {\n id = null;\n fn();\n }\n };\n\n return function () {\n timestamp = Date.now();\n\n if (!id) {\n id = setTimeout(check, wait);\n }\n };\n }\n\n function abortRunning() {\n if (isRunning) {\n if (lazyraf) {\n cancelRequestAnimationFrame(lazyraf);\n }\n\n if (lazytimer) {\n clearTimeout(lazytimer);\n }\n\n isRunning = false;\n }\n }\n\n function onInputorMutation() {\n if (throttle != 125) {\n remainingTime = 7;\n throttle = 125;\n minThrottle = 35;\n\n if (isRunning) {\n abortRunning();\n scheduleLazy();\n }\n }\n\n setInactive();\n }\n\n function scheduleAfterRaf() {\n lazyraf = null;\n lazytimer = setTimeout(runTasks, 0);\n }\n\n function scheduleRaf() {\n lazytimer = null;\n requestAnimationFrame(scheduleAfterRaf);\n }\n\n function scheduleLazy() {\n if (isRunning) {\n return;\n }\n\n throttleDelay = throttle - (Date.now() - taskStart);\n scheduleStart = Date.now();\n isRunning = true;\n\n if (minThrottle && throttleDelay < minThrottle) {\n throttleDelay = minThrottle;\n }\n\n if (throttleDelay > 9) {\n lazytimer = setTimeout(scheduleRaf, throttleDelay);\n } else {\n throttleDelay = 0;\n scheduleRaf();\n }\n }\n\n function runTasks() {\n var task, i, len;\n var timeThreshold = remainingTime > 9 ? 9 : 1;\n taskStart = Date.now();\n isRunning = false;\n lazytimer = null;\n\n if (runAttempts > 2 || taskStart - throttleDelay - 50 < scheduleStart) {\n for (i = 0, len = tasks.length; i < len && IdleDeadline.timeRemaining() > timeThreshold; i++) {\n task = tasks.shift();\n tasklength++;\n\n if (task) {\n task(IdleDeadline);\n }\n }\n }\n\n if (tasks.length) {\n scheduleLazy();\n } else {\n runAttempts = 0;\n }\n }\n\n function requestIdleCallbackShim(task) {\n index++;\n tasks.push(task);\n scheduleLazy();\n return index;\n }\n\n function cancelIdleCallbackShim(id) {\n var index = id - 1 - tasklength;\n\n if (tasks[index]) {\n tasks[index] = null;\n }\n }\n\n if (!root.requestIdleCallback || !root.cancelIdleCallback) {\n root.requestIdleCallback = requestIdleCallbackShim;\n root.cancelIdleCallback = cancelIdleCallbackShim;\n\n if (root.document && document.addEventListener) {\n root.addEventListener('scroll', onInputorMutation, true);\n root.addEventListener('resize', onInputorMutation);\n document.addEventListener('focus', onInputorMutation, true);\n document.addEventListener('mouseover', onInputorMutation, true);\n ['click', 'keypress', 'touchstart', 'mousedown'].forEach(function (name) {\n document.addEventListener(name, onInputorMutation, {\n capture: true,\n passive: true\n });\n });\n\n if (root.MutationObserver) {\n new MutationObserver(onInputorMutation).observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: true\n });\n }\n }\n } else {\n try {\n root.requestIdleCallback(function () {}, {\n timeout: 0\n });\n } catch (e) {\n (function (rIC) {\n var timeRemainingProto, timeRemaining;\n\n root.requestIdleCallback = function (fn, timeout) {\n if (timeout && typeof timeout.timeout == 'number') {\n return rIC(fn, timeout.timeout);\n }\n\n return rIC(fn);\n };\n\n if (root.IdleCallbackDeadline && (timeRemainingProto = IdleCallbackDeadline.prototype)) {\n timeRemaining = Object.getOwnPropertyDescriptor(timeRemainingProto, 'timeRemaining');\n\n if (!timeRemaining || !timeRemaining.configurable || !timeRemaining.get) {\n return;\n }\n\n Object.defineProperty(timeRemainingProto, 'timeRemaining', {\n value: function value() {\n return timeRemaining.get.call(this);\n },\n enumerable: true,\n configurable: true\n });\n }\n })(root.requestIdleCallback);\n }\n }\n\n return {\n request: requestIdleCallbackShim,\n cancel: cancelIdleCallbackShim\n };\n});","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {\n style: {\n 'object-position': 1\n }\n} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\";\n}\n\nfunction polyfillCurrentSrc(el) {\n if (el.srcset && !supportsCurrentSrc && window.picturefill) {\n var pf = window.picturefill._; // parse srcset with picturefill where currentSrc isn't available\n\n if (!el[pf.ns] || !el[pf.ns].evaled) {\n // force synchronous srcset parsing\n pf.fillImg(el, {\n reselect: true\n });\n }\n\n if (!el[pf.ns].curSrc) {\n // force picturefill to parse srcset\n el[pf.ns].supported = false;\n pf.fillImg(el, {\n reselect: true\n });\n } // retrieve parsed currentSrc, if any\n\n\n el.currentSrc = el[pf.ns].curSrc || el.src;\n }\n}\n\nfunction getStyle(el) {\n var style = getComputedStyle(el).fontFamily;\n var parsed;\n var props = {};\n\n while ((parsed = propRegex.exec(style)) !== null) {\n props[parsed[1]] = parsed[2];\n }\n\n return props;\n}\n\nfunction setPlaceholder(img, width, height) {\n // Default: fill width, no height\n var placeholder = createPlaceholder(width || 1, height || 0); // Only set placeholder if it's different\n\n if (nativeGetAttribute.call(img, 'src') !== placeholder) {\n nativeSetAttribute.call(img, 'src', placeholder);\n }\n}\n\nfunction onImageReady(img, callback) {\n // naturalWidth is only available when the image headers are loaded,\n // this loop will poll it every 100ms.\n if (img.naturalWidth) {\n callback(img);\n } else {\n setTimeout(onImageReady, 100, img, callback);\n }\n}\n\nfunction fixOne(el) {\n var style = getStyle(el);\n var ofi = el[OFI];\n style['object-fit'] = style['object-fit'] || 'fill'; // default value\n // Avoid running where unnecessary, unless OFI had already done its deed\n\n if (!ofi.img) {\n // fill is the default behavior so no action is necessary\n if (style['object-fit'] === 'fill') {\n return;\n } // Where object-fit is supported and object-position isn't (Safari < 10)\n\n\n if (!ofi.skipTest && // unless user wants to apply regardless of browser support\n supportsObjectFit && // if browser already supports object-fit\n !style['object-position'] // unless object-position is used\n ) {\n return;\n }\n } // keep a clone in memory while resetting the original to a blank\n\n\n if (!ofi.img) {\n ofi.img = new Image(el.width, el.height);\n ofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n ofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src; // preserve for any future cloneNode calls\n // https://github.com/bfred-it/object-fit-images/issues/53\n\n nativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\n if (el.srcset) {\n nativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n }\n\n setPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height); // remove srcset because it overrides src\n\n if (el.srcset) {\n el.srcset = '';\n }\n\n try {\n keepSrcUsable(el);\n } catch (err) {\n if (window.console) {\n console.warn('https://bit.ly/ofi-old-browser');\n }\n }\n }\n\n polyfillCurrentSrc(ofi.img);\n el.style.backgroundImage = \"url(\\\"\" + (ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"') + \"\\\")\";\n el.style.backgroundPosition = style['object-position'] || 'center';\n el.style.backgroundRepeat = 'no-repeat';\n el.style.backgroundOrigin = 'content-box';\n\n if (/scale-down/.test(style['object-fit'])) {\n onImageReady(ofi.img, function () {\n if (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n el.style.backgroundSize = 'contain';\n } else {\n el.style.backgroundSize = 'auto';\n }\n });\n } else {\n el.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n }\n\n onImageReady(ofi.img, function (img) {\n setPlaceholder(el, img.naturalWidth, img.naturalHeight);\n });\n}\n\nfunction keepSrcUsable(el) {\n var descriptors = {\n get: function get(prop) {\n return el[OFI].img[prop ? prop : 'src'];\n },\n set: function set(value, prop) {\n el[OFI].img[prop ? prop : 'src'] = value;\n nativeSetAttribute.call(el, \"data-ofi-\" + prop, value); // preserve for any future cloneNode\n\n fixOne(el);\n return value;\n }\n };\n Object.defineProperty(el, 'src', descriptors);\n Object.defineProperty(el, 'currentSrc', {\n get: function get() {\n return descriptors.get('currentSrc');\n }\n });\n Object.defineProperty(el, 'srcset', {\n get: function get() {\n return descriptors.get('srcset');\n },\n set: function set(ss) {\n return descriptors.set(ss, 'srcset');\n }\n });\n}\n\nfunction hijackAttributes() {\n function getOfiImageMaybe(el, name) {\n return el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n }\n\n if (!supportsObjectPosition) {\n HTMLImageElement.prototype.getAttribute = function (name) {\n return nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n };\n\n HTMLImageElement.prototype.setAttribute = function (name, value) {\n return nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n };\n }\n}\n\nfunction fix(imgs, opts) {\n var startAutoMode = !autoModeEnabled && !imgs;\n opts = opts || {};\n imgs = imgs || 'img';\n\n if (supportsObjectPosition && !opts.skipTest || !supportsOFI) {\n return false;\n } // use imgs as a selector or just select all images\n\n\n if (imgs === 'img') {\n imgs = document.getElementsByTagName('img');\n } else if (typeof imgs === 'string') {\n imgs = document.querySelectorAll(imgs);\n } else if (!('length' in imgs)) {\n imgs = [imgs];\n } // apply fix to all\n\n\n for (var i = 0; i < imgs.length; i++) {\n imgs[i][OFI] = imgs[i][OFI] || {\n skipTest: opts.skipTest\n };\n fixOne(imgs[i]);\n }\n\n if (startAutoMode) {\n document.body.addEventListener('load', function (e) {\n if (e.target.tagName === 'IMG') {\n fix(e.target, {\n skipTest: opts.skipTest\n });\n }\n }, true);\n autoModeEnabled = true;\n imgs = 'img'; // reset to a generic selector for watchMQ\n } // if requested, watch media queries for object-fit change\n\n\n if (opts.watchMQ) {\n window.addEventListener('resize', fix.bind(null, imgs, {\n skipTest: opts.skipTest\n }));\n }\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\nhijackAttributes();\nmodule.exports = fix;"],"sourceRoot":""} \ No newline at end of file