2
0
mirror of https://github.com/moebooru/moebooru synced 2025-08-22 01:47:48 +00:00

Clean up on_key with modern js

This commit is contained in:
nanaya 2025-01-13 16:58:31 +09:00
parent caa784c724
commit 1449d608d1

View File

@ -1,59 +1,34 @@
var keysDown;
keysDown = new Map();
const keysDown = new Map();
// Many browsers eat keyup events if focus is lost while the button
// is pressed.
document.addEventListener('blur', function () {
return keysDown.clear();
keysDown.clear();
});
export var onKey = function(key, options, press, release) {
var element, ref;
if (options == null) {
options = {};
}
element = (ref = options.Element) != null ? ref : document;
export function onKey (key, options, press, release) {
options ??= {};
const element = options.Element ?? document;
element.addEventListener('keyup', function (e) {
if (e.keyCode !== key) {
return;
}
if (e.keyCode !== key) return;
keysDown.set(e.keyCode, false);
if (release) {
release(e);
}
release?.(e);
});
return element.addEventListener('keydown', function(e) {
var target;
if (e.keyCode !== key) {
return;
}
if (e.metaKey) {
return;
}
if (e.shiftKey !== !!options.shiftKey) {
return;
}
if (e.altKey !== !!options.altKey) {
return;
}
if (e.ctrlKey !== !!options.ctrlKey) {
return;
}
if (!options.allowRepeat && keysDown.get(e.keyCode) === true) {
return;
}
element.addEventListener('keydown', function (e) {
if (e.keyCode !== key) return;
if (e.metaKey) return;
if (e.shiftKey !== !!options.shiftKey) return;
if (e.altKey !== !!options.altKey) return;
if (e.ctrlKey !== !!options.ctrlKey) return;
if (!options.allowRepeat && keysDown.get(e.keyCode)) return;
keysDown.set(e.keyCode, true);
target = e.target;
if (!options.AllowTextAreaFields && target.tagName === 'TEXTAREA') {
return;
}
if (!options.AllowInputFields && target.tagName === 'INPUT') {
return;
}
if ((press != null) && !press(e)) {
return;
}
return e.preventDefault();
if (!options.AllowTextAreaFields && e.target.tagName === 'TEXTAREA') return;
if (!options.AllowInputFields && e.target.tagName === 'INPUT') return;
if (press != null && press(e) === false) return;
e.preventDefault();
});
};
}