You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
20 KiB

{"ast":null,"code":"'use strict';\n\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\nimport invariant from 'fbjs/lib/invariant';\nvar ViewabilityHelper = function () {\n function ViewabilityHelper(config) {\n _classCallCheck(this, ViewabilityHelper);\n if (config === void 0) {\n config = {\n viewAreaCoveragePercentThreshold: 0\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 _createClass(ViewabilityHelper, [{\n key: \"dispose\",\n value: function dispose() {\n this._timers.forEach(clearTimeout);\n }\n }, {\n key: \"computeViewableItems\",\n value: 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 if (itemCount === 0) {\n return viewableIndices;\n }\n var firstVisible = -1;\n var _ref = renderRange || {\n first: 0,\n last: itemCount - 1\n },\n first = _ref.first,\n last = _ref.last;\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 for (var idx = first; idx <= last; idx++) {\n var metrics = getFrameMetrics(idx);\n if (!metrics) {\n continue;\n }\n var top = metrics.offset - scrollOffset;\n var bottom = top + metrics.length;\n if (top < viewportHeight && bottom > 0) {\n firstVisible = idx;\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 return viewableIndices;\n }\n }, {\n key: \"onUpdate\",\n value: function onUpdate(itemCount, scrollOffset, viewportHeight, getFrameMetrics, createViewToken, onViewableItemsChanged, renderRange) {\n var _this = this;\n if (this._config.waitForInteraction && !this._hasInteracted || itemCount === 0 || !getFrameMetrics(0)) {\n return;\n }\n var viewableIndices = [];\n if (itemCount) {\n viewableIndices = this.computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange);\n }\n if (this._viewableIndices.length === viewableIndices.length && this._viewableIndices.every(function (v, ii) {\n return v === viewableIndices[ii];\n })) {\n return;\n }\n this._viewableIndices = viewableIndices;\n if (this._config.minimumViewTime) {\n var handle = setTimeout(function () {\n _this._timers.delete(handle);\n _this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n }, this._config.minimumViewTime);\n this._timers.add(handle);\n } else {\n this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n }\n }\n }, {\n key: \"resetViewableIndices\",\n value: function resetViewableIndices() {\n this._viewableIndices = [];\n }\n }, {\n key: \"recordInteraction\",\n value: function recordInteraction() {\n this._hasInteracted = true;\n }\n }, {\n key: \"_onUpdateSync\",\n value: function _onUpdateSync(viewableIndicesToCheck, onViewableItemsChanged, createViewToken) {\n var _this2 = this;\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 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 if (!prevItems.has(key)) {\n changed.push(viewable);\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 if (!nextItems.has(_key)) {\n changed.push(_objectSpread(_objectSpread({}, _viewable), {}, {\n isViewable: false\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}();\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 var percent = 100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);\n return percent >= viewablePercentThreshold;\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}\nfunction _isEntirelyVisible(top, bottom, viewportHeight) {\n return top >= 0 && bottom <= viewportHeight && bottom > top;\n}\nexport default ViewabilityHelper;","map":{"version":3,"names":["_objectSpread","_createForOfIteratorHelperLoose","invariant","ViewabilityHelper","config","viewAreaCoveragePercentThreshold","_hasInteracted","_timers","Set","_viewableIndices","_viewableItems","Map","_config","forEach","clearTimeout","itemCount","scrollOffset","viewportHeight","getFrameMetrics","renderRange","_this$_config","itemVisiblePercentThreshold","viewAreaMode","viewablePercentThreshold","viewableIndices","firstVisible","_ref","first","last","console","warn","JSON","stringify","idx","metrics","top","offset","bottom","length","_isViewable","push","createViewToken","onViewableItemsChanged","waitForInteraction","computeViewableItems","every","v","ii","minimumViewTime","handle","setTimeout","delete","_onUpdateSync","add","viewableIndicesToCheck","filter","includes","prevItems","nextItems","map","viewable","key","changed","_iterator","_step","done","_step$value","value","has","_iterator2","_step2","_step2$value","_key","_viewable","isViewable","viewableItems","Array","from","values","viewabilityConfig","itemLength","_isEntirelyVisible","pixels","_getPixelsVisible","percent","visibleHeight","Math","min","max"],"sources":["/Users/thomaschazot/Documents/But2A/LaSuperMeteo/iut-expo-starter/node_modules/react-native-web/dist/vendor/react-native/ViewabilityHelper/index.js"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and 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\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\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 */\nclass ViewabilityHelper {\n constructor(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 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 computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange // Optional optimization to reduce the scan size\n ) {\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,\n 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 onUpdate(itemCount, scrollOffset, viewportHeight, getFrameMetrics, createViewToken, onViewableItemsChanged, renderRange // Optional optimization to reduce the scan size\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((v, ii) => v === viewableIndices[ii])) {\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(() => {\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 resetViewableIndices() {\n this._viewableIndices = [];\n }\n /**\n * Records that an interaction has happened even if there has been no scroll.\n */\n\n\n recordInteraction() {\n this._hasInteracted = true;\n }\n\n _onUpdateSync( // $FlowFixMe\n viewableIndicesToCheck, // $FlowFixMe\n onViewableItemsChanged, // $FlowFixMe\n createViewToken) {\n // Filter out indices that have gone out of view since this call was scheduled.\n viewableIndicesToCheck = viewableIndicesToCheck.filter(ii => this._viewableIndices.includes(ii));\n var prevItems = this._viewableItems;\n var nextItems = new Map(viewableIndicesToCheck.map(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,\n viewabilityConfig: this._config\n });\n }\n }\n\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;"],"mappings":"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"},"metadata":{},"sourceType":"module"}