outline-container.tsx 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { FC, memo } from 'react'
  2. import OutlinePane from '@/features/outline/components/outline-pane'
  3. import { useOutlineContext } from '@/features/ide-react/context/outline-context'
  4. import useScopeEventEmitter from '@/shared/hooks/use-scope-event-emitter'
  5. import useNestedOutline from '../hooks/use-nested-outline'
  6. export const OutlineContainer: FC = memo(() => {
  7. const {
  8. highlightedLine,
  9. canShowOutline,
  10. jumpToLine,
  11. outlineExpanded,
  12. toggleOutlineExpanded,
  13. } = useOutlineContext()
  14. const outlineToggledEmitter = useScopeEventEmitter('outline-toggled')
  15. const outline = useNestedOutline()
  16. return (
  17. <div className="outline-container">
  18. <OutlinePane
  19. outline={outline.items}
  20. onToggle={outlineToggledEmitter}
  21. isTexFile={canShowOutline}
  22. jumpToLine={jumpToLine}
  23. highlightedLine={highlightedLine}
  24. isPartial={outline.partial}
  25. expanded={outlineExpanded}
  26. toggleExpanded={toggleOutlineExpanded}
  27. />
  28. </div>
  29. )
  30. })
  31. OutlineContainer.displayName = 'OutlineContainer'