file-tree-main.jsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { createContext, useContext, useState } from 'react'
  2. import PropTypes from 'prop-types'
  3. const FileTreeMainContext = createContext()
  4. export function useFileTreeMainContext() {
  5. const context = useContext(FileTreeMainContext)
  6. if (!context) {
  7. throw new Error(
  8. 'useFileTreeMainContext is only available inside FileTreeMainProvider'
  9. )
  10. }
  11. return context
  12. }
  13. export const FileTreeMainProvider = function ({
  14. refProviders,
  15. reindexReferences,
  16. setRefProviderEnabled,
  17. setStartedFreeTrial,
  18. children,
  19. }) {
  20. const [contextMenuCoords, setContextMenuCoords] = useState()
  21. return (
  22. <FileTreeMainContext.Provider
  23. value={{
  24. refProviders,
  25. reindexReferences,
  26. setRefProviderEnabled,
  27. setStartedFreeTrial,
  28. contextMenuCoords,
  29. setContextMenuCoords,
  30. }}
  31. >
  32. {children}
  33. </FileTreeMainContext.Provider>
  34. )
  35. }
  36. FileTreeMainProvider.propTypes = {
  37. reindexReferences: PropTypes.func.isRequired,
  38. refProviders: PropTypes.object.isRequired,
  39. setRefProviderEnabled: PropTypes.func.isRequired,
  40. setStartedFreeTrial: PropTypes.func.isRequired,
  41. children: PropTypes.oneOfType([
  42. PropTypes.arrayOf(PropTypes.node),
  43. PropTypes.node,
  44. ]).isRequired,
  45. }