overleaf/services/web/frontend/js/shared/context/ide-context.js
Alf Eaton ad3c66b36e Add IdeProvider (#4161)
GitOrigin-RevId: cab09354cf4b325a1ea3814a8c4c49fac7c831be
2021-06-17 02:09:29 +00:00

30 lines
708 B
JavaScript

import React, { createContext, useContext } from 'react'
import PropTypes from 'prop-types'
const IdeContext = createContext()
IdeContext.Provider.propTypes = {
value: PropTypes.shape({
$scope: PropTypes.object.isRequired,
}),
}
export function useIdeContext() {
const context = useContext(IdeContext)
if (!context) {
throw new Error('useIdeContext is only available inside IdeProvider')
}
return context
}
export function IdeProvider({ ide, children }) {
return <IdeContext.Provider value={ide}>{children}</IdeContext.Provider>
}
IdeProvider.propTypes = {
children: PropTypes.any.isRequired,
ide: PropTypes.shape({
$scope: PropTypes.object.isRequired,
}).isRequired,
}