import { requireNativeView } from 'expo' import { useContext } from 'react' import { Image } from 'react-native' import type { SFSymbol } from 'sf-symbols-typescript' import { GaleriaContext } from './context' import { GaleriaIndexChangedEvent, GaleriaViewProps } from './Galeria.types' const NativeImage = requireNativeView< GaleriaViewProps & { urls?: string[] closeIconName?: SFSymbol theme: 'dark' | 'light' onIndexChange?: (event: GaleriaIndexChangedEvent) => void hideBlurOverlay?: boolean hidePageIndicators?: boolean } >('Galeria') const noop = () => {} const Galeria = Object.assign( function Galeria({ children, closeIconName, urls, theme = 'dark', ids, hideBlurOverlay = false, hidePageIndicators = false, }: { children: React.ReactNode } & Partial< Pick >) { return ( {children} ) }, { Image(props: GaleriaViewProps) { const { theme, urls, initialIndex, closeIconName, hideBlurOverlay, hidePageIndicators } = useContext(GaleriaContext) return ( { if (typeof url === 'string') { return url } return Image.resolveAssetSource(url).uri })} index={initialIndex} {...props} /> ) }, Popup: (() => null) as React.FC<{ disableTransition?: 'web' }>, }, ) export default Galeria