overleaf/services/web/frontend/js/shared/context/ide-context.js
Timothée Alby 3c01402bbd Merge pull request #7034 from overleaf/ta-pdf-detach-full
PDF Detach v2

GitOrigin-RevId: 3deb76474185f9176cde23ab32ef51b90df6e8e9
2022-04-05 12:19:23 +00:00

33 lines
802 B
JavaScript

import { createContext, useContext, useState } from 'react'
import PropTypes from 'prop-types'
import { getMockIde } from './mock/mock-ide'
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 }) {
const [value] = useState(() => ide || getMockIde())
return <IdeContext.Provider value={value}>{children}</IdeContext.Provider>
}
IdeProvider.propTypes = {
children: PropTypes.any.isRequired,
ide: PropTypes.shape({
$scope: PropTypes.object.isRequired,
}),
}