UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

36 lines 1.29 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useRAFCoalescedValue = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var useRAFCoalescedValue = (value, isEnabled) => { var _useState = (0, _react.useState)(value), _useState2 = (0, _slicedToArray2.default)(_useState, 2), emitted = _useState2[0], setEmitted = _useState2[1]; var pendingRef = (0, _react.useRef)(value); var rafIdRef = (0, _react.useRef)(null); (0, _react.useEffect)(() => { if (value === pendingRef.current || !isEnabled) return; pendingRef.current = value; if (rafIdRef.current) return; var run = () => { rafIdRef.current = null; setEmitted(pendingRef.current); }; rafIdRef.current = requestAnimationFrame(run); }, [value, isEnabled]); (0, _react.useEffect)(() => { return () => { if (rafIdRef.current) { cancelAnimationFrame(rafIdRef.current); rafIdRef.current = null; } }; }, []); return isEnabled ? emitted : value; }; exports.useRAFCoalescedValue = useRAFCoalescedValue; //# sourceMappingURL=useRAFCoalescedValue.js.map