import './keyboard-shortcuts-help.css'; import { t, Trans } from '@lingui/macro'; import { memo } from 'preact/compat'; import { useHotkeys } from 'react-hotkeys-hook'; import { useSnapshot } from 'valtio'; import states from '../utils/states'; import Icon from './icon'; import Modal from './modal'; export default memo(function KeyboardShortcutsHelp() { const snapStates = useSnapshot(states); function onClose() { states.showKeyboardShortcutsHelp = false; } useHotkeys( '?, shift+?, shift+slash', (e) => { console.log('help'); states.showKeyboardShortcutsHelp = true; }, { ignoreEventWhen: (e) => { const hasModal = !!document.querySelector('#modal-container > *'); return hasModal; }, }, ); return ( !!snapStates.showKeyboardShortcutsHelp && (

Keyboard shortcuts

{[ { action: t`Keyboard shortcuts help`, keys: ?, }, { action: t`Next post`, keys: j, }, { action: t`Previous post`, keys: k, }, { action: t`Skip carousel to next post`, keys: ( Shift + j ), }, { action: t`Skip carousel to previous post`, keys: ( Shift + k ), }, { action: t`Load new posts`, keys: ., }, { action: t`Open post details`, keys: ( Enter or o ), }, { action: ( Expand content warning or
toggle expanded/collapsed thread
), keys: x, }, { action: t`Close post or dialogs`, keys: ( Esc or Backspace ), }, { action: t`Focus column in multi-column mode`, keys: ( 1 to 9 ), }, { action: t`Compose new post`, keys: c, }, { action: t`Compose new post (new window)`, className: 'insignificant', keys: ( Shift + c ), }, { action: t`Send post`, keys: ( Ctrl + Enter or +{' '} Enter ), }, { action: t`Search`, keys: /, }, { action: t`Reply`, keys: r, }, { action: t`Reply (new window)`, className: 'insignificant', keys: ( Shift + r ), }, { action: t`Like (favourite)`, keys: ( l or f ), }, { action: t`Boost`, keys: ( Shift + b ), }, { action: t`Bookmark`, keys: d, }, { action: t`Toggle Cloak mode`, keys: ( Shift + Alt + k ), }, ].map(({ action, className, keys }) => ( ))}
{action} {keys}
) ); });