@uppy/react
Version:
React component wrappers around Uppy's official UI plugins.
28 lines (25 loc) • 714 B
text/typescript
import {
createScreenCaptureController,
type ScreenCaptureSnapshot,
} from '@uppy/components'
import { useMemo } from 'react'
import { useSyncExternalStore } from 'use-sync-external-store/shim/index.js'
import { useUppyContext } from './headless/UppyContextProvider.js'
type ScreenCaptureProps = {
onSubmit: () => void
}
export function useScreenCapture({
onSubmit,
}: ScreenCaptureProps): ScreenCaptureSnapshot {
const { uppy } = useUppyContext()
const controller = useMemo(
() => createScreenCaptureController(uppy, onSubmit),
[uppy, onSubmit],
)
const store = useSyncExternalStore(
controller.subscribe,
controller.getSnapshot,
controller.getSnapshot,
)
return store
}