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