UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

48 lines 4.17 kB
"use strict"; 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==