overleaf/services/web/frontend/js/features/ide-react/hooks/use-sidebar-pane.ts
Alf Eaton 5c6b8ec015 Use the expanded size from localStorage when available (#16298)
GitOrigin-RevId: 7747881b99d23ebb0ee38d044c671bffb7504302
2023-12-21 09:02:56 +00:00

36 lines
980 B
TypeScript

import { useCallback, useRef, useState } from 'react'
import useFixedSizeColumn from '@/features/ide-react/hooks/use-fixed-size-column'
import useCollapsiblePanel from '@/features/ide-react/hooks/use-collapsible-panel'
import { ImperativePanelHandle } from 'react-resizable-panels'
export const useSidebarPane = () => {
const [isOpen, setIsOpen] = useState(true)
const [resizing, setResizing] = useState(false)
const panelRef = useRef<ImperativePanelHandle>(null)
const handleLayout = useFixedSizeColumn(isOpen, panelRef)
useCollapsiblePanel(isOpen, panelRef)
const togglePane = useCallback(() => {
setIsOpen(value => !value)
}, [])
const handlePaneExpand = useCallback(() => {
setIsOpen(true)
}, [])
const handlePaneCollapse = useCallback(() => {
setIsOpen(false)
}, [])
return {
isOpen,
setIsOpen,
panelRef,
handleLayout,
togglePane,
handlePaneExpand,
handlePaneCollapse,
resizing,
setResizing,
}
}