{"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\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n  var it;\n\n  if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      return function () {\n        if (i >= o.length) return {\n          done: true\n        };\n        return {\n          done: false,\n          value: o[i++]\n        };\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  it = o[Symbol.iterator]();\n  return it.next.bind(it);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nimport invariant from 'fbjs/lib/invariant';\n\nvar ViewabilityHelper = function () {\n  function ViewabilityHelper(config) {\n    if (config === void 0) {\n      config = {\n        viewAreaCoveragePercentThreshold: 0\n      };\n    }\n\n    this._hasInteracted = false;\n    this._timers = new Set();\n    this._viewableIndices = [];\n    this._viewableItems = new Map();\n    this._config = config;\n  }\n\n  var _proto = ViewabilityHelper.prototype;\n\n  _proto.dispose = function dispose() {\n    this._timers.forEach(clearTimeout);\n  };\n\n  _proto.computeViewableItems = function computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange) {\n    var _this$_config = this._config,\n        itemVisiblePercentThreshold = _this$_config.itemVisiblePercentThreshold,\n        viewAreaCoveragePercentThreshold = _this$_config.viewAreaCoveragePercentThreshold;\n    var viewAreaMode = viewAreaCoveragePercentThreshold != null;\n    var viewablePercentThreshold = viewAreaMode ? viewAreaCoveragePercentThreshold : itemVisiblePercentThreshold;\n    invariant(viewablePercentThreshold != null && itemVisiblePercentThreshold != null !== (viewAreaCoveragePercentThreshold != null), 'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold');\n    var viewableIndices = [];\n\n    if (itemCount === 0) {\n      return viewableIndices;\n    }\n\n    var firstVisible = -1;\n\n    var _ref = renderRange || {\n      first: 0,\n      last: itemCount - 1\n    },\n        first = _ref.first,\n        last = _ref.last;\n\n    if (last >= itemCount) {\n      console.warn('Invalid render range computing viewability ' + JSON.stringify({\n        renderRange: renderRange,\n        itemCount: itemCount\n      }));\n      return [];\n    }\n\n    for (var idx = first; idx <= last; idx++) {\n      var metrics = getFrameMetrics(idx);\n\n      if (!metrics) {\n        continue;\n      }\n\n      var top = metrics.offset - scrollOffset;\n      var bottom = top + metrics.length;\n\n      if (top < viewportHeight && bottom > 0) {\n        firstVisible = idx;\n\n        if (_isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, metrics.length)) {\n          viewableIndices.push(idx);\n        }\n      } else if (firstVisible >= 0) {\n        break;\n      }\n    }\n\n    return viewableIndices;\n  };\n\n  _proto.onUpdate = function onUpdate(itemCount, scrollOffset, viewportHeight, getFrameMetrics, createViewToken, onViewableItemsChanged, renderRange) {\n    var _this = this;\n\n    if (this._config.waitForInteraction && !this._hasInteracted || itemCount === 0 || !getFrameMetrics(0)) {\n      return;\n    }\n\n    var viewableIndices = [];\n\n    if (itemCount) {\n      viewableIndices = this.computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange);\n    }\n\n    if (this._viewableIndices.length === viewableIndices.length && this._viewableIndices.every(function (v, ii) {\n      return v === viewableIndices[ii];\n    })) {\n      return;\n    }\n\n    this._viewableIndices = viewableIndices;\n\n    if (this._config.minimumViewTime) {\n      var handle = setTimeout(function () {\n        _this._timers.delete(handle);\n\n        _this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n      }, this._config.minimumViewTime);\n\n      this._timers.add(handle);\n    } else {\n      this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n    }\n  };\n\n  _proto.resetViewableIndices = function resetViewableIndices() {\n    this._viewableIndices = [];\n  };\n\n  _proto.recordInteraction = function recordInteraction() {\n    this._hasInteracted = true;\n  };\n\n  _proto._onUpdateSync = function _onUpdateSync(viewableIndicesToCheck, onViewableItemsChanged, createViewToken) {\n    var _this2 = this;\n\n    viewableIndicesToCheck = viewableIndicesToCheck.filter(function (ii) {\n      return _this2._viewableIndices.includes(ii);\n    });\n    var prevItems = this._viewableItems;\n    var nextItems = new Map(viewableIndicesToCheck.map(function (ii) {\n      var viewable = createViewToken(ii, true);\n      return [viewable.key, viewable];\n    }));\n    var changed = [];\n\n    for (var _iterator = _createForOfIteratorHelperLoose(nextItems), _step; !(_step = _iterator()).done;) {\n      var _step$value = _step.value,\n          key = _step$value[0],\n          viewable = _step$value[1];\n\n      if (!prevItems.has(key)) {\n        changed.push(viewable);\n      }\n    }\n\n    for (var _iterator2 = _createForOfIteratorHelperLoose(prevItems), _step2; !(_step2 = _iterator2()).done;) {\n      var _step2$value = _step2.value,\n          _key = _step2$value[0],\n          _viewable = _step2$value[1];\n\n      if (!nextItems.has(_key)) {\n        changed.push(_objectSpread(_objectSpread({}, _viewable), {}, {\n          isViewable: false\n        }));\n      }\n    }\n\n    if (changed.length > 0) {\n      this._viewableItems = nextItems;\n      onViewableItemsChanged({\n        viewableItems: Array.from(nextItems.values()),\n        changed: changed,\n        viewabilityConfig: this._config\n      });\n    }\n  };\n\n  return ViewabilityHelper;\n}();\n\nfunction _isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, itemLength) {\n  if (_isEntirelyVisible(top, bottom, viewportHeight)) {\n    return true;\n  } else {\n    var pixels = _getPixelsVisible(top, bottom, viewportHeight);\n\n    var percent = 100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);\n    return percent >= viewablePercentThreshold;\n  }\n}\n\nfunction _getPixelsVisible(top, bottom, viewportHeight) {\n  var visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0);\n  return Math.max(0, visibleHeight);\n}\n\nfunction _isEntirelyVisible(top, bottom, viewportHeight) {\n  return top >= 0 && bottom <= viewportHeight && bottom > top;\n}\n\nexport default ViewabilityHelper;","map":{"version":3,"sources":["/Users/rohitsingh/Documents/projects/new-nativebase-setup/NativeBase/example/node_modules/react-native-web/dist/vendor/react-native/ViewabilityHelper/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","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","done","TypeError","next","bind","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","name","from","test","arr","len","arr2","invariant","ViewabilityHelper","config","viewAreaCoveragePercentThreshold","_hasInteracted","_timers","Set","_viewableIndices","_viewableItems","Map","_config","_proto","dispose","clearTimeout","computeViewableItems","itemCount","scrollOffset","viewportHeight","getFrameMetrics","renderRange","_this$_config","itemVisiblePercentThreshold","viewAreaMode","viewablePercentThreshold","viewableIndices","firstVisible","_ref","first","last","console","warn","JSON","stringify","idx","metrics","top","offset","bottom","_isViewable","onUpdate","createViewToken","onViewableItemsChanged","_this","waitForInteraction","every","v","ii","minimumViewTime","handle","setTimeout","delete","_onUpdateSync","add","resetViewableIndices","recordInteraction","viewableIndicesToCheck","_this2","includes","prevItems","nextItems","map","viewable","changed","_iterator","_step","_step$value","has","_iterator2","_step2","_step2$value","_key","_viewable","isViewable","viewableItems","values","viewabilityConfig","itemLength","_isEntirelyVisible","pixels","_getPixelsVisible","percent","visibleHeight","Math","min","max"],"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\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport invariant from 'fbjs/lib/invariant';\n\n/**\n * A Utility class for calculating viewable items based on current metrics like scroll position and\n * layout.\n *\n * An item is said to be in a \"viewable\" state when any of the following\n * is true for longer than `minimumViewTime` milliseconds (after an interaction if `waitForInteraction`\n * is true):\n *\n * - Occupying >= `viewAreaCoveragePercentThreshold` of the view area XOR fraction of the item\n *   visible in the view area >= `itemVisiblePercentThreshold`.\n * - Entirely visible on screen\n */\nvar ViewabilityHelper = /*#__PURE__*/function () {\n  function ViewabilityHelper(config) {\n    if (config === void 0) {\n      config = {\n        viewAreaCoveragePercentThreshold: 0\n      };\n    }\n\n    this._hasInteracted = false;\n    this._timers = new Set();\n    this._viewableIndices = [];\n    this._viewableItems = new Map();\n    this._config = config;\n  }\n  /**\n   * Cleanup, e.g. on unmount. Clears any pending timers.\n   */\n\n\n  var _proto = ViewabilityHelper.prototype;\n\n  _proto.dispose = function dispose() {\n    this._timers.forEach(clearTimeout);\n  }\n  /**\n   * Determines which items are viewable based on the current metrics and config.\n   */\n  ;\n\n  _proto.computeViewableItems = function computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange) {\n    var _this$_config = this._config,\n        itemVisiblePercentThreshold = _this$_config.itemVisiblePercentThreshold,\n        viewAreaCoveragePercentThreshold = _this$_config.viewAreaCoveragePercentThreshold;\n    var viewAreaMode = viewAreaCoveragePercentThreshold != null;\n    var viewablePercentThreshold = viewAreaMode ? viewAreaCoveragePercentThreshold : itemVisiblePercentThreshold;\n    invariant(viewablePercentThreshold != null && itemVisiblePercentThreshold != null !== (viewAreaCoveragePercentThreshold != null), 'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold');\n    var viewableIndices = [];\n\n    if (itemCount === 0) {\n      return viewableIndices;\n    }\n\n    var firstVisible = -1;\n\n    var _ref = renderRange || {\n      first: 0,\n      last: itemCount - 1\n    },\n        first = _ref.first,\n        last = _ref.last;\n\n    if (last >= itemCount) {\n      console.warn('Invalid render range computing viewability ' + JSON.stringify({\n        renderRange: renderRange,\n        itemCount: itemCount\n      }));\n      return [];\n    }\n\n    for (var idx = first; idx <= last; idx++) {\n      var metrics = getFrameMetrics(idx);\n\n      if (!metrics) {\n        continue;\n      }\n\n      var top = metrics.offset - scrollOffset;\n      var bottom = top + metrics.length;\n\n      if (top < viewportHeight && bottom > 0) {\n        firstVisible = idx;\n\n        if (_isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, metrics.length)) {\n          viewableIndices.push(idx);\n        }\n      } else if (firstVisible >= 0) {\n        break;\n      }\n    }\n\n    return viewableIndices;\n  }\n  /**\n   * Figures out which items are viewable and how that has changed from before and calls\n   * `onViewableItemsChanged` as appropriate.\n   */\n  ;\n\n  _proto.onUpdate = function onUpdate(itemCount, scrollOffset, viewportHeight, getFrameMetrics, createViewToken, onViewableItemsChanged, renderRange) {\n    var _this = this;\n\n    if (this._config.waitForInteraction && !this._hasInteracted || itemCount === 0 || !getFrameMetrics(0)) {\n      return;\n    }\n\n    var viewableIndices = [];\n\n    if (itemCount) {\n      viewableIndices = this.computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange);\n    }\n\n    if (this._viewableIndices.length === viewableIndices.length && this._viewableIndices.every(function (v, ii) {\n      return v === viewableIndices[ii];\n    })) {\n      // We might get a lot of scroll events where visibility doesn't change and we don't want to do\n      // extra work in those cases.\n      return;\n    }\n\n    this._viewableIndices = viewableIndices;\n\n    if (this._config.minimumViewTime) {\n      var handle = setTimeout(function () {\n        _this._timers.delete(handle);\n\n        _this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n      }, this._config.minimumViewTime);\n\n      this._timers.add(handle);\n    } else {\n      this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n    }\n  }\n  /**\n   * clean-up cached _viewableIndices to evaluate changed items on next update\n   */\n  ;\n\n  _proto.resetViewableIndices = function resetViewableIndices() {\n    this._viewableIndices = [];\n  }\n  /**\n   * Records that an interaction has happened even if there has been no scroll.\n   */\n  ;\n\n  _proto.recordInteraction = function recordInteraction() {\n    this._hasInteracted = true;\n  };\n\n  _proto._onUpdateSync = function _onUpdateSync( // $FlowFixMe\n  viewableIndicesToCheck, // $FlowFixMe\n  onViewableItemsChanged, // $FlowFixMe\n  createViewToken) {\n    var _this2 = this;\n\n    // Filter out indices that have gone out of view since this call was scheduled.\n    viewableIndicesToCheck = viewableIndicesToCheck.filter(function (ii) {\n      return _this2._viewableIndices.includes(ii);\n    });\n    var prevItems = this._viewableItems;\n    var nextItems = new Map(viewableIndicesToCheck.map(function (ii) {\n      var viewable = createViewToken(ii, true);\n      return [viewable.key, viewable];\n    }));\n    var changed = [];\n\n    for (var _iterator = _createForOfIteratorHelperLoose(nextItems), _step; !(_step = _iterator()).done;) {\n      var _step$value = _step.value,\n          key = _step$value[0],\n          viewable = _step$value[1];\n\n      if (!prevItems.has(key)) {\n        changed.push(viewable);\n      }\n    }\n\n    for (var _iterator2 = _createForOfIteratorHelperLoose(prevItems), _step2; !(_step2 = _iterator2()).done;) {\n      var _step2$value = _step2.value,\n          _key = _step2$value[0],\n          _viewable = _step2$value[1];\n\n      if (!nextItems.has(_key)) {\n        changed.push(_objectSpread(_objectSpread({}, _viewable), {}, {\n          isViewable: false\n        }));\n      }\n    }\n\n    if (changed.length > 0) {\n      this._viewableItems = nextItems;\n      onViewableItemsChanged({\n        viewableItems: Array.from(nextItems.values()),\n        changed: changed,\n        viewabilityConfig: this._config\n      });\n    }\n  };\n\n  return ViewabilityHelper;\n}();\n\nfunction _isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, itemLength) {\n  if (_isEntirelyVisible(top, bottom, viewportHeight)) {\n    return true;\n  } else {\n    var pixels = _getPixelsVisible(top, bottom, viewportHeight);\n\n    var percent = 100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);\n    return percent >= viewablePercentThreshold;\n  }\n}\n\nfunction _getPixelsVisible(top, bottom, viewportHeight) {\n  var visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0);\n  return Math.max(0, visibleHeight);\n}\n\nfunction _isEntirelyVisible(top, bottom, viewportHeight) {\n  return top >= 0 && bottom <= viewportHeight && bottom > top;\n}\n\nexport default ViewabilityHelper;"]},"metadata":{},"sourceType":"module"}