import { memo, ReactNode, useCallback, forwardRef } from 'react' import { Dropdown as BS3Dropdown, MenuItem, MenuItemProps, } from 'react-bootstrap' import { Spinner } from 'react-bootstrap-5' import { Dropdown, DropdownItem, DropdownMenu, DropdownToggle, } from '@/features/ui/components/bootstrap-5/dropdown-menu' import { Trans, useTranslation } from 'react-i18next' import Tooltip from '../../../shared/components/tooltip' import Icon from '../../../shared/components/icon' import IconChecked from '../../../shared/components/icon-checked' import ControlledDropdown from '../../../shared/components/controlled-dropdown' import { IdeLayout, IdeView, useLayoutContext, } from '../../../shared/context/layout-context' import * as eventTracking from '../../../infrastructure/event-tracking' import useEventListener from '../../../shared/hooks/use-event-listener' import { DetachRole } from '@/shared/context/detach-context' import BootstrapVersionSwitcher from '@/features/ui/components/bootstrap-5/bootstrap-version-switcher' import MaterialIcon from '@/shared/components/material-icon' function IconPlaceholder() { return } function IconRefresh() { return } function IconLayout() { return } function IconSplit() { return } function IconDetach() { return } function IconEditorOnly() { return } function IconPdfOnly() { return } const isActiveDropdownItem = ({ iconFor, pdfLayout, view, detachRole, }: { iconFor: string pdfLayout: IdeLayout view: IdeView | null detachRole?: DetachRole }) => { if (detachRole === 'detacher' || view === 'history') { return false } if ( iconFor === 'editorOnly' && pdfLayout === 'flat' && (view === 'editor' || view === 'file') ) { return true } else if (iconFor === 'pdfOnly' && pdfLayout === 'flat' && view === 'pdf') { return true } else if (iconFor === 'sideBySide' && pdfLayout === 'sideBySide') { return true } return false } function IconCheckmark(props: Parameters[0]) { return isActiveDropdownItem(props) ? : } function LayoutMenuItem({ checkmark, icon, text, ...props }: { checkmark: ReactNode icon: ReactNode text: string | ReactNode } & MenuItemProps) { return (
{checkmark}
{icon}
{text}
) } function EnhancedDropdownItem({ active, ...props }: React.ComponentProps) { return ( ) } const LayoutDropdownToggleButton = forwardRef< HTMLButtonElement, { onClick: (e: React.MouseEvent) => void } >(({ onClick, ...props }, ref) => { const handleClick = (e: React.MouseEvent) => { eventTracking.sendMB('navigation-clicked-layout') onClick(e) } return