{"ast":null,"code":"'use strict';\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\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\nvar FillRateHelper = function () {\n  FillRateHelper.addListener = function addListener(callback) {\n    if (_sampleRate === null) {\n      console.warn('Call `FillRateHelper.setSampleRate` before `addListener`.');\n    }\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 = global.performance.now();\n    }\n  };\n\n  _proto.deactivateAndFlush = function deactivateAndFlush() {\n    if (!this._enabled) {\n      return;\n    }\n\n    var start = this._samplesStartTime;\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      this._resetData();\n\n      return;\n    }\n\n    var total_time_spent = global.performance.now() - start;\n\n    var info = _objectSpread(_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;\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);\n    var now = global.performance.now();\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    }\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    }\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;","map":{"version":3,"sources":["/Users/rohitsingh/Documents/projects/new-nativebase-setup/NativeBase/example/node_modules/react-native-web/dist/vendor/react-native/FillRateHelper/index.js"],"names":["ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","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","console","warn","remove","listener","setSampleRate","sampleRate","setMinSampleCount","minSampleCount","getFrameMetrics","_anyBlankStartTime","_enabled","_info","_mostlyBlankStartTime","_samplesStartTime","_getFrameMetrics","Math","random","_resetData","_proto","prototype","activate","debug","global","performance","now","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","blankTop","first","firstFrame","last","inLayout","min","max","blankBottom","lastFrame","bottomEdge","blankness","enabled"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 */\n'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(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\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 = /*#__PURE__*/function () {\n  FillRateHelper.addListener = function addListener(callback) {\n    if (_sampleRate === null) {\n      console.warn('Call `FillRateHelper.setSampleRate` before `addListener`.');\n    }\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 = global.performance.now();\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 = global.performance.now() - start;\n\n    var info = _objectSpread(_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 = global.performance.now();\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":"module"}