{"version":3,"sources":["webpack:///./src/views/message/scrollView.vue?f355","webpack:///./src/views/message/index.vue","webpack:///./src/views/message/scrollView.vue","webpack:///src/views/message/scrollView.vue","webpack:///./src/views/message/scrollView.vue?2824","webpack:///./src/views/message/scrollView.vue?5489","webpack:///src/views/message/index.vue","webpack:///./src/views/message/index.vue?7e0c","webpack:///./src/views/message/index.vue?1f1d","webpack:///./src/utils/login.js","webpack:///./src/views/message/index.vue?6bfa","webpack:///./src/assets/loading.png","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./src/assets/orz-tv.png"],"names":["render","_vm","this","_c","_self","staticStyle","staticClass","_v","attrs","isLoading","contents","page","pn","ps","total","on","loadMoreContents","_l","data","item","idx","key","style","is_read","_s","msg_title","renderTime","ctime","domProps","msg_content","staticRenderFns","_t","require","isEnd","_e","ref","props","type","Boolean","default","mounted","io","IntersectionObserver","entry","isIntersecting","$emit","observe","$refs","bottomRef","beforeDestroy","disconnect","component","name","$store","state","userInfo","$LogReport","sendCustomEvent","$router","push","login","components","ScrollView","methods","params","res","$api","user","getMessageList","list","time","window","moment","unix","format","action","_miniLogin_","showComponent","show_type","module","exports","IntersectionObserverEntry","prototype","Object","defineProperty","get","intersectionRatio","document","startDoc","doc","frame","getFrameElement","ownerDocument","registry","crossOriginUpdater","crossOriginRect","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","getEmptyRect","forEach","observer","_checkForIntersections","_resetCrossOriginUpdater","target","isTargetAlreadyObserved","_observationTargets","some","element","nodeType","Error","_registerInstance","_monitorIntersections","unobserve","filter","_unmonitorIntersections","length","_unregisterInstance","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","threshold","Array","isArray","sort","t","i","a","isNaN","_parseRootMargin","opt_rootMargin","marginString","margins","split","map","margin","parts","exec","value","parseFloat","unit","win","defaultView","_monitoringDocuments","indexOf","callback","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","now","_hasCrossedThreshold","_callback","getComputedStyle","display","parent","getParentNode","atRoot","parentRect","parentComputedStyle","width","height","frameRect","frameIntersect","body","documentElement","overflow","computeRectIntersection","isDoc","html","top","left","right","clientWidth","bottom","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","frameElement","e","ensureDOMRect","targetArea","intersectionArea","Number","toFixed","opt_options","options","throttle","bind","rootMargin","join","performance","fn","timeout","timer","setTimeout","node","event","opt_useCapture","addEventListener","attachEvent","removeEventListener","detachEvent","rect1","rect2","Math","max","min","el","err","y","x","parentBoundingRect","parentIntersectionRect","child","parentNode","assignedSlot","host"],"mappings":"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","file":"js/message.e77837c9.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scrollView.vue?vue&type=style&index=0&id=e774b986&prod&lang=less&scoped=true\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"padding\":\"40px 0\"}},[_c('div',{staticClass:\"company-core-account\"},[_c('h1',{staticClass:\"account-title\"},[_vm._v(\"站内信\")]),_c('scroll-view',{attrs:{\"isLoading\":_vm.isLoading,\"isEnd\":_vm.contents.page.pn * _vm.contents.page.ps >= _vm.contents.page.total},on:{\"reach-bottom\":_vm.loadMoreContents}},_vm._l((_vm.contents.data),function(item,idx){return _c('div',{key:idx,staticClass:\"register-info\",style:({\n \"opacity\": item.is_read ? 0.4 : 1\n })},[_c('div',{staticClass:\"l-1\"},[_c('h2',{staticClass:\"title\"},[_vm._v(_vm._s(item.msg_title))]),_c('h2',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.renderTime(item.ctime)))])]),_c('div',{staticClass:\"p-1\",domProps:{\"innerHTML\":_vm._s(item.msg_content)}})])}),0)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"scroll-view\"},[_vm._t(\"default\"),(_vm.isLoading)?_c('div',{staticClass:\"loading\"},[_c('img',{staticClass:\"loading-icon\",attrs:{\"src\":require(\"@/assets/loading.png\"),\"alt\":\"\"}}),_c('span',{staticClass:\"loading-text\"},[_vm._v(\"加载更多内容...\")])]):(_vm.isEnd)?_c('div',{staticClass:\"end\"},[_c('img',{staticClass:\"end-icon\",attrs:{\"src\":require(\"@/assets/orz-tv.png\"),\"alt\":\"\"}}),_c('span',{staticClass:\"end-text\"},[_vm._v(\"已经到底啦_(:з”∠)_\")])]):_vm._e(),_c('div',{ref:\"bottomRef\",staticClass:\"bottom\"})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scrollView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scrollView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./scrollView.vue?vue&type=template&id=e774b986&scoped=true\"\nimport script from \"./scrollView.vue?vue&type=script&lang=js\"\nexport * from \"./scrollView.vue?vue&type=script&lang=js\"\nimport style0 from \"./scrollView.vue?vue&type=style&index=0&id=e774b986&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e774b986\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3e7f114a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3e7f114a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3e7f114a\",\n null\n \n)\n\nexport default component.exports","export function login(action = 'login') {\n if (window._miniLogin_) {\n window._miniLogin_.showComponent({\n show_type: action\n }) // 显示登录组件\n }\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3e7f114a&prod&scoped=true&lang=scss\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAhPSURBVHgBzZltiB1XGcf/z5m5L7t3797dpCZaWxJCSBOUQpPaCqGfUtEqvtTWjUFjCSrqF0FbRFFsPxehRe0HkVYQaZNtarVipL5QEa2iqCBSWwna2JjFNCbtvt69M3ee/s/L3Jnb7GZfurnk2Z2ZM29nfuc/z3nOc+YK3og9rE0MYS8M9kFwNZfdAowq0GTZQDHLZYrlGV79AmL8ERH+hA/KDNZpgvXYcb0BXXyKd1/HCpoENNyK+gojVW7E1S0EFrHw/ry46xS/4v6TOCi/xBptbcCP6S1U6fMsXW1BuDU5VFDUgZLMaA6McF0Bjvw+gp/h9psEf2K1CKsDntQ384Ff4dV74dWElmGKrS2YoKTfElJD4yTc4xqjrmGugTz/PBJ8Bh+X0yuhrAx8XO9AhiMsNcVXnsNYaiMmKAwHZtw1AThvTGicye+TopFSavgM63mQaj+yfuDH9ROs8UioNFfPhDv9qw8PlAKurHjfVgo/NlpyJ3tAg9vw2AOEfmA5JLMs7FEHexcrUVct6+RKXd1uL//3pv48pHSspIaU3Ch3kfJFxVpwN13wi1gT8KQe5pnDjouw4hEdDAsZn54V2L1lCc6irAjNDkelcIWyW0go3INjevdSaLIE7O1cf84pYl9X4aO9zoL+123491ce/w1j7F9wgXH3kyHO/phxOsVuNm8PfeDWDHhn3hnR70ZFRNEQEL2LfJ3u8d3lgR/VrQxbD7nYas9krhOpljoMCh82jMVPs3c/gsMyhdXYD/QaVF1YvDMA26dEffUWjbECTbPBB3BIXloaeFK/xfVOFBVIT2npe31nuXwNE3IS67EnCN7FMZau7QP1HbkYYPyznuVzPoQSlLdjeivXO8Tq6s1uM9fRjCu7TudUBUe59cJau4PxtoPbWPo50D8AaQAP0Nb2k+296LWqAH6Ye1tR9iffmUxp//cEvRcbaZP6INcHg6IeV3vPQ2jIS7ziBiBX+LjezOZssf4awpJTNNygIbRNoYX7sfF2L597Og95rt8U7piLtY2C7i+AuzhgwxXfuYbYqsE1bPjKeEuXneVLeLfMYaNtQl7VLkdSDZCyRLjzmcqXPfD3tcHdm/ogy4t/Qb9gSvg/XC77qPydJLYTuhFQ9eIRkhTX031aBnW8zYKJVxcOXF6ndIRHcblNcb8EOJsw2WHf5SpF3B7n+hbrMxZY1Y9DmQTXAHqR4W/4sJzF5bYJ+Q/Xv9OQn6h4J85jtFM5s8AG24E+wBzcqyv4AwZkfOAJ6615pkeQSLQUpSJsi3l0OJNSRPBnpZfYJPg3BmUJfsuRVgKMEzhMBByMdHF9TNir4KOBhKvs68gk7OvIAIFjnEIpCcrT2pBfWPhx69jDYaqgJmRjFp8F68sZPiDzGJQxxJEwQpH856HOE8ICE5Tjb2bEhzCjPpwZ6fn1QI0PnUaR6PcmDXk6alswa6/L7GKhqbkxbr/r+uVTOoxBmjAqFdlhhGIQseWnHHBPTXVq98oOuO18fHCWMrGiytqf01jOV4l8j3WJF52yCIBUNstC2WcRezBIOyQv8t3uI+VP4JWdDpODfczyTsU8+HKY7nhj2bjRA36sAWyW9DQGaYTmg29f6pQdOP5h1EUID5srLT232IUf6mZcIWZQwfNUc866RR4pELI0IyFbS/F+XCFmXJyNcMow+lo3sOCZV1mzzKvMN7DfTWuuAPP5sOJHeTgzWlqCe2R2upngs0zvhrDBxhGKX5O09oxqvJrrPfCEvEBVz2Xho0mucibBt91HKWyCn+1uqJ08j+a/gPouoErwChezMrC1FEddHM56UyINcTk/Yn37Jk5VPr0RSt9HsGem9aqXFc1sFtXOK6hyhlDlzNZCL6t2/zT/cX5tUeyyreiFtdKnKufnPnE6xwZ+Gx+TC1iHfee/Ojw0h22tBrJ6hE4jwmKzjnSMjrfQQtqgfNdYCbmIiC4PzPBluvgqoYYIh0x6ymrIM/LBBW7oBr+oJ5yqrxL8C8/qUKWG7W8axdiYoNOsYrFq0BlvoFMjbKOGJGJMqqVIh9tI5+fR3bkTnTK0XFTrY3rAxLjTRQgDDelP5lQP4BbaqW1CCMxgv1E8x+NnMMfZ9RFp25t2ntDapjZG6puxZUsVW1tVNDdRTW7bIzEWhytYHDFImkPojBC4VkFiqHSL0FVC7xjHHGHT5RXObVLfxxh8m4MNgHnZxes85wiDS4jXPnkK2d5wjM7mOhbGY7QJuDBOyDFCEnRhrIZFljuNCjrMbZMW96MYyWgX6VCVrpAiiVPM3PjWi1PbpXvkhPyUCp/IpBePncQhMXJb49VFUN6e9927VCPv4yQBkrI3pHxfi0zDE6bpi4q4w6ltm0uHU6L5LuIkQTydIl7oIB7bgvmlYJcHtnZQ7PzqRM8NEFyklHeYXNWi3Hc+gesHdgbDroGom3JhLQlBZzOCd1AhYKXTRSUlNOuPFlNM75blf2W6ZMzDR+RnfD1PEni+nMq7fFldzuzNu0gv5zMGec+UNIXp2C1Bu0qgBJEFTlhe6MK0u24bpWzYK9M4955r5fylkC4NbO2Q/JoQ32DptFH0/5U+ZJvityQP67/XiM9XIRbaQiZMt6iig2YDYrpLzPNz59v451175P8r4QjWYkf1HbzjXWRqBSjXAW0xk1LST6uzU42yUzVtNIhcZ0tsGGswjDX98aRmcH60jpP3XSfnVouwNuAC/O1MmPa65L40wNhokYU8pMoQNcJBwUaLsSojArcjNjIYzLMxZ5mvPvfQzSsrujHAuX1P62hgB2G3R4K3dAU1wo4Sum6BWzFmqOQsR7MpqnuhmeLMhXFM/flGGyzWZ68BUWvqKvreOTQAAAAASUVORK5CYII=\"","/**\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","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""}