Skip to content

Commit 8047004

Browse files
committed
fix: polyfill
1 parent 7a4a0b7 commit 8047004

7 files changed

Lines changed: 29 additions & 8 deletions

File tree

src/components/Activity.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ function ActivityPolyfill({ children, mode }: React.PropsWithChildren<{ mode: "v
66
return <Show when={mode === "visible"} mode="visibility">{children}</Show>
77
}
88

9+
const key = 'Activity';
10+
const _Activity = (React as any)[key];
11+
12+
913
/**
1014
* **`Activity`**: Polyfill of the React 19 `<Activity>` component for earlier versions.
1115
*
@@ -31,4 +35,4 @@ function ActivityPolyfill({ children, mode }: React.PropsWithChildren<{ mode: "v
3135
* @param {{ mode: "visible" | "hidden", children?: React.ReactNode }} props
3236
* @returns {JSX.Element} element
3337
*/
34-
export const Activity: React.ComponentType<{ mode: "visible" | "hidden"; children?: React.ReactNode }> =(React as any).Activity ?? ActivityPolyfill;
38+
export const Activity: React.ComponentType<{ mode: "visible" | "hidden"; children?: React.ReactNode }> = _Activity ?? ActivityPolyfill;

src/components/Suspense.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ class SuspenseBoundary extends React.Component<SuspenseProps, SuspenseState> {
5151
}
5252
}
5353

54+
const key = "Suspense";
55+
const _Suspense = (React as any)[key];
56+
5457
/**
5558
* **`Suspense`**: Polyfill of the React `<Suspense>` component.
5659
*
@@ -91,5 +94,4 @@ class SuspenseBoundary extends React.Component<SuspenseProps, SuspenseState> {
9194
* @param {SuspenseProps} props - {@link SuspenseProps}
9295
* @returns {JSX.Element} element
9396
*/
94-
export const Suspense: React.ComponentType<SuspenseProps> =
95-
(React as any).Suspense ?? SuspenseBoundary;
97+
export const Suspense: React.ComponentType<SuspenseProps> = _Suspense ?? SuspenseBoundary;

src/hooks/api-dom/use.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,7 @@ function usePolyfill<T>(input: Promise<T> | React.Context<T>): T {
7171
throw tracked.promise;
7272
}
7373
}
74+
const key = "use";
75+
const _use = (React as any)[key];
7476

75-
export const use = ((React as any).use ?? usePolyfill) as typeof usePolyfill;
77+
export const use = (_use ?? usePolyfill) as typeof usePolyfill;

src/hooks/lifecycle/useDeferredValue.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,7 @@ function useDeferredValuePolyfill<T>(value: T): T {
1919
return state;
2020
}
2121

22-
export const useDeferredValue = ((React as any).useDeferredValue ?? useDeferredValuePolyfill) as typeof useDeferredValuePolyfill;
22+
const key = "useDeferredValue";
23+
const _useDeferredValue = (React as any)[key];
24+
25+
export const useDeferredValue = (_useDeferredValue ?? useDeferredValuePolyfill) as typeof useDeferredValuePolyfill;

src/hooks/lifecycle/useEffectEvent.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ import * as React from 'react';
22
import { useMemoizedFn } from '../performance';
33
import { UseEffectEventProps, UseEffectEventResult } from '../../models';
44

5+
const key = 'useEffectEvent';
6+
const _useEffectEvent = (React as any)[key];
7+
58
/**
69
* __`useEffectEvent`__: _useEffectEvent_ hook polyfilled for React versions below 19.
710
*
@@ -18,4 +21,4 @@ import { UseEffectEventProps, UseEffectEventResult } from '../../models';
1821
* @param {UseEffectEventProps<T>["fn"]} fn - {@link UseEffectEventProps}
1922
* @returns {UseEffectEventResult<T>} result - {@link UseEffectEventResult}
2023
*/
21-
export const useEffectEvent = <T extends (...args: any[]) => any>(fn: UseEffectEventProps<T>["fn"]): UseEffectEventResult<T> => (React as any).useEffectEvent ?? useMemoizedFn(fn);
24+
export const useEffectEvent = <T extends (...args: any[]) => any>(fn: UseEffectEventProps<T>["fn"]): UseEffectEventResult<T> => _useEffectEvent ?? useMemoizedFn(fn);

src/hooks/performance/useId.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@ function useIdPolyfilled(): string {
1717
return id.current;
1818
}
1919

20-
export const useId = ((React as any).useId ?? useIdPolyfilled) as typeof useIdPolyfilled;
20+
const key = 'useId';
21+
const _useId = (React as any)[key];
22+
23+
export const useId = (_useId ?? useIdPolyfilled) as typeof useIdPolyfilled;

src/hooks/state/useSyncExternalStore.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,8 @@ function useSyncExternalStorePolyfill<Snapshot>(subscribe: UseSyncExternalStoreP
3434
return snapshotRef.current
3535
}
3636

37-
export const useSyncExternalStore = ((React as any).useSyncExternalStore ?? useSyncExternalStorePolyfill) as typeof useSyncExternalStorePolyfill;
37+
const key = 'useSyncExternalStore';
38+
39+
const _useSyncExternalStore = (React as any)[key];
40+
41+
export const useSyncExternalStore = (_useSyncExternalStore ?? useSyncExternalStorePolyfill) as typeof useSyncExternalStorePolyfill;

0 commit comments

Comments
 (0)