import { ListGroupItem } from 'react-bootstrap' import { ToolbarButtonMenu } from './button-menu' import Icon from '../../../../shared/components/icon' import { memo, useCallback } from 'react' import { FigureModalSource } from '../figure-modal/figure-modal-context' import { useTranslation } from 'react-i18next' import { emitToolbarEvent } from '../../extensions/toolbar/utils/analytics' import { useCodeMirrorViewContext } from '../codemirror-editor' import { insertFigure } from '../../extensions/toolbar/commands' export const InsertFigureDropdown = memo(function InsertFigureDropdown() { const { t } = useTranslation() const view = useCodeMirrorViewContext() const openFigureModal = useCallback( (source: FigureModalSource, sourceName: string) => { emitToolbarEvent(view, `toolbar-figure-modal-${sourceName}`) window.dispatchEvent( new CustomEvent('figure-modal:open', { detail: { source }, }) ) }, [view] ) const { hasLinkedProjectFileFeature, hasLinkedProjectOutputFileFeature, hasLinkUrlFeature, } = window.ExposedSettings return ( openFigureModal(FigureModalSource.FILE_UPLOAD, 'file-upload') } > {t('upload_from_computer')} openFigureModal(FigureModalSource.FILE_TREE, 'current-project') } > {t('from_project_files')} {(hasLinkedProjectFileFeature || hasLinkedProjectOutputFileFeature) && ( openFigureModal(FigureModalSource.OTHER_PROJECT, 'other-project') } > {t('from_another_project')} )} {hasLinkUrlFeature && ( openFigureModal(FigureModalSource.FROM_URL, 'from-url') } > {t('from_url')} )} ) })