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.
		
		
		
		
		
			
		
			
				
					34 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					34 lines
				
				1.0 KiB
			| 
											3 years ago
										 | /* Built-in method references for those with the same name as other `lodash` methods. */ | ||
|  | var nativeMax = Math.max, | ||
|  |     nativeMin = Math.min; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Gets the view, applying any `transforms` to the `start` and `end` positions. | ||
|  |  * | ||
|  |  * @private | ||
|  |  * @param {number} start The start of the view. | ||
|  |  * @param {number} end The end of the view. | ||
|  |  * @param {Array} transforms The transformations to apply to the view. | ||
|  |  * @returns {Object} Returns an object containing the `start` and `end` | ||
|  |  *  positions of the view. | ||
|  |  */ | ||
|  | function getView(start, end, transforms) { | ||
|  |   var index = -1, | ||
|  |       length = transforms.length; | ||
|  | 
 | ||
|  |   while (++index < length) { | ||
|  |     var data = transforms[index], | ||
|  |         size = data.size; | ||
|  | 
 | ||
|  |     switch (data.type) { | ||
|  |       case 'drop':      start += size; break; | ||
|  |       case 'dropRight': end -= size; break; | ||
|  |       case 'take':      end = nativeMin(end, start + size); break; | ||
|  |       case 'takeRight': start = nativeMax(start, end - size); break; | ||
|  |     } | ||
|  |   } | ||
|  |   return { 'start': start, 'end': end }; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = getView; |