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
						
					
					
						
							727 B
						
					
					
				
			
		
		
	
	
							21 lines
						
					
					
						
							727 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 | 
						|
  }; | 
						|
}; |