Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion src/components/ExcalidrawMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import { useCallback, useEffect, useRef, memo } from 'react'
import type { KeyboardEvent as ReactKeyboardEvent } from 'react'
import { Icon } from '@mdi/react'
import { mdiMonitorScreenshot, mdiImageMultiple, mdiTimerOutline, mdiVote, mdiGrid } from '@mdi/js'
import { mdiMonitorScreenshot, mdiImageMultiple, mdiTimerOutline, mdiVote, mdiGrid, mdiMagnify } from '@mdi/js'
import { MainMenu, CaptureUpdateAction } from '@nextcloud/excalidraw'
import { RecordingMenuItem } from './Recording'
import { PresentationMenuItem } from './Presentation'
Expand Down Expand Up @@ -101,6 +101,26 @@ export const ExcalidrawMenu = memo(function ExcalidrawMenu({ fileNameWithoutExte
}
}, [excalidrawAPI])

const openLibrarySearch = useCallback(() => {
// Trigger Ctrl+F to open library with search tab
const excalidrawContainer = document.querySelector('.excalidraw') as HTMLElement
if (excalidrawContainer) {
const eventConfig: KeyboardEventInit = {
key: 'f',
code: 'KeyF',
bubbles: true,
cancelable: true,
}
if (isMacPlatform) {
eventConfig.metaKey = true
} else {
eventConfig.ctrlKey = true
}
const event = new KeyboardEvent('keydown', eventConfig)
excalidrawContainer.dispatchEvent(event)
}
}, [isMacPlatform])

const isMacPlatformRef = useRef(isMacPlatform)
useEffect(() => {
isMacPlatformRef.current = isMacPlatform
Expand Down Expand Up @@ -176,6 +196,11 @@ export const ExcalidrawMenu = memo(function ExcalidrawMenu({ fileNameWithoutExte
onSelect={() => showVotings()}>
{t('whiteboard', 'Votings')}
</MainMenu.Item>
<MainMenu.Item
icon={<Icon path={mdiMagnify} size={0.75} />}
onSelect={openLibrarySearch}>
{t('whiteboard', 'Find text on canvas')}
</MainMenu.Item>
<RecordingMenuItem
isRecording={recordingState.isRecording}
isStarting={recordingState.isStarting}
Expand Down
Loading