{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./public/js/pingce/index.entry.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","IntersectionObserverEntry","this","intersectionRatio","document","startDoc","doc","frame","getFrameElement","ownerDocument","registry","crossOriginUpdater","crossOriginRect","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","top","bottom","left","right","width","height","forEach","observer","_checkForIntersections","_resetCrossOriginUpdater","observe","target","_observationTargets","some","item","element","nodeType","Error","_registerInstance","push","entry","_monitorIntersections","unobserve","filter","_unmonitorIntersections","length","_unregisterInstance","disconnect","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","threshold","Array","isArray","sort","a","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","parseFloat","unit","win","defaultView","_monitoringDocuments","indexOf","callback","monitoringInterval","domObserver","setInterval","addEvent","MutationObserver","attributes","childList","characterData","subtree","_monitoringUnsubscribes","clearInterval","removeEvent","rootDoc","root","index","itemDoc","unsubscribe","splice","unsubscribes","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","rootBounds","newEntry","time","performance","now","_hasCrossedThreshold","isIntersecting","_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","e","ensureDOMRect","targetArea","intersectionArea","Number","toFixed","opt_options","fn","timeout","timer","options","setTimeout","rootMargin","join","node","event","opt_useCapture","addEventListener","attachEvent","removeEventListener","detachEvent","el","err","y","x","parentBoundingRect","parentIntersectionRect","child","parentNode","assignedSlot","host","thisArg","TypeError","prevent_inview_indicator","shouldListenToScroll","flag","scrollHandler","params","scrollTop","$","hasClass","addClass","removeClass","begin","end","offset","eq","siblings","changeNav","entries","id","parents","attr","on","preventDefault","stop","animate","posi","append","querySelectorAll","section","func","delay","timerId","context","args","arguments","apply","throttle","_jc_ping","md","container","ads"],"mappings":"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","file":"js/pingce/index.entry.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//ue.17173cdn.com/a/newgame/index/v5.4.4/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 220);\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.\n if (typeof window !== 'object') {\n return\n }\n\n // Exit early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n if (\n '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(\n window.IntersectionObserverEntry.prototype,\n 'isIntersecting',\n {\n get: function () {\n return this.intersectionRatio > 0\n },\n }\n )\n }\n return\n }\n\n /**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\n function 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 */\n var 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 */\n var 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 */\n var crossOriginUpdater = null\n\n /**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\n var crossOriginRect = null\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 */\n function 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(\n entry.intersectionRect || getEmptyRect()\n )\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(\n (intersectionArea / targetArea).toFixed(4)\n )\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 * 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 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 (\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),\n this.THROTTLE_TIMEOUT\n )\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\n .map(function (margin) {\n return margin.value + margin.unit\n })\n .join(' ')\n\n /** @private @const {!Array} */\n this._monitoringDocuments = []\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = []\n }\n\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100\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 */\n IntersectionObserver.prototype.POLL_INTERVAL = null\n\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true\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 */\n IntersectionObserver._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(\n boundingClientRect,\n intersectionRect\n )\n }\n registry.forEach(function (observer) {\n observer._checkForIntersections()\n })\n }\n }\n return crossOriginUpdater\n }\n\n /**\n * Resets the cross-origin mode.\n */\n IntersectionObserver._resetCrossOriginUpdater = function () {\n crossOriginUpdater = null\n crossOriginRect = null\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 */\n IntersectionObserver.prototype.observe = function (target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function (\n item\n ) {\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 * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets = 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 * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = []\n this._unmonitorAllIntersections()\n this._unregisterInstance()\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 */\n IntersectionObserver.prototype.takeRecords = function () {\n var records = this._queuedEntries.slice()\n this._queuedEntries = []\n return records\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 */\n IntersectionObserver.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(\n 'threshold must be a number between 0 and 1 inclusively'\n )\n }\n return t !== a[i - 1]\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 */\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 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 * 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 */\n IntersectionObserver.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 * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\n IntersectionObserver.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 = 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 * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\n IntersectionObserver.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 * 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 IntersectionObserver.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 =\n rootIsInDom &&\n 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 * 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 */\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (\n target,\n targetRect,\n 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 intersectionRect = targetRect\n var parent = getParentNode(target)\n var atRoot = false\n\n while (!atRoot && parent) {\n var parentRect = null\n var parentComputedStyle =\n parent.nodeType == 1 ? 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 (\n !crossOriginRect ||\n (crossOriginRect.width == 0 && crossOriginRect.height == 0)\n ) {\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 (\n parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible'\n ) {\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 * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\n IntersectionObserver.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 * 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 */\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n var margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit == 'px'\n ? 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 * 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 IntersectionObserver.prototype._hasCrossedThreshold = function (\n oldEntry,\n 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 =\n oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1\n var newRatio = newEntry.isIntersecting\n ? newEntry.intersectionRatio || 0\n : -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 (\n threshold == oldRatio ||\n threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio\n ) {\n return true\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 */\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root)\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 */\n IntersectionObserver.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 * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function () {\n if (registry.indexOf(this) < 0) {\n registry.push(this)\n }\n }\n\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function () {\n var index = registry.indexOf(this)\n if (index != -1) registry.splice(index, 1)\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 */\n function now() {\n return window.performance && performance.now && performance.now()\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 */\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 /**\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 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 /**\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 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.detachEvent == 'function') {\n node.detachEvent('on' + event, fn)\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 */\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\n return (\n (width >= 0 &&\n height >= 0 && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height,\n }) ||\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 */\n function 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 * 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 */\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 /**\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 */\n function 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 * 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 */\n function 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 * 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 function 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 * 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 function 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 */\n function isDoc(node) {\n return node && node.nodeType === 9\n }\n\n // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver\n window.IntersectionObserverEntry = IntersectionObserverEntry\n})()\n;(function () {\n if (!Array.prototype.forEach) {\n Array.prototype.forEach = function forEach(callback, thisArg) {\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function')\n }\n var array = this\n thisArg = thisArg || this\n for (var i = 0, l = array.length; i !== l; ++i) {\n callback.call(thisArg, array[i], i, array)\n }\n }\n }\n\n if (!Object.prototype.forEach) {\n Object.defineProperty(Object.prototype, 'forEach', {\n value: function (callback, thisArg) {\n if (this == null) {\n throw new TypeError('Not an object')\n }\n thisArg = thisArg || window\n for (var key in this) {\n if (this.hasOwnProperty(key)) {\n callback.call(thisArg, this[key], key, this)\n }\n }\n },\n })\n }\n})()\n\nfunction throttle(func, delay) {\n let timerId\n return function () {\n const context = this\n const args = arguments\n if (!timerId) {\n timerId = setTimeout(function () {\n func.apply(context, args)\n timerId = null\n }, delay)\n }\n }\n}\n\nconst gap = 150\nlet prevent_inview_indicator = false\nlet shouldListenToScroll = true\nlet flag = true\nfunction scrollHandler(params) {\n if (!shouldListenToScroll) {\n return\n }\n\n let scrollTop = document.documentElement.scrollTop || document.body.scrollTop\n\n if (scrollTop > 550) {\n if (!$('body').hasClass('scroll')) {\n $('body').addClass('scroll')\n }\n } else {\n if ($('body').hasClass('scroll')) {\n $('body').removeClass('scroll')\n }\n }\n\n if (flag) {\n let begin = 0\n let end = $('.comment').offset().top\n for (let i = 0; i < $('.article-tit').length; i++) {\n if (i > 0) {\n begin = $('.article-tit').eq(i).offset().top - $(window).height() * 0.4\n }\n if (i < $('.article-tit').length - 1) {\n end =\n $('.article-tit')\n .eq(i + 1)\n .offset().top -\n $(window).height() * 0.4\n }\n if (scrollTop >= begin && scrollTop < end) {\n $('.nav a').eq(i).addClass('active').siblings().removeClass('active')\n flag = false\n break\n }\n }\n }\n}\n\nconst changeNav = function (entries) {\n entries.forEach(function (entry) {\n // verify the element is intersecting\n if (entry.isIntersecting && entry.intersectionRatio >= 0.55) {\n if (prevent_inview_indicator) return\n\n // remove old active class\n $('.nav a.active').removeClass('active')\n\n // get id of the intersecting section\n var id = $(entry.target).parents('.article-item').attr('id')\n // find matching link & add appropriate class\n $('[href=\"#' + id + '\"]').addClass('active')\n }\n })\n}\n\n$(function () {\n $('.btn-to-comment').on('click', function (e) {\n e.preventDefault()\n\n $('html, body')\n .stop()\n .animate({ scrollTop: $('#comment').offset().top - gap }, 300)\n })\n\n $('.btn-gotop').on('click', function (e) {\n e.preventDefault()\n\n $('html, body').stop().animate({ scrollTop: 0 }, 300)\n })\n\n $('.nav a').on('click', function (e) {\n e.preventDefault()\n flag = false\n prevent_inview_indicator = true\n\n // 判断当前项的内容是否超过550px 超过不用减去gap\n let scrollTop =\n document.documentElement.scrollTop || document.body.scrollTop\n let posi =\n scrollTop >= 550\n ? $($(this).attr('href')).offset().top - gap\n : $($(this).attr('href')).offset().top - gap - 100\n\n $('html, body')\n .stop()\n .animate({ scrollTop: posi }, 300, function () {\n prevent_inview_indicator = false\n })\n\n $(this).addClass('active').siblings().removeClass('active')\n })\n\n $('.game-comment .bg').append(\n ''\n )\n\n // init the observer\n const options = {\n threshold: 0.55,\n }\n\n const observer = new IntersectionObserver(changeNav, options)\n\n // target the elements to be observed\n const sections = document.querySelectorAll('.article-tit')\n sections.forEach(function (section) {\n observer.observe(section)\n })\n\n window.addEventListener('scroll', throttle(scrollHandler, 200))\n window.addEventListener('touchstart', function name(params) {\n shouldListenToScroll = true\n })\n\n // 统计\n window._jc_ping = window._jc_ping || []\n _jc_ping.push([\n '_trackModuleData',\n [\n {\n md: '2023_新游评测页_锚点导航',\n container: '.nav',\n ads: 'qyQbEv',\n },\n {\n md: '2023_新游评测页_相关游戏',\n container: '.game-info',\n ads: 'Fjqe2u',\n },\n {\n md: '2023_新游评测页_下载入口',\n container: '.game-price',\n ads: 'ABVb2m',\n },\n {\n md: '2023_新游评测页_评测站入口',\n container: '.mod-more',\n ads: 'bqyI7z',\n },\n ],\n ])\n})\n"],"sourceRoot":""}