import * as React from 'react' import isBrowser from '#is-browser' const syncFallback = (create: () => T) => create() const useInsertionEffect = React[ ('useInsertion' + 'Effect') as 'useInsertionEffect' ] ? (React[('useInsertion' + 'Effect') as 'useInsertionEffect'] as ( create: () => T ) => T | undefined) : false export const useInsertionEffectAlwaysWithSyncFallback: ( create: () => T ) => T | undefined = !isBrowser ? syncFallback : useInsertionEffect || syncFallback export const useInsertionEffectWithLayoutFallback: typeof React.useLayoutEffect = useInsertionEffect || React.useLayoutEffect