@launchmenu/core
Version:
An environment for visual keyboard controlled applets
54 lines • 5.3 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createStandardMenuKeyHandler = void 0;
const handleExecuteInput_1 = require("./handleExecuteInput");
const setupMoveInputHandler_1 = require("./setupMoveInputHandler");
const handleDeselectInput_1 = require("./handleDeselectInput");
const setupItemKeyListenerHandler_1 = require("./setupItemKeyListenerHandler");
const setupContextMenuHandler_1 = require("./setupContextMenuHandler");
const baseSettings_1 = require("../../../../application/settings/baseSettings/baseSettings");
/**
* Creates a standard menu key handler
* @param menu The menu to create the handler for
* @param config Any additional optional data for the key handler configuration
* @returns The key handler that can be added to the UILayer
*/
function createStandardMenuKeyHandler(menu, { onExit, onExecute, useItemKeyHandlers = true, useContextItemKeyHandlers = true, } = {}) {
const context = menu.getContext();
const settings = context.settings.get(baseSettings_1.baseSettings).controls;
const fieldSettings = settings.menu;
// Setup handlers
let { handler: handleItemKeyListeners, destroy: destroyItemListenersHandler, } = useItemKeyHandlers
? setupItemKeyListenerHandler_1.setupItemKeyListenerHandler(menu, onExecute)
: { handler: undefined, destroy: undefined };
const { handler: handleContextMenu, destroy: destroyContextMenuHandler, } = setupContextMenuHandler_1.setupContextMenuHandler(menu, {
useContextItemKeyHandlers,
pattern: () => fieldSettings.openContextMenu.get(),
});
const handleCursorMovement = setupMoveInputHandler_1.setupMoveInputHandler(menu, fieldSettings);
// Return the listener
return {
handler: async (e) => {
if (await (handleItemKeyListeners === null || handleItemKeyListeners === void 0 ? void 0 : handleItemKeyListeners(e)))
return true;
if (await handleContextMenu(e))
return true;
if (handleExecuteInput_1.handleExecuteInput(e, menu, onExecute, fieldSettings.execute.get()))
return true;
if (await (handleCursorMovement === null || handleCursorMovement === void 0 ? void 0 : handleCursorMovement(e)))
return true;
if (handleDeselectInput_1.handleDeselectInput(e, menu, settings.back.get()))
return true;
if (onExit && settings.back.get().matches(e)) {
onExit();
return true;
}
},
destroy: () => {
destroyItemListenersHandler === null || destroyItemListenersHandler === void 0 ? void 0 : destroyItemListenersHandler();
destroyContextMenuHandler();
},
};
}
exports.createStandardMenuKeyHandler = createStandardMenuKeyHandler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTWVudUtleUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbWVudXMvbWVudS9pbnRlcmFjdGlvbi9rZXlIYW5kbGVyL2NyZWF0ZU1lbnVLZXlIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZEQUF3RDtBQUN4RCxtRUFBOEQ7QUFDOUQsK0RBQTBEO0FBQzFELCtFQUEwRTtBQUMxRSx1RUFBa0U7QUFFbEUsNkZBQXdGO0FBSXhGOzs7OztHQUtHO0FBQ0gsU0FBZ0IsNEJBQTRCLENBQ3hDLElBQVcsRUFDWCxFQUNJLE1BQU0sRUFDTixTQUFTLEVBQ1Qsa0JBQWtCLEdBQUcsSUFBSSxFQUN6Qix5QkFBeUIsR0FBRyxJQUFJLE1BVWhDLEVBQUU7SUFFTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsMkJBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUM3RCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBRXBDLGlCQUFpQjtJQUNqQixJQUFJLEVBQ0EsT0FBTyxFQUFFLHNCQUFzQixFQUMvQixPQUFPLEVBQUUsMkJBQTJCLEdBQ3ZDLEdBQUcsa0JBQWtCO1FBQ2xCLENBQUMsQ0FBQyx5REFBMkIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBQyxDQUFDO0lBQy9DLE1BQU0sRUFDRixPQUFPLEVBQUUsaUJBQWlCLEVBQzFCLE9BQU8sRUFBRSx5QkFBeUIsR0FDckMsR0FBRyxpREFBdUIsQ0FBQyxJQUFJLEVBQUU7UUFDOUIseUJBQXlCO1FBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRTtLQUNyRCxDQUFDLENBQUM7SUFDSCxNQUFNLG9CQUFvQixHQUFHLDZDQUFxQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUV4RSxzQkFBc0I7SUFDdEIsT0FBTztRQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBVyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxPQUFNLHNCQUFzQixhQUF0QixzQkFBc0IsdUJBQXRCLHNCQUFzQixDQUFHLENBQUMsRUFBQztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNuRCxJQUFJLE1BQU0saUJBQWlCLENBQUMsQ0FBQyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzVDLElBQUksdUNBQWtCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDbkUsT0FBTyxJQUFJLENBQUM7WUFDaEIsSUFBSSxPQUFNLG9CQUFvQixhQUFwQixvQkFBb0IsdUJBQXBCLG9CQUFvQixDQUFHLENBQUMsRUFBQztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNqRCxJQUFJLHlDQUFtQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNuRSxJQUFJLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxJQUFJLENBQUM7YUFDZjtRQUNMLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ1YsMkJBQTJCLGFBQTNCLDJCQUEyQix1QkFBM0IsMkJBQTJCLEdBQUs7WUFDaEMseUJBQXlCLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0tBQ0osQ0FBQztBQUNOLENBQUM7QUF6REQsb0VBeURDIn0=
;