Files
overleaf-cep/services/web/frontend/js/features/ide-react/hooks/use-collapsible-panel.ts
T
Brian Gough 7f7556cf6a Merge pull request #33219 from overleaf/bg-fix-collapsible-panel-flicker
Fix flicker when switching between editor and PDF views

GitOrigin-RevId: 1f6543c0046dc458fa174aa9b54985934a7437fa
2026-05-01 08:05:56 +00:00

23 lines
665 B
TypeScript

import { RefObject, useLayoutEffect } from 'react'
import { ImperativePanelHandle } from 'react-resizable-panels'
export default function useCollapsiblePanel(
panelIsOpen: boolean,
panelRef: RefObject<ImperativePanelHandle>
) {
// useLayoutEffect keeps the panel-size update in the same paint cycle as the
// CSS class changes that show/hide the panel content, eliminating a visible
// flash between the two changes.
useLayoutEffect(() => {
const panelHandle = panelRef.current
if (panelHandle) {
if (panelIsOpen) {
panelHandle.expand()
} else {
panelHandle.collapse()
}
}
}, [panelIsOpen, panelRef])
}