overleaf/services/web/frontend/js/shared/context/ide-context.tsx
Jakob Ackermann 74c6085c55 Merge pull request #15412 from overleaf/revert-15280-td-scope-store-and-emitter
Revert "IDE scope store and emitter"

GitOrigin-RevId: bb764c66830e5e30806609b2834f918cf7784dd7
2023-10-25 08:04:17 +00:00

25 lines
693 B
TypeScript

import { createContext, FC, useContext, useState } from 'react'
import { getMockIde } from './mock/mock-ide'
type Ide = {
[key: string]: any // TODO: define the rest of the `ide` and `$scope` properties
$scope: Record<string, any>
}
const IdeContext = createContext<Ide | null>(null)
export const IdeProvider: FC<{ ide: Ide }> = ({ ide, children }) => {
const [value] = useState(() => ide || getMockIde())
return <IdeContext.Provider value={value}>{children}</IdeContext.Provider>
}
export function useIdeContext(): Ide {
const context = useContext(IdeContext)
if (!context) {
throw new Error('useIdeContext is only available inside IdeProvider')
}
return context
}