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