UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

48 lines 3.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MoveCursorHorizontalCommand = void 0; const getJumpTokenPos_1 = require("../getJumpTokenPos"); const retrieveArgument_1 = require("./retrieveArgument"); const TextEditCommand_1 = require("./TextEditCommand"); /** A command to move the cursor horizontally */ class MoveCursorHorizontalCommand extends TextEditCommand_1.TextEditCommand { /** * Creates a new command to move the cursor horizontally (left or right, positive is right) * @param textField The text field ot move the cursor for * @param direction The movement direction * @param expandSelection Whether to alter the current text selection * @param jumpWord Whether to jump a whole word (moving a word incros instead of a character) */ constructor(textField, direction = 1, expandSelection, jumpWord) { super(textField, ({ selection, text }) => { direction = retrieveArgument_1.retrieveArgument(direction); expandSelection = retrieveArgument_1.retrieveArgument(expandSelection); jumpWord = retrieveArgument_1.retrieveArgument(jumpWord); // Determine the position to jump to let end; if (jumpWord) end = getJumpTokenPos_1.getJumpTokenPos(text, selection.end, direction); else end = selection.end + direction; // If we want to expand the selection, only change the end if (expandSelection) return { selection: { start: selection.start, end, }, }; // Otherwise move both to the end index else { let index; if (selection.start != selection.end) index = Math[direction > 0 ? "max" : "min"](selection.end, selection.start); else index = end; return { selection: { start: index, end: index } }; } }, { isSelectionChange: true }); } } exports.MoveCursorHorizontalCommand = MoveCursorHorizontalCommand; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW92ZUN1cnNvckhvcml6b250YWxDb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RleHRGaWVsZHMvaW50ZXJhY3Rpb24vY29tbWFuZHMvTW92ZUN1cnNvckhvcml6b250YWxDb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHdEQUFtRDtBQUNuRCx5REFBb0Q7QUFDcEQsdURBQWtEO0FBR2xELGdEQUFnRDtBQUNoRCxNQUFhLDJCQUE0QixTQUFRLGlDQUFlO0lBQzVEOzs7Ozs7T0FNRztJQUNILFlBQ0ksU0FBcUIsRUFDckIsWUFBMEMsQ0FBQyxFQUMzQyxlQUErQyxFQUMvQyxRQUF3QztRQUV4QyxLQUFLLENBQ0QsU0FBUyxFQUNULENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLEVBQUUsRUFBRTtZQUNsQixTQUFTLEdBQUcsbUNBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsZUFBZSxHQUFHLG1DQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BELFFBQVEsR0FBRyxtQ0FBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0QyxvQ0FBb0M7WUFDcEMsSUFBSSxHQUFXLENBQUM7WUFDaEIsSUFBSSxRQUFRO2dCQUFFLEdBQUcsR0FBRyxpQ0FBZSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDOztnQkFDL0QsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO1lBRXJDLDBEQUEwRDtZQUMxRCxJQUFJLGVBQWU7Z0JBQ2YsT0FBTztvQkFDSCxTQUFTLEVBQUU7d0JBQ1AsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO3dCQUN0QixHQUFHO3FCQUNOO2lCQUNKLENBQUM7WUFDTix1Q0FBdUM7aUJBQ2xDO2dCQUNELElBQUksS0FBYSxDQUFDO2dCQUNsQixJQUFJLFNBQVMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLEdBQUc7b0JBQ2hDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDdkMsU0FBUyxDQUFDLEdBQUcsRUFDYixTQUFTLENBQUMsS0FBSyxDQUNsQixDQUFDOztvQkFDRCxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUVqQixPQUFPLEVBQUMsU0FBUyxFQUFFLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQzthQUNsRDtRQUNMLENBQUMsRUFDRCxFQUFDLGlCQUFpQixFQUFFLElBQUksRUFBQyxDQUM1QixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBbERELGtFQWtEQyJ9