framer-motion
Version:
A simple and powerful React animation library
48 lines (45 loc) • 1.23 kB
JavaScript
import { useCombineMotionValues } from './use-combine-values.mjs';
/**
* Combine multiple motion values into a new one using a string template literal.
*
* ```jsx
* import {
* motion,
* useSpring,
* useMotionValue,
* useMotionTemplate
* } from "framer-motion"
*
* function Component() {
* const shadowX = useSpring(0)
* const shadowY = useMotionValue(0)
* const shadow = useMotionTemplate`drop-shadow(${shadowX}px ${shadowY}px 20px rgba(0,0,0,0.3))`
*
* return <motion.div style={{ filter: shadow }} />
* }
* ```
*
* @public
*/
function useMotionTemplate(fragments) {
var values = [];
for (var _i = 1; _i < arguments.length; _i++) {
values[_i - 1] = arguments[_i];
}
/**
* Create a function that will build a string from the latest motion values.
*/
var numFragments = fragments.length;
function buildValue() {
var output = "";
for (var i = 0; i < numFragments; i++) {
output += fragments[i];
var value = values[i];
if (value)
output += values[i].get();
}
return output;
}
return useCombineMotionValues(values, buildValue);
}
export { useMotionTemplate };