UNPKG

addimated

Version:

An always interruptable, declarative animation library for React

77 lines (59 loc) 2.38 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { useAnimatedValue: true }; exports.useAnimatedValue = useAnimatedValue; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _invariant = _interopRequireDefault(require("invariant")); var _react = _interopRequireDefault(require("react")); var Animated = _interopRequireWildcard(require("./index")); Object.keys(Animated).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; Object.defineProperty(exports, key, { enumerable: true, get: function get() { return Animated[key]; } }); }); function defaultAnimationFactory(animatedValue, toValue) { return Animated.timing(animatedValue, { toValue: toValue }); } function useInitializedRef(initializer) { var initialValue = _react.default.useMemo(initializer, []); return _react.default.useRef(initialValue); } function useAnimatedValue(value) { var animationFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultAnimationFactory; var _React$useState = _react.default.useState(false), _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2), isAnimating = _React$useState2[0], setIsAnimating = _React$useState2[1]; var animatedValueRef = useInitializedRef(function () { return Animated.createAnimatedValue(value); }); var animatedValue = animatedValueRef.current; !animatedValue ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, "") : invariant(false) : void 0; var prevValueRef = _react.default.useRef(null); _react.default.useLayoutEffect(function () { if (prevValueRef.current != null && value !== prevValueRef.current) { setIsAnimating(true); animationFactory(animatedValue, value).start(function (result) { if (result.finished) { setIsAnimating(false); } }); } prevValueRef.current = value; }, [value, animationFactory]); return [animatedValue, isAnimating]; } //# sourceMappingURL=exports.js.map