a4af1bde2ca53a330efac2d9f6ceff3a.json 21.8 KB
{"ast":null,"code":"var _interopRequireDefault=require(\"@babel/runtime/helpers/interopRequireDefault\");Object.defineProperty(exports,\"__esModule\",{value:true});exports.default=void 0;var _performanceNow=_interopRequireDefault(require(\"fbjs/lib/performanceNow\"));var _warning=_interopRequireDefault(require(\"fbjs/lib/warning\"));function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==='function'){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable;}));}ownKeys.forEach(function(key){_defineProperty(target,key,source[key]);});}return target;}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}var Info=function Info(){this.any_blank_count=0;this.any_blank_ms=0;this.any_blank_speed_sum=0;this.mostly_blank_count=0;this.mostly_blank_ms=0;this.pixels_blank=0;this.pixels_sampled=0;this.pixels_scrolled=0;this.total_time_spent=0;this.sample_count=0;};var DEBUG=false;var _listeners=[];var _minSampleCount=10;var _sampleRate=DEBUG?1:null;var FillRateHelper=function(){FillRateHelper.addListener=function addListener(callback){(0,_warning.default)(_sampleRate!==null,'Call `FillRateHelper.setSampleRate` before `addListener`.');_listeners.push(callback);return{remove:function remove(){_listeners=_listeners.filter(function(listener){return callback!==listener;});}};};FillRateHelper.setSampleRate=function setSampleRate(sampleRate){_sampleRate=sampleRate;};FillRateHelper.setMinSampleCount=function setMinSampleCount(minSampleCount){_minSampleCount=minSampleCount;};function FillRateHelper(getFrameMetrics){this._anyBlankStartTime=null;this._enabled=false;this._info=new Info();this._mostlyBlankStartTime=null;this._samplesStartTime=null;this._getFrameMetrics=getFrameMetrics;this._enabled=(_sampleRate||0)>Math.random();this._resetData();}var _proto=FillRateHelper.prototype;_proto.activate=function activate(){if(this._enabled&&this._samplesStartTime==null){DEBUG&&console.debug('FillRateHelper: activate');this._samplesStartTime=(0,_performanceNow.default)();}};_proto.deactivateAndFlush=function deactivateAndFlush(){if(!this._enabled){return;}var start=this._samplesStartTime;if(start==null){DEBUG&&console.debug('FillRateHelper: bail on deactivate with no start time');return;}if(this._info.sample_count<_minSampleCount){this._resetData();return;}var total_time_spent=(0,_performanceNow.default)()-start;var info=_objectSpread({},this._info,{total_time_spent:total_time_spent});if(DEBUG){var derived={avg_blankness:this._info.pixels_blank/this._info.pixels_sampled,avg_speed:this._info.pixels_scrolled/(total_time_spent/1000),avg_speed_when_any_blank:this._info.any_blank_speed_sum/this._info.any_blank_count,any_blank_per_min:this._info.any_blank_count/(total_time_spent/1000/60),any_blank_time_frac:this._info.any_blank_ms/total_time_spent,mostly_blank_per_min:this._info.mostly_blank_count/(total_time_spent/1000/60),mostly_blank_time_frac:this._info.mostly_blank_ms/total_time_spent};for(var key in derived){derived[key]=Math.round(1000*derived[key])/1000;}console.debug('FillRateHelper deactivateAndFlush: ',{derived:derived,info:info});}_listeners.forEach(function(listener){return listener(info);});this._resetData();};_proto.computeBlankness=function computeBlankness(props,state,scrollMetrics){if(!this._enabled||props.getItemCount(props.data)===0||this._samplesStartTime==null){return 0;}var dOffset=scrollMetrics.dOffset,offset=scrollMetrics.offset,velocity=scrollMetrics.velocity,visibleLength=scrollMetrics.visibleLength;this._info.sample_count++;this._info.pixels_sampled+=Math.round(visibleLength);this._info.pixels_scrolled+=Math.round(Math.abs(dOffset));var scrollSpeed=Math.round(Math.abs(velocity)*1000);var now=(0,_performanceNow.default)();if(this._anyBlankStartTime!=null){this._info.any_blank_ms+=now-this._anyBlankStartTime;}this._anyBlankStartTime=null;if(this._mostlyBlankStartTime!=null){this._info.mostly_blank_ms+=now-this._mostlyBlankStartTime;}this._mostlyBlankStartTime=null;var blankTop=0;var first=state.first;var firstFrame=this._getFrameMetrics(first);while(first<=state.last&&(!firstFrame||!firstFrame.inLayout)){firstFrame=this._getFrameMetrics(first);first++;}if(firstFrame&&first>0){blankTop=Math.min(visibleLength,Math.max(0,firstFrame.offset-offset));}var blankBottom=0;var last=state.last;var lastFrame=this._getFrameMetrics(last);while(last>=state.first&&(!lastFrame||!lastFrame.inLayout)){lastFrame=this._getFrameMetrics(last);last--;}if(lastFrame&&last<props.getItemCount(props.data)-1){var bottomEdge=lastFrame.offset+lastFrame.length;blankBottom=Math.min(visibleLength,Math.max(0,offset+visibleLength-bottomEdge));}var pixels_blank=Math.round(blankTop+blankBottom);var blankness=pixels_blank/visibleLength;if(blankness>0){this._anyBlankStartTime=now;this._info.any_blank_speed_sum+=scrollSpeed;this._info.any_blank_count++;this._info.pixels_blank+=pixels_blank;if(blankness>0.5){this._mostlyBlankStartTime=now;this._info.mostly_blank_count++;}}else if(scrollSpeed<0.01||Math.abs(dOffset)<1){this.deactivateAndFlush();}return blankness;};_proto.enabled=function enabled(){return this._enabled;};_proto._resetData=function _resetData(){this._anyBlankStartTime=null;this._info=new Info();this._mostlyBlankStartTime=null;this._samplesStartTime=null;};return FillRateHelper;}();var _default=FillRateHelper;exports.default=_default;","map":{"version":3,"sources":["C:/Users/bluej/Desktop/2_2/searchGuide/searchGuide/node_modules/react-native-web/dist/vendor/react-native/FillRateHelper/index.js"],"names":["_objectSpread","target","i","arguments","length","source","ownKeys","Object","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","enumerable","forEach","key","_defineProperty","obj","value","defineProperty","configurable","writable","Info","any_blank_count","any_blank_ms","any_blank_speed_sum","mostly_blank_count","mostly_blank_ms","pixels_blank","pixels_sampled","pixels_scrolled","total_time_spent","sample_count","DEBUG","_listeners","_minSampleCount","_sampleRate","FillRateHelper","addListener","callback","push","remove","listener","setSampleRate","sampleRate","setMinSampleCount","minSampleCount","getFrameMetrics","_anyBlankStartTime","_enabled","_info","_mostlyBlankStartTime","_samplesStartTime","_getFrameMetrics","Math","random","_resetData","_proto","prototype","activate","console","debug","deactivateAndFlush","start","info","derived","avg_blankness","avg_speed","avg_speed_when_any_blank","any_blank_per_min","any_blank_time_frac","mostly_blank_per_min","mostly_blank_time_frac","round","computeBlankness","props","state","scrollMetrics","getItemCount","data","dOffset","offset","velocity","visibleLength","abs","scrollSpeed","now","blankTop","first","firstFrame","last","inLayout","min","max","blankBottom","lastFrame","bottomEdge","blankness","enabled"],"mappings":"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","sourcesContent":["function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @format\n */\nimport performanceNow from 'fbjs/lib/performanceNow';\nimport warning from 'fbjs/lib/warning';\n\nvar Info = function Info() {\n  this.any_blank_count = 0;\n  this.any_blank_ms = 0;\n  this.any_blank_speed_sum = 0;\n  this.mostly_blank_count = 0;\n  this.mostly_blank_ms = 0;\n  this.pixels_blank = 0;\n  this.pixels_sampled = 0;\n  this.pixels_scrolled = 0;\n  this.total_time_spent = 0;\n  this.sample_count = 0;\n};\n\nvar DEBUG = false;\nvar _listeners = [];\nvar _minSampleCount = 10;\n\nvar _sampleRate = DEBUG ? 1 : null;\n/**\n * A helper class for detecting when the maximem fill rate of `VirtualizedList` is exceeded.\n * By default the sampling rate is set to zero and this will do nothing. If you want to collect\n * samples (e.g. to log them), make sure to call `FillRateHelper.setSampleRate(0.0-1.0)`.\n *\n * Listeners and sample rate are global for all `VirtualizedList`s - typical usage will combine with\n * `SceneTracker.getActiveScene` to determine the context of the events.\n */\n\n\nvar FillRateHelper =\n/*#__PURE__*/\nfunction () {\n  FillRateHelper.addListener = function addListener(callback) {\n    warning(_sampleRate !== null, 'Call `FillRateHelper.setSampleRate` before `addListener`.');\n\n    _listeners.push(callback);\n\n    return {\n      remove: function remove() {\n        _listeners = _listeners.filter(function (listener) {\n          return callback !== listener;\n        });\n      }\n    };\n  };\n\n  FillRateHelper.setSampleRate = function setSampleRate(sampleRate) {\n    _sampleRate = sampleRate;\n  };\n\n  FillRateHelper.setMinSampleCount = function setMinSampleCount(minSampleCount) {\n    _minSampleCount = minSampleCount;\n  };\n\n  function FillRateHelper(getFrameMetrics) {\n    this._anyBlankStartTime = null;\n    this._enabled = false;\n    this._info = new Info();\n    this._mostlyBlankStartTime = null;\n    this._samplesStartTime = null;\n    this._getFrameMetrics = getFrameMetrics;\n    this._enabled = (_sampleRate || 0) > Math.random();\n\n    this._resetData();\n  }\n\n  var _proto = FillRateHelper.prototype;\n\n  _proto.activate = function activate() {\n    if (this._enabled && this._samplesStartTime == null) {\n      DEBUG && console.debug('FillRateHelper: activate');\n      this._samplesStartTime = performanceNow();\n    }\n  };\n\n  _proto.deactivateAndFlush = function deactivateAndFlush() {\n    if (!this._enabled) {\n      return;\n    }\n\n    var start = this._samplesStartTime; // const for flow\n\n    if (start == null) {\n      DEBUG && console.debug('FillRateHelper: bail on deactivate with no start time');\n      return;\n    }\n\n    if (this._info.sample_count < _minSampleCount) {\n      // Don't bother with under-sampled events.\n      this._resetData();\n\n      return;\n    }\n\n    var total_time_spent = performanceNow() - start;\n\n    var info = _objectSpread({}, this._info, {\n      total_time_spent: total_time_spent\n    });\n\n    if (DEBUG) {\n      var derived = {\n        avg_blankness: this._info.pixels_blank / this._info.pixels_sampled,\n        avg_speed: this._info.pixels_scrolled / (total_time_spent / 1000),\n        avg_speed_when_any_blank: this._info.any_blank_speed_sum / this._info.any_blank_count,\n        any_blank_per_min: this._info.any_blank_count / (total_time_spent / 1000 / 60),\n        any_blank_time_frac: this._info.any_blank_ms / total_time_spent,\n        mostly_blank_per_min: this._info.mostly_blank_count / (total_time_spent / 1000 / 60),\n        mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent\n      };\n\n      for (var key in derived) {\n        derived[key] = Math.round(1000 * derived[key]) / 1000;\n      }\n\n      console.debug('FillRateHelper deactivateAndFlush: ', {\n        derived: derived,\n        info: info\n      });\n    }\n\n    _listeners.forEach(function (listener) {\n      return listener(info);\n    });\n\n    this._resetData();\n  };\n\n  _proto.computeBlankness = function computeBlankness(props, state, scrollMetrics) {\n    if (!this._enabled || props.getItemCount(props.data) === 0 || this._samplesStartTime == null) {\n      return 0;\n    }\n\n    var dOffset = scrollMetrics.dOffset,\n        offset = scrollMetrics.offset,\n        velocity = scrollMetrics.velocity,\n        visibleLength = scrollMetrics.visibleLength; // Denominator metrics that we track for all events - most of the time there is no blankness and\n    // we want to capture that.\n\n    this._info.sample_count++;\n    this._info.pixels_sampled += Math.round(visibleLength);\n    this._info.pixels_scrolled += Math.round(Math.abs(dOffset));\n    var scrollSpeed = Math.round(Math.abs(velocity) * 1000); // px / sec\n    // Whether blank now or not, record the elapsed time blank if we were blank last time.\n\n    var now = performanceNow();\n\n    if (this._anyBlankStartTime != null) {\n      this._info.any_blank_ms += now - this._anyBlankStartTime;\n    }\n\n    this._anyBlankStartTime = null;\n\n    if (this._mostlyBlankStartTime != null) {\n      this._info.mostly_blank_ms += now - this._mostlyBlankStartTime;\n    }\n\n    this._mostlyBlankStartTime = null;\n    var blankTop = 0;\n    var first = state.first;\n\n    var firstFrame = this._getFrameMetrics(first);\n\n    while (first <= state.last && (!firstFrame || !firstFrame.inLayout)) {\n      firstFrame = this._getFrameMetrics(first);\n      first++;\n    } // Only count blankTop if we aren't rendering the first item, otherwise we will count the header\n    // as blank.\n\n\n    if (firstFrame && first > 0) {\n      blankTop = Math.min(visibleLength, Math.max(0, firstFrame.offset - offset));\n    }\n\n    var blankBottom = 0;\n    var last = state.last;\n\n    var lastFrame = this._getFrameMetrics(last);\n\n    while (last >= state.first && (!lastFrame || !lastFrame.inLayout)) {\n      lastFrame = this._getFrameMetrics(last);\n      last--;\n    } // Only count blankBottom if we aren't rendering the last item, otherwise we will count the\n    // footer as blank.\n\n\n    if (lastFrame && last < props.getItemCount(props.data) - 1) {\n      var bottomEdge = lastFrame.offset + lastFrame.length;\n      blankBottom = Math.min(visibleLength, Math.max(0, offset + visibleLength - bottomEdge));\n    }\n\n    var pixels_blank = Math.round(blankTop + blankBottom);\n    var blankness = pixels_blank / visibleLength;\n\n    if (blankness > 0) {\n      this._anyBlankStartTime = now;\n      this._info.any_blank_speed_sum += scrollSpeed;\n      this._info.any_blank_count++;\n      this._info.pixels_blank += pixels_blank;\n\n      if (blankness > 0.5) {\n        this._mostlyBlankStartTime = now;\n        this._info.mostly_blank_count++;\n      }\n    } else if (scrollSpeed < 0.01 || Math.abs(dOffset) < 1) {\n      this.deactivateAndFlush();\n    }\n\n    return blankness;\n  };\n\n  _proto.enabled = function enabled() {\n    return this._enabled;\n  };\n\n  _proto._resetData = function _resetData() {\n    this._anyBlankStartTime = null;\n    this._info = new Info();\n    this._mostlyBlankStartTime = null;\n    this._samplesStartTime = null;\n  };\n\n  return FillRateHelper;\n}();\n\nexport default FillRateHelper;"]},"metadata":{},"sourceType":"script"}