UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

46 lines 4.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createAdvancedTextFieldKeyHandler = void 0; const baseSettings_1 = require("../../../../application/settings/baseSettings/baseSettings"); const mergeKeyListeners_1 = require("../../../../keyHandler/mergeKeyListeners"); const createStandardTextFieldKeyHandler_1 = require("../../keyHandler/createStandardTextFieldKeyHandler"); const handleNewlineInput_1 = require("../../keyHandler/handleNewlineInput"); const handleVerticalCursorInput_1 = require("../../keyHandler/handleVerticalCursorInput"); const createUndoableTextFieldKeyHandler_1 = require("./createUndoableTextFieldKeyHandler"); const handleIndentInput_1 = require("./handleIndentInput"); /** * Creates an advanced text field key handler, which can be used for complete editors * @param textField The text field to create the handler for * @param context The context that the handler is used in * @param config Extra configuration * @returns The key handler that can be added to the input handler stack */ function createAdvancedTextFieldKeyHandler(textField, context, { multiline = true, onExit, createExtraHandler, indentCharacter = " ".repeat(4), } = {}) { const settings = context.settings.get(baseSettings_1.baseSettings).controls; const fieldSettings = settings.field; /** * Retrieves a keyboard handler for advanced keyboard behavior * @param undoableTextField The undoable text field * @param handleUndoRedoInput The key handler that handles the user's undo/redo inputs * @returns The advanced key input handler */ const getAdvancedKeyHandlers = (undoableTextField, handleUndoRedoInput) => (e) => { if (handleIndentInput_1.handleIndentInput(e, undoableTextField, fieldSettings, indentCharacter)) return true; if (multiline) { if (handleVerticalCursorInput_1.handleVerticalCursorInput(e, undoableTextField, fieldSettings)) return true; if (handleNewlineInput_1.handleNewlineInput(e, undoableTextField, fieldSettings)) return true; } if (handleUndoRedoInput === null || handleUndoRedoInput === void 0 ? void 0 : handleUndoRedoInput(e)) return true; }; // Use the `createUndoableTextFieldHandler` and `createTextFieldHandler` to combine all behaviors return createUndoableTextFieldKeyHandler_1.createUndoableTextFieldKeyHandler(textField, context, ({ onEditCommand, undoableTextField, handleUndoRedoInput }) => createStandardTextFieldKeyHandler_1.createStandardTextFieldKeyHandler({ textField, onChange: onEditCommand }, context, { onExit, extraHandler: mergeKeyListeners_1.mergeKeyListeners(getAdvancedKeyHandlers(undoableTextField, handleUndoRedoInput), createExtraHandler === null || createExtraHandler === void 0 ? void 0 : createExtraHandler({ onEditCommand, undoableTextField })), })); } exports.createAdvancedTextFieldKeyHandler = createAdvancedTextFieldKeyHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQWR2YW5jZWRUZXh0RmllbGRLZXlIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RleHRGaWVsZHMvaW50ZXJhY3Rpb24vYWR2YW5jZWQva2V5aGFuZGxlci9jcmVhdGVBZHZhbmNlZFRleHRGaWVsZEtleUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkZBQXdGO0FBR3hGLGdGQUEyRTtBQUkzRSwwR0FBcUc7QUFDckcsNEVBQXVFO0FBQ3ZFLDBGQUFxRjtBQUVyRiwyRkFBc0Y7QUFDdEYsMkRBQXNEO0FBRXREOzs7Ozs7R0FNRztBQUNILFNBQWdCLGlDQUFpQyxDQUM3QyxTQUFxQixFQUNyQixPQUFtQixFQUNuQixFQUNJLFNBQVMsR0FBRyxJQUFJLEVBQ2hCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsZUFBZSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BYS9CLEVBQUU7SUFFTixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBWSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzdELE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFFckM7Ozs7O09BS0c7SUFDSCxNQUFNLHNCQUFzQixHQUN4QixDQUFDLGlCQUFrQyxFQUFFLG1CQUF1QyxFQUFFLEVBQUUsQ0FDaEYsQ0FBQyxDQUFXLEVBQUUsRUFBRTtRQUNaLElBQUkscUNBQWlCLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7WUFDdkUsT0FBTyxJQUFJLENBQUM7UUFDaEIsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLHFEQUF5QixDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLElBQUksdUNBQWtCLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztTQUM1RTtRQUNELElBQUksbUJBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUcsQ0FBQztZQUFHLE9BQU8sSUFBSSxDQUFDO0lBQzlDLENBQUMsQ0FBQztJQUVOLGlHQUFpRztJQUNqRyxPQUFPLHFFQUFpQyxDQUNwQyxTQUFTLEVBQ1QsT0FBTyxFQUNQLENBQUMsRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsRUFBRSxFQUFFLENBQ3hELHFFQUFpQyxDQUM3QixFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFDLEVBQ3BDLE9BQU8sRUFDUDtRQUNJLE1BQU07UUFDTixZQUFZLEVBQUUscUNBQWlCLENBQzNCLHNCQUFzQixDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLEVBQzlELGtCQUFrQixhQUFsQixrQkFBa0IsdUJBQWxCLGtCQUFrQixDQUFHLEVBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFDLEVBQzFEO0tBQ0osQ0FDSixDQUNSLENBQUM7QUFDTixDQUFDO0FBN0RELDhFQTZEQyJ9