Skip to content

Commit 4b5bb92

Browse files
authored
Ensures CSS variables are trimmed before animating (#2688)
* Fixing animation of CSS vars * Removing trims from parseCSSVariable * Updating test
1 parent 016c3dd commit 4b5bb92

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

dev/tests/css-vars.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const App = () => {
2626
originX: 0,
2727
originY: 0,
2828
opacity: "var(--d)",
29-
backgroundColor: "var(--a)",
29+
backgroundColor: " var(--a)", // Should work even with space at start
3030
scale: "var(--c)",
3131
x: "var(--b)",
3232
}}

packages/framer-motion/src/render/dom/DOMKeyframesResolver.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,21 @@ export class DOMKeyframesResolver<
5252
* If any keyframe is a CSS variable, we need to find its value by sampling the element
5353
*/
5454
for (let i = 0; i < unresolvedKeyframes.length; i++) {
55-
const keyframe = unresolvedKeyframes[i]
56-
if (typeof keyframe === "string" && isCSSVariableToken(keyframe)) {
57-
const resolved = getVariableValue(keyframe, element.current)
55+
let keyframe = unresolvedKeyframes[i]
5856

59-
if (resolved !== undefined) {
60-
unresolvedKeyframes[i] = resolved as T
61-
}
57+
if (typeof keyframe === "string") {
58+
keyframe = keyframe.trim()
59+
60+
if (isCSSVariableToken(keyframe)) {
61+
const resolved = getVariableValue(keyframe, element.current)
62+
63+
if (resolved !== undefined) {
64+
unresolvedKeyframes[i] = resolved as T
65+
}
6266

63-
if (i === unresolvedKeyframes.length - 1) {
64-
this.finalKeyframe = keyframe as T
67+
if (i === unresolvedKeyframes.length - 1) {
68+
this.finalKeyframe = keyframe as T
69+
}
6570
}
6671
}
6772
}

0 commit comments

Comments
 (0)