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:
parent
caa784c724
commit
1449d608d1
@ -1,59 +1,34 @@
|
|||||||
var keysDown;
|
const keysDown = new Map();
|
||||||
|
|
||||||
keysDown = new Map();
|
|
||||||
|
|
||||||
// Many browsers eat keyup events if focus is lost while the button
|
// Many browsers eat keyup events if focus is lost while the button
|
||||||
// is pressed.
|
// is pressed.
|
||||||
document.addEventListener('blur', function() {
|
document.addEventListener('blur', function () {
|
||||||
return keysDown.clear();
|
keysDown.clear();
|
||||||
});
|
});
|
||||||
|
|
||||||
export var onKey = function(key, options, press, release) {
|
export function onKey (key, options, press, release) {
|
||||||
var element, ref;
|
options ??= {};
|
||||||
if (options == null) {
|
const element = options.Element ?? document;
|
||||||
options = {};
|
|
||||||
}
|
element.addEventListener('keyup', function (e) {
|
||||||
element = (ref = options.Element) != null ? ref : document;
|
if (e.keyCode !== key) return;
|
||||||
element.addEventListener('keyup', function(e) {
|
|
||||||
if (e.keyCode !== key) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
keysDown.set(e.keyCode, false);
|
keysDown.set(e.keyCode, false);
|
||||||
if (release) {
|
release?.(e);
|
||||||
release(e);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return element.addEventListener('keydown', function(e) {
|
|
||||||
var target;
|
element.addEventListener('keydown', function (e) {
|
||||||
if (e.keyCode !== key) {
|
if (e.keyCode !== key) return;
|
||||||
return;
|
if (e.metaKey) return;
|
||||||
}
|
if (e.shiftKey !== !!options.shiftKey) return;
|
||||||
if (e.metaKey) {
|
if (e.altKey !== !!options.altKey) return;
|
||||||
return;
|
if (e.ctrlKey !== !!options.ctrlKey) return;
|
||||||
}
|
if (!options.allowRepeat && keysDown.get(e.keyCode)) 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;
|
|
||||||
}
|
|
||||||
keysDown.set(e.keyCode, true);
|
keysDown.set(e.keyCode, true);
|
||||||
target = e.target;
|
if (!options.AllowTextAreaFields && e.target.tagName === 'TEXTAREA') return;
|
||||||
if (!options.AllowTextAreaFields && target.tagName === 'TEXTAREA') {
|
if (!options.AllowInputFields && e.target.tagName === 'INPUT') return;
|
||||||
return;
|
if (press != null && press(e) === false) return;
|
||||||
}
|
|
||||||
if (!options.AllowInputFields && target.tagName === 'INPUT') {
|
e.preventDefault();
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ((press != null) && !press(e)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return e.preventDefault();
|
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user