Skip to content

Commit 645c49d

Browse files
committed
fix: ignore undefined values in "Globals.assign"
And categorize more globals as required
1 parent 1cba79b commit 645c49d

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

packages/shared/src/globals.ts

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { SpringInterpolator, InterpolatorConfig } from './types'
2+
import { ElementType } from 'react'
23

34
declare const window: {
45
requestAnimationFrame: (cb: (time: number) => void) => number
@@ -16,8 +17,12 @@ export interface AnimatedRef<T> {
1617
// Required
1718
//
1819

20+
export let defaultElement: string | ElementType
21+
1922
export let applyAnimatedValues: (node: any, props: Props) => boolean | void
2023

24+
export let createAnimatedInterpolation: SpringInterpolator
25+
2126
export let createStringInterpolator: (
2227
config: InterpolatorConfig<string>
2328
) => (input: number) => string
@@ -35,28 +40,26 @@ export let frameLoop: {
3540

3641
export let now = () => Date.now()
3742

38-
export let colorNames: { [key: string]: number } | undefined
43+
export let colorNames: { [key: string]: number } | null = null as any
3944

4045
export let skipAnimation = false
4146

42-
export let defaultElement: any
43-
44-
export let createAnimatedStyle: ((style: any) => any) | undefined
47+
export let createAnimatedStyle: ((style: any) => any) | null = null as any
4548

46-
export let createAnimatedTransform: ((transform: any) => any) | undefined
47-
48-
export let createAnimatedInterpolation: SpringInterpolator
49+
export let createAnimatedTransform:
50+
| ((transform: any) => any)
51+
| null = null as any
4952

5053
export let createAnimatedRef: <T extends React.ElementType>(
5154
node: React.MutableRefObject<T>,
5255
mounted: React.MutableRefObject<boolean>,
5356
forceUpdate: () => void
5457
) => T | AnimatedRef<T> = node => node.current
5558

56-
export let requestAnimationFrame =
57-
typeof window !== 'undefined' ? window.requestAnimationFrame : () => {}
59+
export let requestAnimationFrame: typeof window.requestAnimationFrame =
60+
typeof window !== 'undefined' ? window.requestAnimationFrame : () => -1
5861

59-
export let cancelAnimationFrame =
62+
export let cancelAnimationFrame: typeof window.cancelAnimationFrame =
6063
typeof window !== 'undefined' ? window.cancelAnimationFrame : () => {}
6164

6265
//
@@ -110,5 +113,14 @@ export const assign = (globals: AnimatedGlobals): AnimatedGlobals =>
110113
requestAnimationFrame,
111114
cancelAnimationFrame,
112115
},
113-
globals
116+
pluckDefined(globals)
114117
))
118+
119+
// Ignore undefined values
120+
function pluckDefined(globals: any) {
121+
const defined: any = {}
122+
for (const key in globals) {
123+
if (globals[key] !== void 0) defined[key] = globals[key]
124+
}
125+
return defined
126+
}

0 commit comments

Comments
 (0)