use-collapsible-panel.ts 437 B

12345678910111213141516171819
  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. useEffect(() => {
  8. const panel = panelRef.current
  9. if (!panel) {
  10. return
  11. }
  12. if (panelIsOpen) {
  13. panel.expand()
  14. } else {
  15. panel.collapse()
  16. }
  17. }, [panelIsOpen, panelRef])
  18. }