@launchmenu/core
Version:
An environment for visual keyboard controlled applets
48 lines • 4.17 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.MoveCursorVerticalCommand = void 0;
const rangeConversion_1 = require("../../utils/rangeConversion");
const retrieveArgument_1 = require("./retrieveArgument");
const TextEditCommand_1 = require("./TextEditCommand");
/** A command to move the cursor vertically */
class MoveCursorVerticalCommand extends TextEditCommand_1.TextEditCommand {
/**
* Creates a new command to move the cursor vertically (up or down, positive is down)
* @param textField The text field ot move the cursor for
* @param direction The movement direction
* @param expandSelection Whether to alter the current text selection
*/
constructor(textField, direction = 1, expandSelection) {
super(textField, ({ selection, text }) => {
direction = retrieveArgument_1.retrieveArgument(direction);
expandSelection = retrieveArgument_1.retrieveArgument(expandSelection);
// Get a point representation of the index
let startPoint = rangeConversion_1.get2dIndex(text, selection.start);
let endPoint = rangeConversion_1.get2dIndex(text, selection.end);
// If we want to expand the selection, only change the end
if (expandSelection)
endPoint.row += direction;
// Otherwise move both to the end index
else {
let point;
if (selection.start != selection.end) {
if (direction > 0 == selection.end > selection.start)
point = endPoint;
else
point = startPoint;
}
else
point = endPoint;
point.row += direction;
startPoint = endPoint = point;
}
// Convert back to 1d index representation
const startIndex = rangeConversion_1.get1dIndex(text, startPoint);
const endIndex = rangeConversion_1.get1dIndex(text, endPoint);
// Return the nee changes and new selection
return { selection: { start: startIndex, end: endIndex } };
}, { isSelectionChange: true });
}
}
exports.MoveCursorVerticalCommand = MoveCursorVerticalCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW92ZUN1cnNvclZlcnRpY2FsQ29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXh0RmllbGRzL2ludGVyYWN0aW9uL2NvbW1hbmRzL01vdmVDdXJzb3JWZXJ0aWNhbENvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUVBQW1FO0FBRW5FLHlEQUFvRDtBQUNwRCx1REFBa0Q7QUFHbEQsOENBQThDO0FBQzlDLE1BQWEseUJBQTBCLFNBQVEsaUNBQWU7SUFDMUQ7Ozs7O09BS0c7SUFDSCxZQUNJLFNBQXFCLEVBQ3JCLFlBQTBDLENBQUMsRUFDM0MsZUFBK0M7UUFFL0MsS0FBSyxDQUNELFNBQVMsRUFDVCxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxFQUFFLEVBQUU7WUFDbEIsU0FBUyxHQUFHLG1DQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLGVBQWUsR0FBRyxtQ0FBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUVwRCwwQ0FBMEM7WUFDMUMsSUFBSSxVQUFVLEdBQUcsNEJBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25ELElBQUksUUFBUSxHQUFHLDRCQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUvQywwREFBMEQ7WUFDMUQsSUFBSSxlQUFlO2dCQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDO1lBQy9DLHVDQUF1QztpQkFDbEM7Z0JBQ0QsSUFBSSxLQUFvQyxDQUFDO2dCQUN6QyxJQUFJLFNBQVMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDbEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEtBQUs7d0JBQ2hELEtBQUssR0FBRyxRQUFRLENBQUM7O3dCQUNoQixLQUFLLEdBQUcsVUFBVSxDQUFDO2lCQUMzQjs7b0JBQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFFeEIsS0FBSyxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUM7Z0JBQ3ZCLFVBQVUsR0FBRyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ2pDO1lBRUQsMENBQTBDO1lBQzFDLE1BQU0sVUFBVSxHQUFHLDRCQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sUUFBUSxHQUFHLDRCQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRTVDLDJDQUEyQztZQUMzQyxPQUFPLEVBQUMsU0FBUyxFQUFFLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFDLEVBQUMsQ0FBQztRQUMzRCxDQUFDLEVBQ0QsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUMsQ0FDNUIsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQS9DRCw4REErQ0MifQ==
;