41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
import * as actions from './index.js';
|
|
import bowser from 'bowser';
|
|
import keycode from 'keycode';
|
|
// import createDebug from 'debug';
|
|
// const debug = createDebug('d3d:actions:hotkeys');
|
|
|
|
export const keyPress = (event, pathname) => {
|
|
return (dispatch) => {
|
|
const { metaKey, ctrlKey } = event;
|
|
const key = keycode(event);
|
|
|
|
const commandKey = bowser.mac ? metaKey : ctrlKey;
|
|
|
|
// ignore key events from input fields by checking event target
|
|
// https://developer.mozilla.org/en-US/docs/Web/API/Event/target
|
|
const targetTag = event.target.tagName.toLowerCase();
|
|
if (targetTag === 'input' || targetTag === 'textarea') return;
|
|
|
|
if (pathname === '/') {
|
|
switch (key) {
|
|
case 's':
|
|
if (commandKey) {
|
|
event.preventDefault(); // pevent default browser saving behaviour
|
|
dispatch(actions.router.push('/save'));
|
|
}
|
|
break;
|
|
|
|
case 'o':
|
|
if (commandKey) {
|
|
event.preventDefault(); // pevent default browser opening behaviour
|
|
dispatch(actions.router.push('/my-doodles'));
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
};
|