From 3cc55b630168cbae3f46ec8ee902df6021992db4 Mon Sep 17 00:00:00 2001 From: Matt Perry Date: Tue, 4 Oct 2022 15:35:32 +0200 Subject: [PATCH] Fixing undefined values bug --- CHANGELOG.md | 6 ++++++ .../src/motion/__tests__/animated-values.test.tsx | 10 ++++++++++ packages/framer-motion/src/render/index.ts | 7 +++---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7669126f48..b62a04a0d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ Framer Motion adheres to [Semantic Versioning](http://semver.org/). Undocumented APIs should be considered internal and may change without warning. +## [7.5.2] 2022-10-04 + +### Fixed + +- Gracefully handle `undefined` values in `values` prop. + ## [7.5.1] 2022-09-30 ### Fixed diff --git a/packages/framer-motion/src/motion/__tests__/animated-values.test.tsx b/packages/framer-motion/src/motion/__tests__/animated-values.test.tsx index 81134676c1..176ef5250b 100644 --- a/packages/framer-motion/src/motion/__tests__/animated-values.test.tsx +++ b/packages/framer-motion/src/motion/__tests__/animated-values.test.tsx @@ -145,4 +145,14 @@ describe("values prop", () => { expect(element).toHaveStyle("transform: scale(2) translateX(50px)") }) }) + + test("Is defensive against undefined motion values", async () => { + render( + + ) + }) }) diff --git a/packages/framer-motion/src/render/index.ts b/packages/framer-motion/src/render/index.ts index e658d1f576..d93fe2cbd1 100644 --- a/packages/framer-motion/src/render/index.ts +++ b/packages/framer-motion/src/render/index.ts @@ -184,10 +184,9 @@ export const visualElement = */ if (props.values) { for (const key in props.values) { - if (latestValues[key] !== undefined) { - ;(props.values[key] as MotionValue).set( - latestValues[key] - ) + const value = props.values[key] as MotionValue + if (latestValues[key] !== undefined && isMotionValue(value)) { + value.set(latestValues[key]) } } }