Bluesky app fork with some witchin' additions 馃挮
at main 41 lines 1.1 kB view raw
1import React from 'react' 2 3import {createPortalGroup_INTERNAL} from './lib/Portal' 4 5type PortalContext = React.ElementType<{children: React.ReactNode}> 6 7export const Context = React.createContext({} as PortalContext) 8Context.displayName = 'BottomSheetPortalContext' 9 10export const useBottomSheetPortal_INTERNAL = () => React.useContext(Context) 11 12export function BottomSheetPortalProvider({ 13 children, 14}: { 15 children: React.ReactNode 16}) { 17 const portal = React.useMemo(() => { 18 return createPortalGroup_INTERNAL() 19 }, []) 20 21 return ( 22 <Context.Provider value={portal.Portal}> 23 <portal.Provider> 24 {children} 25 <portal.Outlet /> 26 </portal.Provider> 27 </Context.Provider> 28 ) 29} 30 31const defaultPortal = createPortalGroup_INTERNAL() 32 33export const BottomSheetOutlet = defaultPortal.Outlet 34 35export function BottomSheetProvider({children}: {children: React.ReactNode}) { 36 return ( 37 <Context.Provider value={defaultPortal.Portal}> 38 <defaultPortal.Provider>{children}</defaultPortal.Provider> 39 </Context.Provider> 40 ) 41}