File size: 637 Bytes
56fda74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import * as React from 'react'
import isBrowser from '#is-browser'

const syncFallback = <T>(create: () => T) => create()

const useInsertionEffect = React[
  ('useInsertion' + 'Effect') as 'useInsertionEffect'
]
  ? (React[('useInsertion' + 'Effect') as 'useInsertionEffect'] as <T>(
      create: () => T
    ) => T | undefined)
  : false

export const useInsertionEffectAlwaysWithSyncFallback: <T>(
  create: () => T
) => T | undefined = !isBrowser
  ? syncFallback
  : useInsertionEffect || syncFallback

export const useInsertionEffectWithLayoutFallback: typeof React.useLayoutEffect =
  useInsertionEffect || React.useLayoutEffect