use-sidebar-pane.ts 873 B

12345678910111213141516171819202122232425262728293031323334
  1. import { useCallback, useState } from 'react'
  2. import useFixedSizeColumn from '@/features/ide-react/hooks/use-fixed-size-column'
  3. import useCollapsiblePanel from '@/features/ide-react/hooks/use-collapsible-panel'
  4. export const useSidebarPane = () => {
  5. const [isOpen, setIsOpen] = useState(true)
  6. const [resizing, setResizing] = useState(false)
  7. const { fixedPanelRef, handleLayout } = useFixedSizeColumn(isOpen)
  8. useCollapsiblePanel(isOpen, fixedPanelRef)
  9. const togglePane = useCallback(() => {
  10. setIsOpen(value => !value)
  11. }, [])
  12. const handlePaneExpand = useCallback(() => {
  13. setIsOpen(true)
  14. }, [])
  15. const handlePaneCollapse = useCallback(() => {
  16. setIsOpen(false)
  17. }, [])
  18. return {
  19. isOpen,
  20. setIsOpen,
  21. fixedPanelRef,
  22. handleLayout,
  23. togglePane,
  24. handlePaneExpand,
  25. handlePaneCollapse,
  26. resizing,
  27. setResizing,
  28. }
  29. }