From a4c684e266a05b9b2587f6c7456b987a414dd71b Mon Sep 17 00:00:00 2001 From: Mathias Jakobsen Date: Wed, 31 May 2023 09:05:28 +0100 Subject: [PATCH] [cm6] Add toolbar event for figure modal trigger (#13168) * [cm6] Add toolbar event for figure modal trigger * [cm6] Add event to figure modal edit button GitOrigin-RevId: 04add4f801647dfcc38a54e1969b03c4a31b2462 --- .../toolbar/insert-figure-dropdown.tsx | 35 +++++++++++++------ .../visual-widgets/editable-graphics.ts | 2 ++ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/services/web/frontend/js/features/source-editor/components/toolbar/insert-figure-dropdown.tsx b/services/web/frontend/js/features/source-editor/components/toolbar/insert-figure-dropdown.tsx index bb5e3c45da..809d971b33 100644 --- a/services/web/frontend/js/features/source-editor/components/toolbar/insert-figure-dropdown.tsx +++ b/services/web/frontend/js/features/source-editor/components/toolbar/insert-figure-dropdown.tsx @@ -4,16 +4,23 @@ import Icon from '../../../../shared/components/icon' import { useCallback } from 'react' import { FigureModalSource } from '../figure-modal/figure-modal-context' import { useTranslation } from 'react-i18next' +import { emitCommandEvent } from '../../extensions/toolbar/utils/analytics' +import { useCodeMirrorViewContext } from '../codemirror-editor' export const InsertFigureDropdown = () => { const { t } = useTranslation() - const openFigureModal = useCallback((source: FigureModalSource) => { - window.dispatchEvent( - new CustomEvent('figure-modal:open', { - detail: source, - }) - ) - }, []) + const view = useCodeMirrorViewContext() + const openFigureModal = useCallback( + (source: FigureModalSource, sourceName: string) => { + emitCommandEvent(view, `toolbar-figure-modal-${sourceName}`) + window.dispatchEvent( + new CustomEvent('figure-modal:open', { + detail: source, + }) + ) + }, + [view] + ) return ( { icon="picture-o" > openFigureModal(FigureModalSource.FILE_UPLOAD)} + onClick={() => + openFigureModal(FigureModalSource.FILE_UPLOAD, 'file-upload') + } > Upload from computer openFigureModal(FigureModalSource.FILE_TREE)} + onClick={() => + openFigureModal(FigureModalSource.FILE_TREE, 'current-project') + } > From project files openFigureModal(FigureModalSource.OTHER_PROJECT)} + onClick={() => + openFigureModal(FigureModalSource.OTHER_PROJECT, 'other-project') + } > From another project openFigureModal(FigureModalSource.FROM_URL)} + onClick={() => openFigureModal(FigureModalSource.FROM_URL, 'from-url')} > From URL diff --git a/services/web/frontend/js/features/source-editor/extensions/visual/visual-widgets/editable-graphics.ts b/services/web/frontend/js/features/source-editor/extensions/visual/visual-widgets/editable-graphics.ts index 6b04bc6c6d..645786e975 100644 --- a/services/web/frontend/js/features/source-editor/extensions/visual/visual-widgets/editable-graphics.ts +++ b/services/web/frontend/js/features/source-editor/extensions/visual/visual-widgets/editable-graphics.ts @@ -1,6 +1,7 @@ import { EditorView } from '@codemirror/view' import { GraphicsWidget } from './graphics' import { editFigureDataEffect } from '../../figure-modal' +import { emitCommandEvent } from '../../toolbar/utils/analytics' export class EditableGraphicsWidget extends GraphicsWidget { setEditDispatcher(button: HTMLButtonElement, view: EditorView) { @@ -11,6 +12,7 @@ export class EditableGraphicsWidget extends GraphicsWidget { event.stopImmediatePropagation() view.dispatch({ effects: editFigureDataEffect.of(this.figureData) }) window.dispatchEvent(new CustomEvent('figure-modal:open-modal')) + emitCommandEvent(view, 'toolbar-figure-modal-edit') return false } } else {