UNPKG

framer-motion

Version:

An open source and production-ready motion library for React on the web

32 lines (27 loc) • 1.03 kB
import { ResolvedValueTarget } from "../../types" import { complex } from "style-value-types" /** * Check if a value is animatable. Examples: * * ✅: 100, "100px", "#fff" * ❌: "block", "url(2.jpg)" * @param value * * @internal */ export const isAnimatable = (key: string, value: ResolvedValueTarget) => { // If the list of keys tat might be non-animatable grows, replace with Set if (key === "zIndex") return false // If it's a number or a keyframes array, we can animate it. We might at some point // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this, // but for now lets leave it like this for performance reasons if (typeof value === "number" || Array.isArray(value)) return true if ( typeof value === "string" && // It's animatable if we have a string complex.test(value) && // And it contains numbers and/or colors !value.startsWith("url(") // Unless it starts with "url(" ) { return true } return false }