@launchmenu/core
Version:
An environment for visual keyboard controlled applets
41 lines • 3.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.moveCursorVertical = void 0;
const rangeConversion_1 = require("../utils/rangeConversion");
/**
* Moves 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
*/
function moveCursorVertical(textField, direction = 1, expandSelection) {
const selection = textField.getSelection();
const text = textField.get();
// 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);
// Update the selection
textField.setSelection({ start: startIndex, end: endIndex });
}
exports.moveCursorVertical = moveCursorVertical;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZUN1cnNvclZlcnRpY2FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RleHRGaWVsZHMvaW50ZXJhY3Rpb24vbW92ZUN1cnNvclZlcnRpY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDhEQUFnRTtBQUVoRTs7Ozs7R0FLRztBQUNILFNBQWdCLGtCQUFrQixDQUM5QixTQUFxQixFQUNyQixZQUFvQixDQUFDLEVBQ3JCLGVBQXlCO0lBRXpCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFN0IsMENBQTBDO0lBQzFDLElBQUksVUFBVSxHQUFHLDRCQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxJQUFJLFFBQVEsR0FBRyw0QkFBVSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFL0MsMERBQTBEO0lBQzFELElBQUksZUFBZTtRQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDO0lBQy9DLHVDQUF1QztTQUNsQztRQUNELElBQUksS0FBb0MsQ0FBQztRQUN6QyxJQUFJLFNBQVMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLFNBQVMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSztnQkFBRSxLQUFLLEdBQUcsUUFBUSxDQUFDOztnQkFDbEUsS0FBSyxHQUFHLFVBQVUsQ0FBQztTQUMzQjs7WUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBRXhCLEtBQUssQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDO1FBQ3ZCLFVBQVUsR0FBRyxRQUFRLEdBQUcsS0FBSyxDQUFDO0tBQ2pDO0lBRUQsMENBQTBDO0lBQzFDLE1BQU0sVUFBVSxHQUFHLDRCQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sUUFBUSxHQUFHLDRCQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTVDLHVCQUF1QjtJQUN2QixTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBaENELGdEQWdDQyJ9