file-tree-context.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { FileTreeMainProvider } from '../contexts/file-tree-main'
  2. import { FileTreeActionableProvider } from '../contexts/file-tree-actionable'
  3. import { FileTreeSelectableProvider } from '../contexts/file-tree-selectable'
  4. import { FileTreeDraggableProvider } from '../contexts/file-tree-draggable'
  5. import { FC } from 'react'
  6. // renders all the contexts needed for the file tree:
  7. // FileTreeMain: generic store
  8. // FileTreeActionable: global UI state for actions (rename, delete, etc.)
  9. // FileTreeMutable: provides entities mutation operations
  10. // FileTreeSelectable: handles selection and multi-selection
  11. const FileTreeContext: FC<{
  12. reindexReferences: () => void
  13. refProviders: Record<string, boolean>
  14. setRefProviderEnabled: (provider: string, value: boolean) => void
  15. setStartedFreeTrial: (value: boolean) => void
  16. onSelect: () => void
  17. fileTreeContainer?: HTMLDivElement
  18. }> = ({
  19. refProviders,
  20. reindexReferences,
  21. setRefProviderEnabled,
  22. setStartedFreeTrial,
  23. onSelect,
  24. fileTreeContainer,
  25. children,
  26. }) => {
  27. return (
  28. <FileTreeMainProvider
  29. refProviders={refProviders}
  30. setRefProviderEnabled={setRefProviderEnabled}
  31. setStartedFreeTrial={setStartedFreeTrial}
  32. reindexReferences={reindexReferences}
  33. >
  34. <FileTreeSelectableProvider onSelect={onSelect}>
  35. <FileTreeActionableProvider reindexReferences={reindexReferences}>
  36. <FileTreeDraggableProvider fileTreeContainer={fileTreeContainer}>
  37. {children}
  38. </FileTreeDraggableProvider>
  39. </FileTreeActionableProvider>
  40. </FileTreeSelectableProvider>
  41. </FileTreeMainProvider>
  42. )
  43. }
  44. export default FileTreeContext