cinny/src/client/event/hotkeys.js

50 lines
1.3 KiB
JavaScript
Raw Normal View History

import { openSearch, toggleRoomSettings } from '../action/navigation';
import navigation from '../state/navigation';
function listenKeyboard(event) {
// Ctrl +
if (event.ctrlKey) {
// k - for search Modal
if (event.keyCode === 75) {
event.preventDefault();
if (navigation.isRawModalVisible) return;
openSearch();
}
}
if (!event.ctrlKey && !event.altKey) {
if (event.keyCode === 38 && navigation.isRoomSettings) {
// close room settings
toggleRoomSettings();
return;
}
if (event.keyCode === 40 && !navigation.isRoomSettings) {
// open room settings
toggleRoomSettings();
return;
}
if (navigation.isRawModalVisible) return;
if (['text', 'textarea'].includes(document.activeElement.type)) {
return;
}
if ((event.keyCode !== 8 && event.keyCode < 48)
|| (event.keyCode >= 91 && event.keyCode <= 93)
|| (event.keyCode >= 112 && event.keyCode <= 183)) {
return;
}
const msgTextarea = document.getElementById('message-textarea');
msgTextarea?.focus();
}
}
function initHotkeys() {
document.body.addEventListener('keydown', listenKeyboard);
}
function removeHotkeys() {
document.body.removeEventListener('keydown', listenKeyboard);
}
export { initHotkeys, removeHotkeys };