UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

36 lines 3.14 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) { const listenerObj = listener instanceof Function ? { emit: listener } : listener; /** Stores whether any keys were caught since reset */ let caughtKey = false; return { init: () => { var _a; return (_a = listenerObj.init) === null || _a === void 0 ? void 0 : _a.call(listenerObj); }, emit: 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 (listenerObj.emit(e)) { caughtKey = true; return true; } }, destroy: () => { var _a; return (_a = listenerObj.destroy) === null || _a === void 0 ? void 0 : _a.call(listenerObj); }, }; } exports.setupModifierCatcherHandler = setupModifierCatcherHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXJNb2RpZmllckNhdGNoZXJIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RleHRGaWVsZHMvaW50ZXJhY3Rpb24va2V5SGFuZGxlci9zdXBlck1vZGlmaWVyQ2F0Y2hlckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUE7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQ3ZDLFNBQTZCLEVBQzdCLFFBQTJCO0lBRTNCLE1BQU0sV0FBVyxHQUFHLFFBQVEsWUFBWSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFL0Usc0RBQXNEO0lBQ3RELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztJQUV0QixPQUFPO1FBQ0gsSUFBSSxFQUFFLEdBQUcsRUFBRSx3QkFBQyxXQUFXLENBQUMsSUFBSSwrQ0FBaEIsV0FBVyxJQUFTO1FBQ2hDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNOLCtCQUErQjtZQUMvQixNQUFNLFVBQVUsR0FBRyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdELElBQUksVUFBVSxFQUFFO2dCQUNaLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNO29CQUFFLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hDLG9IQUFvSDtnQkFDcEgsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxTQUFTO29CQUFFLE9BQU8sSUFBSSxDQUFDO2FBQ2hEO1lBRUQsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNyQixTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNmO1FBQ0wsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsd0JBQUMsV0FBVyxDQUFDLE9BQU8sK0NBQW5CLFdBQVcsSUFBWTtLQUN6QyxDQUFDO0FBQ04sQ0FBQztBQTNCRCxrRUEyQkMifQ==