You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
721 B
21 lines
721 B
'use strict'; |
|
|
|
/** |
|
* Determine what entries should be displayed on the screen, based on the |
|
* currently selected index and the maximum visible. Used in list-based |
|
* prompts like `select` and `multiselect`. |
|
* |
|
* @param {number} cursor the currently selected entry |
|
* @param {number} total the total entries available to display |
|
* @param {number} [maxVisible] the number of entries that can be displayed |
|
*/ |
|
module.exports = (cursor, total, maxVisible) => { |
|
maxVisible = maxVisible || total; |
|
|
|
let startIndex = Math.min(total- maxVisible, cursor - Math.floor(maxVisible / 2)); |
|
if (startIndex < 0) startIndex = 0; |
|
|
|
let endIndex = Math.min(startIndex + maxVisible, total); |
|
|
|
return { startIndex, endIndex }; |
|
};
|
|
|