overleaf/services/web/frontend/js/features/ide-react/hooks/use-chat-pane.ts
Alf Eaton 8c91a2e4cf Improve chat pane handling (#16123)
GitOrigin-RevId: b4185a192b393e339aee8bc27e615d61d66a8b34
2023-12-11 09:03:09 +00:00

34 lines
982 B
TypeScript

import { useLayoutContext } from '@/shared/context/layout-context'
import useFixedSizeColumn from '@/features/ide-react/hooks/use-fixed-size-column'
import useCollapsiblePanel from '@/features/ide-react/hooks/use-collapsible-panel'
import { useCallback, useState } from 'react'
export const useChatPane = () => {
const { chatIsOpen: isOpen, setChatIsOpen: setIsOpen } = useLayoutContext()
const [resizing, setResizing] = useState(false)
const { fixedPanelRef, handleLayout } = useFixedSizeColumn(isOpen)
useCollapsiblePanel(isOpen, fixedPanelRef)
const togglePane = useCallback(() => {
setIsOpen(value => !value)
}, [setIsOpen])
const handlePaneExpand = useCallback(() => {
setIsOpen(true)
}, [setIsOpen])
const handlePaneCollapse = useCallback(() => {
setIsOpen(false)
}, [setIsOpen])
return {
isOpen,
fixedPanelRef,
handleLayout,
resizing,
setResizing,
togglePane,
handlePaneExpand,
handlePaneCollapse,
}
}