@launchmenu/core
Version:
An environment for visual keyboard controlled applets
31 lines • 2.39 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupModifierCatcherHandler = void 0;
/**
* A handler that catches keyboard up event for modifiers if any other key was pressed since the modifier was activated.
* Used for making 'shift' toggle selection in menu only if it wasn't used to update the text selection
* @param modifiers The getter for the modifiers to catch
* @param listener The listener object to wrap in order to detect whether the modifier was used
* @returns A new key handler
*/
function setupModifierCatcherHandler(modifiers, listener) {
/** Stores whether any keys were caught since reset */
let caughtKey = false;
return async (e) => {
// Handle modifier key catching
const isModifier = modifiers().find(p => p.matches(e, true));
if (isModifier) {
if (e.type == "down")
caughtKey = false;
// If we release the selection key, and we actually used as a modifier for something, prevent the event sinking down
if (e.type == "up" && caughtKey)
return true;
}
if (await listener(e)) {
caughtKey = true;
return true;
}
};
}
exports.setupModifierCatcherHandler = setupModifierCatcherHandler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBNb2RpZmllckNhdGNoZXJIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RleHRGaWVsZHMvaW50ZXJhY3Rpb24va2V5SGFuZGxlci9zZXR1cE1vZGlmaWVyQ2F0Y2hlckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0E7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQ3ZDLFNBQTZCLEVBQzdCLFFBQTJCO0lBRTNCLHNEQUFzRDtJQUN0RCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFdEIsT0FBTyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7UUFDYiwrQkFBK0I7UUFDL0IsTUFBTSxVQUFVLEdBQUcsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLFVBQVUsRUFBRTtZQUNaLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNO2dCQUFFLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDeEMsb0hBQW9IO1lBQ3BILElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksU0FBUztnQkFBRSxPQUFPLElBQUksQ0FBQztTQUNoRDtRQUVELElBQUksTUFBTSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkIsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQXJCRCxrRUFxQkMifQ==
;