use-chat-pane.ts 930 B

12345678910111213141516171819202122232425262728293031323334
  1. import { useLayoutContext } from '@/shared/context/layout-context'
  2. import useCollapsiblePanel from '@/features/ide-react/hooks/use-collapsible-panel'
  3. import { useCallback, useRef, useState } from 'react'
  4. import { ImperativePanelHandle } from 'react-resizable-panels'
  5. export const useChatPane = () => {
  6. const { chatIsOpen: isOpen, setChatIsOpen: setIsOpen } = useLayoutContext()
  7. const [resizing, setResizing] = useState(false)
  8. const panelRef = useRef<ImperativePanelHandle>(null)
  9. useCollapsiblePanel(isOpen, panelRef)
  10. const togglePane = useCallback(() => {
  11. setIsOpen(value => !value)
  12. }, [setIsOpen])
  13. const handlePaneExpand = useCallback(() => {
  14. setIsOpen(true)
  15. }, [setIsOpen])
  16. const handlePaneCollapse = useCallback(() => {
  17. setIsOpen(false)
  18. }, [setIsOpen])
  19. return {
  20. isOpen,
  21. panelRef,
  22. resizing,
  23. setResizing,
  24. togglePane,
  25. handlePaneExpand,
  26. handlePaneCollapse,
  27. }
  28. }