overleaf-cep/services/web/frontend/js/features/pdf-preview/components/pdf-preview-provider.tsx
Tim Down 904fac958d Merge pull request #26326 from overleaf/td-clean-up-scope-store
Create separate window.overleaf.unstable.store based on React context values

GitOrigin-RevId: 68f070a6fc5e2965a82720024d91b16fa622b28b
2025-07-02 08:05:53 +00:00

36 lines
821 B
TypeScript

import { createContext, FC, useContext, useMemo, useState } from 'react'
const PdfPreviewContext = createContext<
| {
loadingError: boolean
setLoadingError: (value: boolean) => void
}
| undefined
>(undefined)
export const usePdfPreviewContext = () => {
const context = useContext(PdfPreviewContext)
if (!context) {
throw new Error(
'usePdfPreviewContext is only available inside PdfPreviewProvider'
)
}
return context
}
export const PdfPreviewProvider: FC<React.PropsWithChildren> = ({
children,
}) => {
const [loadingError, setLoadingError] = useState(false)
const value = useMemo(
() => ({ loadingError, setLoadingError }),
[loadingError]
)
return (
<PdfPreviewContext.Provider value={value}>
{children}
</PdfPreviewContext.Provider>
)
}