Change: expose hotkeys.setState

This commit is contained in:
eight 2017-12-06 03:30:46 +08:00
parent 181d9206d9
commit 8caaab742c

View File

@ -1,24 +1,33 @@
/* global applyOnMessage installed */ /* global applyOnMessage installed */
'use strict'; 'use strict';
// eslint-disable-next-line no-var
var hotkeys = (() => {
let togglablesShown;
let togglables;
let enabled = false;
let ready = false;
window.addEventListener('showStyles:done', function _() { window.addEventListener('showStyles:done', function _() {
window.removeEventListener('showStyles:done', _); window.removeEventListener('showStyles:done', _);
togglablesShown = true;
let togglablesShown = true; togglables = getTogglables();
let togglables = getTogglables(); ready = true;
let enabled = true; setState(true);
window.addEventListener('keydown', onKeyDown);
window.hotkeys = {
enable() {
enabled = true;
},
disable() {
enabled = false;
}
};
initHotkeyInfo(); initHotkeyInfo();
return; });
return {setState};
function setState(newState = !enabled) {
if (!ready) {
throw new Error('hotkeys no ready');
}
if (newState !== enabled) {
window[`${newState ? 'add' : 'remove'}EventListener`]('keydown', onKeyDown);
enabled = newState;
}
}
function onKeyDown(event) { function onKeyDown(event) {
if (event.ctrlKey || event.altKey || event.metaKey || !enabled) { if (event.ctrlKey || event.altKey || event.metaKey || !enabled) {
@ -174,4 +183,4 @@ window.addEventListener('showStyles:done', function _() {
}); });
} }
} }
}); })();