UNPKG

@kcirtaptrick/framer-motion

Version:

A simple and powerful React animation library

48 lines (45 loc) 1.78 kB
import { motionValue } from '../../value/index.mjs'; import { isMotionValue } from '../../value/utils/is-motion-value.mjs'; function updateMotionValuesFromProps(element, next, prev) { var _a; for (var key in next) { var nextValue = next[key]; var prevValue = prev[key]; if (isMotionValue(nextValue)) { /** * If this is a motion value found in props or style, we want to add it * to our visual element's motion value map. */ element.addValue(key, nextValue); } else if (isMotionValue(prevValue)) { /** * If we're swapping to a new motion value, create a new motion value * from that */ element.addValue(key, motionValue(nextValue)); } else if (prevValue !== nextValue) { /** * If this is a flat value that has changed, update the motion value * or create one if it doesn't exist. We only want to do this if we're * not handling the value with our animation state. */ if (element.hasValue(key)) { var existingValue = element.getValue(key); // TODO: Only update values that aren't being animated or even looked at !existingValue.hasAnimated && existingValue.set(nextValue); } else { element.addValue(key, motionValue((_a = element.getStaticValue(key)) !== null && _a !== void 0 ? _a : nextValue)); } } } // Handle removed values for (var key in prev) { if (next[key] === undefined) element.removeValue(key); } return next; } export { updateMotionValuesFromProps };