mirror of
https://github.com/suitenumerique/meet.git
synced 2026-09-03 14:17:59 +00:00
bf6f7430e7
Mark JS imports as type-only when applicable so they are stripped at build time and ignored during chunk splitting, ensuring we take full advantage of Rollup's code-splitting optimizations.
90 lines
2.1 KiB
TypeScript
90 lines
2.1 KiB
TypeScript
import type { Shortcut } from './types'
|
|
|
|
// Central list of current keyboard shortcuts.
|
|
// Keep a single source of truth for display and, later, customization
|
|
export type ShortcutCategory = 'navigation' | 'media' | 'interaction'
|
|
|
|
export type ShortcutId =
|
|
| 'open-shortcuts'
|
|
| 'focus-toolbar'
|
|
| 'toggle-microphone'
|
|
| 'toggle-camera'
|
|
| 'push-to-talk'
|
|
| 'toggle-chat'
|
|
| 'toggle-participants'
|
|
| 'raise-hand'
|
|
| 'recording'
|
|
| 'reaction'
|
|
| 'fullscreen'
|
|
|
|
export const getShortcutDescriptorById = (id: ShortcutId) =>
|
|
shortcutCatalog.find((item) => item.id === id)
|
|
|
|
export type ShortcutDescriptor = {
|
|
id: ShortcutId
|
|
category: ShortcutCategory
|
|
shortcut?: Shortcut
|
|
kind?: 'press' | 'longPress'
|
|
code?: string // used when kind === 'longPress' (KeyboardEvent.code)
|
|
description?: string
|
|
}
|
|
|
|
export const shortcutCatalog: ShortcutDescriptor[] = [
|
|
{
|
|
id: 'open-shortcuts',
|
|
category: 'navigation',
|
|
shortcut: { key: '/', ctrlKey: true, shiftKey: true },
|
|
},
|
|
{
|
|
id: 'focus-toolbar',
|
|
category: 'navigation',
|
|
shortcut: { key: 'F2' },
|
|
},
|
|
{
|
|
id: 'toggle-microphone',
|
|
category: 'media',
|
|
shortcut: { key: 'd', ctrlKey: true },
|
|
},
|
|
{
|
|
id: 'toggle-camera',
|
|
category: 'media',
|
|
shortcut: { key: 'e', ctrlKey: true },
|
|
},
|
|
{
|
|
id: 'push-to-talk',
|
|
category: 'media',
|
|
kind: 'longPress',
|
|
code: 'KeyV',
|
|
},
|
|
{
|
|
id: 'reaction',
|
|
category: 'interaction',
|
|
shortcut: { key: 'E', ctrlKey: true, shiftKey: true },
|
|
},
|
|
{
|
|
id: 'fullscreen',
|
|
category: 'interaction',
|
|
shortcut: { key: 'F', ctrlKey: true, shiftKey: true },
|
|
},
|
|
{
|
|
id: 'recording',
|
|
category: 'interaction',
|
|
shortcut: { key: 'L', ctrlKey: true, shiftKey: true },
|
|
},
|
|
{
|
|
id: 'raise-hand',
|
|
category: 'interaction',
|
|
shortcut: { key: 'H', ctrlKey: true, shiftKey: true },
|
|
},
|
|
{
|
|
id: 'toggle-chat',
|
|
category: 'interaction',
|
|
shortcut: { key: 'M', ctrlKey: true, shiftKey: true },
|
|
},
|
|
{
|
|
id: 'toggle-participants',
|
|
category: 'interaction',
|
|
shortcut: { key: 'P', ctrlKey: true, shiftKey: true },
|
|
},
|
|
]
|