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;
							 |