ide-context.tsx 693 B

12345678910111213141516171819202122232425
  1. import { createContext, FC, useContext, useState } from 'react'
  2. import { getMockIde } from './mock/mock-ide'
  3. type Ide = {
  4. [key: string]: any // TODO: define the rest of the `ide` and `$scope` properties
  5. $scope: Record<string, any>
  6. }
  7. const IdeContext = createContext<Ide | null>(null)
  8. export const IdeProvider: FC<{ ide: Ide }> = ({ ide, children }) => {
  9. const [value] = useState(() => ide || getMockIde())
  10. return <IdeContext.Provider value={value}>{children}</IdeContext.Provider>
  11. }
  12. export function useIdeContext(): Ide {
  13. const context = useContext(IdeContext)
  14. if (!context) {
  15. throw new Error('useIdeContext is only available inside IdeProvider')
  16. }
  17. return context
  18. }