{"version":3,"file":"static/js/5821.bca55b60.js","mappings":"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","sources":["webpack://finnish-art/./node_modules/vue-observe-visibility/dist/vue-observe-visibility.esm.js","webpack://finnish-art/./src/plugins/observe-visibility.client.js","webpack://finnish-art/./node_modules/intersection-observer/intersection-observer.js"],"sourcesContent":["function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction processOptions(value) {\n var options;\n\n if (typeof value === 'function') {\n // Simple options (callback-only)\n options = {\n callback: value\n };\n } else {\n // Options object\n options = value;\n }\n\n return options;\n}\nfunction throttle(callback, delay) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout;\n var lastState;\n var currentArgs;\n\n var throttled = function throttled(state) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n currentArgs = args;\n if (timeout && state === lastState) return;\n var leading = options.leading;\n\n if (typeof leading === 'function') {\n leading = leading(state, lastState);\n }\n\n if ((!timeout || state !== lastState) && leading) {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n }\n\n lastState = state;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n timeout = 0;\n }, delay);\n };\n\n throttled._clear = function () {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return throttled;\n}\nfunction deepEqual(val1, val2) {\n if (val1 === val2) return true;\n\n if (_typeof(val1) === 'object') {\n for (var key in val1) {\n if (!deepEqual(val1[key], val2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\nvar VisibilityState =\n/*#__PURE__*/\nfunction () {\n function VisibilityState(el, options, vnode) {\n _classCallCheck(this, VisibilityState);\n\n this.el = el;\n this.observer = null;\n this.frozen = false;\n this.createObserver(options, vnode);\n }\n\n _createClass(VisibilityState, [{\n key: \"createObserver\",\n value: function createObserver(options, vnode) {\n var _this = this;\n\n if (this.observer) {\n this.destroyObserver();\n }\n\n if (this.frozen) return;\n this.options = processOptions(options);\n\n this.callback = function (result, entry) {\n _this.options.callback(result, entry);\n\n if (result && _this.options.once) {\n _this.frozen = true;\n\n _this.destroyObserver();\n }\n }; // Throttle\n\n\n if (this.callback && this.options.throttle) {\n var _ref = this.options.throttleOptions || {},\n _leading = _ref.leading;\n\n this.callback = throttle(this.callback, this.options.throttle, {\n leading: function leading(state) {\n return _leading === 'both' || _leading === 'visible' && state || _leading === 'hidden' && !state;\n }\n });\n }\n\n this.oldResult = undefined;\n this.observer = new IntersectionObserver(function (entries) {\n var entry = entries[0];\n\n if (entries.length > 1) {\n var intersectingEntry = entries.find(function (e) {\n return e.isIntersecting;\n });\n\n if (intersectingEntry) {\n entry = intersectingEntry;\n }\n }\n\n if (_this.callback) {\n // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n var result = entry.isIntersecting && entry.intersectionRatio >= _this.threshold;\n if (result === _this.oldResult) return;\n _this.oldResult = result;\n\n _this.callback(result, entry);\n }\n }, this.options.intersection); // Wait for the element to be in document\n\n vnode.context.$nextTick(function () {\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n }\n }, {\n key: \"destroyObserver\",\n value: function destroyObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n } // Cancel throttled call\n\n\n if (this.callback && this.callback._clear) {\n this.callback._clear();\n\n this.callback = null;\n }\n }\n }, {\n key: \"threshold\",\n get: function get() {\n return this.options.intersection && typeof this.options.intersection.threshold === 'number' ? this.options.intersection.threshold : 0;\n }\n }]);\n\n return VisibilityState;\n}();\n\nfunction bind(el, _ref2, vnode) {\n var value = _ref2.value;\n if (!value) return;\n\n if (typeof IntersectionObserver === 'undefined') {\n console.warn('[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill');\n } else {\n var state = new VisibilityState(el, value, vnode);\n el._vue_visibilityState = state;\n }\n}\n\nfunction update(el, _ref3, vnode) {\n var value = _ref3.value,\n oldValue = _ref3.oldValue;\n if (deepEqual(value, oldValue)) return;\n var state = el._vue_visibilityState;\n\n if (!value) {\n unbind(el);\n return;\n }\n\n if (state) {\n state.createObserver(value, vnode);\n } else {\n bind(el, {\n value: value\n }, vnode);\n }\n}\n\nfunction unbind(el) {\n var state = el._vue_visibilityState;\n\n if (state) {\n state.destroyObserver();\n delete el._vue_visibilityState;\n }\n}\n\nvar ObserveVisibility = {\n bind: bind,\n update: update,\n unbind: unbind\n};\n\nfunction install(Vue) {\n Vue.directive('observe-visibility', ObserveVisibility);\n /* -- Add more components here -- */\n}\n/* -- Plugin definition & Auto-install -- */\n\n/* You shouldn't have to modify the code below */\n// Plugin\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"1.0.0\",\n install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { ObserveVisibility, install };\n","/**\n * Vue2 observe visibility plugin\n */\nimport 'intersection-observer'; // polyfill\nimport { ObserveVisibility } from 'vue-observe-visibility';\n\nexport const plugin = {\n name: 'observe-visibility',\n\n install (Vue) {\n Vue.directive('observe-visibility', ObserveVisibility);\n }\n};\n\nexport default plugin;\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() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit 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 * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n})(window.document);\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 * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\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 = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(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 (\n options.root &&\n options.root.nodeType != 1 &&\n options.root.nodeType != 9\n ) {\n throw new Error('root must be a Document or 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 /** @private @const {!Array} */\n this._monitoringDocuments = [];\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = [];\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 * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\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(target.ownerDocument);\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 return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\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._unmonitorAllIntersections();\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 * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\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 monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\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 if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\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, targetRect, rootRect);\n\n var rootBounds = null;\n if (!this._rootContainsTarget(target)) {\n rootBounds = getEmptyRect();\n } else if (!crossOriginUpdater || this.root) {\n rootBounds = rootRect;\n }\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootBounds,\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} targetRect The bounding rect of the target.\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, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\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 null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\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 var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.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 parent = 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 {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root && !isDoc(this.root)) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var doc = isDoc(this.root) ? this.root : document;\n var html = doc.documentElement;\n var body = doc.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 {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} 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 var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n return (\n containsDeep(rootDoc, target) &&\n (!this.root || rootDoc == target.ownerDocument)\n );\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.detachEvent == 'function') {\n node.detachEvent('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|?ClientRect} The intersection rect or undefined if no\n * intersection 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 } || null;\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 {DOMRect|ClientRect} 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 {ClientRect} 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/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\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 (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n // If the parent has element that is assigned through shadow root slot\n if (parent && parent.assignedSlot) {\n parent = parent.assignedSlot.parentNode\n }\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}\n\n/**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\nfunction isDoc(node) {\n return node && node.nodeType === 9;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_toConsumableArray","arr","Array","isArray","arr2","_arrayWithoutHoles","iter","toString","call","from","_iterableToArray","TypeError","_nonIterableSpread","deepEqual","val1","val2","VisibilityState","el","options","vnode","instance","Constructor","_classCallCheck","this","observer","frozen","createObserver","protoProps","value","_this","destroyObserver","callback","result","entry","once","throttle","_leading","throttleOptions","leading","delay","timeout","lastState","currentArgs","arguments","undefined","throttled","state","_len","args","_key","apply","concat","clearTimeout","setTimeout","_clear","oldResult","IntersectionObserver","entries","intersectingEntry","find","e","isIntersecting","intersectionRatio","threshold","intersection","context","$nextTick","observe","disconnect","get","bind","_ref2","console","warn","_vue_visibilityState","unbind","ObserveVisibility","update","_ref3","oldValue","version","install","Vue","directive","GlobalVue","window","g","use","plugin","name","IntersectionObserverEntry","document","startDoc","doc","frame","getFrameElement","ownerDocument","registry","crossOriginUpdater","crossOriginRect","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","top","bottom","left","right","width","height","forEach","_checkForIntersections","_resetCrossOriginUpdater","_observationTargets","some","item","element","nodeType","Error","_registerInstance","push","_monitorIntersections","unobserve","filter","_unmonitorIntersections","_unregisterInstance","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","sort","t","a","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","parseFloat","unit","win","defaultView","_monitoringDocuments","indexOf","monitoringInterval","domObserver","setInterval","addEvent","MutationObserver","attributes","childList","characterData","subtree","_monitoringUnsubscribes","clearInterval","removeEvent","rootDoc","root","index","hasDependentTargets","itemDoc","unsubscribe","splice","unsubscribes","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","rootBounds","newEntry","time","performance","now","_hasCrossedThreshold","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","frameRect","frameIntersect","body","documentElement","overflow","Math","max","min","isDoc","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","frameElement","ensureDOMRect","targetArea","intersectionArea","Number","toFixed","opt_options","fn","timer","rootMargin","join","node","event","opt_useCapture","addEventListener","attachEvent","removeEventListener","detachEvent","err","y","x","parentBoundingRect","parentIntersectionRect","child","parentNode","assignedSlot","host"],"sourceRoot":""}