use-collapsible-panel.ts 538 B

1234567891011121314151617181920
  1. import { RefObject, useEffect } from 'react'
  2. import { ImperativePanelHandle } from 'react-resizable-panels'
  3. export default function useCollapsiblePanel(
  4. panelIsOpen: boolean,
  5. panelRef: RefObject<ImperativePanelHandle>
  6. ) {
  7. // collapse the panel when it is toggled closed (including on initial layout)
  8. useEffect(() => {
  9. const panelHandle = panelRef.current
  10. if (panelHandle) {
  11. if (panelIsOpen) {
  12. panelHandle.expand()
  13. } else {
  14. panelHandle.collapse()
  15. }
  16. }
  17. }, [panelIsOpen, panelRef])
  18. }