2022-06-01 10:15:55 +03:00

63 lines
1.5 KiB
JavaScript
Vendored

let shortcuts;
axios.get('public/shortcuts-config.json')
.then(function (response) {
shortcuts = response.data
})
const handlePageEvent = (event, routeData) => {
const hotkeys = Object.keys(routeData);
hotkeys.includes([event.code])
? routeData[event.code]() //type of function - to execute when the event happens
: {}
};
const handlePrint = () => {
window.location.replace(window.location.href + '/print');
};
const handleKeydown = (event) => {
const keyName = event.key;
const urlPath = window.location.href;
const constainsDocID = !isNaN(urlPath.substr(-1));
if (keyName === ('Meta' || 'Control' || 'Alt')) {
return;
}
if (event.metaKey || event.ctrlKey) {
const action = shortcuts.ctrlKey[event.code];
action
? (event.preventDefault(), handleShortCuts(action))
: {};
}
if (event.altKey) {
const action = shortcuts.altKey[event.code];
action
? handleShortCuts(action)
: {};
}
const matchingRoute = Object.keys(shortcuts.pages).filter(route => urlPath.includes(route));
matchingRoute
? constainsDocID && event.code === 'KeyP'
? handlePrint()
: handlePageEvent(event, matchingRoute)
: {};
};
const handleShortCuts = (target) => {
let targetURL = url + target;
window.location.replace(targetURL);
};
document.addEventListener('keydown', (event) => {
handleKeydown(event)
}, false);