import { FC, memo } from 'react' import { EditorState } from '@codemirror/state' import { useEditorContext } from '../../../../shared/context/editor-context' import { ToolbarButton } from './toolbar-button' import { redo, undo } from '@codemirror/commands' import * as commands from '../../extensions/toolbar/commands' import { SectionHeadingDropdown } from './section-heading-dropdown' import getMeta from '../../../../utils/meta' import { InsertFigureDropdown } from './insert-figure-dropdown' import { useTranslation } from 'react-i18next' import { MathDropdown } from './math-dropdown' import { TableDropdown } from './table-dropdown' import { LegacyTableDropdown } from './table-inserter-dropdown-legacy' import { withinFormattingCommand } from '@/features/source-editor/utils/tree-operations/formatting' import { isSplitTestEnabled } from '@/utils/splitTestUtils' import { isMac } from '@/shared/utils/os' import { useProjectContext } from '@/shared/context/project-context' import { useEditorPropertiesContext } from '@/features/ide-react/context/editor-properties-context' export const ToolbarItems: FC<{ state: EditorState overflowed?: Set languageName?: string visual: boolean listDepth: number }> = memo(function ToolbarItems({ state, overflowed, languageName, visual, listDepth, }) { const { t } = useTranslation() const { showSymbolPalette, toggleSymbolPalette } = useEditorPropertiesContext() const { writefullInstance } = useEditorContext() const { features } = useProjectContext() const isActive = withinFormattingCommand(state) const symbolPaletteAvailable = getMeta('ol-symbolPaletteAvailable') const showGroup = (group: string) => !overflowed || overflowed.has(group) const wfRebrandEnabled = isSplitTestEnabled('overleaf-assist-bundle') return ( <> {showGroup('group-history') && (
)} {languageName === 'latex' && ( <> {showGroup('group-section') && (
)} {showGroup('group-format') && (
)} {showGroup('group-math') && (
{symbolPaletteAvailable && ( )}
)} {showGroup('group-misc') && (
{features.trackChangesVisible && ( )} {wfRebrandEnabled && writefullInstance ? ( ) : ( )}
)} {showGroup('group-list') && (
)} )} ) })