| 123456789101112131415161718192021222324252627282930 |
- import { complex } from '../../value/types/complex/index.mjs';
- /**
- * Check if a value is animatable. Examples:
- *
- * ✅: 100, "100px", "#fff"
- * ❌: "block", "url(2.jpg)"
- * @param value
- *
- * @internal
- */
- const isAnimatable = (value, name) => {
- // If the list of keys tat might be non-animatable grows, replace with Set
- if (name === "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) || value === "0") && // And it contains numbers and/or colors
- !value.startsWith("url(") // Unless it starts with "url("
- ) {
- return true;
- }
- return false;
- };
- export { isAnimatable };
|