file-tree-provider.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { ComponentProps, FC, useRef, useState } from 'react'
  2. import FileTreeContext from '@/features/file-tree/components/file-tree-context'
  3. export const FileTreeProvider: FC<
  4. React.PropsWithChildren<{
  5. refProviders?: Record<string, boolean>
  6. }>
  7. > = ({ children, refProviders = {} }) => {
  8. const [fileTreeContainer, setFileTreeContainer] =
  9. useState<HTMLDivElement | null>(null)
  10. const propsRef =
  11. useRef<Omit<ComponentProps<typeof FileTreeContext>, 'refProviders'>>()
  12. if (propsRef.current === undefined) {
  13. propsRef.current = {
  14. setRefProviderEnabled: cy.stub().as('setRefProviderEnabled'),
  15. setStartedFreeTrial: cy.stub().as('setStartedFreeTrial'),
  16. onSelect: cy.stub(),
  17. }
  18. }
  19. return (
  20. <div ref={setFileTreeContainer}>
  21. {fileTreeContainer && (
  22. <FileTreeContext
  23. refProviders={refProviders}
  24. fileTreeContainer={fileTreeContainer}
  25. {...propsRef.current}
  26. >
  27. <>{children}</>
  28. </FileTreeContext>
  29. )}
  30. </div>
  31. )
  32. }