@uppy/react
Version:
React component wrappers around Uppy's official UI plugins.
24 lines (19 loc) • 604 B
text/typescript
import { createWebcamController, type WebcamSnapshot } from '@uppy/components'
import { useMemo, useSyncExternalStore } from 'react'
import { useUppyContext } from './headless/UppyContextProvider.js'
type WebcamProps = {
onSubmit: () => void
}
export function useWebcam({ onSubmit }: WebcamProps): WebcamSnapshot {
const { uppy } = useUppyContext()
const controller = useMemo(
() => createWebcamController(uppy, onSubmit),
[uppy, onSubmit],
)
const store = useSyncExternalStore(
controller.subscribe,
controller.getSnapshot,
controller.getSnapshot,
)
return store
}