mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-17 21:05:04 -04:00
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
|
import { useContext, createContext } from 'react'
|
||
|
import useReviewPanelState from '@/features/ide-react/context/review-panel/hooks/use-review-panel-state'
|
||
|
import { ReviewPanelStateReactIde } from '@/features/ide-react/context/review-panel/types/review-panel-state'
|
||
|
|
||
|
export const ReviewPanelReactIdeValueContext = createContext<
|
||
|
ReviewPanelStateReactIde['values'] | undefined
|
||
|
>(undefined)
|
||
|
|
||
|
export const ReviewPanelReactIdeUpdaterFnsContext = createContext<
|
||
|
ReviewPanelStateReactIde['updaterFns'] | undefined
|
||
|
>(undefined)
|
||
|
|
||
|
export const ReviewPanelReactIdeProvider: React.FC = ({ children }) => {
|
||
|
const { values, updaterFns } = useReviewPanelState()
|
||
|
|
||
|
return (
|
||
|
<ReviewPanelReactIdeValueContext.Provider value={values}>
|
||
|
<ReviewPanelReactIdeUpdaterFnsContext.Provider value={updaterFns}>
|
||
|
{children}
|
||
|
</ReviewPanelReactIdeUpdaterFnsContext.Provider>
|
||
|
</ReviewPanelReactIdeValueContext.Provider>
|
||
|
)
|
||
|
}
|
||
|
|
||
|
export function useReviewPanelReactIdeValueContext() {
|
||
|
const context = useContext(ReviewPanelReactIdeValueContext)
|
||
|
if (!context) {
|
||
|
throw new Error(
|
||
|
'ReviewPanelReactIdeValueContext is only available inside ReviewPanelReactIdeProvider'
|
||
|
)
|
||
|
}
|
||
|
return context
|
||
|
}
|
||
|
|
||
|
export function useReviewPanelReactIdeUpdaterFnsContext() {
|
||
|
const context = useContext(ReviewPanelReactIdeUpdaterFnsContext)
|
||
|
if (!context) {
|
||
|
throw new Error(
|
||
|
'ReviewPanelReactIdeUpdaterFnsContext is only available inside ReviewPanelReactIdeProvider'
|
||
|
)
|
||
|
}
|
||
|
return context
|
||
|
}
|