import { Panel } from 'react-resizable-panels' import { useRailContext } from '@/features/ide-react/context/rail-context' import classNames from 'classnames' import { useCallback, useMemo } from 'react' import usePreviousValue from '@/shared/hooks/use-previous-value' import { HistorySidebar } from '@/features/ide-react/components/history-sidebar' import { Tab } from 'react-bootstrap' import { RailElement } from '@/features/ide-react/util/rail-types' import { shouldIncludeElement } from '@/features/ide-react/util/rail-utils' export default function RailPanel({ isReviewPanelOpen, isHistoryView, railTabs, focusMode, }: { isReviewPanelOpen: boolean isHistoryView: boolean railTabs: RailElement[] focusMode: boolean }) { const { selectedTab, panelRef, handlePaneExpand, handlePaneCollapse } = useRailContext() const prevTab = usePreviousValue(selectedTab) const tabHasChanged = useMemo(() => { return prevTab !== selectedTab }, [prevTab, selectedTab]) const onCollapse = useCallback(() => { if (!tabHasChanged) { handlePaneCollapse() } }, [tabHasChanged, handlePaneCollapse]) return ( {isHistoryView && }
{railTabs .filter(shouldIncludeElement) .map(({ key, component, mountOnFirstLoad }) => ( {component} ))}
) }