@launchmenu/core
Version:
An environment for visual keyboard controlled applets
46 lines • 4.99 kB
JavaScript
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
;