UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

31 lines 2.39 kB
"use strict"; 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==