diff --git a/README.md b/README.md
index b734ad3..18bbcfa 100644
--- a/README.md
+++ b/README.md
@@ -478,6 +478,9 @@ Pull Request should include source code (./scr) changes, may include tests (./te
## Change log
+### v1.9.1
+ * Fixed ES5 build.
+
### v1.9.0
* Webpack 5 build.
diff --git a/bower.json b/bower.json
index b2f6355..e1e021d 100644
--- a/bower.json
+++ b/bower.json
@@ -1,7 +1,7 @@
{
"name": "angular-ui-scroll",
"description": "AngularJS infinite scrolling module",
- "version": "1.9.0",
+ "version": "1.9.1",
"main": "./dist/ui-scroll.js",
"homepage": "https://github.com/angular-ui/ui-scroll.git",
"license": "MIT",
diff --git a/dist/ui-scroll-grid.js b/dist/ui-scroll-grid.js
index c3f72b1..afd2a7b 100644
--- a/dist/ui-scroll-grid.js
+++ b/dist/ui-scroll-grid.js
@@ -1,10 +1,10 @@
/*!
* angular-ui-scroll
* https://github.com/angular-ui/ui-scroll
- * Version: 1.9.0 -- 2023-04-19T12:05:19.939Z
+ * Version: 1.9.1 -- 2023-05-17T15:38:46.936Z
* License: MIT
*/
-/******/ (() => { // webpackBootstrap
+/******/ (function() { // webpackBootstrap
var __webpack_exports__ = {};
angular.module('ui.scroll.grid', []).directive('uiScrollTh', ['$log', '$timeout', function (console, $timeout) {
function GridAdapter(controller) {
diff --git a/dist/ui-scroll.js b/dist/ui-scroll.js
index cd26995..0800d7c 100644
--- a/dist/ui-scroll.js
+++ b/dist/ui-scroll.js
@@ -1,10 +1,10 @@
/*!
* angular-ui-scroll
* https://github.com/angular-ui/ui-scroll
- * Version: 1.9.0 -- 2023-04-19T12:05:19.939Z
+ * Version: 1.9.1 -- 2023-05-17T15:38:46.936Z
* License: MIT
*/
-/******/ (() => { // webpackBootstrap
+/******/ (function() { // webpackBootstrap
/******/ "use strict";
var __webpack_exports__ = {};
@@ -637,7 +637,7 @@ var Padding = /*#__PURE__*/function () {
}]);
return Padding;
}();
-/* harmony default export */ const modules_padding = (Padding);
+/* harmony default export */ var modules_padding = (Padding);
;// CONCATENATED MODULE: ./src/modules/viewport.js
function Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding) {
@@ -1098,7 +1098,7 @@ var Adapter = /*#__PURE__*/function () {
}]);
return Adapter;
}();
-/* harmony default export */ const modules_adapter = (Adapter);
+/* harmony default export */ var modules_adapter = (Adapter);
;// CONCATENATED MODULE: ./src/ui-scroll.js
diff --git a/dist/ui-scroll.js.map b/dist/ui-scroll.js.map
index d509e2e..ff633fb 100644
--- a/dist/ui-scroll.js.map
+++ b/dist/ui-scroll.js.map
@@ -1 +1 @@
-{"version":3,"file":"ui-scroll.js","mappings":"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","sources":["webpack://angular-ui-scroll/./src/modules/jqLiteExtras.js","webpack://angular-ui-scroll/./src/modules/elementRoutines.js","webpack://angular-ui-scroll/./src/modules/utils.js","webpack://angular-ui-scroll/./src/modules/buffer.js","webpack://angular-ui-scroll/./src/modules/padding.js","webpack://angular-ui-scroll/./src/modules/viewport.js","webpack://angular-ui-scroll/./src/modules/adapter.js","webpack://angular-ui-scroll/./src/ui-scroll.js"],"sourcesContent":["/*!\r\n globals: angular, window\r\n List of used element methods available in JQuery but not in JQuery Lite\r\n element.before(elem)\r\n element.height()\r\n element.outerHeight(true)\r\n element.height(value) = only for Top/Bottom padding elements\r\n element.scrollTop()\r\n element.scrollTop(value)\r\n */\r\n\r\nexport default class JQLiteExtras {\r\n\r\n registerFor(element) {\r\n let convertToPx, css, getStyle, isWindow;\r\n // angular implementation blows up if elem is the window\r\n css = angular.element.prototype.css;\r\n\r\n element.prototype.css = function (name, value) {\r\n let self = this;\r\n let elem = self[0];\r\n if (!(!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style)) {\r\n return css.call(self, name, value);\r\n }\r\n };\r\n\r\n // as defined in angularjs v1.0.5\r\n isWindow = (obj) => obj && obj.document && obj.location && obj.alert && obj.setInterval;\r\n\r\n function scrollTo(self, direction, value) {\r\n let elem = self[0];\r\n let [method, prop, preserve] = {\r\n top: [\r\n 'scrollTop',\r\n 'pageYOffset',\r\n 'scrollLeft'\r\n ],\r\n left: [\r\n 'scrollLeft',\r\n 'pageXOffset',\r\n 'scrollTop'\r\n ]\r\n }[direction];\r\n\r\n const isValueDefined = typeof value !== 'undefined';\r\n if (isWindow(elem)) {\r\n if (isValueDefined) {\r\n return elem.scrollTo(self[preserve].call(self), value);\r\n }\r\n return (prop in elem) ? elem[prop] : elem.document.documentElement[method];\r\n } else {\r\n if (isValueDefined) {\r\n elem[method] = value;\r\n }\r\n return elem[method];\r\n }\r\n }\r\n\r\n if (window.getComputedStyle) {\r\n getStyle = (elem) => window.getComputedStyle(elem, null);\r\n convertToPx = (elem, value) => parseFloat(value);\r\n } else {\r\n getStyle = (elem) => elem.currentStyle;\r\n convertToPx = (elem, value) => {\r\n let left, result, rs, rsLeft, style;\r\n let core_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\r\n let rnumnonpx = new RegExp('^(' + core_pnum + ')(?!px)[a-z%]+$', 'i');\r\n\r\n if (!rnumnonpx.test(value)) {\r\n return parseFloat(value);\r\n }\r\n\r\n // ported from JQuery\r\n style = elem.style;\r\n left = style.left;\r\n rs = elem.runtimeStyle;\r\n rsLeft = rs && rs.left;\r\n if (rs) {\r\n rs.left = style.left;\r\n }\r\n // put in the new values to get a computed style out\r\n style.left = value;\r\n result = style.pixelLeft;\r\n style.left = left;\r\n if (rsLeft) {\r\n rs.left = rsLeft;\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n function getMeasurements(elem, measure) {\r\n let base, borderA, borderB, computedMarginA, computedMarginB, computedStyle, dirA, dirB, marginA, marginB, paddingA, paddingB;\r\n\r\n if (isWindow(elem)) {\r\n base = document.documentElement[{height: 'clientHeight', width: 'clientWidth'}[measure]];\r\n\r\n return {\r\n base: base,\r\n padding: 0,\r\n border: 0,\r\n margin: 0\r\n };\r\n }\r\n\r\n // Start with offset property\r\n [\r\n base,\r\n dirA,\r\n dirB\r\n ] = {\r\n width: [\r\n elem.offsetWidth,\r\n 'Left',\r\n 'Right'\r\n ],\r\n height: [\r\n elem.offsetHeight,\r\n 'Top',\r\n 'Bottom'\r\n ]\r\n }[measure];\r\n\r\n computedStyle = getStyle(elem);\r\n paddingA = convertToPx(elem, computedStyle['padding' + dirA]) || 0;\r\n paddingB = convertToPx(elem, computedStyle['padding' + dirB]) || 0;\r\n borderA = convertToPx(elem, computedStyle['border' + dirA + 'Width']) || 0;\r\n borderB = convertToPx(elem, computedStyle['border' + dirB + 'Width']) || 0;\r\n computedMarginA = computedStyle['margin' + dirA];\r\n computedMarginB = computedStyle['margin' + dirB];\r\n\r\n // I do not care for width for now, so this hack is irrelevant\r\n // if ( !supportsPercentMargin )\r\n // computedMarginA = hackPercentMargin( elem, computedStyle, computedMarginA )\r\n // computedMarginB = hackPercentMargin( elem, computedStyle, computedMarginB )\r\n marginA = convertToPx(elem, computedMarginA) || 0;\r\n marginB = convertToPx(elem, computedMarginB) || 0;\r\n\r\n return {\r\n base: base,\r\n padding: paddingA + paddingB,\r\n border: borderA + borderB,\r\n margin: marginA + marginB\r\n };\r\n }\r\n\r\n function getWidthHeight(elem, direction, measure) {\r\n let computedStyle, result;\r\n\r\n let measurements = getMeasurements(elem, direction);\r\n\r\n if (measurements.base > 0) {\r\n return {\r\n base: measurements.base - measurements.padding - measurements.border,\r\n outer: measurements.base,\r\n outerfull: measurements.base + measurements.margin\r\n }[measure];\r\n }\r\n\r\n // Fall back to computed then uncomputed css if necessary\r\n computedStyle = getStyle(elem);\r\n result = computedStyle[direction];\r\n\r\n if (result < 0 || result === null) {\r\n result = elem.style[direction] || 0;\r\n }\r\n\r\n // Normalize \"\", auto, and prepare for extra\r\n result = parseFloat(result) || 0;\r\n\r\n return {\r\n base: result - measurements.padding - measurements.border,\r\n outer: result,\r\n outerfull: result + measurements.padding + measurements.border + measurements.margin\r\n }[measure];\r\n }\r\n\r\n // define missing methods\r\n return angular.forEach({\r\n before(newElem) {\r\n var children, elem, i, j, parent, ref, self;\r\n self = this;\r\n elem = self[0];\r\n parent = self.parent();\r\n children = parent.contents();\r\n if (children[0] === elem) {\r\n return parent.prepend(newElem);\r\n } else {\r\n for (i = j = 1, ref = children.length - 1; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\r\n if (children[i] === elem) {\r\n angular.element(children[i - 1]).after(newElem);\r\n return;\r\n }\r\n }\r\n throw new Error('invalid DOM structure ' + elem.outerHTML);\r\n }\r\n },\r\n height (value){\r\n var self;\r\n self = this;\r\n if (typeof value !== 'undefined') {\r\n if (angular.isNumber(value)) {\r\n value = value + 'px';\r\n }\r\n return css.call(self, 'height', value);\r\n } else {\r\n return getWidthHeight(this[0], 'height', 'base');\r\n }\r\n },\r\n outerHeight(option) {\r\n return getWidthHeight(this[0], 'height', option ? 'outerfull' : 'outer');\r\n },\r\n outerWidth(option) {\r\n return getWidthHeight(this[0], 'width', option ? 'outerfull' : 'outer');\r\n },\r\n\r\n /*\r\n The offset setter method is not implemented\r\n */\r\n offset(value) {\r\n let docElem, win;\r\n let self = this;\r\n let box = {\r\n top: 0,\r\n left: 0\r\n };\r\n let elem = self[0];\r\n let doc = elem && elem.ownerDocument;\r\n\r\n if (arguments.length) {\r\n if (value === undefined) {\r\n return self;\r\n }\r\n // TODO: implement setter\r\n throw new Error('offset setter method is not implemented');\r\n }\r\n\r\n if (!doc) {\r\n return;\r\n }\r\n\r\n docElem = doc.documentElement;\r\n\r\n // TODO: Make sure it's not a disconnected DOM node\r\n\r\n if (elem.getBoundingClientRect != null) {\r\n box = elem.getBoundingClientRect();\r\n }\r\n\r\n win = doc.defaultView || doc.parentWindow;\r\n\r\n return {\r\n top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\r\n left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)\r\n };\r\n },\r\n scrollTop(value) {\r\n return scrollTo(this, 'top', value);\r\n },\r\n scrollLeft(value) {\r\n return scrollTo(this, 'left', value);\r\n }\r\n }, (value, key) => {\r\n if (!element.prototype[key]) {\r\n return element.prototype[key] = value;\r\n }\r\n });\r\n }\r\n\r\n}\r\n","const hideClassToken = 'ng-ui-scroll-hide';\r\n\r\nexport default class ElementRoutines {\r\n\r\n static addCSSRules() {\r\n const selector = '.' + hideClassToken;\r\n const rules = 'display: none';\r\n const sheet = document.styleSheets[0];\r\n let index;\r\n try {\r\n index = sheet.cssRules.length;\r\n } catch (err) {\r\n index = 0;\r\n }\r\n if('insertRule' in sheet) {\r\n sheet.insertRule(selector + '{' + rules + '}', index);\r\n }\r\n else if('addRule' in sheet) {\r\n sheet.addRule(selector, rules, index);\r\n }\r\n }\r\n\r\n constructor($injector, $q) {\r\n this.$animate = ($injector.has && $injector.has('$animate')) ? $injector.get('$animate') : null;\r\n this.isAngularVersionLessThen1_3 = angular.version.major === 1 && angular.version.minor < 3;\r\n this.$q = $q;\r\n }\r\n\r\n hideElement(wrapper) {\r\n wrapper.element.addClass(hideClassToken);\r\n }\r\n\r\n showElement(wrapper) {\r\n wrapper.element.removeClass(hideClassToken);\r\n }\r\n\r\n insertElement(newElement, previousElement) {\r\n previousElement.after(newElement);\r\n return [];\r\n }\r\n\r\n removeElement(wrapper) {\r\n wrapper.element.remove();\r\n wrapper.scope.$destroy();\r\n return [];\r\n }\r\n\r\n insertElementAnimated(newElement, previousElement) {\r\n if (!this.$animate) {\r\n return this.insertElement(newElement, previousElement);\r\n }\r\n\r\n if (this.isAngularVersionLessThen1_3) {\r\n const deferred = this.$q.defer();\r\n // no need for parent - previous element is never null\r\n this.$animate.enter(newElement, null, previousElement, () => deferred.resolve());\r\n\r\n return [deferred.promise];\r\n }\r\n\r\n // no need for parent - previous element is never null\r\n return [this.$animate.enter(newElement, null, previousElement)];\r\n }\r\n\r\n removeElementAnimated(wrapper) {\r\n if (!this.$animate) {\r\n return this.removeElement(wrapper);\r\n }\r\n\r\n if (this.isAngularVersionLessThen1_3) {\r\n const deferred = this.$q.defer();\r\n this.$animate.leave(wrapper.element, () => {\r\n wrapper.scope.$destroy();\r\n return deferred.resolve();\r\n });\r\n\r\n return [deferred.promise];\r\n }\r\n\r\n return [(this.$animate.leave(wrapper.element)).then(() => wrapper.scope.$destroy())];\r\n }\r\n}","export const OPERATIONS = {\r\n PREPEND: 'prepend',\r\n APPEND: 'append',\r\n INSERT: 'insert',\r\n REMOVE: 'remove',\r\n NONE: 'none'\r\n};\r\n","import { OPERATIONS } from './utils';\r\n\r\nexport default function ScrollBuffer(elementRoutines, bufferSize, startIndex) {\r\n const buffer = Object.create(Array.prototype);\r\n\r\n angular.extend(buffer, {\r\n size: bufferSize,\r\n\r\n reset(startIndex) {\r\n buffer.remove(0, buffer.length);\r\n buffer.eof = false;\r\n buffer.bof = false;\r\n buffer.first = startIndex;\r\n buffer.next = startIndex;\r\n buffer.minIndex = startIndex;\r\n buffer.maxIndex = startIndex;\r\n buffer.minIndexUser = null;\r\n buffer.maxIndexUser = null;\r\n },\r\n\r\n append(items) {\r\n items.forEach((item) => {\r\n ++buffer.next;\r\n buffer.insert(OPERATIONS.APPEND, item);\r\n });\r\n buffer.maxIndex = buffer.eof ? buffer.next - 1 : Math.max(buffer.next - 1, buffer.maxIndex);\r\n },\r\n\r\n prepend(items, immutableTop) {\r\n items.reverse().forEach((item) => {\r\n if (immutableTop) {\r\n ++buffer.next;\r\n }\r\n else {\r\n --buffer.first;\r\n }\r\n buffer.insert(OPERATIONS.PREPEND, item);\r\n });\r\n buffer.minIndex = buffer.bof ? buffer.minIndex = buffer.first : Math.min(buffer.first, buffer.minIndex);\r\n },\r\n\r\n /**\r\n * inserts wrapped element in the buffer\r\n * the first argument is either operation keyword (see below) or a number for operation 'insert'\r\n * for insert the number is the index for the buffer element the new one have to be inserted after\r\n * operations: 'append', 'prepend', 'insert', 'remove', 'none'\r\n */\r\n insert(operation, item, shiftTop) {\r\n const wrapper = {\r\n item: item\r\n };\r\n\r\n if (operation % 1 === 0) { // it is an insert\r\n wrapper.op = OPERATIONS.INSERT;\r\n buffer.splice(operation, 0, wrapper);\r\n if (shiftTop) {\r\n buffer.first--;\r\n }\r\n else {\r\n buffer.next++;\r\n }\r\n } else {\r\n wrapper.op = operation;\r\n switch (operation) {\r\n case OPERATIONS.APPEND:\r\n buffer.push(wrapper);\r\n break;\r\n case OPERATIONS.PREPEND:\r\n buffer.unshift(wrapper);\r\n break;\r\n }\r\n }\r\n },\r\n\r\n // removes elements from buffer\r\n remove(arg1, arg2) {\r\n if (angular.isNumber(arg1)) {\r\n // removes items from arg1 (including) through arg2 (excluding)\r\n for (let i = arg1; i < arg2; i++) {\r\n elementRoutines.removeElement(buffer[i]);\r\n }\r\n return buffer.splice(arg1, arg2 - arg1);\r\n }\r\n // removes single item (wrapper) from the buffer\r\n buffer.splice(buffer.indexOf(arg1), 1);\r\n if (arg1.shiftTop && buffer.first === this.getAbsMinIndex()) {\r\n this.incrementMinIndex();\r\n }\r\n else {\r\n this.decrementMaxIndex();\r\n }\r\n if (arg1.shiftTop) {\r\n buffer.first++;\r\n }\r\n else {\r\n buffer.next--;\r\n }\r\n if (!buffer.length) {\r\n buffer.minIndex = Math.min(buffer.maxIndex, buffer.minIndex);\r\n }\r\n\r\n return elementRoutines.removeElementAnimated(arg1);\r\n },\r\n\r\n incrementMinIndex() {\r\n if (buffer.minIndexUser !== null) {\r\n if (buffer.minIndex > buffer.minIndexUser) {\r\n buffer.minIndexUser++;\r\n return;\r\n }\r\n if (buffer.minIndex === buffer.minIndexUser) {\r\n buffer.minIndexUser++;\r\n }\r\n }\r\n buffer.minIndex++;\r\n },\r\n\r\n decrementMaxIndex() {\r\n if (buffer.maxIndexUser !== null && buffer.maxIndex <= buffer.maxIndexUser) {\r\n buffer.maxIndexUser--;\r\n }\r\n buffer.maxIndex--;\r\n },\r\n\r\n getAbsMinIndex() {\r\n if (buffer.minIndexUser !== null) {\r\n return Math.min(buffer.minIndexUser, buffer.minIndex);\r\n }\r\n return buffer.minIndex;\r\n },\r\n\r\n getAbsMaxIndex() {\r\n if (buffer.maxIndexUser !== null) {\r\n return Math.max(buffer.maxIndexUser, buffer.maxIndex);\r\n }\r\n return buffer.maxIndex;\r\n },\r\n\r\n effectiveHeight(elements) {\r\n if (!elements.length) {\r\n return 0;\r\n }\r\n let top = Number.MAX_VALUE;\r\n let bottom = Number.NEGATIVE_INFINITY;\r\n elements.forEach((wrapper) => {\r\n if (wrapper.element[0].offsetParent) {\r\n // element style is not display:none\r\n top = Math.min(top, wrapper.element.offset().top);\r\n bottom = Math.max(bottom, wrapper.element.offset().top + wrapper.element.outerHeight(true));\r\n }\r\n });\r\n return Math.max(0, bottom - top);\r\n },\r\n\r\n getItems() {\r\n return buffer.filter(item => item.op === OPERATIONS.NONE);\r\n },\r\n\r\n getFirstItem() {\r\n const list = buffer.getItems();\r\n if (!list.length) {\r\n return null;\r\n }\r\n return list[0].item;\r\n },\r\n\r\n getLastItem() {\r\n const list = buffer.getItems();\r\n if (!list.length) {\r\n return null;\r\n }\r\n return list[list.length - 1].item;\r\n }\r\n\r\n });\r\n\r\n buffer.reset(startIndex);\r\n\r\n return buffer;\r\n}\r\n","// Can't just extend the Array, due to Babel does not support built-in classes extending\r\n// This solution was taken from https://stackoverflow.com/questions/46897414/es6-class-extends-array-workaround-for-es5-babel-transpile\r\nclass CacheProto {\r\n add(item) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index === item.scope.$index) {\r\n this[i].height = item.element.outerHeight();\r\n return;\r\n }\r\n }\r\n this.push({\r\n index: item.scope.$index,\r\n height: item.element.outerHeight()\r\n });\r\n this.sort((a, b) => ((a.index < b.index) ? -1 : ((a.index > b.index) ? 1 : 0)));\r\n }\r\n\r\n remove(argument, _shiftTop) {\r\n const index = argument % 1 === 0 ? argument : argument.scope.$index;\r\n const shiftTop = argument % 1 === 0 ? _shiftTop : argument.shiftTop;\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index === index) {\r\n this.splice(i, 1);\r\n break;\r\n }\r\n }\r\n if (!shiftTop) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index > index) {\r\n this[i].index--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n clear() {\r\n this.length = 0;\r\n }\r\n}\r\n\r\nfunction Cache() {\r\n const instance = [];\r\n instance.push.apply(instance, arguments);\r\n Object.setPrototypeOf(instance, Cache.prototype);\r\n return instance;\r\n}\r\nCache.prototype = Object.create(Array.prototype);\r\nObject.getOwnPropertyNames(CacheProto.prototype).forEach(methodName =>\r\n Cache.prototype[methodName] = CacheProto.prototype[methodName]\r\n);\r\n\r\nfunction generateElement(template) {\r\n if (template.nodeType !== Node.ELEMENT_NODE) {\r\n throw new Error('ui-scroll directive requires an Element node for templating the view');\r\n }\r\n let element;\r\n switch (template.tagName.toLowerCase()) {\r\n case 'dl':\r\n throw new Error(`ui-scroll directive does not support <${template.tagName}> as a repeating tag: ${template.outerHTML}`);\r\n case 'tr':\r\n let table = angular.element('
');\r\n element = table.find('tr');\r\n break;\r\n case 'li':\r\n element = angular.element('');\r\n break;\r\n default:\r\n element = angular.element('');\r\n }\r\n return element;\r\n}\r\n\r\nclass Padding {\r\n constructor(template) {\r\n this.element = generateElement(template);\r\n this.cache = new Cache();\r\n }\r\n\r\n height() {\r\n return this.element.height.apply(this.element, arguments);\r\n }\r\n}\r\n\r\nexport default Padding;","import Padding from './padding';\r\n\r\nexport default function Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding) {\r\n let topPadding = null;\r\n let bottomPadding = null;\r\n const viewport = viewportController && viewportController.viewport ? viewportController.viewport : angular.element(window);\r\n const container = viewportController && viewportController.container ? viewportController.container : undefined;\r\n const scope = viewportController && viewportController.scope ? viewportController.scope : $rootScope;\r\n\r\n viewport.css({\r\n 'overflow-anchor': 'none',\r\n 'overflow-y': 'auto',\r\n 'display': 'block'\r\n });\r\n\r\n function bufferPadding() {\r\n return viewport.outerHeight() * padding; // some extra space to initiate preload\r\n }\r\n\r\n angular.extend(viewport, {\r\n getScope() {\r\n return scope;\r\n },\r\n\r\n createPaddingElements(template) {\r\n topPadding = new Padding(template);\r\n bottomPadding = new Padding(template);\r\n element.before(topPadding.element);\r\n element.after(bottomPadding.element);\r\n topPadding.height(0);\r\n bottomPadding.height(0);\r\n },\r\n\r\n applyContainerStyle() {\r\n if (!container) {\r\n return true;\r\n }\r\n if (container !== viewport) {\r\n viewport.css('height', window.getComputedStyle(container[0]).height);\r\n }\r\n return viewport.height() > 0;\r\n },\r\n\r\n bottomDataPos() {\r\n let scrollHeight = viewport[0].scrollHeight;\r\n scrollHeight = scrollHeight != null ? scrollHeight : viewport[0].document.documentElement.scrollHeight;\r\n return scrollHeight - bottomPadding.height();\r\n },\r\n\r\n topDataPos() {\r\n return topPadding.height();\r\n },\r\n\r\n bottomVisiblePos() {\r\n return viewport.scrollTop() + viewport.outerHeight();\r\n },\r\n\r\n topVisiblePos() {\r\n return viewport.scrollTop();\r\n },\r\n\r\n insertElement(e, sibling) {\r\n return elementRoutines.insertElement(e, sibling || topPadding.element);\r\n },\r\n\r\n insertElementAnimated(e, sibling) {\r\n return elementRoutines.insertElementAnimated(e, sibling || topPadding.element);\r\n },\r\n\r\n shouldLoadBottom() {\r\n return !buffer.eof && viewport.bottomDataPos() < viewport.bottomVisiblePos() + bufferPadding();\r\n },\r\n\r\n clipBottom() {\r\n // clip the invisible items off the bottom\r\n let overage = 0;\r\n let overageHeight = 0;\r\n let itemHeight = 0;\r\n let emptySpaceHeight = viewport.bottomDataPos() - viewport.bottomVisiblePos() - bufferPadding();\r\n\r\n for (let i = buffer.length - 1; i >= 0; i--) {\r\n itemHeight = buffer[i].element.outerHeight(true);\r\n if (overageHeight + itemHeight > emptySpaceHeight) {\r\n break;\r\n }\r\n bottomPadding.cache.add(buffer[i]);\r\n overageHeight += itemHeight;\r\n overage++;\r\n }\r\n\r\n if (overage > 0) {\r\n buffer.eof = false;\r\n buffer.remove(buffer.length - overage, buffer.length);\r\n buffer.next -= overage;\r\n viewport.adjustPaddings();\r\n }\r\n },\r\n\r\n shouldLoadTop() {\r\n return !buffer.bof && (viewport.topDataPos() > viewport.topVisiblePos() - bufferPadding());\r\n },\r\n\r\n clipTop() {\r\n // clip the invisible items off the top\r\n let overage = 0;\r\n let overageHeight = 0;\r\n let itemHeight = 0;\r\n let emptySpaceHeight = viewport.topVisiblePos() - viewport.topDataPos() - bufferPadding();\r\n\r\n for (let i = 0; i < buffer.length; i++) {\r\n itemHeight = buffer[i].element.outerHeight(true);\r\n if (overageHeight + itemHeight > emptySpaceHeight) {\r\n break;\r\n }\r\n topPadding.cache.add(buffer[i]);\r\n overageHeight += itemHeight;\r\n overage++;\r\n }\r\n\r\n if (overage > 0) {\r\n // we need to adjust top padding element before items are removed from top\r\n // to avoid strange behaviour of scroll bar during remove top items when we are at the very bottom\r\n topPadding.height(topPadding.height() + overageHeight);\r\n buffer.bof = false;\r\n buffer.remove(0, overage);\r\n buffer.first += overage;\r\n }\r\n },\r\n\r\n adjustPaddings() {\r\n if (!buffer.length) {\r\n return;\r\n }\r\n\r\n // precise heights calculation based on items that are in buffer or that were in buffer once\r\n const visibleItemsHeight = buffer.reduce((summ, item) => summ + item.element.outerHeight(true), 0);\r\n\r\n let topPaddingHeight = 0, topCount = 0;\r\n topPadding.cache.forEach(item => {\r\n if (item.index < buffer.first) {\r\n topPaddingHeight += item.height;\r\n topCount++;\r\n }\r\n });\r\n\r\n let bottomPaddingHeight = 0, bottomCount = 0;\r\n bottomPadding.cache.forEach(item => {\r\n if (item.index >= buffer.next) {\r\n bottomPaddingHeight += item.height;\r\n bottomCount++;\r\n }\r\n });\r\n\r\n const totalHeight = visibleItemsHeight + topPaddingHeight + bottomPaddingHeight;\r\n const averageItemHeight = totalHeight / (topCount + bottomCount + buffer.length);\r\n\r\n // average heights calculation, items that have never been reached\r\n let adjustTopPadding = buffer.minIndexUser !== null && buffer.minIndex > buffer.minIndexUser;\r\n let adjustBottomPadding = buffer.maxIndexUser !== null && buffer.maxIndex < buffer.maxIndexUser;\r\n let topPaddingHeightAdd = adjustTopPadding ? (buffer.minIndex - buffer.minIndexUser) * averageItemHeight : 0;\r\n let bottomPaddingHeightAdd = adjustBottomPadding ? (buffer.maxIndexUser - buffer.maxIndex) * averageItemHeight : 0;\r\n\r\n // paddings combine adjustment\r\n topPadding.height(topPaddingHeight + topPaddingHeightAdd);\r\n bottomPadding.height(bottomPaddingHeight + bottomPaddingHeightAdd);\r\n },\r\n\r\n onAfterMinIndexSet(topPaddingHeightOld) {\r\n // additional scrollTop adjustment in case of datasource.minIndex external set\r\n if (buffer.minIndexUser !== null && buffer.minIndex > buffer.minIndexUser) {\r\n let diff = topPadding.height() - topPaddingHeightOld;\r\n viewport.scrollTop(viewport.scrollTop() + diff);\r\n while((diff -= viewport.scrollTop()) > 0) {\r\n bottomPadding.height(bottomPadding.height() + diff);\r\n viewport.scrollTop(viewport.scrollTop() + diff);\r\n }\r\n }\r\n },\r\n\r\n onAfterPrepend(updates) {\r\n if (!updates.prepended.length) {\r\n return;\r\n }\r\n const height = buffer.effectiveHeight(updates.prepended);\r\n const paddingHeight = topPadding.height() - height;\r\n if (paddingHeight >= 0) {\r\n topPadding.height(paddingHeight);\r\n return;\r\n }\r\n const position = viewport.scrollTop();\r\n const newPosition = position - paddingHeight;\r\n viewport.synthetic = { previous: position, next: newPosition };\r\n topPadding.height(0);\r\n viewport.scrollTop(newPosition);\r\n },\r\n\r\n resetTopPadding() {\r\n topPadding.height(0);\r\n topPadding.cache.clear();\r\n },\r\n\r\n resetBottomPadding() {\r\n bottomPadding.height(0);\r\n bottomPadding.cache.clear();\r\n },\r\n\r\n removeCacheItem(item, shiftTop) {\r\n topPadding.cache.remove(item, shiftTop);\r\n bottomPadding.cache.remove(item, shiftTop);\r\n },\r\n\r\n removeItem(item) {\r\n this.removeCacheItem(item);\r\n return buffer.remove(item);\r\n }\r\n });\r\n\r\n return viewport;\r\n}\r\n","import { OPERATIONS } from './utils';\r\n\r\nclass Adapter {\r\n\r\n constructor($scope, $parse, $attr, viewport, buffer, doAdjust, reload) {\r\n this.$parse = $parse;\r\n this.$attr = $attr;\r\n this.viewport = viewport;\r\n this.buffer = buffer;\r\n\r\n this.doAdjust = doAdjust;\r\n this.reload = reload;\r\n\r\n this.isLoading = false;\r\n this.disabled = false;\r\n\r\n const viewportScope = viewport.getScope();\r\n this.startScope = viewportScope.$parent ? viewportScope : $scope;\r\n\r\n this.publicContext = {};\r\n this.assignAdapter($attr.adapter);\r\n this.generatePublicContext();\r\n }\r\n\r\n assignAdapter(adapterAttr) {\r\n if (!adapterAttr || !(adapterAttr = adapterAttr.replace(/^\\s+|\\s+$/gm, ''))) {\r\n return;\r\n }\r\n let adapterOnScope;\r\n\r\n try {\r\n this.$parse(adapterAttr).assign(this.startScope, {});\r\n adapterOnScope = this.$parse(adapterAttr)(this.startScope);\r\n }\r\n catch (error) {\r\n error.message = `Angular ui-scroll Adapter assignment exception.\\n` +\r\n `Can't parse \"${adapterAttr}\" expression.\\n` +\r\n error.message;\r\n throw error;\r\n }\r\n\r\n angular.extend(adapterOnScope, this.publicContext);\r\n this.publicContext = adapterOnScope;\r\n }\r\n\r\n generatePublicContext() {\r\n // these methods will be accessible out of ui-scroll via user defined adapter\r\n const publicMethods = ['reload', 'applyUpdates', 'append', 'prepend', 'isBOF', 'isEOF', 'isEmpty'];\r\n for (let i = publicMethods.length - 1; i >= 0; i--) {\r\n this.publicContext[publicMethods[i]] = this[publicMethods[i]].bind(this);\r\n }\r\n\r\n // these read-only props will be accessible out of ui-scroll via user defined adapter\r\n const publicProps = ['isLoading', 'topVisible', 'topVisibleElement', 'topVisibleScope', 'bottomVisible', 'bottomVisibleElement', 'bottomVisibleScope'];\r\n for (let i = publicProps.length - 1; i >= 0; i--) {\r\n let property, attr = this.$attr[publicProps[i]];\r\n Object.defineProperty(this, publicProps[i], {\r\n get: () => property,\r\n set: (value) => {\r\n property = value;\r\n this.publicContext[publicProps[i]] = value;\r\n if (attr) {\r\n this.$parse(attr).assign(this.startScope, value);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // read-only immediately calculated public properties\r\n const publicPropsImmediate = ['bufferFirst', 'bufferLast', 'bufferLength'];\r\n for (let i = publicPropsImmediate.length - 1; i >= 0; i--) {\r\n Object.defineProperty(this.publicContext, publicPropsImmediate[i], {\r\n get: () => this[publicPropsImmediate[i]]\r\n });\r\n }\r\n\r\n // non-read-only public property\r\n Object.defineProperty(this.publicContext, 'disabled', {\r\n get: () => this.disabled,\r\n set: (value) => (!(this.disabled = value)) ? this.doAdjust() : null\r\n });\r\n }\r\n\r\n loading(value) {\r\n this.isLoading = value;\r\n }\r\n\r\n isBOF() {\r\n return this.buffer.bof;\r\n }\r\n\r\n isEOF() {\r\n return this.buffer.eof;\r\n }\r\n\r\n isEmpty() {\r\n return !this.buffer.length;\r\n }\r\n\r\n get bufferLength() {\r\n return this.buffer.getItems().length;\r\n }\r\n\r\n get bufferFirst() {\r\n return this.buffer.getFirstItem();\r\n }\r\n\r\n get bufferLast() {\r\n return this.buffer.getLastItem();\r\n }\r\n\r\n append(newItems) {\r\n this.buffer.append(newItems);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n prepend(newItems, options = {}) {\r\n this.buffer.prepend(newItems, options.immutableTop);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n applyUpdates(arg1, arg2, arg3) {\r\n if (typeof arg1 === 'function') {\r\n this.applyUpdatesFunc(arg1, arg2);\r\n } else {\r\n this.applyUpdatesIndex(arg1, arg2, arg3);\r\n }\r\n this.doAdjust();\r\n }\r\n\r\n applyUpdatesFunc(cb, options = {}) {\r\n this.buffer.slice(0).forEach((wrapper) => {\r\n // we need to do it on the buffer clone, because buffer content\r\n // may change as we iterate through\r\n this.applyUpdate(wrapper, cb(wrapper.item, wrapper.scope, wrapper.element), options);\r\n });\r\n }\r\n\r\n applyUpdatesIndex(index, newItems, options = {}) {\r\n if (index % 1 !== 0) {\r\n throw new Error('applyUpdates - ' + index + ' is not a valid index (should be an integer)');\r\n }\r\n const _index = index - this.buffer.first;\r\n\r\n // apply updates only within buffer\r\n if (_index >= 0 && _index < this.buffer.length) {\r\n this.applyUpdate(this.buffer[_index], newItems, options);\r\n }\r\n // out-of-buffer case: deletion may affect Paddings\r\n else if(index >= this.buffer.getAbsMinIndex() && index <= this.buffer.getAbsMaxIndex()) {\r\n if(angular.isArray(newItems) && !newItems.length) {\r\n this.viewport.removeCacheItem(index, !options.immutableTop && index === this.buffer.minIndex);\r\n if (!options.immutableTop && index === this.buffer.getAbsMinIndex()) {\r\n this.buffer.incrementMinIndex();\r\n }\r\n else {\r\n this.buffer.decrementMaxIndex();\r\n }\r\n }\r\n }\r\n }\r\n\r\n applyUpdate(wrapper, newItems, options = {}) {\r\n if (!angular.isArray(newItems)) {\r\n return;\r\n }\r\n let position = this.buffer.indexOf(wrapper);\r\n if (!newItems.reverse().some(newItem => newItem === wrapper.item)) {\r\n wrapper.op = OPERATIONS.REMOVE;\r\n // try to catch \"first\" edge case on remove\r\n if (!options.immutableTop && !newItems.length) {\r\n // this is the first item, or the previous one's part of the \"shift-top\" group\r\n if (\r\n (position === 0 && this.buffer.bof) ||\r\n (position !== 0 && this.buffer[position - 1].shiftTop)\r\n ) {\r\n wrapper.shiftTop = true;\r\n }\r\n }\r\n }\r\n newItems.forEach((newItem) => {\r\n if (newItem === wrapper.item) {\r\n position--;\r\n } else {\r\n // 3 parameter (shiftTop) is to catch \"first\" edge case on insert\r\n this.buffer.insert(position + 1, newItem, !options.immutableTop && position === -1);\r\n }\r\n });\r\n }\r\n\r\n calculateProperties() {\r\n let rowTop = null, topHeight = 0;\r\n let topDone = false, bottomDone = false;\r\n const length = this.buffer.length;\r\n\r\n for (let i = 0; i < length; i++) {\r\n const item = this.buffer[i];\r\n const itemTop = item.element.offset().top;\r\n\r\n if (rowTop !== itemTop) { // a new row condition\r\n const itemHeight = item.element.outerHeight(true);\r\n const top = this.viewport.topDataPos() + topHeight + itemHeight;\r\n\r\n if (!topDone && top > this.viewport.topVisiblePos()) {\r\n topDone = true;\r\n this['topVisible'] = item.item;\r\n this['topVisibleElement'] = item.element;\r\n this['topVisibleScope'] = item.scope;\r\n }\r\n if (!bottomDone && (top >= this.viewport.bottomVisiblePos() || (i === length - 1 && this.isEOF()))) {\r\n bottomDone = true;\r\n this['bottomVisible'] = item.item;\r\n this['bottomVisibleElement'] = item.element;\r\n this['bottomVisibleScope'] = item.scope;\r\n }\r\n topHeight += itemHeight;\r\n }\r\n rowTop = itemTop;\r\n\r\n if (topDone && bottomDone) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default Adapter;\r\n","import JQLiteExtras from './modules/jqLiteExtras';\r\nimport ElementRoutines from './modules/elementRoutines.js';\r\nimport ScrollBuffer from './modules/buffer.js';\r\nimport Viewport from './modules/viewport.js';\r\nimport Adapter from './modules/adapter.js';\r\nimport { OPERATIONS } from './modules/utils';\r\n\r\nangular.module('ui.scroll', [])\r\n\r\n .constant('JQLiteExtras', JQLiteExtras)\r\n .run(['JQLiteExtras', (JQLiteExtras) => {\r\n const elt = angular.element;\r\n !(window.jQuery && elt.fn && elt.fn.jquery) ? (new JQLiteExtras()).registerFor(elt) : null;\r\n ElementRoutines.addCSSRules();\r\n }])\r\n\r\n .directive('uiScrollViewport', function () {\r\n return {\r\n restrict: 'A',\r\n controller: [\r\n '$scope',\r\n '$element',\r\n function (scope, element) {\r\n this.container = element;\r\n this.viewport = element;\r\n this.scope = scope;\r\n\r\n angular.forEach(element.children(), child => {\r\n if (child.tagName.toLowerCase() === 'tbody') {\r\n this.viewport = angular.element(child);\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n ]\r\n };\r\n })\r\n\r\n .directive('uiScroll', [\r\n '$log',\r\n '$injector',\r\n '$rootScope',\r\n '$timeout',\r\n '$interval',\r\n '$q',\r\n '$parse',\r\n function (console, $injector, $rootScope, $timeout, $interval, $q, $parse) {\r\n\r\n return {\r\n require: ['?^uiScrollViewport'],\r\n restrict: 'A',\r\n transclude: 'element',\r\n priority: 1000,\r\n terminal: true,\r\n link: link\r\n };\r\n\r\n function link($scope, element, $attr, controllers, linker) {\r\n const match = $attr.uiScroll.match(/^\\s*(\\w+)\\s+in\\s+([(\\w|\\$)\\.]+)\\s*$/);\r\n if (!match) {\r\n throw new Error('Expected uiScroll in form of \\'_item_ in _datasource_\\' but got \\'' + $attr.uiScroll + '\\'');\r\n }\r\n\r\n function parseNumber(value, defaultValue, isFloat) {\r\n if (!isFloat) {\r\n value = value === null ? defaultValue : Math.floor(value);\r\n }\r\n return isNaN(value) ? defaultValue : value;\r\n }\r\n\r\n function parseNumericAttr(value, defaultValue, isFloat) {\r\n const result = $parse(value)($scope);\r\n return parseNumber(result, defaultValue, isFloat);\r\n }\r\n\r\n function parseBooleanAttr(value, defaultValue) {\r\n const result = $parse(value)($scope);\r\n return typeof result === 'boolean' ? result : defaultValue;\r\n }\r\n\r\n const BUFFER_MIN = 3;\r\n const BUFFER_DEFAULT = 10;\r\n const PADDING_MIN = 0.3;\r\n const PADDING_DEFAULT = 0.5;\r\n const HANDLE_INERTIA_DEFAULT = true;\r\n const START_INDEX_DEFAULT = 1;\r\n const MAX_VIEWPORT_DELAY = 500;\r\n const VIEWPORT_POLLING_INTERVAL = 50;\r\n\r\n let datasource = null;\r\n const itemName = match[1];\r\n const datasourceName = match[2];\r\n const viewportController = controllers[0];\r\n const bufferSize = Math.max(BUFFER_MIN, parseNumericAttr($attr.bufferSize, BUFFER_DEFAULT));\r\n const padding = Math.max(PADDING_MIN, parseNumericAttr($attr.padding, PADDING_DEFAULT, true));\r\n const handleInertia = parseBooleanAttr($attr.handleInertia, HANDLE_INERTIA_DEFAULT);\r\n let startIndex = parseNumericAttr($attr.startIndex, START_INDEX_DEFAULT);\r\n let ridActual = 0; // current data revision id\r\n let pending = [];\r\n\r\n const elementRoutines = new ElementRoutines($injector, $q);\r\n const buffer = new ScrollBuffer(elementRoutines, bufferSize, startIndex);\r\n const viewport = new Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding);\r\n const adapter = new Adapter($scope, $parse, $attr, viewport, buffer, doAdjust, reload);\r\n\r\n if (viewportController) {\r\n viewportController.adapter = adapter;\r\n }\r\n\r\n const isDatasourceValid = () =>\r\n Object.prototype.toString.call(datasource) === '[object Object]' && typeof datasource.get === 'function';\r\n\r\n datasource = $parse(datasourceName)($scope); // try to get datasource on scope\r\n if (!isDatasourceValid()) {\r\n datasource = $injector.get(datasourceName); // try to inject datasource as service\r\n if (!isDatasourceValid()) {\r\n throw new Error(datasourceName + ' is not a valid datasource');\r\n }\r\n }\r\n\r\n let onRenderHandlers = [];\r\n function onRenderHandlersRunner() {\r\n onRenderHandlers.forEach(handler => handler.run());\r\n onRenderHandlers = [];\r\n }\r\n function persistDatasourceIndex(datasource, propName) {\r\n let getter;\r\n // need to postpone min/maxIndexUser processing if the view is empty\r\n if (angular.isNumber(datasource[propName])) {\r\n getter = datasource[propName];\r\n if (angular.isNumber(getter)) {\r\n onRenderHandlers = onRenderHandlers.filter(handler => handler.id !== propName);\r\n onRenderHandlers.push({\r\n id: propName,\r\n run: () => datasource[propName] = getter\r\n });\r\n }\r\n }\r\n }\r\n\r\n function defineDatasourceIndex(datasource, propName, propUserName) {\r\n const descriptor = Object.getOwnPropertyDescriptor(datasource, propName);\r\n if (descriptor && (descriptor.set || descriptor.get)) {\r\n return;\r\n }\r\n let getter;\r\n persistDatasourceIndex(datasource, propName);\r\n Object.defineProperty(datasource, propName, {\r\n set: (value) => {\r\n getter = value;\r\n if (pending.length && !buffer.length) {\r\n persistDatasourceIndex(datasource, propName);\r\n return;\r\n }\r\n buffer[propUserName] = value;\r\n const topPaddingHeightOld = viewport.topDataPos();\r\n viewport.adjustPaddings();\r\n if (propName === 'minIndex') {\r\n viewport.onAfterMinIndexSet(topPaddingHeightOld);\r\n }\r\n },\r\n get: () => getter\r\n });\r\n }\r\n\r\n defineDatasourceIndex(datasource, 'minIndex', 'minIndexUser');\r\n defineDatasourceIndex(datasource, 'maxIndex', 'maxIndexUser');\r\n\r\n const fetchNext = (datasource.get.length !== 2) ?\r\n (success) => datasource.get(buffer.next, bufferSize, success) :\r\n (success) => {\r\n datasource.get({\r\n index: buffer.next,\r\n append: buffer.length ? buffer[buffer.length - 1].item : void 0,\r\n count: bufferSize\r\n }, success);\r\n };\r\n\r\n const fetchPrevious = (datasource.get.length !== 2) ?\r\n (success) => datasource.get(buffer.first - bufferSize, bufferSize, success) :\r\n (success) => {\r\n datasource.get({\r\n index: buffer.first - bufferSize,\r\n prepend: buffer.length ? buffer[0].item : void 0,\r\n count: bufferSize\r\n }, success);\r\n };\r\n\r\n const initialize = () => {\r\n let tryCount = 0;\r\n if (!viewport.applyContainerStyle()) {\r\n const timer = $interval(() => {\r\n tryCount++;\r\n if (viewport.applyContainerStyle()) {\r\n $interval.cancel(timer);\r\n doAdjust();\r\n }\r\n if (tryCount * VIEWPORT_POLLING_INTERVAL >= MAX_VIEWPORT_DELAY) {\r\n $interval.cancel(timer);\r\n throw Error(`ui-scroll directive requires a viewport with non-zero height in ${MAX_VIEWPORT_DELAY}ms`);\r\n }\r\n }, VIEWPORT_POLLING_INTERVAL);\r\n }\r\n else {\r\n doAdjust();\r\n }\r\n };\r\n\r\n /**\r\n * Build padding elements\r\n *\r\n * Calling linker is the only way I found to get access to the tag name of the template\r\n * to prevent the directive scope from pollution a new scope is created and destroyed\r\n * right after the builder creation is completed\r\n */\r\n linker((clone, scope) => {\r\n viewport.createPaddingElements(clone[0]);\r\n // we do not include the clone in the DOM. It means that the nested directives will not\r\n // be able to reach the parent directives, but in this case it is intentional because we\r\n // created the clone to access the template tag name\r\n scope.$destroy();\r\n clone.remove();\r\n });\r\n\r\n $scope.$on('$destroy', () => {\r\n unbindEvents();\r\n viewport.off('mousewheel', wheelHandler);\r\n });\r\n\r\n viewport.on('mousewheel', wheelHandler);\r\n\r\n initialize();\r\n\r\n /* Private function definitions */\r\n\r\n function isInvalid(rid) {\r\n return (rid && rid !== ridActual) || $scope.$$destroyed;\r\n }\r\n\r\n function bindEvents() {\r\n viewport.on('resize', resizeAndScrollHandler);\r\n viewport.on('scroll', resizeAndScrollHandler);\r\n }\r\n\r\n function unbindEvents() {\r\n viewport.off('resize', resizeAndScrollHandler);\r\n viewport.off('scroll', resizeAndScrollHandler);\r\n }\r\n\r\n function reload() {\r\n unbindEvents();\r\n viewport.resetTopPadding();\r\n viewport.resetBottomPadding();\r\n if (arguments.length) {\r\n startIndex = parseNumber(arguments[0], START_INDEX_DEFAULT, false);\r\n }\r\n buffer.reset(startIndex);\r\n persistDatasourceIndex(datasource, 'minIndex');\r\n persistDatasourceIndex(datasource, 'maxIndex');\r\n doAdjust();\r\n }\r\n\r\n function isElementVisible(wrapper) {\r\n return wrapper.element.height() && wrapper.element[0].offsetParent;\r\n }\r\n\r\n function visibilityWatcher(wrapper) {\r\n if (isElementVisible(wrapper)) {\r\n buffer.forEach((item) => {\r\n if (typeof item.unregisterVisibilityWatcher === 'function') {\r\n item.unregisterVisibilityWatcher();\r\n delete item.unregisterVisibilityWatcher;\r\n }\r\n });\r\n if (!pending.length) {\r\n $timeout(() => doAdjust());\r\n }\r\n }\r\n }\r\n\r\n function insertWrapperContent(wrapper, insertAfter) {\r\n createElement(wrapper, insertAfter, viewport.insertElement);\r\n if (!isElementVisible(wrapper)) {\r\n wrapper.unregisterVisibilityWatcher = wrapper.scope.$watch(() => visibilityWatcher(wrapper));\r\n }\r\n elementRoutines.hideElement(wrapper); // hide inserted elements before data binding\r\n }\r\n\r\n function createElement(wrapper, insertAfter, insertElement) {\r\n let promises = null;\r\n const sibling = (insertAfter > 0) ? buffer[insertAfter - 1].element : undefined;\r\n linker((clone, scope) => {\r\n promises = insertElement(clone, sibling);\r\n wrapper.element = clone;\r\n wrapper.scope = scope;\r\n scope[itemName] = wrapper.item;\r\n });\r\n // ui-scroll-grid apply\r\n if (adapter.transform) {\r\n const tdInitializer = wrapper.scope.uiScrollTdInitializer;\r\n if (tdInitializer && tdInitializer.linking) {\r\n adapter.transform(wrapper.scope, wrapper.element);\r\n } else {\r\n wrapper.scope.uiScrollTdInitializer = {\r\n onLink: () => adapter.transform(wrapper.scope, wrapper.element),\r\n scope: wrapper.scope\r\n };\r\n }\r\n }\r\n return promises;\r\n }\r\n\r\n function updateDOM() {\r\n let promises = [];\r\n const toBePrepended = [];\r\n const toBeRemoved = [];\r\n const inserted = [];\r\n\r\n buffer.forEach((wrapper, i) => {\r\n switch (wrapper.op) {\r\n case OPERATIONS.PREPEND:\r\n toBePrepended.unshift(wrapper);\r\n break;\r\n case OPERATIONS.APPEND:\r\n insertWrapperContent(wrapper, i);\r\n wrapper.op = OPERATIONS.NONE;\r\n inserted.push(wrapper);\r\n break;\r\n case OPERATIONS.INSERT:\r\n promises = promises.concat(createElement(wrapper, i, viewport.insertElementAnimated));\r\n wrapper.op = OPERATIONS.NONE;\r\n inserted.push(wrapper);\r\n break;\r\n case OPERATIONS.REMOVE:\r\n toBeRemoved.push(wrapper);\r\n }\r\n });\r\n\r\n toBeRemoved.forEach((wrapper) => promises = promises.concat(viewport.removeItem(wrapper)));\r\n\r\n if (toBePrepended.length)\r\n toBePrepended.forEach((wrapper) => {\r\n insertWrapperContent(wrapper);\r\n wrapper.op = OPERATIONS.NONE;\r\n });\r\n\r\n buffer.forEach((item, i) => item.scope.$index = buffer.first + i);\r\n\r\n return {\r\n prepended: toBePrepended,\r\n removed: toBeRemoved,\r\n inserted: inserted,\r\n animated: promises\r\n };\r\n\r\n }\r\n\r\n function updatePaddings(rid, updates) {\r\n // schedule another doAdjust after animation completion\r\n if (updates.animated.length) {\r\n $q.all(updates.animated).then(() => {\r\n viewport.adjustPaddings();\r\n doAdjust(rid);\r\n });\r\n } else {\r\n viewport.adjustPaddings();\r\n }\r\n }\r\n\r\n function enqueueFetch(rid, updates) {\r\n if (viewport.shouldLoadBottom()) {\r\n if (!updates || buffer.effectiveHeight(updates.inserted) > 0) {\r\n // this means that at least one item appended in the last batch has height > 0\r\n if (pending.push(true) === 1) {\r\n adapter.loading(true);\r\n fetch(rid);\r\n }\r\n }\r\n } else if (viewport.shouldLoadTop()) {\r\n if ((!updates || buffer.effectiveHeight(updates.prepended) > 0) || pending[0]) {\r\n // this means that at least one item appended in the last batch has height > 0\r\n // pending[0] = true means that previous fetch was appending. We need to force at least one prepend\r\n // BTW there will always be at least 1 element in the pending array because bottom is fetched first\r\n if (pending.push(false) === 1) {\r\n adapter.loading(true);\r\n fetch(rid);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function processUpdates() {\r\n const updates = updateDOM();\r\n\r\n // We need the item bindings to be processed before we can do adjustments\r\n !$scope.$$phase && !$rootScope.$$phase && $scope.$digest();\r\n\r\n updates.inserted.forEach(w => elementRoutines.showElement(w));\r\n updates.prepended.forEach(w => elementRoutines.showElement(w));\r\n return updates;\r\n }\r\n\r\n function doAdjust(rid) {\r\n if (!rid) { // dismiss pending requests\r\n pending = [];\r\n rid = ++ridActual;\r\n }\r\n\r\n const updates = processUpdates();\r\n\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n updatePaddings(rid, updates);\r\n enqueueFetch(rid);\r\n\r\n if (!pending.length) {\r\n adapter.calculateProperties();\r\n }\r\n }\r\n\r\n function doAdjustAfterFetch(rid) {\r\n const updates = processUpdates();\r\n\r\n viewport.onAfterPrepend(updates);\r\n\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n updatePaddings(rid, updates);\r\n onRenderHandlersRunner();\r\n enqueueFetch(rid, updates);\r\n pending.shift();\r\n\r\n if (pending.length)\r\n fetch(rid);\r\n else {\r\n adapter.loading(false);\r\n bindEvents();\r\n adapter.calculateProperties();\r\n }\r\n }\r\n\r\n function fetch(rid) {\r\n if (pending[0]) {// scrolling down\r\n if (buffer.length && !viewport.shouldLoadBottom()) {\r\n doAdjustAfterFetch(rid);\r\n } else {\r\n fetchNext((result) => {\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n if (result.length < bufferSize) {\r\n buffer.eof = true;\r\n }\r\n\r\n if (result.length > 0) {\r\n viewport.clipTop();\r\n buffer.append(result);\r\n }\r\n\r\n doAdjustAfterFetch(rid);\r\n });\r\n }\r\n } else { // scrolling up\r\n if (buffer.length && !viewport.shouldLoadTop()) {\r\n doAdjustAfterFetch(rid);\r\n } else {\r\n fetchPrevious((result) => {\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n if (result.length < bufferSize) {\r\n buffer.bof = true;\r\n // log 'bof is reached'\r\n }\r\n\r\n if (result.length > 0) {\r\n if (buffer.length) {\r\n viewport.clipBottom();\r\n }\r\n buffer.prepend(result);\r\n }\r\n\r\n doAdjustAfterFetch(rid);\r\n });\r\n }\r\n }\r\n }\r\n\r\n function fixInertia() {\r\n if (!viewport.synthetic) {\r\n return;\r\n }\r\n const oldPosition = viewport.synthetic.previous;\r\n const newPosition = viewport.synthetic.next;\r\n if (viewport.scrollTop() !== newPosition) {\r\n requestAnimationFrame(() => {\r\n const position = viewport.scrollTop();\r\n const diff = oldPosition - position;\r\n if (diff > 0) { // inertia over synthetic\r\n viewport.scrollTop(newPosition - diff);\r\n } else {\r\n viewport.scrollTop(newPosition);\r\n }\r\n viewport.synthetic = null;\r\n });\r\n return true;\r\n }\r\n viewport.synthetic = null;\r\n }\r\n\r\n function resizeAndScrollHandler() {\r\n if (handleInertia && fixInertia()) {\r\n return;\r\n }\r\n if (!$rootScope.$$phase && !adapter.isLoading && !adapter.disabled) {\r\n\r\n enqueueFetch(ridActual);\r\n\r\n if (pending.length) {\r\n unbindEvents();\r\n } else {\r\n adapter.calculateProperties();\r\n !$scope.$$phase && $scope.$digest();\r\n }\r\n }\r\n }\r\n\r\n function wheelHandler(event) {\r\n if (!adapter.disabled) {\r\n const scrollTop = viewport[0].scrollTop;\r\n const yMax = viewport[0].scrollHeight - viewport[0].clientHeight;\r\n\r\n if ((scrollTop === 0 && !buffer.bof) || (scrollTop === yMax && !buffer.eof)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n ]);\r\n"],"names":["JQLiteExtras","_classCallCheck","_createClass","key","value","registerFor","element","convertToPx","css","getStyle","isWindow","angular","prototype","name","self","elem","nodeType","style","call","obj","document","location","alert","setInterval","scrollTo","direction","_top$left$direction","_slicedToArray","top","left","method","prop","preserve","isValueDefined","documentElement","window","getComputedStyle","parseFloat","currentStyle","result","rs","rsLeft","core_pnum","source","rnumnonpx","RegExp","test","runtimeStyle","pixelLeft","getMeasurements","measure","base","borderA","borderB","computedMarginA","computedMarginB","computedStyle","dirA","dirB","marginA","marginB","paddingA","paddingB","height","width","padding","border","margin","_width$height$measure","offsetWidth","offsetHeight","getWidthHeight","measurements","outer","outerfull","forEach","before","newElem","children","i","j","parent","ref","contents","prepend","length","after","Error","outerHTML","isNumber","outerHeight","option","outerWidth","offset","docElem","win","box","doc","ownerDocument","arguments","undefined","getBoundingClientRect","defaultView","parentWindow","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","default","hideClassToken","ElementRoutines","$injector","$q","$animate","has","get","isAngularVersionLessThen1_3","version","major","minor","hideElement","wrapper","addClass","showElement","removeClass","insertElement","newElement","previousElement","removeElement","remove","scope","$destroy","insertElementAnimated","deferred","defer","enter","resolve","promise","removeElementAnimated","leave","then","addCSSRules","selector","rules","sheet","styleSheets","index","cssRules","err","insertRule","addRule","OPERATIONS","PREPEND","APPEND","INSERT","REMOVE","NONE","ScrollBuffer","elementRoutines","bufferSize","startIndex","buffer","Object","create","Array","extend","size","reset","eof","bof","first","next","minIndex","maxIndex","minIndexUser","maxIndexUser","append","items","item","insert","Math","max","immutableTop","reverse","min","operation","shiftTop","op","splice","push","unshift","arg1","arg2","indexOf","getAbsMinIndex","incrementMinIndex","decrementMaxIndex","getAbsMaxIndex","effectiveHeight","elements","Number","MAX_VALUE","bottom","NEGATIVE_INFINITY","offsetParent","getItems","filter","getFirstItem","list","getLastItem","CacheProto","add","$index","sort","a","b","argument","_shiftTop","clear","Cache","instance","apply","setPrototypeOf","getOwnPropertyNames","methodName","generateElement","template","Node","ELEMENT_NODE","tagName","toLowerCase","concat","table","find","Padding","cache","Viewport","viewportController","$rootScope","topPadding","bottomPadding","viewport","container","bufferPadding","getScope","createPaddingElements","applyContainerStyle","bottomDataPos","scrollHeight","topDataPos","bottomVisiblePos","topVisiblePos","e","sibling","shouldLoadBottom","clipBottom","overage","overageHeight","itemHeight","emptySpaceHeight","adjustPaddings","shouldLoadTop","clipTop","visibleItemsHeight","reduce","summ","topPaddingHeight","topCount","bottomPaddingHeight","bottomCount","totalHeight","averageItemHeight","adjustTopPadding","adjustBottomPadding","topPaddingHeightAdd","bottomPaddingHeightAdd","onAfterMinIndexSet","topPaddingHeightOld","diff","onAfterPrepend","updates","prepended","paddingHeight","position","newPosition","synthetic","previous","resetTopPadding","resetBottomPadding","removeCacheItem","removeItem","Adapter","$scope","$parse","$attr","doAdjust","reload","isLoading","disabled","viewportScope","startScope","$parent","publicContext","assignAdapter","adapter","generatePublicContext","adapterAttr","replace","adapterOnScope","assign","error","message","_this","publicMethods","bind","publicProps","_loop","_i","property","attr","defineProperty","set","publicPropsImmediate","_loop2","_i2","loading","isBOF","isEOF","isEmpty","newItems","options","applyUpdates","arg3","applyUpdatesFunc","applyUpdatesIndex","cb","_this2","slice","applyUpdate","_index","isArray","_this3","some","newItem","calculateProperties","rowTop","topHeight","topDone","bottomDone","itemTop","module","constant","run","elt","jQuery","fn","jquery","directive","restrict","controller","child","console","$timeout","$interval","require","transclude","priority","terminal","link","controllers","linker","match","uiScroll","parseNumber","defaultValue","isFloat","floor","isNaN","parseNumericAttr","parseBooleanAttr","BUFFER_MIN","BUFFER_DEFAULT","PADDING_MIN","PADDING_DEFAULT","HANDLE_INERTIA_DEFAULT","START_INDEX_DEFAULT","MAX_VIEWPORT_DELAY","VIEWPORT_POLLING_INTERVAL","datasource","itemName","datasourceName","handleInertia","ridActual","pending","isDatasourceValid","toString","onRenderHandlers","onRenderHandlersRunner","handler","persistDatasourceIndex","propName","getter","id","defineDatasourceIndex","propUserName","descriptor","getOwnPropertyDescriptor","fetchNext","success","count","fetchPrevious","initialize","tryCount","timer","cancel","clone","$on","unbindEvents","off","wheelHandler","on","isInvalid","rid","$$destroyed","bindEvents","resizeAndScrollHandler","isElementVisible","visibilityWatcher","unregisterVisibilityWatcher","insertWrapperContent","insertAfter","createElement","$watch","promises","transform","tdInitializer","uiScrollTdInitializer","linking","onLink","updateDOM","toBePrepended","toBeRemoved","inserted","removed","animated","updatePaddings","all","enqueueFetch","fetch","processUpdates","$$phase","$digest","w","doAdjustAfterFetch","shift","fixInertia","oldPosition","requestAnimationFrame","event","yMax","clientHeight","preventDefault"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"ui-scroll.js","mappings":"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","sources":["webpack://angular-ui-scroll/./src/modules/jqLiteExtras.js","webpack://angular-ui-scroll/./src/modules/elementRoutines.js","webpack://angular-ui-scroll/./src/modules/utils.js","webpack://angular-ui-scroll/./src/modules/buffer.js","webpack://angular-ui-scroll/./src/modules/padding.js","webpack://angular-ui-scroll/./src/modules/viewport.js","webpack://angular-ui-scroll/./src/modules/adapter.js","webpack://angular-ui-scroll/./src/ui-scroll.js"],"sourcesContent":["/*!\r\n globals: angular, window\r\n List of used element methods available in JQuery but not in JQuery Lite\r\n element.before(elem)\r\n element.height()\r\n element.outerHeight(true)\r\n element.height(value) = only for Top/Bottom padding elements\r\n element.scrollTop()\r\n element.scrollTop(value)\r\n */\r\n\r\nexport default class JQLiteExtras {\r\n\r\n registerFor(element) {\r\n let convertToPx, css, getStyle, isWindow;\r\n // angular implementation blows up if elem is the window\r\n css = angular.element.prototype.css;\r\n\r\n element.prototype.css = function (name, value) {\r\n let self = this;\r\n let elem = self[0];\r\n if (!(!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style)) {\r\n return css.call(self, name, value);\r\n }\r\n };\r\n\r\n // as defined in angularjs v1.0.5\r\n isWindow = (obj) => obj && obj.document && obj.location && obj.alert && obj.setInterval;\r\n\r\n function scrollTo(self, direction, value) {\r\n let elem = self[0];\r\n let [method, prop, preserve] = {\r\n top: [\r\n 'scrollTop',\r\n 'pageYOffset',\r\n 'scrollLeft'\r\n ],\r\n left: [\r\n 'scrollLeft',\r\n 'pageXOffset',\r\n 'scrollTop'\r\n ]\r\n }[direction];\r\n\r\n const isValueDefined = typeof value !== 'undefined';\r\n if (isWindow(elem)) {\r\n if (isValueDefined) {\r\n return elem.scrollTo(self[preserve].call(self), value);\r\n }\r\n return (prop in elem) ? elem[prop] : elem.document.documentElement[method];\r\n } else {\r\n if (isValueDefined) {\r\n elem[method] = value;\r\n }\r\n return elem[method];\r\n }\r\n }\r\n\r\n if (window.getComputedStyle) {\r\n getStyle = (elem) => window.getComputedStyle(elem, null);\r\n convertToPx = (elem, value) => parseFloat(value);\r\n } else {\r\n getStyle = (elem) => elem.currentStyle;\r\n convertToPx = (elem, value) => {\r\n let left, result, rs, rsLeft, style;\r\n let core_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\r\n let rnumnonpx = new RegExp('^(' + core_pnum + ')(?!px)[a-z%]+$', 'i');\r\n\r\n if (!rnumnonpx.test(value)) {\r\n return parseFloat(value);\r\n }\r\n\r\n // ported from JQuery\r\n style = elem.style;\r\n left = style.left;\r\n rs = elem.runtimeStyle;\r\n rsLeft = rs && rs.left;\r\n if (rs) {\r\n rs.left = style.left;\r\n }\r\n // put in the new values to get a computed style out\r\n style.left = value;\r\n result = style.pixelLeft;\r\n style.left = left;\r\n if (rsLeft) {\r\n rs.left = rsLeft;\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n function getMeasurements(elem, measure) {\r\n let base, borderA, borderB, computedMarginA, computedMarginB, computedStyle, dirA, dirB, marginA, marginB, paddingA, paddingB;\r\n\r\n if (isWindow(elem)) {\r\n base = document.documentElement[{height: 'clientHeight', width: 'clientWidth'}[measure]];\r\n\r\n return {\r\n base: base,\r\n padding: 0,\r\n border: 0,\r\n margin: 0\r\n };\r\n }\r\n\r\n // Start with offset property\r\n [\r\n base,\r\n dirA,\r\n dirB\r\n ] = {\r\n width: [\r\n elem.offsetWidth,\r\n 'Left',\r\n 'Right'\r\n ],\r\n height: [\r\n elem.offsetHeight,\r\n 'Top',\r\n 'Bottom'\r\n ]\r\n }[measure];\r\n\r\n computedStyle = getStyle(elem);\r\n paddingA = convertToPx(elem, computedStyle['padding' + dirA]) || 0;\r\n paddingB = convertToPx(elem, computedStyle['padding' + dirB]) || 0;\r\n borderA = convertToPx(elem, computedStyle['border' + dirA + 'Width']) || 0;\r\n borderB = convertToPx(elem, computedStyle['border' + dirB + 'Width']) || 0;\r\n computedMarginA = computedStyle['margin' + dirA];\r\n computedMarginB = computedStyle['margin' + dirB];\r\n\r\n // I do not care for width for now, so this hack is irrelevant\r\n // if ( !supportsPercentMargin )\r\n // computedMarginA = hackPercentMargin( elem, computedStyle, computedMarginA )\r\n // computedMarginB = hackPercentMargin( elem, computedStyle, computedMarginB )\r\n marginA = convertToPx(elem, computedMarginA) || 0;\r\n marginB = convertToPx(elem, computedMarginB) || 0;\r\n\r\n return {\r\n base: base,\r\n padding: paddingA + paddingB,\r\n border: borderA + borderB,\r\n margin: marginA + marginB\r\n };\r\n }\r\n\r\n function getWidthHeight(elem, direction, measure) {\r\n let computedStyle, result;\r\n\r\n let measurements = getMeasurements(elem, direction);\r\n\r\n if (measurements.base > 0) {\r\n return {\r\n base: measurements.base - measurements.padding - measurements.border,\r\n outer: measurements.base,\r\n outerfull: measurements.base + measurements.margin\r\n }[measure];\r\n }\r\n\r\n // Fall back to computed then uncomputed css if necessary\r\n computedStyle = getStyle(elem);\r\n result = computedStyle[direction];\r\n\r\n if (result < 0 || result === null) {\r\n result = elem.style[direction] || 0;\r\n }\r\n\r\n // Normalize \"\", auto, and prepare for extra\r\n result = parseFloat(result) || 0;\r\n\r\n return {\r\n base: result - measurements.padding - measurements.border,\r\n outer: result,\r\n outerfull: result + measurements.padding + measurements.border + measurements.margin\r\n }[measure];\r\n }\r\n\r\n // define missing methods\r\n return angular.forEach({\r\n before(newElem) {\r\n var children, elem, i, j, parent, ref, self;\r\n self = this;\r\n elem = self[0];\r\n parent = self.parent();\r\n children = parent.contents();\r\n if (children[0] === elem) {\r\n return parent.prepend(newElem);\r\n } else {\r\n for (i = j = 1, ref = children.length - 1; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\r\n if (children[i] === elem) {\r\n angular.element(children[i - 1]).after(newElem);\r\n return;\r\n }\r\n }\r\n throw new Error('invalid DOM structure ' + elem.outerHTML);\r\n }\r\n },\r\n height (value){\r\n var self;\r\n self = this;\r\n if (typeof value !== 'undefined') {\r\n if (angular.isNumber(value)) {\r\n value = value + 'px';\r\n }\r\n return css.call(self, 'height', value);\r\n } else {\r\n return getWidthHeight(this[0], 'height', 'base');\r\n }\r\n },\r\n outerHeight(option) {\r\n return getWidthHeight(this[0], 'height', option ? 'outerfull' : 'outer');\r\n },\r\n outerWidth(option) {\r\n return getWidthHeight(this[0], 'width', option ? 'outerfull' : 'outer');\r\n },\r\n\r\n /*\r\n The offset setter method is not implemented\r\n */\r\n offset(value) {\r\n let docElem, win;\r\n let self = this;\r\n let box = {\r\n top: 0,\r\n left: 0\r\n };\r\n let elem = self[0];\r\n let doc = elem && elem.ownerDocument;\r\n\r\n if (arguments.length) {\r\n if (value === undefined) {\r\n return self;\r\n }\r\n // TODO: implement setter\r\n throw new Error('offset setter method is not implemented');\r\n }\r\n\r\n if (!doc) {\r\n return;\r\n }\r\n\r\n docElem = doc.documentElement;\r\n\r\n // TODO: Make sure it's not a disconnected DOM node\r\n\r\n if (elem.getBoundingClientRect != null) {\r\n box = elem.getBoundingClientRect();\r\n }\r\n\r\n win = doc.defaultView || doc.parentWindow;\r\n\r\n return {\r\n top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\r\n left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)\r\n };\r\n },\r\n scrollTop(value) {\r\n return scrollTo(this, 'top', value);\r\n },\r\n scrollLeft(value) {\r\n return scrollTo(this, 'left', value);\r\n }\r\n }, (value, key) => {\r\n if (!element.prototype[key]) {\r\n return element.prototype[key] = value;\r\n }\r\n });\r\n }\r\n\r\n}\r\n","const hideClassToken = 'ng-ui-scroll-hide';\r\n\r\nexport default class ElementRoutines {\r\n\r\n static addCSSRules() {\r\n const selector = '.' + hideClassToken;\r\n const rules = 'display: none';\r\n const sheet = document.styleSheets[0];\r\n let index;\r\n try {\r\n index = sheet.cssRules.length;\r\n } catch (err) {\r\n index = 0;\r\n }\r\n if('insertRule' in sheet) {\r\n sheet.insertRule(selector + '{' + rules + '}', index);\r\n }\r\n else if('addRule' in sheet) {\r\n sheet.addRule(selector, rules, index);\r\n }\r\n }\r\n\r\n constructor($injector, $q) {\r\n this.$animate = ($injector.has && $injector.has('$animate')) ? $injector.get('$animate') : null;\r\n this.isAngularVersionLessThen1_3 = angular.version.major === 1 && angular.version.minor < 3;\r\n this.$q = $q;\r\n }\r\n\r\n hideElement(wrapper) {\r\n wrapper.element.addClass(hideClassToken);\r\n }\r\n\r\n showElement(wrapper) {\r\n wrapper.element.removeClass(hideClassToken);\r\n }\r\n\r\n insertElement(newElement, previousElement) {\r\n previousElement.after(newElement);\r\n return [];\r\n }\r\n\r\n removeElement(wrapper) {\r\n wrapper.element.remove();\r\n wrapper.scope.$destroy();\r\n return [];\r\n }\r\n\r\n insertElementAnimated(newElement, previousElement) {\r\n if (!this.$animate) {\r\n return this.insertElement(newElement, previousElement);\r\n }\r\n\r\n if (this.isAngularVersionLessThen1_3) {\r\n const deferred = this.$q.defer();\r\n // no need for parent - previous element is never null\r\n this.$animate.enter(newElement, null, previousElement, () => deferred.resolve());\r\n\r\n return [deferred.promise];\r\n }\r\n\r\n // no need for parent - previous element is never null\r\n return [this.$animate.enter(newElement, null, previousElement)];\r\n }\r\n\r\n removeElementAnimated(wrapper) {\r\n if (!this.$animate) {\r\n return this.removeElement(wrapper);\r\n }\r\n\r\n if (this.isAngularVersionLessThen1_3) {\r\n const deferred = this.$q.defer();\r\n this.$animate.leave(wrapper.element, () => {\r\n wrapper.scope.$destroy();\r\n return deferred.resolve();\r\n });\r\n\r\n return [deferred.promise];\r\n }\r\n\r\n return [(this.$animate.leave(wrapper.element)).then(() => wrapper.scope.$destroy())];\r\n }\r\n}","export const OPERATIONS = {\r\n PREPEND: 'prepend',\r\n APPEND: 'append',\r\n INSERT: 'insert',\r\n REMOVE: 'remove',\r\n NONE: 'none'\r\n};\r\n","import { OPERATIONS } from './utils';\r\n\r\nexport default function ScrollBuffer(elementRoutines, bufferSize, startIndex) {\r\n const buffer = Object.create(Array.prototype);\r\n\r\n angular.extend(buffer, {\r\n size: bufferSize,\r\n\r\n reset(startIndex) {\r\n buffer.remove(0, buffer.length);\r\n buffer.eof = false;\r\n buffer.bof = false;\r\n buffer.first = startIndex;\r\n buffer.next = startIndex;\r\n buffer.minIndex = startIndex;\r\n buffer.maxIndex = startIndex;\r\n buffer.minIndexUser = null;\r\n buffer.maxIndexUser = null;\r\n },\r\n\r\n append(items) {\r\n items.forEach((item) => {\r\n ++buffer.next;\r\n buffer.insert(OPERATIONS.APPEND, item);\r\n });\r\n buffer.maxIndex = buffer.eof ? buffer.next - 1 : Math.max(buffer.next - 1, buffer.maxIndex);\r\n },\r\n\r\n prepend(items, immutableTop) {\r\n items.reverse().forEach((item) => {\r\n if (immutableTop) {\r\n ++buffer.next;\r\n }\r\n else {\r\n --buffer.first;\r\n }\r\n buffer.insert(OPERATIONS.PREPEND, item);\r\n });\r\n buffer.minIndex = buffer.bof ? buffer.minIndex = buffer.first : Math.min(buffer.first, buffer.minIndex);\r\n },\r\n\r\n /**\r\n * inserts wrapped element in the buffer\r\n * the first argument is either operation keyword (see below) or a number for operation 'insert'\r\n * for insert the number is the index for the buffer element the new one have to be inserted after\r\n * operations: 'append', 'prepend', 'insert', 'remove', 'none'\r\n */\r\n insert(operation, item, shiftTop) {\r\n const wrapper = {\r\n item: item\r\n };\r\n\r\n if (operation % 1 === 0) { // it is an insert\r\n wrapper.op = OPERATIONS.INSERT;\r\n buffer.splice(operation, 0, wrapper);\r\n if (shiftTop) {\r\n buffer.first--;\r\n }\r\n else {\r\n buffer.next++;\r\n }\r\n } else {\r\n wrapper.op = operation;\r\n switch (operation) {\r\n case OPERATIONS.APPEND:\r\n buffer.push(wrapper);\r\n break;\r\n case OPERATIONS.PREPEND:\r\n buffer.unshift(wrapper);\r\n break;\r\n }\r\n }\r\n },\r\n\r\n // removes elements from buffer\r\n remove(arg1, arg2) {\r\n if (angular.isNumber(arg1)) {\r\n // removes items from arg1 (including) through arg2 (excluding)\r\n for (let i = arg1; i < arg2; i++) {\r\n elementRoutines.removeElement(buffer[i]);\r\n }\r\n return buffer.splice(arg1, arg2 - arg1);\r\n }\r\n // removes single item (wrapper) from the buffer\r\n buffer.splice(buffer.indexOf(arg1), 1);\r\n if (arg1.shiftTop && buffer.first === this.getAbsMinIndex()) {\r\n this.incrementMinIndex();\r\n }\r\n else {\r\n this.decrementMaxIndex();\r\n }\r\n if (arg1.shiftTop) {\r\n buffer.first++;\r\n }\r\n else {\r\n buffer.next--;\r\n }\r\n if (!buffer.length) {\r\n buffer.minIndex = Math.min(buffer.maxIndex, buffer.minIndex);\r\n }\r\n\r\n return elementRoutines.removeElementAnimated(arg1);\r\n },\r\n\r\n incrementMinIndex() {\r\n if (buffer.minIndexUser !== null) {\r\n if (buffer.minIndex > buffer.minIndexUser) {\r\n buffer.minIndexUser++;\r\n return;\r\n }\r\n if (buffer.minIndex === buffer.minIndexUser) {\r\n buffer.minIndexUser++;\r\n }\r\n }\r\n buffer.minIndex++;\r\n },\r\n\r\n decrementMaxIndex() {\r\n if (buffer.maxIndexUser !== null && buffer.maxIndex <= buffer.maxIndexUser) {\r\n buffer.maxIndexUser--;\r\n }\r\n buffer.maxIndex--;\r\n },\r\n\r\n getAbsMinIndex() {\r\n if (buffer.minIndexUser !== null) {\r\n return Math.min(buffer.minIndexUser, buffer.minIndex);\r\n }\r\n return buffer.minIndex;\r\n },\r\n\r\n getAbsMaxIndex() {\r\n if (buffer.maxIndexUser !== null) {\r\n return Math.max(buffer.maxIndexUser, buffer.maxIndex);\r\n }\r\n return buffer.maxIndex;\r\n },\r\n\r\n effectiveHeight(elements) {\r\n if (!elements.length) {\r\n return 0;\r\n }\r\n let top = Number.MAX_VALUE;\r\n let bottom = Number.NEGATIVE_INFINITY;\r\n elements.forEach((wrapper) => {\r\n if (wrapper.element[0].offsetParent) {\r\n // element style is not display:none\r\n top = Math.min(top, wrapper.element.offset().top);\r\n bottom = Math.max(bottom, wrapper.element.offset().top + wrapper.element.outerHeight(true));\r\n }\r\n });\r\n return Math.max(0, bottom - top);\r\n },\r\n\r\n getItems() {\r\n return buffer.filter(item => item.op === OPERATIONS.NONE);\r\n },\r\n\r\n getFirstItem() {\r\n const list = buffer.getItems();\r\n if (!list.length) {\r\n return null;\r\n }\r\n return list[0].item;\r\n },\r\n\r\n getLastItem() {\r\n const list = buffer.getItems();\r\n if (!list.length) {\r\n return null;\r\n }\r\n return list[list.length - 1].item;\r\n }\r\n\r\n });\r\n\r\n buffer.reset(startIndex);\r\n\r\n return buffer;\r\n}\r\n","// Can't just extend the Array, due to Babel does not support built-in classes extending\r\n// This solution was taken from https://stackoverflow.com/questions/46897414/es6-class-extends-array-workaround-for-es5-babel-transpile\r\nclass CacheProto {\r\n add(item) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index === item.scope.$index) {\r\n this[i].height = item.element.outerHeight();\r\n return;\r\n }\r\n }\r\n this.push({\r\n index: item.scope.$index,\r\n height: item.element.outerHeight()\r\n });\r\n this.sort((a, b) => ((a.index < b.index) ? -1 : ((a.index > b.index) ? 1 : 0)));\r\n }\r\n\r\n remove(argument, _shiftTop) {\r\n const index = argument % 1 === 0 ? argument : argument.scope.$index;\r\n const shiftTop = argument % 1 === 0 ? _shiftTop : argument.shiftTop;\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index === index) {\r\n this.splice(i, 1);\r\n break;\r\n }\r\n }\r\n if (!shiftTop) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index > index) {\r\n this[i].index--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n clear() {\r\n this.length = 0;\r\n }\r\n}\r\n\r\nfunction Cache() {\r\n const instance = [];\r\n instance.push.apply(instance, arguments);\r\n Object.setPrototypeOf(instance, Cache.prototype);\r\n return instance;\r\n}\r\nCache.prototype = Object.create(Array.prototype);\r\nObject.getOwnPropertyNames(CacheProto.prototype).forEach(methodName =>\r\n Cache.prototype[methodName] = CacheProto.prototype[methodName]\r\n);\r\n\r\nfunction generateElement(template) {\r\n if (template.nodeType !== Node.ELEMENT_NODE) {\r\n throw new Error('ui-scroll directive requires an Element node for templating the view');\r\n }\r\n let element;\r\n switch (template.tagName.toLowerCase()) {\r\n case 'dl':\r\n throw new Error(`ui-scroll directive does not support <${template.tagName}> as a repeating tag: ${template.outerHTML}`);\r\n case 'tr':\r\n let table = angular.element('');\r\n element = table.find('tr');\r\n break;\r\n case 'li':\r\n element = angular.element('');\r\n break;\r\n default:\r\n element = angular.element('');\r\n }\r\n return element;\r\n}\r\n\r\nclass Padding {\r\n constructor(template) {\r\n this.element = generateElement(template);\r\n this.cache = new Cache();\r\n }\r\n\r\n height() {\r\n return this.element.height.apply(this.element, arguments);\r\n }\r\n}\r\n\r\nexport default Padding;","import Padding from './padding';\r\n\r\nexport default function Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding) {\r\n let topPadding = null;\r\n let bottomPadding = null;\r\n const viewport = viewportController && viewportController.viewport ? viewportController.viewport : angular.element(window);\r\n const container = viewportController && viewportController.container ? viewportController.container : undefined;\r\n const scope = viewportController && viewportController.scope ? viewportController.scope : $rootScope;\r\n\r\n viewport.css({\r\n 'overflow-anchor': 'none',\r\n 'overflow-y': 'auto',\r\n 'display': 'block'\r\n });\r\n\r\n function bufferPadding() {\r\n return viewport.outerHeight() * padding; // some extra space to initiate preload\r\n }\r\n\r\n angular.extend(viewport, {\r\n getScope() {\r\n return scope;\r\n },\r\n\r\n createPaddingElements(template) {\r\n topPadding = new Padding(template);\r\n bottomPadding = new Padding(template);\r\n element.before(topPadding.element);\r\n element.after(bottomPadding.element);\r\n topPadding.height(0);\r\n bottomPadding.height(0);\r\n },\r\n\r\n applyContainerStyle() {\r\n if (!container) {\r\n return true;\r\n }\r\n if (container !== viewport) {\r\n viewport.css('height', window.getComputedStyle(container[0]).height);\r\n }\r\n return viewport.height() > 0;\r\n },\r\n\r\n bottomDataPos() {\r\n let scrollHeight = viewport[0].scrollHeight;\r\n scrollHeight = scrollHeight != null ? scrollHeight : viewport[0].document.documentElement.scrollHeight;\r\n return scrollHeight - bottomPadding.height();\r\n },\r\n\r\n topDataPos() {\r\n return topPadding.height();\r\n },\r\n\r\n bottomVisiblePos() {\r\n return viewport.scrollTop() + viewport.outerHeight();\r\n },\r\n\r\n topVisiblePos() {\r\n return viewport.scrollTop();\r\n },\r\n\r\n insertElement(e, sibling) {\r\n return elementRoutines.insertElement(e, sibling || topPadding.element);\r\n },\r\n\r\n insertElementAnimated(e, sibling) {\r\n return elementRoutines.insertElementAnimated(e, sibling || topPadding.element);\r\n },\r\n\r\n shouldLoadBottom() {\r\n return !buffer.eof && viewport.bottomDataPos() < viewport.bottomVisiblePos() + bufferPadding();\r\n },\r\n\r\n clipBottom() {\r\n // clip the invisible items off the bottom\r\n let overage = 0;\r\n let overageHeight = 0;\r\n let itemHeight = 0;\r\n let emptySpaceHeight = viewport.bottomDataPos() - viewport.bottomVisiblePos() - bufferPadding();\r\n\r\n for (let i = buffer.length - 1; i >= 0; i--) {\r\n itemHeight = buffer[i].element.outerHeight(true);\r\n if (overageHeight + itemHeight > emptySpaceHeight) {\r\n break;\r\n }\r\n bottomPadding.cache.add(buffer[i]);\r\n overageHeight += itemHeight;\r\n overage++;\r\n }\r\n\r\n if (overage > 0) {\r\n buffer.eof = false;\r\n buffer.remove(buffer.length - overage, buffer.length);\r\n buffer.next -= overage;\r\n viewport.adjustPaddings();\r\n }\r\n },\r\n\r\n shouldLoadTop() {\r\n return !buffer.bof && (viewport.topDataPos() > viewport.topVisiblePos() - bufferPadding());\r\n },\r\n\r\n clipTop() {\r\n // clip the invisible items off the top\r\n let overage = 0;\r\n let overageHeight = 0;\r\n let itemHeight = 0;\r\n let emptySpaceHeight = viewport.topVisiblePos() - viewport.topDataPos() - bufferPadding();\r\n\r\n for (let i = 0; i < buffer.length; i++) {\r\n itemHeight = buffer[i].element.outerHeight(true);\r\n if (overageHeight + itemHeight > emptySpaceHeight) {\r\n break;\r\n }\r\n topPadding.cache.add(buffer[i]);\r\n overageHeight += itemHeight;\r\n overage++;\r\n }\r\n\r\n if (overage > 0) {\r\n // we need to adjust top padding element before items are removed from top\r\n // to avoid strange behaviour of scroll bar during remove top items when we are at the very bottom\r\n topPadding.height(topPadding.height() + overageHeight);\r\n buffer.bof = false;\r\n buffer.remove(0, overage);\r\n buffer.first += overage;\r\n }\r\n },\r\n\r\n adjustPaddings() {\r\n if (!buffer.length) {\r\n return;\r\n }\r\n\r\n // precise heights calculation based on items that are in buffer or that were in buffer once\r\n const visibleItemsHeight = buffer.reduce((summ, item) => summ + item.element.outerHeight(true), 0);\r\n\r\n let topPaddingHeight = 0, topCount = 0;\r\n topPadding.cache.forEach(item => {\r\n if (item.index < buffer.first) {\r\n topPaddingHeight += item.height;\r\n topCount++;\r\n }\r\n });\r\n\r\n let bottomPaddingHeight = 0, bottomCount = 0;\r\n bottomPadding.cache.forEach(item => {\r\n if (item.index >= buffer.next) {\r\n bottomPaddingHeight += item.height;\r\n bottomCount++;\r\n }\r\n });\r\n\r\n const totalHeight = visibleItemsHeight + topPaddingHeight + bottomPaddingHeight;\r\n const averageItemHeight = totalHeight / (topCount + bottomCount + buffer.length);\r\n\r\n // average heights calculation, items that have never been reached\r\n let adjustTopPadding = buffer.minIndexUser !== null && buffer.minIndex > buffer.minIndexUser;\r\n let adjustBottomPadding = buffer.maxIndexUser !== null && buffer.maxIndex < buffer.maxIndexUser;\r\n let topPaddingHeightAdd = adjustTopPadding ? (buffer.minIndex - buffer.minIndexUser) * averageItemHeight : 0;\r\n let bottomPaddingHeightAdd = adjustBottomPadding ? (buffer.maxIndexUser - buffer.maxIndex) * averageItemHeight : 0;\r\n\r\n // paddings combine adjustment\r\n topPadding.height(topPaddingHeight + topPaddingHeightAdd);\r\n bottomPadding.height(bottomPaddingHeight + bottomPaddingHeightAdd);\r\n },\r\n\r\n onAfterMinIndexSet(topPaddingHeightOld) {\r\n // additional scrollTop adjustment in case of datasource.minIndex external set\r\n if (buffer.minIndexUser !== null && buffer.minIndex > buffer.minIndexUser) {\r\n let diff = topPadding.height() - topPaddingHeightOld;\r\n viewport.scrollTop(viewport.scrollTop() + diff);\r\n while((diff -= viewport.scrollTop()) > 0) {\r\n bottomPadding.height(bottomPadding.height() + diff);\r\n viewport.scrollTop(viewport.scrollTop() + diff);\r\n }\r\n }\r\n },\r\n\r\n onAfterPrepend(updates) {\r\n if (!updates.prepended.length) {\r\n return;\r\n }\r\n const height = buffer.effectiveHeight(updates.prepended);\r\n const paddingHeight = topPadding.height() - height;\r\n if (paddingHeight >= 0) {\r\n topPadding.height(paddingHeight);\r\n return;\r\n }\r\n const position = viewport.scrollTop();\r\n const newPosition = position - paddingHeight;\r\n viewport.synthetic = { previous: position, next: newPosition };\r\n topPadding.height(0);\r\n viewport.scrollTop(newPosition);\r\n },\r\n\r\n resetTopPadding() {\r\n topPadding.height(0);\r\n topPadding.cache.clear();\r\n },\r\n\r\n resetBottomPadding() {\r\n bottomPadding.height(0);\r\n bottomPadding.cache.clear();\r\n },\r\n\r\n removeCacheItem(item, shiftTop) {\r\n topPadding.cache.remove(item, shiftTop);\r\n bottomPadding.cache.remove(item, shiftTop);\r\n },\r\n\r\n removeItem(item) {\r\n this.removeCacheItem(item);\r\n return buffer.remove(item);\r\n }\r\n });\r\n\r\n return viewport;\r\n}\r\n","import { OPERATIONS } from './utils';\r\n\r\nclass Adapter {\r\n\r\n constructor($scope, $parse, $attr, viewport, buffer, doAdjust, reload) {\r\n this.$parse = $parse;\r\n this.$attr = $attr;\r\n this.viewport = viewport;\r\n this.buffer = buffer;\r\n\r\n this.doAdjust = doAdjust;\r\n this.reload = reload;\r\n\r\n this.isLoading = false;\r\n this.disabled = false;\r\n\r\n const viewportScope = viewport.getScope();\r\n this.startScope = viewportScope.$parent ? viewportScope : $scope;\r\n\r\n this.publicContext = {};\r\n this.assignAdapter($attr.adapter);\r\n this.generatePublicContext();\r\n }\r\n\r\n assignAdapter(adapterAttr) {\r\n if (!adapterAttr || !(adapterAttr = adapterAttr.replace(/^\\s+|\\s+$/gm, ''))) {\r\n return;\r\n }\r\n let adapterOnScope;\r\n\r\n try {\r\n this.$parse(adapterAttr).assign(this.startScope, {});\r\n adapterOnScope = this.$parse(adapterAttr)(this.startScope);\r\n }\r\n catch (error) {\r\n error.message = `Angular ui-scroll Adapter assignment exception.\\n` +\r\n `Can't parse \"${adapterAttr}\" expression.\\n` +\r\n error.message;\r\n throw error;\r\n }\r\n\r\n angular.extend(adapterOnScope, this.publicContext);\r\n this.publicContext = adapterOnScope;\r\n }\r\n\r\n generatePublicContext() {\r\n // these methods will be accessible out of ui-scroll via user defined adapter\r\n const publicMethods = ['reload', 'applyUpdates', 'append', 'prepend', 'isBOF', 'isEOF', 'isEmpty'];\r\n for (let i = publicMethods.length - 1; i >= 0; i--) {\r\n this.publicContext[publicMethods[i]] = this[publicMethods[i]].bind(this);\r\n }\r\n\r\n // these read-only props will be accessible out of ui-scroll via user defined adapter\r\n const publicProps = ['isLoading', 'topVisible', 'topVisibleElement', 'topVisibleScope', 'bottomVisible', 'bottomVisibleElement', 'bottomVisibleScope'];\r\n for (let i = publicProps.length - 1; i >= 0; i--) {\r\n let property, attr = this.$attr[publicProps[i]];\r\n Object.defineProperty(this, publicProps[i], {\r\n get: () => property,\r\n set: (value) => {\r\n property = value;\r\n this.publicContext[publicProps[i]] = value;\r\n if (attr) {\r\n this.$parse(attr).assign(this.startScope, value);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // read-only immediately calculated public properties\r\n const publicPropsImmediate = ['bufferFirst', 'bufferLast', 'bufferLength'];\r\n for (let i = publicPropsImmediate.length - 1; i >= 0; i--) {\r\n Object.defineProperty(this.publicContext, publicPropsImmediate[i], {\r\n get: () => this[publicPropsImmediate[i]]\r\n });\r\n }\r\n\r\n // non-read-only public property\r\n Object.defineProperty(this.publicContext, 'disabled', {\r\n get: () => this.disabled,\r\n set: (value) => (!(this.disabled = value)) ? this.doAdjust() : null\r\n });\r\n }\r\n\r\n loading(value) {\r\n this.isLoading = value;\r\n }\r\n\r\n isBOF() {\r\n return this.buffer.bof;\r\n }\r\n\r\n isEOF() {\r\n return this.buffer.eof;\r\n }\r\n\r\n isEmpty() {\r\n return !this.buffer.length;\r\n }\r\n\r\n get bufferLength() {\r\n return this.buffer.getItems().length;\r\n }\r\n\r\n get bufferFirst() {\r\n return this.buffer.getFirstItem();\r\n }\r\n\r\n get bufferLast() {\r\n return this.buffer.getLastItem();\r\n }\r\n\r\n append(newItems) {\r\n this.buffer.append(newItems);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n prepend(newItems, options = {}) {\r\n this.buffer.prepend(newItems, options.immutableTop);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n applyUpdates(arg1, arg2, arg3) {\r\n if (typeof arg1 === 'function') {\r\n this.applyUpdatesFunc(arg1, arg2);\r\n } else {\r\n this.applyUpdatesIndex(arg1, arg2, arg3);\r\n }\r\n this.doAdjust();\r\n }\r\n\r\n applyUpdatesFunc(cb, options = {}) {\r\n this.buffer.slice(0).forEach((wrapper) => {\r\n // we need to do it on the buffer clone, because buffer content\r\n // may change as we iterate through\r\n this.applyUpdate(wrapper, cb(wrapper.item, wrapper.scope, wrapper.element), options);\r\n });\r\n }\r\n\r\n applyUpdatesIndex(index, newItems, options = {}) {\r\n if (index % 1 !== 0) {\r\n throw new Error('applyUpdates - ' + index + ' is not a valid index (should be an integer)');\r\n }\r\n const _index = index - this.buffer.first;\r\n\r\n // apply updates only within buffer\r\n if (_index >= 0 && _index < this.buffer.length) {\r\n this.applyUpdate(this.buffer[_index], newItems, options);\r\n }\r\n // out-of-buffer case: deletion may affect Paddings\r\n else if(index >= this.buffer.getAbsMinIndex() && index <= this.buffer.getAbsMaxIndex()) {\r\n if(angular.isArray(newItems) && !newItems.length) {\r\n this.viewport.removeCacheItem(index, !options.immutableTop && index === this.buffer.minIndex);\r\n if (!options.immutableTop && index === this.buffer.getAbsMinIndex()) {\r\n this.buffer.incrementMinIndex();\r\n }\r\n else {\r\n this.buffer.decrementMaxIndex();\r\n }\r\n }\r\n }\r\n }\r\n\r\n applyUpdate(wrapper, newItems, options = {}) {\r\n if (!angular.isArray(newItems)) {\r\n return;\r\n }\r\n let position = this.buffer.indexOf(wrapper);\r\n if (!newItems.reverse().some(newItem => newItem === wrapper.item)) {\r\n wrapper.op = OPERATIONS.REMOVE;\r\n // try to catch \"first\" edge case on remove\r\n if (!options.immutableTop && !newItems.length) {\r\n // this is the first item, or the previous one's part of the \"shift-top\" group\r\n if (\r\n (position === 0 && this.buffer.bof) ||\r\n (position !== 0 && this.buffer[position - 1].shiftTop)\r\n ) {\r\n wrapper.shiftTop = true;\r\n }\r\n }\r\n }\r\n newItems.forEach((newItem) => {\r\n if (newItem === wrapper.item) {\r\n position--;\r\n } else {\r\n // 3 parameter (shiftTop) is to catch \"first\" edge case on insert\r\n this.buffer.insert(position + 1, newItem, !options.immutableTop && position === -1);\r\n }\r\n });\r\n }\r\n\r\n calculateProperties() {\r\n let rowTop = null, topHeight = 0;\r\n let topDone = false, bottomDone = false;\r\n const length = this.buffer.length;\r\n\r\n for (let i = 0; i < length; i++) {\r\n const item = this.buffer[i];\r\n const itemTop = item.element.offset().top;\r\n\r\n if (rowTop !== itemTop) { // a new row condition\r\n const itemHeight = item.element.outerHeight(true);\r\n const top = this.viewport.topDataPos() + topHeight + itemHeight;\r\n\r\n if (!topDone && top > this.viewport.topVisiblePos()) {\r\n topDone = true;\r\n this['topVisible'] = item.item;\r\n this['topVisibleElement'] = item.element;\r\n this['topVisibleScope'] = item.scope;\r\n }\r\n if (!bottomDone && (top >= this.viewport.bottomVisiblePos() || (i === length - 1 && this.isEOF()))) {\r\n bottomDone = true;\r\n this['bottomVisible'] = item.item;\r\n this['bottomVisibleElement'] = item.element;\r\n this['bottomVisibleScope'] = item.scope;\r\n }\r\n topHeight += itemHeight;\r\n }\r\n rowTop = itemTop;\r\n\r\n if (topDone && bottomDone) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default Adapter;\r\n","import JQLiteExtras from './modules/jqLiteExtras';\r\nimport ElementRoutines from './modules/elementRoutines.js';\r\nimport ScrollBuffer from './modules/buffer.js';\r\nimport Viewport from './modules/viewport.js';\r\nimport Adapter from './modules/adapter.js';\r\nimport { OPERATIONS } from './modules/utils';\r\n\r\nangular.module('ui.scroll', [])\r\n\r\n .constant('JQLiteExtras', JQLiteExtras)\r\n .run(['JQLiteExtras', (JQLiteExtras) => {\r\n const elt = angular.element;\r\n !(window.jQuery && elt.fn && elt.fn.jquery) ? (new JQLiteExtras()).registerFor(elt) : null;\r\n ElementRoutines.addCSSRules();\r\n }])\r\n\r\n .directive('uiScrollViewport', function () {\r\n return {\r\n restrict: 'A',\r\n controller: [\r\n '$scope',\r\n '$element',\r\n function (scope, element) {\r\n this.container = element;\r\n this.viewport = element;\r\n this.scope = scope;\r\n\r\n angular.forEach(element.children(), child => {\r\n if (child.tagName.toLowerCase() === 'tbody') {\r\n this.viewport = angular.element(child);\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n ]\r\n };\r\n })\r\n\r\n .directive('uiScroll', [\r\n '$log',\r\n '$injector',\r\n '$rootScope',\r\n '$timeout',\r\n '$interval',\r\n '$q',\r\n '$parse',\r\n function (console, $injector, $rootScope, $timeout, $interval, $q, $parse) {\r\n\r\n return {\r\n require: ['?^uiScrollViewport'],\r\n restrict: 'A',\r\n transclude: 'element',\r\n priority: 1000,\r\n terminal: true,\r\n link: link\r\n };\r\n\r\n function link($scope, element, $attr, controllers, linker) {\r\n const match = $attr.uiScroll.match(/^\\s*(\\w+)\\s+in\\s+([(\\w|\\$)\\.]+)\\s*$/);\r\n if (!match) {\r\n throw new Error('Expected uiScroll in form of \\'_item_ in _datasource_\\' but got \\'' + $attr.uiScroll + '\\'');\r\n }\r\n\r\n function parseNumber(value, defaultValue, isFloat) {\r\n if (!isFloat) {\r\n value = value === null ? defaultValue : Math.floor(value);\r\n }\r\n return isNaN(value) ? defaultValue : value;\r\n }\r\n\r\n function parseNumericAttr(value, defaultValue, isFloat) {\r\n const result = $parse(value)($scope);\r\n return parseNumber(result, defaultValue, isFloat);\r\n }\r\n\r\n function parseBooleanAttr(value, defaultValue) {\r\n const result = $parse(value)($scope);\r\n return typeof result === 'boolean' ? result : defaultValue;\r\n }\r\n\r\n const BUFFER_MIN = 3;\r\n const BUFFER_DEFAULT = 10;\r\n const PADDING_MIN = 0.3;\r\n const PADDING_DEFAULT = 0.5;\r\n const HANDLE_INERTIA_DEFAULT = true;\r\n const START_INDEX_DEFAULT = 1;\r\n const MAX_VIEWPORT_DELAY = 500;\r\n const VIEWPORT_POLLING_INTERVAL = 50;\r\n\r\n let datasource = null;\r\n const itemName = match[1];\r\n const datasourceName = match[2];\r\n const viewportController = controllers[0];\r\n const bufferSize = Math.max(BUFFER_MIN, parseNumericAttr($attr.bufferSize, BUFFER_DEFAULT));\r\n const padding = Math.max(PADDING_MIN, parseNumericAttr($attr.padding, PADDING_DEFAULT, true));\r\n const handleInertia = parseBooleanAttr($attr.handleInertia, HANDLE_INERTIA_DEFAULT);\r\n let startIndex = parseNumericAttr($attr.startIndex, START_INDEX_DEFAULT);\r\n let ridActual = 0; // current data revision id\r\n let pending = [];\r\n\r\n const elementRoutines = new ElementRoutines($injector, $q);\r\n const buffer = new ScrollBuffer(elementRoutines, bufferSize, startIndex);\r\n const viewport = new Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding);\r\n const adapter = new Adapter($scope, $parse, $attr, viewport, buffer, doAdjust, reload);\r\n\r\n if (viewportController) {\r\n viewportController.adapter = adapter;\r\n }\r\n\r\n const isDatasourceValid = () =>\r\n Object.prototype.toString.call(datasource) === '[object Object]' && typeof datasource.get === 'function';\r\n\r\n datasource = $parse(datasourceName)($scope); // try to get datasource on scope\r\n if (!isDatasourceValid()) {\r\n datasource = $injector.get(datasourceName); // try to inject datasource as service\r\n if (!isDatasourceValid()) {\r\n throw new Error(datasourceName + ' is not a valid datasource');\r\n }\r\n }\r\n\r\n let onRenderHandlers = [];\r\n function onRenderHandlersRunner() {\r\n onRenderHandlers.forEach(handler => handler.run());\r\n onRenderHandlers = [];\r\n }\r\n function persistDatasourceIndex(datasource, propName) {\r\n let getter;\r\n // need to postpone min/maxIndexUser processing if the view is empty\r\n if (angular.isNumber(datasource[propName])) {\r\n getter = datasource[propName];\r\n if (angular.isNumber(getter)) {\r\n onRenderHandlers = onRenderHandlers.filter(handler => handler.id !== propName);\r\n onRenderHandlers.push({\r\n id: propName,\r\n run: () => datasource[propName] = getter\r\n });\r\n }\r\n }\r\n }\r\n\r\n function defineDatasourceIndex(datasource, propName, propUserName) {\r\n const descriptor = Object.getOwnPropertyDescriptor(datasource, propName);\r\n if (descriptor && (descriptor.set || descriptor.get)) {\r\n return;\r\n }\r\n let getter;\r\n persistDatasourceIndex(datasource, propName);\r\n Object.defineProperty(datasource, propName, {\r\n set: (value) => {\r\n getter = value;\r\n if (pending.length && !buffer.length) {\r\n persistDatasourceIndex(datasource, propName);\r\n return;\r\n }\r\n buffer[propUserName] = value;\r\n const topPaddingHeightOld = viewport.topDataPos();\r\n viewport.adjustPaddings();\r\n if (propName === 'minIndex') {\r\n viewport.onAfterMinIndexSet(topPaddingHeightOld);\r\n }\r\n },\r\n get: () => getter\r\n });\r\n }\r\n\r\n defineDatasourceIndex(datasource, 'minIndex', 'minIndexUser');\r\n defineDatasourceIndex(datasource, 'maxIndex', 'maxIndexUser');\r\n\r\n const fetchNext = (datasource.get.length !== 2) ?\r\n (success) => datasource.get(buffer.next, bufferSize, success) :\r\n (success) => {\r\n datasource.get({\r\n index: buffer.next,\r\n append: buffer.length ? buffer[buffer.length - 1].item : void 0,\r\n count: bufferSize\r\n }, success);\r\n };\r\n\r\n const fetchPrevious = (datasource.get.length !== 2) ?\r\n (success) => datasource.get(buffer.first - bufferSize, bufferSize, success) :\r\n (success) => {\r\n datasource.get({\r\n index: buffer.first - bufferSize,\r\n prepend: buffer.length ? buffer[0].item : void 0,\r\n count: bufferSize\r\n }, success);\r\n };\r\n\r\n const initialize = () => {\r\n let tryCount = 0;\r\n if (!viewport.applyContainerStyle()) {\r\n const timer = $interval(() => {\r\n tryCount++;\r\n if (viewport.applyContainerStyle()) {\r\n $interval.cancel(timer);\r\n doAdjust();\r\n }\r\n if (tryCount * VIEWPORT_POLLING_INTERVAL >= MAX_VIEWPORT_DELAY) {\r\n $interval.cancel(timer);\r\n throw Error(`ui-scroll directive requires a viewport with non-zero height in ${MAX_VIEWPORT_DELAY}ms`);\r\n }\r\n }, VIEWPORT_POLLING_INTERVAL);\r\n }\r\n else {\r\n doAdjust();\r\n }\r\n };\r\n\r\n /**\r\n * Build padding elements\r\n *\r\n * Calling linker is the only way I found to get access to the tag name of the template\r\n * to prevent the directive scope from pollution a new scope is created and destroyed\r\n * right after the builder creation is completed\r\n */\r\n linker((clone, scope) => {\r\n viewport.createPaddingElements(clone[0]);\r\n // we do not include the clone in the DOM. It means that the nested directives will not\r\n // be able to reach the parent directives, but in this case it is intentional because we\r\n // created the clone to access the template tag name\r\n scope.$destroy();\r\n clone.remove();\r\n });\r\n\r\n $scope.$on('$destroy', () => {\r\n unbindEvents();\r\n viewport.off('mousewheel', wheelHandler);\r\n });\r\n\r\n viewport.on('mousewheel', wheelHandler);\r\n\r\n initialize();\r\n\r\n /* Private function definitions */\r\n\r\n function isInvalid(rid) {\r\n return (rid && rid !== ridActual) || $scope.$$destroyed;\r\n }\r\n\r\n function bindEvents() {\r\n viewport.on('resize', resizeAndScrollHandler);\r\n viewport.on('scroll', resizeAndScrollHandler);\r\n }\r\n\r\n function unbindEvents() {\r\n viewport.off('resize', resizeAndScrollHandler);\r\n viewport.off('scroll', resizeAndScrollHandler);\r\n }\r\n\r\n function reload() {\r\n unbindEvents();\r\n viewport.resetTopPadding();\r\n viewport.resetBottomPadding();\r\n if (arguments.length) {\r\n startIndex = parseNumber(arguments[0], START_INDEX_DEFAULT, false);\r\n }\r\n buffer.reset(startIndex);\r\n persistDatasourceIndex(datasource, 'minIndex');\r\n persistDatasourceIndex(datasource, 'maxIndex');\r\n doAdjust();\r\n }\r\n\r\n function isElementVisible(wrapper) {\r\n return wrapper.element.height() && wrapper.element[0].offsetParent;\r\n }\r\n\r\n function visibilityWatcher(wrapper) {\r\n if (isElementVisible(wrapper)) {\r\n buffer.forEach((item) => {\r\n if (typeof item.unregisterVisibilityWatcher === 'function') {\r\n item.unregisterVisibilityWatcher();\r\n delete item.unregisterVisibilityWatcher;\r\n }\r\n });\r\n if (!pending.length) {\r\n $timeout(() => doAdjust());\r\n }\r\n }\r\n }\r\n\r\n function insertWrapperContent(wrapper, insertAfter) {\r\n createElement(wrapper, insertAfter, viewport.insertElement);\r\n if (!isElementVisible(wrapper)) {\r\n wrapper.unregisterVisibilityWatcher = wrapper.scope.$watch(() => visibilityWatcher(wrapper));\r\n }\r\n elementRoutines.hideElement(wrapper); // hide inserted elements before data binding\r\n }\r\n\r\n function createElement(wrapper, insertAfter, insertElement) {\r\n let promises = null;\r\n const sibling = (insertAfter > 0) ? buffer[insertAfter - 1].element : undefined;\r\n linker((clone, scope) => {\r\n promises = insertElement(clone, sibling);\r\n wrapper.element = clone;\r\n wrapper.scope = scope;\r\n scope[itemName] = wrapper.item;\r\n });\r\n // ui-scroll-grid apply\r\n if (adapter.transform) {\r\n const tdInitializer = wrapper.scope.uiScrollTdInitializer;\r\n if (tdInitializer && tdInitializer.linking) {\r\n adapter.transform(wrapper.scope, wrapper.element);\r\n } else {\r\n wrapper.scope.uiScrollTdInitializer = {\r\n onLink: () => adapter.transform(wrapper.scope, wrapper.element),\r\n scope: wrapper.scope\r\n };\r\n }\r\n }\r\n return promises;\r\n }\r\n\r\n function updateDOM() {\r\n let promises = [];\r\n const toBePrepended = [];\r\n const toBeRemoved = [];\r\n const inserted = [];\r\n\r\n buffer.forEach((wrapper, i) => {\r\n switch (wrapper.op) {\r\n case OPERATIONS.PREPEND:\r\n toBePrepended.unshift(wrapper);\r\n break;\r\n case OPERATIONS.APPEND:\r\n insertWrapperContent(wrapper, i);\r\n wrapper.op = OPERATIONS.NONE;\r\n inserted.push(wrapper);\r\n break;\r\n case OPERATIONS.INSERT:\r\n promises = promises.concat(createElement(wrapper, i, viewport.insertElementAnimated));\r\n wrapper.op = OPERATIONS.NONE;\r\n inserted.push(wrapper);\r\n break;\r\n case OPERATIONS.REMOVE:\r\n toBeRemoved.push(wrapper);\r\n }\r\n });\r\n\r\n toBeRemoved.forEach((wrapper) => promises = promises.concat(viewport.removeItem(wrapper)));\r\n\r\n if (toBePrepended.length)\r\n toBePrepended.forEach((wrapper) => {\r\n insertWrapperContent(wrapper);\r\n wrapper.op = OPERATIONS.NONE;\r\n });\r\n\r\n buffer.forEach((item, i) => item.scope.$index = buffer.first + i);\r\n\r\n return {\r\n prepended: toBePrepended,\r\n removed: toBeRemoved,\r\n inserted: inserted,\r\n animated: promises\r\n };\r\n\r\n }\r\n\r\n function updatePaddings(rid, updates) {\r\n // schedule another doAdjust after animation completion\r\n if (updates.animated.length) {\r\n $q.all(updates.animated).then(() => {\r\n viewport.adjustPaddings();\r\n doAdjust(rid);\r\n });\r\n } else {\r\n viewport.adjustPaddings();\r\n }\r\n }\r\n\r\n function enqueueFetch(rid, updates) {\r\n if (viewport.shouldLoadBottom()) {\r\n if (!updates || buffer.effectiveHeight(updates.inserted) > 0) {\r\n // this means that at least one item appended in the last batch has height > 0\r\n if (pending.push(true) === 1) {\r\n adapter.loading(true);\r\n fetch(rid);\r\n }\r\n }\r\n } else if (viewport.shouldLoadTop()) {\r\n if ((!updates || buffer.effectiveHeight(updates.prepended) > 0) || pending[0]) {\r\n // this means that at least one item appended in the last batch has height > 0\r\n // pending[0] = true means that previous fetch was appending. We need to force at least one prepend\r\n // BTW there will always be at least 1 element in the pending array because bottom is fetched first\r\n if (pending.push(false) === 1) {\r\n adapter.loading(true);\r\n fetch(rid);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function processUpdates() {\r\n const updates = updateDOM();\r\n\r\n // We need the item bindings to be processed before we can do adjustments\r\n !$scope.$$phase && !$rootScope.$$phase && $scope.$digest();\r\n\r\n updates.inserted.forEach(w => elementRoutines.showElement(w));\r\n updates.prepended.forEach(w => elementRoutines.showElement(w));\r\n return updates;\r\n }\r\n\r\n function doAdjust(rid) {\r\n if (!rid) { // dismiss pending requests\r\n pending = [];\r\n rid = ++ridActual;\r\n }\r\n\r\n const updates = processUpdates();\r\n\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n updatePaddings(rid, updates);\r\n enqueueFetch(rid);\r\n\r\n if (!pending.length) {\r\n adapter.calculateProperties();\r\n }\r\n }\r\n\r\n function doAdjustAfterFetch(rid) {\r\n const updates = processUpdates();\r\n\r\n viewport.onAfterPrepend(updates);\r\n\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n updatePaddings(rid, updates);\r\n onRenderHandlersRunner();\r\n enqueueFetch(rid, updates);\r\n pending.shift();\r\n\r\n if (pending.length)\r\n fetch(rid);\r\n else {\r\n adapter.loading(false);\r\n bindEvents();\r\n adapter.calculateProperties();\r\n }\r\n }\r\n\r\n function fetch(rid) {\r\n if (pending[0]) {// scrolling down\r\n if (buffer.length && !viewport.shouldLoadBottom()) {\r\n doAdjustAfterFetch(rid);\r\n } else {\r\n fetchNext((result) => {\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n if (result.length < bufferSize) {\r\n buffer.eof = true;\r\n }\r\n\r\n if (result.length > 0) {\r\n viewport.clipTop();\r\n buffer.append(result);\r\n }\r\n\r\n doAdjustAfterFetch(rid);\r\n });\r\n }\r\n } else { // scrolling up\r\n if (buffer.length && !viewport.shouldLoadTop()) {\r\n doAdjustAfterFetch(rid);\r\n } else {\r\n fetchPrevious((result) => {\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n if (result.length < bufferSize) {\r\n buffer.bof = true;\r\n // log 'bof is reached'\r\n }\r\n\r\n if (result.length > 0) {\r\n if (buffer.length) {\r\n viewport.clipBottom();\r\n }\r\n buffer.prepend(result);\r\n }\r\n\r\n doAdjustAfterFetch(rid);\r\n });\r\n }\r\n }\r\n }\r\n\r\n function fixInertia() {\r\n if (!viewport.synthetic) {\r\n return;\r\n }\r\n const oldPosition = viewport.synthetic.previous;\r\n const newPosition = viewport.synthetic.next;\r\n if (viewport.scrollTop() !== newPosition) {\r\n requestAnimationFrame(() => {\r\n const position = viewport.scrollTop();\r\n const diff = oldPosition - position;\r\n if (diff > 0) { // inertia over synthetic\r\n viewport.scrollTop(newPosition - diff);\r\n } else {\r\n viewport.scrollTop(newPosition);\r\n }\r\n viewport.synthetic = null;\r\n });\r\n return true;\r\n }\r\n viewport.synthetic = null;\r\n }\r\n\r\n function resizeAndScrollHandler() {\r\n if (handleInertia && fixInertia()) {\r\n return;\r\n }\r\n if (!$rootScope.$$phase && !adapter.isLoading && !adapter.disabled) {\r\n\r\n enqueueFetch(ridActual);\r\n\r\n if (pending.length) {\r\n unbindEvents();\r\n } else {\r\n adapter.calculateProperties();\r\n !$scope.$$phase && $scope.$digest();\r\n }\r\n }\r\n }\r\n\r\n function wheelHandler(event) {\r\n if (!adapter.disabled) {\r\n const scrollTop = viewport[0].scrollTop;\r\n const yMax = viewport[0].scrollHeight - viewport[0].clientHeight;\r\n\r\n if ((scrollTop === 0 && !buffer.bof) || (scrollTop === yMax && !buffer.eof)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n ]);\r\n"],"names":["JQLiteExtras","_classCallCheck","_createClass","key","value","registerFor","element","convertToPx","css","getStyle","isWindow","angular","prototype","name","self","elem","nodeType","style","call","obj","document","location","alert","setInterval","scrollTo","direction","_top$left$direction","_slicedToArray","top","left","method","prop","preserve","isValueDefined","documentElement","window","getComputedStyle","parseFloat","currentStyle","result","rs","rsLeft","core_pnum","source","rnumnonpx","RegExp","test","runtimeStyle","pixelLeft","getMeasurements","measure","base","borderA","borderB","computedMarginA","computedMarginB","computedStyle","dirA","dirB","marginA","marginB","paddingA","paddingB","height","width","padding","border","margin","_width$height$measure","offsetWidth","offsetHeight","getWidthHeight","measurements","outer","outerfull","forEach","before","newElem","children","i","j","parent","ref","contents","prepend","length","after","Error","outerHTML","isNumber","outerHeight","option","outerWidth","offset","docElem","win","box","doc","ownerDocument","arguments","undefined","getBoundingClientRect","defaultView","parentWindow","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","default","hideClassToken","ElementRoutines","$injector","$q","$animate","has","get","isAngularVersionLessThen1_3","version","major","minor","hideElement","wrapper","addClass","showElement","removeClass","insertElement","newElement","previousElement","removeElement","remove","scope","$destroy","insertElementAnimated","deferred","defer","enter","resolve","promise","removeElementAnimated","leave","then","addCSSRules","selector","rules","sheet","styleSheets","index","cssRules","err","insertRule","addRule","OPERATIONS","PREPEND","APPEND","INSERT","REMOVE","NONE","ScrollBuffer","elementRoutines","bufferSize","startIndex","buffer","Object","create","Array","extend","size","reset","eof","bof","first","next","minIndex","maxIndex","minIndexUser","maxIndexUser","append","items","item","insert","Math","max","immutableTop","reverse","min","operation","shiftTop","op","splice","push","unshift","arg1","arg2","indexOf","getAbsMinIndex","incrementMinIndex","decrementMaxIndex","getAbsMaxIndex","effectiveHeight","elements","Number","MAX_VALUE","bottom","NEGATIVE_INFINITY","offsetParent","getItems","filter","getFirstItem","list","getLastItem","CacheProto","add","$index","sort","a","b","argument","_shiftTop","clear","Cache","instance","apply","setPrototypeOf","getOwnPropertyNames","methodName","generateElement","template","Node","ELEMENT_NODE","tagName","toLowerCase","concat","table","find","Padding","cache","Viewport","viewportController","$rootScope","topPadding","bottomPadding","viewport","container","bufferPadding","getScope","createPaddingElements","applyContainerStyle","bottomDataPos","scrollHeight","topDataPos","bottomVisiblePos","topVisiblePos","e","sibling","shouldLoadBottom","clipBottom","overage","overageHeight","itemHeight","emptySpaceHeight","adjustPaddings","shouldLoadTop","clipTop","visibleItemsHeight","reduce","summ","topPaddingHeight","topCount","bottomPaddingHeight","bottomCount","totalHeight","averageItemHeight","adjustTopPadding","adjustBottomPadding","topPaddingHeightAdd","bottomPaddingHeightAdd","onAfterMinIndexSet","topPaddingHeightOld","diff","onAfterPrepend","updates","prepended","paddingHeight","position","newPosition","synthetic","previous","resetTopPadding","resetBottomPadding","removeCacheItem","removeItem","Adapter","$scope","$parse","$attr","doAdjust","reload","isLoading","disabled","viewportScope","startScope","$parent","publicContext","assignAdapter","adapter","generatePublicContext","adapterAttr","replace","adapterOnScope","assign","error","message","_this","publicMethods","bind","publicProps","_loop","_i","property","attr","defineProperty","set","publicPropsImmediate","_loop2","_i2","loading","isBOF","isEOF","isEmpty","newItems","options","applyUpdates","arg3","applyUpdatesFunc","applyUpdatesIndex","cb","_this2","slice","applyUpdate","_index","isArray","_this3","some","newItem","calculateProperties","rowTop","topHeight","topDone","bottomDone","itemTop","module","constant","run","elt","jQuery","fn","jquery","directive","restrict","controller","child","console","$timeout","$interval","require","transclude","priority","terminal","link","controllers","linker","match","uiScroll","parseNumber","defaultValue","isFloat","floor","isNaN","parseNumericAttr","parseBooleanAttr","BUFFER_MIN","BUFFER_DEFAULT","PADDING_MIN","PADDING_DEFAULT","HANDLE_INERTIA_DEFAULT","START_INDEX_DEFAULT","MAX_VIEWPORT_DELAY","VIEWPORT_POLLING_INTERVAL","datasource","itemName","datasourceName","handleInertia","ridActual","pending","isDatasourceValid","toString","onRenderHandlers","onRenderHandlersRunner","handler","persistDatasourceIndex","propName","getter","id","defineDatasourceIndex","propUserName","descriptor","getOwnPropertyDescriptor","fetchNext","success","count","fetchPrevious","initialize","tryCount","timer","cancel","clone","$on","unbindEvents","off","wheelHandler","on","isInvalid","rid","$$destroyed","bindEvents","resizeAndScrollHandler","isElementVisible","visibilityWatcher","unregisterVisibilityWatcher","insertWrapperContent","insertAfter","createElement","$watch","promises","transform","tdInitializer","uiScrollTdInitializer","linking","onLink","updateDOM","toBePrepended","toBeRemoved","inserted","removed","animated","updatePaddings","all","enqueueFetch","fetch","processUpdates","$$phase","$digest","w","doAdjustAfterFetch","shift","fixInertia","oldPosition","requestAnimationFrame","event","yMax","clientHeight","preventDefault"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/ui-scroll.min.js b/dist/ui-scroll.min.js
index ce39730..29bc98c 100644
--- a/dist/ui-scroll.min.js
+++ b/dist/ui-scroll.min.js
@@ -1,2 +1,2 @@
-(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw i}}return u}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0?{base:l.base-l.padding-l.border,outer:l.base,outerfull:l.base+l.margin}[a]:(((u=i(e)[r])<0||null===u)&&(u=e.style[r]||0),{base:(u=parseFloat(u)||0)-l.padding-l.border,outer:u,outerfull:u+l.padding+l.border+l.margin}[a])}return r=angular.element.prototype.css,e.prototype.css=function(e,t){var n=this[0];if(n&&3!==n.nodeType&&8!==n.nodeType&&n.style)return r.call(this,e,t)},o=function(e){return e&&e.document&&e.location&&e.alert&&e.setInterval},window.getComputedStyle?(i=function(e){return window.getComputedStyle(e,null)},n=function(e,t){return parseFloat(t)}):(i=function(e){return e.currentStyle},n=function(e,t){var n,r,i,o,a;return new RegExp("^("+/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source+")(?!px)[a-z%]+$","i").test(t)?(n=(a=e.style).left,o=(i=e.runtimeStyle)&&i.left,i&&(i.left=a.left),a.left=t,r=a.pixelLeft,a.left=n,o&&(i.left=o),r):parseFloat(t)}),angular.forEach({before:function(e){var t,n,r,i,o,a;if(n=this[0],(t=(o=this.parent()).contents())[0]===n)return o.prepend(e);for(r=i=1,a=t.length-1;1<=a?i<=a:i>=a;r=1<=a?++i:--i)if(t[r]===n)return void angular.element(t[r-1]).after(e);throw new Error("invalid DOM structure "+n.outerHTML)},height:function(e){return void 0!==e?(angular.isNumber(e)&&(e+="px"),r.call(this,"height",e)):u(this[0],"height","base")},outerHeight:function(e){return u(this[0],"height",e?"outerfull":"outer")},outerWidth:function(e){return u(this[0],"width",e?"outerfull":"outer")},offset:function(e){var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(arguments.length){if(void 0===e)return this;throw new Error("offset setter method is not implemented")}if(o)return t=o.documentElement,null!=i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=o.defaultView||o.parentWindow,{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}},scrollTop:function(e){return a(this,"top",e)},scrollLeft:function(e){return a(this,"left",e)}},(function(t,n){if(!e.prototype[n])return e.prototype[n]=t}))}}],i&&r(n.prototype,i),o&&r(n,o),Object.defineProperty(n,"prototype",{writable:!1}),e}();function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function a(e,t){for(var n=0;nr.minIndexUser)return void r.minIndexUser++;r.minIndex===r.minIndexUser&&r.minIndexUser++}r.minIndex++},decrementMaxIndex:function(){null!==r.maxIndexUser&&r.maxIndex<=r.maxIndexUser&&r.maxIndexUser--,r.maxIndex--},getAbsMinIndex:function(){return null!==r.minIndexUser?Math.min(r.minIndexUser,r.minIndex):r.minIndex},getAbsMaxIndex:function(){return null!==r.maxIndexUser?Math.max(r.maxIndexUser,r.maxIndex):r.maxIndex},effectiveHeight:function(e){if(!e.length)return 0;var t=Number.MAX_VALUE,n=Number.NEGATIVE_INFINITY;return e.forEach((function(e){e.element[0].offsetParent&&(t=Math.min(t,e.element.offset().top),n=Math.max(n,e.element.offset().top+e.element.outerHeight(!0)))})),Math.max(0,n-t)},getItems:function(){return r.filter((function(e){return e.op===s.NONE}))},getFirstItem:function(){var e=r.getItems();return e.length?e[0].item:null},getLastItem:function(){var e=r.getItems();return e.length?e[e.length-1].item:null}}),r.reset(n),r}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n=0;t--)if(this[t].index===e.scope.$index)return void(this[t].height=e.element.outerHeight());this.push({index:e.scope.$index,height:e.element.outerHeight()}),this.sort((function(e,t){return e.indext.index?1:0}))}},{key:"remove",value:function(e,t){for(var n=e%1==0?e:e.scope.$index,r=e%1==0?t:e.shiftTop,i=this.length-1;i>=0;i--)if(this[i].index===n){this.splice(i,1);break}if(!r)for(var o=this.length-1;o>=0;o--)this[o].index>n&&this[o].index--}},{key:"clear",value:function(){this.length=0}}]),e}();function g(){var e=[];return e.push.apply(e,arguments),Object.setPrototypeOf(e,g.prototype),e}g.prototype=Object.create(Array.prototype),Object.getOwnPropertyNames(m.prototype).forEach((function(e){return g.prototype[e]=m.prototype[e]}));const b=function(){function e(t){h(this,e),this.element=function(e){if(e.nodeType!==Node.ELEMENT_NODE)throw new Error("ui-scroll directive requires an Element node for templating the view");var t;switch(e.tagName.toLowerCase()){case"dl":throw new Error("ui-scroll directive does not support <".concat(e.tagName,"> as a repeating tag: ").concat(e.outerHTML));case"tr":t=angular.element("").find("tr");break;case"li":t=angular.element("");break;default:t=angular.element("")}return t}(t),this.cache=new g}return d(e,[{key:"height",value:function(){return this.element.height.apply(this.element,arguments)}}]),e}();function v(e,t,n,r,i,o){var a=null,u=null,l=r&&r.viewport?r.viewport:angular.element(window),s=r&&r.container?r.container:void 0,f=r&&r.scope?r.scope:i;function c(){return l.outerHeight()*o}return l.css({"overflow-anchor":"none","overflow-y":"auto",display:"block"}),angular.extend(l,{getScope:function(){return f},createPaddingElements:function(e){a=new b(e),u=new b(e),n.before(a.element),n.after(u.element),a.height(0),u.height(0)},applyContainerStyle:function(){return!s||(s!==l&&l.css("height",window.getComputedStyle(s[0]).height),l.height()>0)},bottomDataPos:function(){var e=l[0].scrollHeight;return(e=null!=e?e:l[0].document.documentElement.scrollHeight)-u.height()},topDataPos:function(){return a.height()},bottomVisiblePos:function(){return l.scrollTop()+l.outerHeight()},topVisiblePos:function(){return l.scrollTop()},insertElement:function(t,n){return e.insertElement(t,n||a.element)},insertElementAnimated:function(t,n){return e.insertElementAnimated(t,n||a.element)},shouldLoadBottom:function(){return!t.eof&&l.bottomDataPos()=0&&!(n+(r=t[o].element.outerHeight(!0))>i);o--)u.cache.add(t[o]),n+=r,e++;e>0&&(t.eof=!1,t.remove(t.length-e,t.length),t.next-=e,l.adjustPaddings())},shouldLoadTop:function(){return!t.bof&&l.topDataPos()>l.topVisiblePos()-c()},clipTop:function(){for(var e=0,n=0,r=0,i=l.topVisiblePos()-l.topDataPos()-c(),o=0;oi);o++)a.cache.add(t[o]),n+=r,e++;e>0&&(a.height(a.height()+n),t.bof=!1,t.remove(0,e),t.first+=e)},adjustPaddings:function(){if(t.length){var e=t.reduce((function(e,t){return e+t.element.outerHeight(!0)}),0),n=0,r=0;a.cache.forEach((function(e){e.index=t.next&&(i+=e.height,o++)}));var l=(e+n+i)/(r+o+t.length),s=null!==t.minIndexUser&&t.minIndex>t.minIndexUser,f=null!==t.maxIndexUser&&t.maxIndext.minIndexUser){var n=a.height()-e;for(l.scrollTop(l.scrollTop()+n);(n-=l.scrollTop())>0;)u.height(u.height()+n),l.scrollTop(l.scrollTop()+n)}},onAfterPrepend:function(e){if(e.prepended.length){var n=t.effectiveHeight(e.prepended),r=a.height()-n;if(r>=0)a.height(r);else{var i=l.scrollTop(),o=i-r;l.synthetic={previous:i,next:o},a.height(0),l.scrollTop(o)}}},resetTopPadding:function(){a.height(0),a.cache.clear()},resetBottomPadding:function(){u.height(0),u.cache.clear()},removeCacheItem:function(e,t){a.cache.remove(e,t),u.cache.remove(e,t)},removeItem:function(e){return this.removeCacheItem(e),t.remove(e)}}),l}function y(e){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y(e)}function x(e,t){for(var n=0;n=0;n--)this.publicContext[t[n]]=this[t[n]].bind(this);for(var r=["isLoading","topVisible","topVisibleElement","topVisibleScope","bottomVisible","bottomVisibleElement","bottomVisibleScope"],i=function(t){var n,i=e.$attr[r[t]];Object.defineProperty(e,r[t],{get:function(){return n},set:function(o){n=o,e.publicContext[r[t]]=o,i&&e.$parse(i).assign(e.startScope,o)}})},o=r.length-1;o>=0;o--)i(o);for(var a=["bufferFirst","bufferLast","bufferLength"],u=function(t){Object.defineProperty(e.publicContext,a[t],{get:function(){return e[a[t]]}})},l=a.length-1;l>=0;l--)u(l);Object.defineProperty(this.publicContext,"disabled",{get:function(){return e.disabled},set:function(t){return(e.disabled=t)?null:e.doAdjust()}})}},{key:"loading",value:function(e){this.isLoading=e}},{key:"isBOF",value:function(){return this.buffer.bof}},{key:"isEOF",value:function(){return this.buffer.eof}},{key:"isEmpty",value:function(){return!this.buffer.length}},{key:"bufferLength",get:function(){return this.buffer.getItems().length}},{key:"bufferFirst",get:function(){return this.buffer.getFirstItem()}},{key:"bufferLast",get:function(){return this.buffer.getLastItem()}},{key:"append",value:function(e){this.buffer.append(e),this.doAdjust(),this.viewport.clipTop(),this.viewport.clipBottom()}},{key:"prepend",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.buffer.prepend(e,t.immutableTop),this.doAdjust(),this.viewport.clipTop(),this.viewport.clipBottom()}},{key:"applyUpdates",value:function(e,t,n){"function"==typeof e?this.applyUpdatesFunc(e,t):this.applyUpdatesIndex(e,t,n),this.doAdjust()}},{key:"applyUpdatesFunc",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.buffer.slice(0).forEach((function(r){t.applyUpdate(r,e(r.item,r.scope,r.element),n)}))}},{key:"applyUpdatesIndex",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e%1!=0)throw new Error("applyUpdates - "+e+" is not a valid index (should be an integer)");var r=e-this.buffer.first;r>=0&&r=this.buffer.getAbsMinIndex()&&e<=this.buffer.getAbsMaxIndex()&&angular.isArray(t)&&!t.length&&(this.viewport.removeCacheItem(e,!n.immutableTop&&e===this.buffer.minIndex),n.immutableTop||e!==this.buffer.getAbsMinIndex()?this.buffer.decrementMaxIndex():this.buffer.incrementMinIndex())}},{key:"applyUpdate",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(angular.isArray(t)){var i=this.buffer.indexOf(e);t.reverse().some((function(t){return t===e.item}))||(e.op=s.REMOVE,r.immutableTop||t.length||(0===i&&this.buffer.bof||0!==i&&this.buffer[i-1].shiftTop)&&(e.shiftTop=!0)),t.forEach((function(t){t===e.item?i--:n.buffer.insert(i+1,t,!r.immutableTop&&-1===i)}))}}},{key:"calculateProperties",value:function(){for(var e=null,t=0,n=!1,r=!1,i=this.buffer.length,o=0;othis.viewport.topVisiblePos()&&(n=!0,this.topVisible=a.item,this.topVisibleElement=a.element,this.topVisibleScope=a.scope),!r&&(s>=this.viewport.bottomVisiblePos()||o===i-1&&this.isEOF())&&(r=!0,this.bottomVisible=a.item,this.bottomVisibleElement=a.element,this.bottomVisibleScope=a.scope),t+=l}if(e=u,n&&r)break}}}],n&&x(t.prototype,n),r&&x(t,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();angular.module("ui.scroll",[]).constant("JQLiteExtras",i).run(["JQLiteExtras",function(e){var t=angular.element;!(window.jQuery&&t.fn&&t.fn.jquery)&&(new e).registerFor(t),l.addCSSRules()}]).directive("uiScrollViewport",(function(){return{restrict:"A",controller:["$scope","$element",function(e,t){var n=this;return this.container=t,this.viewport=t,this.scope=e,angular.forEach(t.children(),(function(e){"tbody"===e.tagName.toLowerCase()&&(n.viewport=angular.element(e))})),this}]}})).directive("uiScroll",["$log","$injector","$rootScope","$timeout","$interval","$q","$parse",function(e,t,n,r,i,o,a){return{require:["?^uiScrollViewport"],restrict:"A",transclude:"element",priority:1e3,terminal:!0,link:function(e,u,c,h,p){var d=c.uiScroll.match(/^\s*(\w+)\s+in\s+([(\w|\$)\.]+)\s*$/);if(!d)throw new Error("Expected uiScroll in form of '_item_ in _datasource_' but got '"+c.uiScroll+"'");function m(e,t,n){return n||(e=null===e?t:Math.floor(e)),isNaN(e)?t:e}function g(t,n,r){return m(a(t)(e),n,r)}var b=null,y=d[1],x=d[2],w=h[0],I=Math.max(3,g(c.bufferSize,10)),P=Math.max(.3,g(c.padding,.5,!0)),S=(U=c.handleInertia,L=!0,V=a(U)(e),"boolean"==typeof V?V:L),T=g(c.startIndex,1),$=0,A=[],j=new l(t,o),O=new f(j,I,T),k=new v(j,O,u,w,n,P),N=new E(e,a,c,k,O,J,(function(){W(),k.resetTopPadding(),k.resetBottomPadding(),arguments.length&&(T=m(arguments[0],1,!1));O.reset(T),H(b,"minIndex"),H(b,"maxIndex"),J()}));var U,L,V;w&&(w.adapter=N);var M=function(){return"[object Object]"===Object.prototype.toString.call(b)&&"function"==typeof b.get};if(!(b=a(x)(e),M()||(b=t.get(x),M())))throw new Error(x+" is not a valid datasource");var C=[];function H(e,t){var n;angular.isNumber(e[t])&&(n=e[t],angular.isNumber(n)&&(C=C.filter((function(e){return e.id!==t}))).push({id:t,run:function(){return e[t]=n}}))}function D(e,t,n){var r,i=Object.getOwnPropertyDescriptor(e,t);i&&(i.set||i.get)||(H(e,t),Object.defineProperty(e,t,{set:function(i){if(r=i,!A.length||O.length){O[n]=i;var o=k.topDataPos();k.adjustPaddings(),"minIndex"===t&&k.onAfterMinIndexSet(o)}else H(e,t)},get:function(){return r}}))}D(b,"minIndex","minIndexUser"),D(b,"maxIndex","maxIndexUser");var R=2!==b.get.length?function(e){return b.get(O.next,I,e)}:function(e){b.get({index:O.next,append:O.length?O[O.length-1].item:void 0,count:I},e)},F=2!==b.get.length?function(e){return b.get(O.first-I,I,e)}:function(e){b.get({index:O.first-I,prepend:O.length?O[0].item:void 0,count:I},e)};function B(t){return t&&t!==$||e.$$destroyed}function W(){k.off("resize",Z),k.off("scroll",Z)}function _(e){return e.element.height()&&e.element[0].offsetParent}function q(e,t){z(e,t,k.insertElement),_(e)||(e.unregisterVisibilityWatcher=e.scope.$watch((function(){return function(e){_(e)&&(O.forEach((function(e){"function"==typeof e.unregisterVisibilityWatcher&&(e.unregisterVisibilityWatcher(),delete e.unregisterVisibilityWatcher)})),A.length||r((function(){return J()})))}(e)}))),j.hideElement(e)}function z(e,t,n){var r=null,i=t>0?O[t-1].element:void 0;if(p((function(t,o){r=n(t,i),e.element=t,e.scope=o,o[y]=e.item})),N.transform){var o=e.scope.uiScrollTdInitializer;o&&o.linking?N.transform(e.scope,e.element):e.scope.uiScrollTdInitializer={onLink:function(){return N.transform(e.scope,e.element)},scope:e.scope}}return r}function Q(e,t){t.animated.length?o.all(t.animated).then((function(){k.adjustPaddings(),J(e)})):k.adjustPaddings()}function X(e,t){k.shouldLoadBottom()?(!t||O.effectiveHeight(t.inserted)>0)&&1===A.push(!0)&&(N.loading(!0),K(e)):k.shouldLoadTop()&&(!t||O.effectiveHeight(t.prepended)>0||A[0])&&1===A.push(!1)&&(N.loading(!0),K(e))}function Y(){var t,r,i,o,a=(t=[],r=[],i=[],o=[],O.forEach((function(e,n){switch(e.op){case s.PREPEND:r.unshift(e);break;case s.APPEND:q(e,n),e.op=s.NONE,o.push(e);break;case s.INSERT:t=t.concat(z(e,n,k.insertElementAnimated)),e.op=s.NONE,o.push(e);break;case s.REMOVE:i.push(e)}})),i.forEach((function(e){return t=t.concat(k.removeItem(e))})),r.length&&r.forEach((function(e){q(e),e.op=s.NONE})),O.forEach((function(e,t){return e.scope.$index=O.first+t})),{prepended:r,removed:i,inserted:o,animated:t});return!e.$$phase&&!n.$$phase&&e.$digest(),a.inserted.forEach((function(e){return j.showElement(e)})),a.prepended.forEach((function(e){return j.showElement(e)})),a}function J(e){e||(A=[],e=++$);var t=Y();B(e)||(Q(e,t),X(e),A.length||N.calculateProperties())}function G(e){var t=Y();k.onAfterPrepend(t),B(e)||(Q(e,t),C.forEach((function(e){return e.run()})),C=[],X(e,t),A.shift(),A.length?K(e):(N.loading(!1),k.on("resize",Z),k.on("scroll",Z),N.calculateProperties()))}function K(e){A[0]?O.length&&!k.shouldLoadBottom()?G(e):R((function(t){B(e)||(t.length0&&(k.clipTop(),O.append(t)),G(e))})):O.length&&!k.shouldLoadTop()?G(e):F((function(t){B(e)||(t.length0&&(O.length&&k.clipBottom(),O.prepend(t)),G(e))}))}function Z(){S&&function(){if(k.synthetic){var e=k.synthetic.previous,t=k.synthetic.next;if(k.scrollTop()!==t)return requestAnimationFrame((function(){var n=k.scrollTop(),r=e-n;r>0?k.scrollTop(t-r):k.scrollTop(t),k.synthetic=null})),!0;k.synthetic=null}}()||n.$$phase||N.isLoading||N.disabled||(X($),A.length?W():(N.calculateProperties(),!e.$$phase&&e.$digest()))}function ee(e){if(!N.disabled){var t=k[0].scrollTop,n=k[0].scrollHeight-k[0].clientHeight;(0===t&&!O.bof||t===n&&!O.eof)&&e.preventDefault()}}p((function(e,t){k.createPaddingElements(e[0]),t.$destroy(),e.remove()})),e.$on("$destroy",(function(){W(),k.off("mousewheel",ee)})),k.on("mousewheel",ee),function(){var e=0;if(k.applyContainerStyle())J();else var t=i((function(){if(e++,k.applyContainerStyle()&&(i.cancel(t),J()),50*e>=500)throw i.cancel(t),Error("ui-scroll directive requires a viewport with non-zero height in ".concat(500,"ms"))}),50)}()}}}])})();
+!function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw i}}return u}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0?{base:l.base-l.padding-l.border,outer:l.base,outerfull:l.base+l.margin}[a]:(((u=i(e)[r])<0||null===u)&&(u=e.style[r]||0),{base:(u=parseFloat(u)||0)-l.padding-l.border,outer:u,outerfull:u+l.padding+l.border+l.margin}[a])}return r=angular.element.prototype.css,e.prototype.css=function(e,t){var n=this[0];if(n&&3!==n.nodeType&&8!==n.nodeType&&n.style)return r.call(this,e,t)},o=function(e){return e&&e.document&&e.location&&e.alert&&e.setInterval},window.getComputedStyle?(i=function(e){return window.getComputedStyle(e,null)},n=function(e,t){return parseFloat(t)}):(i=function(e){return e.currentStyle},n=function(e,t){var n,r,i,o,a;return new RegExp("^("+/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source+")(?!px)[a-z%]+$","i").test(t)?(n=(a=e.style).left,o=(i=e.runtimeStyle)&&i.left,i&&(i.left=a.left),a.left=t,r=a.pixelLeft,a.left=n,o&&(i.left=o),r):parseFloat(t)}),angular.forEach({before:function(e){var t,n,r,i,o,a;if(n=this[0],(t=(o=this.parent()).contents())[0]===n)return o.prepend(e);for(r=i=1,a=t.length-1;1<=a?i<=a:i>=a;r=1<=a?++i:--i)if(t[r]===n)return void angular.element(t[r-1]).after(e);throw new Error("invalid DOM structure "+n.outerHTML)},height:function(e){return void 0!==e?(angular.isNumber(e)&&(e+="px"),r.call(this,"height",e)):u(this[0],"height","base")},outerHeight:function(e){return u(this[0],"height",e?"outerfull":"outer")},outerWidth:function(e){return u(this[0],"width",e?"outerfull":"outer")},offset:function(e){var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(arguments.length){if(void 0===e)return this;throw new Error("offset setter method is not implemented")}if(o)return t=o.documentElement,null!=i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=o.defaultView||o.parentWindow,{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}},scrollTop:function(e){return a(this,"top",e)},scrollLeft:function(e){return a(this,"left",e)}},(function(t,n){if(!e.prototype[n])return e.prototype[n]=t}))}}],i&&r(n.prototype,i),o&&r(n,o),Object.defineProperty(n,"prototype",{writable:!1}),e}();function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function a(e,t){for(var n=0;nr.minIndexUser)return void r.minIndexUser++;r.minIndex===r.minIndexUser&&r.minIndexUser++}r.minIndex++},decrementMaxIndex:function(){null!==r.maxIndexUser&&r.maxIndex<=r.maxIndexUser&&r.maxIndexUser--,r.maxIndex--},getAbsMinIndex:function(){return null!==r.minIndexUser?Math.min(r.minIndexUser,r.minIndex):r.minIndex},getAbsMaxIndex:function(){return null!==r.maxIndexUser?Math.max(r.maxIndexUser,r.maxIndex):r.maxIndex},effectiveHeight:function(e){if(!e.length)return 0;var t=Number.MAX_VALUE,n=Number.NEGATIVE_INFINITY;return e.forEach((function(e){e.element[0].offsetParent&&(t=Math.min(t,e.element.offset().top),n=Math.max(n,e.element.offset().top+e.element.outerHeight(!0)))})),Math.max(0,n-t)},getItems:function(){return r.filter((function(e){return e.op===s.NONE}))},getFirstItem:function(){var e=r.getItems();return e.length?e[0].item:null},getLastItem:function(){var e=r.getItems();return e.length?e[e.length-1].item:null}}),r.reset(n),r}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n=0;t--)if(this[t].index===e.scope.$index)return void(this[t].height=e.element.outerHeight());this.push({index:e.scope.$index,height:e.element.outerHeight()}),this.sort((function(e,t){return e.indext.index?1:0}))}},{key:"remove",value:function(e,t){for(var n=e%1==0?e:e.scope.$index,r=e%1==0?t:e.shiftTop,i=this.length-1;i>=0;i--)if(this[i].index===n){this.splice(i,1);break}if(!r)for(var o=this.length-1;o>=0;o--)this[o].index>n&&this[o].index--}},{key:"clear",value:function(){this.length=0}}]),e}();function g(){var e=[];return e.push.apply(e,arguments),Object.setPrototypeOf(e,g.prototype),e}g.prototype=Object.create(Array.prototype),Object.getOwnPropertyNames(m.prototype).forEach((function(e){return g.prototype[e]=m.prototype[e]}));var b=function(){function e(t){h(this,e),this.element=function(e){if(e.nodeType!==Node.ELEMENT_NODE)throw new Error("ui-scroll directive requires an Element node for templating the view");var t;switch(e.tagName.toLowerCase()){case"dl":throw new Error("ui-scroll directive does not support <".concat(e.tagName,"> as a repeating tag: ").concat(e.outerHTML));case"tr":t=angular.element("").find("tr");break;case"li":t=angular.element("");break;default:t=angular.element("")}return t}(t),this.cache=new g}return d(e,[{key:"height",value:function(){return this.element.height.apply(this.element,arguments)}}]),e}(),v=b;function y(e,t,n,r,i,o){var a=null,u=null,l=r&&r.viewport?r.viewport:angular.element(window),s=r&&r.container?r.container:void 0,f=r&&r.scope?r.scope:i;function c(){return l.outerHeight()*o}return l.css({"overflow-anchor":"none","overflow-y":"auto",display:"block"}),angular.extend(l,{getScope:function(){return f},createPaddingElements:function(e){a=new v(e),u=new v(e),n.before(a.element),n.after(u.element),a.height(0),u.height(0)},applyContainerStyle:function(){return!s||(s!==l&&l.css("height",window.getComputedStyle(s[0]).height),l.height()>0)},bottomDataPos:function(){var e=l[0].scrollHeight;return(e=null!=e?e:l[0].document.documentElement.scrollHeight)-u.height()},topDataPos:function(){return a.height()},bottomVisiblePos:function(){return l.scrollTop()+l.outerHeight()},topVisiblePos:function(){return l.scrollTop()},insertElement:function(t,n){return e.insertElement(t,n||a.element)},insertElementAnimated:function(t,n){return e.insertElementAnimated(t,n||a.element)},shouldLoadBottom:function(){return!t.eof&&l.bottomDataPos()=0&&!(n+(r=t[o].element.outerHeight(!0))>i);o--)u.cache.add(t[o]),n+=r,e++;e>0&&(t.eof=!1,t.remove(t.length-e,t.length),t.next-=e,l.adjustPaddings())},shouldLoadTop:function(){return!t.bof&&l.topDataPos()>l.topVisiblePos()-c()},clipTop:function(){for(var e=0,n=0,r=0,i=l.topVisiblePos()-l.topDataPos()-c(),o=0;oi);o++)a.cache.add(t[o]),n+=r,e++;e>0&&(a.height(a.height()+n),t.bof=!1,t.remove(0,e),t.first+=e)},adjustPaddings:function(){if(t.length){var e=t.reduce((function(e,t){return e+t.element.outerHeight(!0)}),0),n=0,r=0;a.cache.forEach((function(e){e.index=t.next&&(i+=e.height,o++)}));var l=(e+n+i)/(r+o+t.length),s=null!==t.minIndexUser&&t.minIndex>t.minIndexUser,f=null!==t.maxIndexUser&&t.maxIndext.minIndexUser){var n=a.height()-e;for(l.scrollTop(l.scrollTop()+n);(n-=l.scrollTop())>0;)u.height(u.height()+n),l.scrollTop(l.scrollTop()+n)}},onAfterPrepend:function(e){if(e.prepended.length){var n=t.effectiveHeight(e.prepended),r=a.height()-n;if(r>=0)a.height(r);else{var i=l.scrollTop(),o=i-r;l.synthetic={previous:i,next:o},a.height(0),l.scrollTop(o)}}},resetTopPadding:function(){a.height(0),a.cache.clear()},resetBottomPadding:function(){u.height(0),u.cache.clear()},removeCacheItem:function(e,t){a.cache.remove(e,t),u.cache.remove(e,t)},removeItem:function(e){return this.removeCacheItem(e),t.remove(e)}}),l}function x(e){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},x(e)}function E(e,t){for(var n=0;n=0;n--)this.publicContext[t[n]]=this[t[n]].bind(this);for(var r=["isLoading","topVisible","topVisibleElement","topVisibleScope","bottomVisible","bottomVisibleElement","bottomVisibleScope"],i=function(t){var n,i=e.$attr[r[t]];Object.defineProperty(e,r[t],{get:function(){return n},set:function(o){n=o,e.publicContext[r[t]]=o,i&&e.$parse(i).assign(e.startScope,o)}})},o=r.length-1;o>=0;o--)i(o);for(var a=["bufferFirst","bufferLast","bufferLength"],u=function(t){Object.defineProperty(e.publicContext,a[t],{get:function(){return e[a[t]]}})},l=a.length-1;l>=0;l--)u(l);Object.defineProperty(this.publicContext,"disabled",{get:function(){return e.disabled},set:function(t){return(e.disabled=t)?null:e.doAdjust()}})}},{key:"loading",value:function(e){this.isLoading=e}},{key:"isBOF",value:function(){return this.buffer.bof}},{key:"isEOF",value:function(){return this.buffer.eof}},{key:"isEmpty",value:function(){return!this.buffer.length}},{key:"bufferLength",get:function(){return this.buffer.getItems().length}},{key:"bufferFirst",get:function(){return this.buffer.getFirstItem()}},{key:"bufferLast",get:function(){return this.buffer.getLastItem()}},{key:"append",value:function(e){this.buffer.append(e),this.doAdjust(),this.viewport.clipTop(),this.viewport.clipBottom()}},{key:"prepend",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.buffer.prepend(e,t.immutableTop),this.doAdjust(),this.viewport.clipTop(),this.viewport.clipBottom()}},{key:"applyUpdates",value:function(e,t,n){"function"==typeof e?this.applyUpdatesFunc(e,t):this.applyUpdatesIndex(e,t,n),this.doAdjust()}},{key:"applyUpdatesFunc",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.buffer.slice(0).forEach((function(r){t.applyUpdate(r,e(r.item,r.scope,r.element),n)}))}},{key:"applyUpdatesIndex",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e%1!=0)throw new Error("applyUpdates - "+e+" is not a valid index (should be an integer)");var r=e-this.buffer.first;r>=0&&r=this.buffer.getAbsMinIndex()&&e<=this.buffer.getAbsMaxIndex()&&angular.isArray(t)&&!t.length&&(this.viewport.removeCacheItem(e,!n.immutableTop&&e===this.buffer.minIndex),n.immutableTop||e!==this.buffer.getAbsMinIndex()?this.buffer.decrementMaxIndex():this.buffer.incrementMinIndex())}},{key:"applyUpdate",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(angular.isArray(t)){var i=this.buffer.indexOf(e);t.reverse().some((function(t){return t===e.item}))||(e.op=s.REMOVE,r.immutableTop||t.length||(0===i&&this.buffer.bof||0!==i&&this.buffer[i-1].shiftTop)&&(e.shiftTop=!0)),t.forEach((function(t){t===e.item?i--:n.buffer.insert(i+1,t,!r.immutableTop&&-1===i)}))}}},{key:"calculateProperties",value:function(){for(var e=null,t=0,n=!1,r=!1,i=this.buffer.length,o=0;othis.viewport.topVisiblePos()&&(n=!0,this.topVisible=a.item,this.topVisibleElement=a.element,this.topVisibleScope=a.scope),!r&&(s>=this.viewport.bottomVisiblePos()||o===i-1&&this.isEOF())&&(r=!0,this.bottomVisible=a.item,this.bottomVisibleElement=a.element,this.bottomVisibleScope=a.scope),t+=l}if(e=u,n&&r)break}}}],n&&E(t.prototype,n),r&&E(t,r),Object.defineProperty(t,"prototype",{writable:!1}),e}(),I=w;angular.module("ui.scroll",[]).constant("JQLiteExtras",i).run(["JQLiteExtras",function(e){var t=angular.element;!(window.jQuery&&t.fn&&t.fn.jquery)&&(new e).registerFor(t),l.addCSSRules()}]).directive("uiScrollViewport",(function(){return{restrict:"A",controller:["$scope","$element",function(e,t){var n=this;return this.container=t,this.viewport=t,this.scope=e,angular.forEach(t.children(),(function(e){"tbody"===e.tagName.toLowerCase()&&(n.viewport=angular.element(e))})),this}]}})).directive("uiScroll",["$log","$injector","$rootScope","$timeout","$interval","$q","$parse",function(e,t,n,r,i,o,a){return{require:["?^uiScrollViewport"],restrict:"A",transclude:"element",priority:1e3,terminal:!0,link:function(e,u,c,h,p){var d=c.uiScroll.match(/^\s*(\w+)\s+in\s+([(\w|\$)\.]+)\s*$/);if(!d)throw new Error("Expected uiScroll in form of '_item_ in _datasource_' but got '"+c.uiScroll+"'");function m(e,t,n){return n||(e=null===e?t:Math.floor(e)),isNaN(e)?t:e}function g(t,n,r){return m(a(t)(e),n,r)}var b=null,v=d[1],x=d[2],E=h[0],w=Math.max(3,g(c.bufferSize,10)),P=Math.max(.3,g(c.padding,.5,!0)),S=(U=c.handleInertia,L=!0,V=a(U)(e),"boolean"==typeof V?V:L),T=g(c.startIndex,1),$=0,A=[],j=new l(t,o),O=new f(j,w,T),k=new y(j,O,u,E,n,P),N=new I(e,a,c,k,O,J,(function(){W(),k.resetTopPadding(),k.resetBottomPadding(),arguments.length&&(T=m(arguments[0],1,!1));O.reset(T),H(b,"minIndex"),H(b,"maxIndex"),J()}));var U,L,V;E&&(E.adapter=N);var M=function(){return"[object Object]"===Object.prototype.toString.call(b)&&"function"==typeof b.get};if(!(b=a(x)(e),M()||(b=t.get(x),M())))throw new Error(x+" is not a valid datasource");var C=[];function H(e,t){var n;angular.isNumber(e[t])&&(n=e[t],angular.isNumber(n)&&(C=C.filter((function(e){return e.id!==t}))).push({id:t,run:function(){return e[t]=n}}))}function D(e,t,n){var r,i=Object.getOwnPropertyDescriptor(e,t);i&&(i.set||i.get)||(H(e,t),Object.defineProperty(e,t,{set:function(i){if(r=i,!A.length||O.length){O[n]=i;var o=k.topDataPos();k.adjustPaddings(),"minIndex"===t&&k.onAfterMinIndexSet(o)}else H(e,t)},get:function(){return r}}))}D(b,"minIndex","minIndexUser"),D(b,"maxIndex","maxIndexUser");var R=2!==b.get.length?function(e){return b.get(O.next,w,e)}:function(e){b.get({index:O.next,append:O.length?O[O.length-1].item:void 0,count:w},e)},F=2!==b.get.length?function(e){return b.get(O.first-w,w,e)}:function(e){b.get({index:O.first-w,prepend:O.length?O[0].item:void 0,count:w},e)};function B(t){return t&&t!==$||e.$$destroyed}function W(){k.off("resize",Z),k.off("scroll",Z)}function _(e){return e.element.height()&&e.element[0].offsetParent}function q(e,t){z(e,t,k.insertElement),_(e)||(e.unregisterVisibilityWatcher=e.scope.$watch((function(){return function(e){_(e)&&(O.forEach((function(e){"function"==typeof e.unregisterVisibilityWatcher&&(e.unregisterVisibilityWatcher(),delete e.unregisterVisibilityWatcher)})),A.length||r((function(){return J()})))}(e)}))),j.hideElement(e)}function z(e,t,n){var r=null,i=t>0?O[t-1].element:void 0;if(p((function(t,o){r=n(t,i),e.element=t,e.scope=o,o[v]=e.item})),N.transform){var o=e.scope.uiScrollTdInitializer;o&&o.linking?N.transform(e.scope,e.element):e.scope.uiScrollTdInitializer={onLink:function(){return N.transform(e.scope,e.element)},scope:e.scope}}return r}function Q(e,t){t.animated.length?o.all(t.animated).then((function(){k.adjustPaddings(),J(e)})):k.adjustPaddings()}function X(e,t){k.shouldLoadBottom()?(!t||O.effectiveHeight(t.inserted)>0)&&1===A.push(!0)&&(N.loading(!0),K(e)):k.shouldLoadTop()&&(!t||O.effectiveHeight(t.prepended)>0||A[0])&&1===A.push(!1)&&(N.loading(!0),K(e))}function Y(){var t,r,i,o,a=(t=[],r=[],i=[],o=[],O.forEach((function(e,n){switch(e.op){case s.PREPEND:r.unshift(e);break;case s.APPEND:q(e,n),e.op=s.NONE,o.push(e);break;case s.INSERT:t=t.concat(z(e,n,k.insertElementAnimated)),e.op=s.NONE,o.push(e);break;case s.REMOVE:i.push(e)}})),i.forEach((function(e){return t=t.concat(k.removeItem(e))})),r.length&&r.forEach((function(e){q(e),e.op=s.NONE})),O.forEach((function(e,t){return e.scope.$index=O.first+t})),{prepended:r,removed:i,inserted:o,animated:t});return!e.$$phase&&!n.$$phase&&e.$digest(),a.inserted.forEach((function(e){return j.showElement(e)})),a.prepended.forEach((function(e){return j.showElement(e)})),a}function J(e){e||(A=[],e=++$);var t=Y();B(e)||(Q(e,t),X(e),A.length||N.calculateProperties())}function G(e){var t=Y();k.onAfterPrepend(t),B(e)||(Q(e,t),C.forEach((function(e){return e.run()})),C=[],X(e,t),A.shift(),A.length?K(e):(N.loading(!1),k.on("resize",Z),k.on("scroll",Z),N.calculateProperties()))}function K(e){A[0]?O.length&&!k.shouldLoadBottom()?G(e):R((function(t){B(e)||(t.length0&&(k.clipTop(),O.append(t)),G(e))})):O.length&&!k.shouldLoadTop()?G(e):F((function(t){B(e)||(t.length0&&(O.length&&k.clipBottom(),O.prepend(t)),G(e))}))}function Z(){S&&function(){if(k.synthetic){var e=k.synthetic.previous,t=k.synthetic.next;if(k.scrollTop()!==t)return requestAnimationFrame((function(){var n=k.scrollTop(),r=e-n;r>0?k.scrollTop(t-r):k.scrollTop(t),k.synthetic=null})),!0;k.synthetic=null}}()||n.$$phase||N.isLoading||N.disabled||(X($),A.length?W():(N.calculateProperties(),!e.$$phase&&e.$digest()))}function ee(e){if(!N.disabled){var t=k[0].scrollTop,n=k[0].scrollHeight-k[0].clientHeight;(0===t&&!O.bof||t===n&&!O.eof)&&e.preventDefault()}}p((function(e,t){k.createPaddingElements(e[0]),t.$destroy(),e.remove()})),e.$on("$destroy",(function(){W(),k.off("mousewheel",ee)})),k.on("mousewheel",ee),function(){var e=0;if(k.applyContainerStyle())J();else var t=i((function(){if(e++,k.applyContainerStyle()&&(i.cancel(t),J()),50*e>=500)throw i.cancel(t),Error("ui-scroll directive requires a viewport with non-zero height in ".concat(500,"ms"))}),50)}()}}}])}();
//# sourceMappingURL=ui-scroll.min.js.map
\ No newline at end of file
diff --git a/dist/ui-scroll.min.js.map b/dist/ui-scroll.min.js.map
index 3ce29c5..7d3240a 100644
--- a/dist/ui-scroll.min.js.map
+++ b/dist/ui-scroll.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"ui-scroll.min.js","mappings":"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","sources":["webpack://angular-ui-scroll/./src/modules/jqLiteExtras.js","webpack://angular-ui-scroll/./src/modules/elementRoutines.js","webpack://angular-ui-scroll/./src/modules/utils.js","webpack://angular-ui-scroll/./src/modules/buffer.js","webpack://angular-ui-scroll/./src/modules/padding.js","webpack://angular-ui-scroll/./src/modules/viewport.js","webpack://angular-ui-scroll/./src/modules/adapter.js","webpack://angular-ui-scroll/./src/ui-scroll.js"],"sourcesContent":["/*!\r\n globals: angular, window\r\n List of used element methods available in JQuery but not in JQuery Lite\r\n element.before(elem)\r\n element.height()\r\n element.outerHeight(true)\r\n element.height(value) = only for Top/Bottom padding elements\r\n element.scrollTop()\r\n element.scrollTop(value)\r\n */\r\n\r\nexport default class JQLiteExtras {\r\n\r\n registerFor(element) {\r\n let convertToPx, css, getStyle, isWindow;\r\n // angular implementation blows up if elem is the window\r\n css = angular.element.prototype.css;\r\n\r\n element.prototype.css = function (name, value) {\r\n let self = this;\r\n let elem = self[0];\r\n if (!(!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style)) {\r\n return css.call(self, name, value);\r\n }\r\n };\r\n\r\n // as defined in angularjs v1.0.5\r\n isWindow = (obj) => obj && obj.document && obj.location && obj.alert && obj.setInterval;\r\n\r\n function scrollTo(self, direction, value) {\r\n let elem = self[0];\r\n let [method, prop, preserve] = {\r\n top: [\r\n 'scrollTop',\r\n 'pageYOffset',\r\n 'scrollLeft'\r\n ],\r\n left: [\r\n 'scrollLeft',\r\n 'pageXOffset',\r\n 'scrollTop'\r\n ]\r\n }[direction];\r\n\r\n const isValueDefined = typeof value !== 'undefined';\r\n if (isWindow(elem)) {\r\n if (isValueDefined) {\r\n return elem.scrollTo(self[preserve].call(self), value);\r\n }\r\n return (prop in elem) ? elem[prop] : elem.document.documentElement[method];\r\n } else {\r\n if (isValueDefined) {\r\n elem[method] = value;\r\n }\r\n return elem[method];\r\n }\r\n }\r\n\r\n if (window.getComputedStyle) {\r\n getStyle = (elem) => window.getComputedStyle(elem, null);\r\n convertToPx = (elem, value) => parseFloat(value);\r\n } else {\r\n getStyle = (elem) => elem.currentStyle;\r\n convertToPx = (elem, value) => {\r\n let left, result, rs, rsLeft, style;\r\n let core_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\r\n let rnumnonpx = new RegExp('^(' + core_pnum + ')(?!px)[a-z%]+$', 'i');\r\n\r\n if (!rnumnonpx.test(value)) {\r\n return parseFloat(value);\r\n }\r\n\r\n // ported from JQuery\r\n style = elem.style;\r\n left = style.left;\r\n rs = elem.runtimeStyle;\r\n rsLeft = rs && rs.left;\r\n if (rs) {\r\n rs.left = style.left;\r\n }\r\n // put in the new values to get a computed style out\r\n style.left = value;\r\n result = style.pixelLeft;\r\n style.left = left;\r\n if (rsLeft) {\r\n rs.left = rsLeft;\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n function getMeasurements(elem, measure) {\r\n let base, borderA, borderB, computedMarginA, computedMarginB, computedStyle, dirA, dirB, marginA, marginB, paddingA, paddingB;\r\n\r\n if (isWindow(elem)) {\r\n base = document.documentElement[{height: 'clientHeight', width: 'clientWidth'}[measure]];\r\n\r\n return {\r\n base: base,\r\n padding: 0,\r\n border: 0,\r\n margin: 0\r\n };\r\n }\r\n\r\n // Start with offset property\r\n [\r\n base,\r\n dirA,\r\n dirB\r\n ] = {\r\n width: [\r\n elem.offsetWidth,\r\n 'Left',\r\n 'Right'\r\n ],\r\n height: [\r\n elem.offsetHeight,\r\n 'Top',\r\n 'Bottom'\r\n ]\r\n }[measure];\r\n\r\n computedStyle = getStyle(elem);\r\n paddingA = convertToPx(elem, computedStyle['padding' + dirA]) || 0;\r\n paddingB = convertToPx(elem, computedStyle['padding' + dirB]) || 0;\r\n borderA = convertToPx(elem, computedStyle['border' + dirA + 'Width']) || 0;\r\n borderB = convertToPx(elem, computedStyle['border' + dirB + 'Width']) || 0;\r\n computedMarginA = computedStyle['margin' + dirA];\r\n computedMarginB = computedStyle['margin' + dirB];\r\n\r\n // I do not care for width for now, so this hack is irrelevant\r\n // if ( !supportsPercentMargin )\r\n // computedMarginA = hackPercentMargin( elem, computedStyle, computedMarginA )\r\n // computedMarginB = hackPercentMargin( elem, computedStyle, computedMarginB )\r\n marginA = convertToPx(elem, computedMarginA) || 0;\r\n marginB = convertToPx(elem, computedMarginB) || 0;\r\n\r\n return {\r\n base: base,\r\n padding: paddingA + paddingB,\r\n border: borderA + borderB,\r\n margin: marginA + marginB\r\n };\r\n }\r\n\r\n function getWidthHeight(elem, direction, measure) {\r\n let computedStyle, result;\r\n\r\n let measurements = getMeasurements(elem, direction);\r\n\r\n if (measurements.base > 0) {\r\n return {\r\n base: measurements.base - measurements.padding - measurements.border,\r\n outer: measurements.base,\r\n outerfull: measurements.base + measurements.margin\r\n }[measure];\r\n }\r\n\r\n // Fall back to computed then uncomputed css if necessary\r\n computedStyle = getStyle(elem);\r\n result = computedStyle[direction];\r\n\r\n if (result < 0 || result === null) {\r\n result = elem.style[direction] || 0;\r\n }\r\n\r\n // Normalize \"\", auto, and prepare for extra\r\n result = parseFloat(result) || 0;\r\n\r\n return {\r\n base: result - measurements.padding - measurements.border,\r\n outer: result,\r\n outerfull: result + measurements.padding + measurements.border + measurements.margin\r\n }[measure];\r\n }\r\n\r\n // define missing methods\r\n return angular.forEach({\r\n before(newElem) {\r\n var children, elem, i, j, parent, ref, self;\r\n self = this;\r\n elem = self[0];\r\n parent = self.parent();\r\n children = parent.contents();\r\n if (children[0] === elem) {\r\n return parent.prepend(newElem);\r\n } else {\r\n for (i = j = 1, ref = children.length - 1; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\r\n if (children[i] === elem) {\r\n angular.element(children[i - 1]).after(newElem);\r\n return;\r\n }\r\n }\r\n throw new Error('invalid DOM structure ' + elem.outerHTML);\r\n }\r\n },\r\n height (value){\r\n var self;\r\n self = this;\r\n if (typeof value !== 'undefined') {\r\n if (angular.isNumber(value)) {\r\n value = value + 'px';\r\n }\r\n return css.call(self, 'height', value);\r\n } else {\r\n return getWidthHeight(this[0], 'height', 'base');\r\n }\r\n },\r\n outerHeight(option) {\r\n return getWidthHeight(this[0], 'height', option ? 'outerfull' : 'outer');\r\n },\r\n outerWidth(option) {\r\n return getWidthHeight(this[0], 'width', option ? 'outerfull' : 'outer');\r\n },\r\n\r\n /*\r\n The offset setter method is not implemented\r\n */\r\n offset(value) {\r\n let docElem, win;\r\n let self = this;\r\n let box = {\r\n top: 0,\r\n left: 0\r\n };\r\n let elem = self[0];\r\n let doc = elem && elem.ownerDocument;\r\n\r\n if (arguments.length) {\r\n if (value === undefined) {\r\n return self;\r\n }\r\n // TODO: implement setter\r\n throw new Error('offset setter method is not implemented');\r\n }\r\n\r\n if (!doc) {\r\n return;\r\n }\r\n\r\n docElem = doc.documentElement;\r\n\r\n // TODO: Make sure it's not a disconnected DOM node\r\n\r\n if (elem.getBoundingClientRect != null) {\r\n box = elem.getBoundingClientRect();\r\n }\r\n\r\n win = doc.defaultView || doc.parentWindow;\r\n\r\n return {\r\n top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\r\n left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)\r\n };\r\n },\r\n scrollTop(value) {\r\n return scrollTo(this, 'top', value);\r\n },\r\n scrollLeft(value) {\r\n return scrollTo(this, 'left', value);\r\n }\r\n }, (value, key) => {\r\n if (!element.prototype[key]) {\r\n return element.prototype[key] = value;\r\n }\r\n });\r\n }\r\n\r\n}\r\n","const hideClassToken = 'ng-ui-scroll-hide';\r\n\r\nexport default class ElementRoutines {\r\n\r\n static addCSSRules() {\r\n const selector = '.' + hideClassToken;\r\n const rules = 'display: none';\r\n const sheet = document.styleSheets[0];\r\n let index;\r\n try {\r\n index = sheet.cssRules.length;\r\n } catch (err) {\r\n index = 0;\r\n }\r\n if('insertRule' in sheet) {\r\n sheet.insertRule(selector + '{' + rules + '}', index);\r\n }\r\n else if('addRule' in sheet) {\r\n sheet.addRule(selector, rules, index);\r\n }\r\n }\r\n\r\n constructor($injector, $q) {\r\n this.$animate = ($injector.has && $injector.has('$animate')) ? $injector.get('$animate') : null;\r\n this.isAngularVersionLessThen1_3 = angular.version.major === 1 && angular.version.minor < 3;\r\n this.$q = $q;\r\n }\r\n\r\n hideElement(wrapper) {\r\n wrapper.element.addClass(hideClassToken);\r\n }\r\n\r\n showElement(wrapper) {\r\n wrapper.element.removeClass(hideClassToken);\r\n }\r\n\r\n insertElement(newElement, previousElement) {\r\n previousElement.after(newElement);\r\n return [];\r\n }\r\n\r\n removeElement(wrapper) {\r\n wrapper.element.remove();\r\n wrapper.scope.$destroy();\r\n return [];\r\n }\r\n\r\n insertElementAnimated(newElement, previousElement) {\r\n if (!this.$animate) {\r\n return this.insertElement(newElement, previousElement);\r\n }\r\n\r\n if (this.isAngularVersionLessThen1_3) {\r\n const deferred = this.$q.defer();\r\n // no need for parent - previous element is never null\r\n this.$animate.enter(newElement, null, previousElement, () => deferred.resolve());\r\n\r\n return [deferred.promise];\r\n }\r\n\r\n // no need for parent - previous element is never null\r\n return [this.$animate.enter(newElement, null, previousElement)];\r\n }\r\n\r\n removeElementAnimated(wrapper) {\r\n if (!this.$animate) {\r\n return this.removeElement(wrapper);\r\n }\r\n\r\n if (this.isAngularVersionLessThen1_3) {\r\n const deferred = this.$q.defer();\r\n this.$animate.leave(wrapper.element, () => {\r\n wrapper.scope.$destroy();\r\n return deferred.resolve();\r\n });\r\n\r\n return [deferred.promise];\r\n }\r\n\r\n return [(this.$animate.leave(wrapper.element)).then(() => wrapper.scope.$destroy())];\r\n }\r\n}","export const OPERATIONS = {\r\n PREPEND: 'prepend',\r\n APPEND: 'append',\r\n INSERT: 'insert',\r\n REMOVE: 'remove',\r\n NONE: 'none'\r\n};\r\n","import { OPERATIONS } from './utils';\r\n\r\nexport default function ScrollBuffer(elementRoutines, bufferSize, startIndex) {\r\n const buffer = Object.create(Array.prototype);\r\n\r\n angular.extend(buffer, {\r\n size: bufferSize,\r\n\r\n reset(startIndex) {\r\n buffer.remove(0, buffer.length);\r\n buffer.eof = false;\r\n buffer.bof = false;\r\n buffer.first = startIndex;\r\n buffer.next = startIndex;\r\n buffer.minIndex = startIndex;\r\n buffer.maxIndex = startIndex;\r\n buffer.minIndexUser = null;\r\n buffer.maxIndexUser = null;\r\n },\r\n\r\n append(items) {\r\n items.forEach((item) => {\r\n ++buffer.next;\r\n buffer.insert(OPERATIONS.APPEND, item);\r\n });\r\n buffer.maxIndex = buffer.eof ? buffer.next - 1 : Math.max(buffer.next - 1, buffer.maxIndex);\r\n },\r\n\r\n prepend(items, immutableTop) {\r\n items.reverse().forEach((item) => {\r\n if (immutableTop) {\r\n ++buffer.next;\r\n }\r\n else {\r\n --buffer.first;\r\n }\r\n buffer.insert(OPERATIONS.PREPEND, item);\r\n });\r\n buffer.minIndex = buffer.bof ? buffer.minIndex = buffer.first : Math.min(buffer.first, buffer.minIndex);\r\n },\r\n\r\n /**\r\n * inserts wrapped element in the buffer\r\n * the first argument is either operation keyword (see below) or a number for operation 'insert'\r\n * for insert the number is the index for the buffer element the new one have to be inserted after\r\n * operations: 'append', 'prepend', 'insert', 'remove', 'none'\r\n */\r\n insert(operation, item, shiftTop) {\r\n const wrapper = {\r\n item: item\r\n };\r\n\r\n if (operation % 1 === 0) { // it is an insert\r\n wrapper.op = OPERATIONS.INSERT;\r\n buffer.splice(operation, 0, wrapper);\r\n if (shiftTop) {\r\n buffer.first--;\r\n }\r\n else {\r\n buffer.next++;\r\n }\r\n } else {\r\n wrapper.op = operation;\r\n switch (operation) {\r\n case OPERATIONS.APPEND:\r\n buffer.push(wrapper);\r\n break;\r\n case OPERATIONS.PREPEND:\r\n buffer.unshift(wrapper);\r\n break;\r\n }\r\n }\r\n },\r\n\r\n // removes elements from buffer\r\n remove(arg1, arg2) {\r\n if (angular.isNumber(arg1)) {\r\n // removes items from arg1 (including) through arg2 (excluding)\r\n for (let i = arg1; i < arg2; i++) {\r\n elementRoutines.removeElement(buffer[i]);\r\n }\r\n return buffer.splice(arg1, arg2 - arg1);\r\n }\r\n // removes single item (wrapper) from the buffer\r\n buffer.splice(buffer.indexOf(arg1), 1);\r\n if (arg1.shiftTop && buffer.first === this.getAbsMinIndex()) {\r\n this.incrementMinIndex();\r\n }\r\n else {\r\n this.decrementMaxIndex();\r\n }\r\n if (arg1.shiftTop) {\r\n buffer.first++;\r\n }\r\n else {\r\n buffer.next--;\r\n }\r\n if (!buffer.length) {\r\n buffer.minIndex = Math.min(buffer.maxIndex, buffer.minIndex);\r\n }\r\n\r\n return elementRoutines.removeElementAnimated(arg1);\r\n },\r\n\r\n incrementMinIndex() {\r\n if (buffer.minIndexUser !== null) {\r\n if (buffer.minIndex > buffer.minIndexUser) {\r\n buffer.minIndexUser++;\r\n return;\r\n }\r\n if (buffer.minIndex === buffer.minIndexUser) {\r\n buffer.minIndexUser++;\r\n }\r\n }\r\n buffer.minIndex++;\r\n },\r\n\r\n decrementMaxIndex() {\r\n if (buffer.maxIndexUser !== null && buffer.maxIndex <= buffer.maxIndexUser) {\r\n buffer.maxIndexUser--;\r\n }\r\n buffer.maxIndex--;\r\n },\r\n\r\n getAbsMinIndex() {\r\n if (buffer.minIndexUser !== null) {\r\n return Math.min(buffer.minIndexUser, buffer.minIndex);\r\n }\r\n return buffer.minIndex;\r\n },\r\n\r\n getAbsMaxIndex() {\r\n if (buffer.maxIndexUser !== null) {\r\n return Math.max(buffer.maxIndexUser, buffer.maxIndex);\r\n }\r\n return buffer.maxIndex;\r\n },\r\n\r\n effectiveHeight(elements) {\r\n if (!elements.length) {\r\n return 0;\r\n }\r\n let top = Number.MAX_VALUE;\r\n let bottom = Number.NEGATIVE_INFINITY;\r\n elements.forEach((wrapper) => {\r\n if (wrapper.element[0].offsetParent) {\r\n // element style is not display:none\r\n top = Math.min(top, wrapper.element.offset().top);\r\n bottom = Math.max(bottom, wrapper.element.offset().top + wrapper.element.outerHeight(true));\r\n }\r\n });\r\n return Math.max(0, bottom - top);\r\n },\r\n\r\n getItems() {\r\n return buffer.filter(item => item.op === OPERATIONS.NONE);\r\n },\r\n\r\n getFirstItem() {\r\n const list = buffer.getItems();\r\n if (!list.length) {\r\n return null;\r\n }\r\n return list[0].item;\r\n },\r\n\r\n getLastItem() {\r\n const list = buffer.getItems();\r\n if (!list.length) {\r\n return null;\r\n }\r\n return list[list.length - 1].item;\r\n }\r\n\r\n });\r\n\r\n buffer.reset(startIndex);\r\n\r\n return buffer;\r\n}\r\n","// Can't just extend the Array, due to Babel does not support built-in classes extending\r\n// This solution was taken from https://stackoverflow.com/questions/46897414/es6-class-extends-array-workaround-for-es5-babel-transpile\r\nclass CacheProto {\r\n add(item) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index === item.scope.$index) {\r\n this[i].height = item.element.outerHeight();\r\n return;\r\n }\r\n }\r\n this.push({\r\n index: item.scope.$index,\r\n height: item.element.outerHeight()\r\n });\r\n this.sort((a, b) => ((a.index < b.index) ? -1 : ((a.index > b.index) ? 1 : 0)));\r\n }\r\n\r\n remove(argument, _shiftTop) {\r\n const index = argument % 1 === 0 ? argument : argument.scope.$index;\r\n const shiftTop = argument % 1 === 0 ? _shiftTop : argument.shiftTop;\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index === index) {\r\n this.splice(i, 1);\r\n break;\r\n }\r\n }\r\n if (!shiftTop) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index > index) {\r\n this[i].index--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n clear() {\r\n this.length = 0;\r\n }\r\n}\r\n\r\nfunction Cache() {\r\n const instance = [];\r\n instance.push.apply(instance, arguments);\r\n Object.setPrototypeOf(instance, Cache.prototype);\r\n return instance;\r\n}\r\nCache.prototype = Object.create(Array.prototype);\r\nObject.getOwnPropertyNames(CacheProto.prototype).forEach(methodName =>\r\n Cache.prototype[methodName] = CacheProto.prototype[methodName]\r\n);\r\n\r\nfunction generateElement(template) {\r\n if (template.nodeType !== Node.ELEMENT_NODE) {\r\n throw new Error('ui-scroll directive requires an Element node for templating the view');\r\n }\r\n let element;\r\n switch (template.tagName.toLowerCase()) {\r\n case 'dl':\r\n throw new Error(`ui-scroll directive does not support <${template.tagName}> as a repeating tag: ${template.outerHTML}`);\r\n case 'tr':\r\n let table = angular.element('');\r\n element = table.find('tr');\r\n break;\r\n case 'li':\r\n element = angular.element('');\r\n break;\r\n default:\r\n element = angular.element('');\r\n }\r\n return element;\r\n}\r\n\r\nclass Padding {\r\n constructor(template) {\r\n this.element = generateElement(template);\r\n this.cache = new Cache();\r\n }\r\n\r\n height() {\r\n return this.element.height.apply(this.element, arguments);\r\n }\r\n}\r\n\r\nexport default Padding;","import Padding from './padding';\r\n\r\nexport default function Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding) {\r\n let topPadding = null;\r\n let bottomPadding = null;\r\n const viewport = viewportController && viewportController.viewport ? viewportController.viewport : angular.element(window);\r\n const container = viewportController && viewportController.container ? viewportController.container : undefined;\r\n const scope = viewportController && viewportController.scope ? viewportController.scope : $rootScope;\r\n\r\n viewport.css({\r\n 'overflow-anchor': 'none',\r\n 'overflow-y': 'auto',\r\n 'display': 'block'\r\n });\r\n\r\n function bufferPadding() {\r\n return viewport.outerHeight() * padding; // some extra space to initiate preload\r\n }\r\n\r\n angular.extend(viewport, {\r\n getScope() {\r\n return scope;\r\n },\r\n\r\n createPaddingElements(template) {\r\n topPadding = new Padding(template);\r\n bottomPadding = new Padding(template);\r\n element.before(topPadding.element);\r\n element.after(bottomPadding.element);\r\n topPadding.height(0);\r\n bottomPadding.height(0);\r\n },\r\n\r\n applyContainerStyle() {\r\n if (!container) {\r\n return true;\r\n }\r\n if (container !== viewport) {\r\n viewport.css('height', window.getComputedStyle(container[0]).height);\r\n }\r\n return viewport.height() > 0;\r\n },\r\n\r\n bottomDataPos() {\r\n let scrollHeight = viewport[0].scrollHeight;\r\n scrollHeight = scrollHeight != null ? scrollHeight : viewport[0].document.documentElement.scrollHeight;\r\n return scrollHeight - bottomPadding.height();\r\n },\r\n\r\n topDataPos() {\r\n return topPadding.height();\r\n },\r\n\r\n bottomVisiblePos() {\r\n return viewport.scrollTop() + viewport.outerHeight();\r\n },\r\n\r\n topVisiblePos() {\r\n return viewport.scrollTop();\r\n },\r\n\r\n insertElement(e, sibling) {\r\n return elementRoutines.insertElement(e, sibling || topPadding.element);\r\n },\r\n\r\n insertElementAnimated(e, sibling) {\r\n return elementRoutines.insertElementAnimated(e, sibling || topPadding.element);\r\n },\r\n\r\n shouldLoadBottom() {\r\n return !buffer.eof && viewport.bottomDataPos() < viewport.bottomVisiblePos() + bufferPadding();\r\n },\r\n\r\n clipBottom() {\r\n // clip the invisible items off the bottom\r\n let overage = 0;\r\n let overageHeight = 0;\r\n let itemHeight = 0;\r\n let emptySpaceHeight = viewport.bottomDataPos() - viewport.bottomVisiblePos() - bufferPadding();\r\n\r\n for (let i = buffer.length - 1; i >= 0; i--) {\r\n itemHeight = buffer[i].element.outerHeight(true);\r\n if (overageHeight + itemHeight > emptySpaceHeight) {\r\n break;\r\n }\r\n bottomPadding.cache.add(buffer[i]);\r\n overageHeight += itemHeight;\r\n overage++;\r\n }\r\n\r\n if (overage > 0) {\r\n buffer.eof = false;\r\n buffer.remove(buffer.length - overage, buffer.length);\r\n buffer.next -= overage;\r\n viewport.adjustPaddings();\r\n }\r\n },\r\n\r\n shouldLoadTop() {\r\n return !buffer.bof && (viewport.topDataPos() > viewport.topVisiblePos() - bufferPadding());\r\n },\r\n\r\n clipTop() {\r\n // clip the invisible items off the top\r\n let overage = 0;\r\n let overageHeight = 0;\r\n let itemHeight = 0;\r\n let emptySpaceHeight = viewport.topVisiblePos() - viewport.topDataPos() - bufferPadding();\r\n\r\n for (let i = 0; i < buffer.length; i++) {\r\n itemHeight = buffer[i].element.outerHeight(true);\r\n if (overageHeight + itemHeight > emptySpaceHeight) {\r\n break;\r\n }\r\n topPadding.cache.add(buffer[i]);\r\n overageHeight += itemHeight;\r\n overage++;\r\n }\r\n\r\n if (overage > 0) {\r\n // we need to adjust top padding element before items are removed from top\r\n // to avoid strange behaviour of scroll bar during remove top items when we are at the very bottom\r\n topPadding.height(topPadding.height() + overageHeight);\r\n buffer.bof = false;\r\n buffer.remove(0, overage);\r\n buffer.first += overage;\r\n }\r\n },\r\n\r\n adjustPaddings() {\r\n if (!buffer.length) {\r\n return;\r\n }\r\n\r\n // precise heights calculation based on items that are in buffer or that were in buffer once\r\n const visibleItemsHeight = buffer.reduce((summ, item) => summ + item.element.outerHeight(true), 0);\r\n\r\n let topPaddingHeight = 0, topCount = 0;\r\n topPadding.cache.forEach(item => {\r\n if (item.index < buffer.first) {\r\n topPaddingHeight += item.height;\r\n topCount++;\r\n }\r\n });\r\n\r\n let bottomPaddingHeight = 0, bottomCount = 0;\r\n bottomPadding.cache.forEach(item => {\r\n if (item.index >= buffer.next) {\r\n bottomPaddingHeight += item.height;\r\n bottomCount++;\r\n }\r\n });\r\n\r\n const totalHeight = visibleItemsHeight + topPaddingHeight + bottomPaddingHeight;\r\n const averageItemHeight = totalHeight / (topCount + bottomCount + buffer.length);\r\n\r\n // average heights calculation, items that have never been reached\r\n let adjustTopPadding = buffer.minIndexUser !== null && buffer.minIndex > buffer.minIndexUser;\r\n let adjustBottomPadding = buffer.maxIndexUser !== null && buffer.maxIndex < buffer.maxIndexUser;\r\n let topPaddingHeightAdd = adjustTopPadding ? (buffer.minIndex - buffer.minIndexUser) * averageItemHeight : 0;\r\n let bottomPaddingHeightAdd = adjustBottomPadding ? (buffer.maxIndexUser - buffer.maxIndex) * averageItemHeight : 0;\r\n\r\n // paddings combine adjustment\r\n topPadding.height(topPaddingHeight + topPaddingHeightAdd);\r\n bottomPadding.height(bottomPaddingHeight + bottomPaddingHeightAdd);\r\n },\r\n\r\n onAfterMinIndexSet(topPaddingHeightOld) {\r\n // additional scrollTop adjustment in case of datasource.minIndex external set\r\n if (buffer.minIndexUser !== null && buffer.minIndex > buffer.minIndexUser) {\r\n let diff = topPadding.height() - topPaddingHeightOld;\r\n viewport.scrollTop(viewport.scrollTop() + diff);\r\n while((diff -= viewport.scrollTop()) > 0) {\r\n bottomPadding.height(bottomPadding.height() + diff);\r\n viewport.scrollTop(viewport.scrollTop() + diff);\r\n }\r\n }\r\n },\r\n\r\n onAfterPrepend(updates) {\r\n if (!updates.prepended.length) {\r\n return;\r\n }\r\n const height = buffer.effectiveHeight(updates.prepended);\r\n const paddingHeight = topPadding.height() - height;\r\n if (paddingHeight >= 0) {\r\n topPadding.height(paddingHeight);\r\n return;\r\n }\r\n const position = viewport.scrollTop();\r\n const newPosition = position - paddingHeight;\r\n viewport.synthetic = { previous: position, next: newPosition };\r\n topPadding.height(0);\r\n viewport.scrollTop(newPosition);\r\n },\r\n\r\n resetTopPadding() {\r\n topPadding.height(0);\r\n topPadding.cache.clear();\r\n },\r\n\r\n resetBottomPadding() {\r\n bottomPadding.height(0);\r\n bottomPadding.cache.clear();\r\n },\r\n\r\n removeCacheItem(item, shiftTop) {\r\n topPadding.cache.remove(item, shiftTop);\r\n bottomPadding.cache.remove(item, shiftTop);\r\n },\r\n\r\n removeItem(item) {\r\n this.removeCacheItem(item);\r\n return buffer.remove(item);\r\n }\r\n });\r\n\r\n return viewport;\r\n}\r\n","import { OPERATIONS } from './utils';\r\n\r\nclass Adapter {\r\n\r\n constructor($scope, $parse, $attr, viewport, buffer, doAdjust, reload) {\r\n this.$parse = $parse;\r\n this.$attr = $attr;\r\n this.viewport = viewport;\r\n this.buffer = buffer;\r\n\r\n this.doAdjust = doAdjust;\r\n this.reload = reload;\r\n\r\n this.isLoading = false;\r\n this.disabled = false;\r\n\r\n const viewportScope = viewport.getScope();\r\n this.startScope = viewportScope.$parent ? viewportScope : $scope;\r\n\r\n this.publicContext = {};\r\n this.assignAdapter($attr.adapter);\r\n this.generatePublicContext();\r\n }\r\n\r\n assignAdapter(adapterAttr) {\r\n if (!adapterAttr || !(adapterAttr = adapterAttr.replace(/^\\s+|\\s+$/gm, ''))) {\r\n return;\r\n }\r\n let adapterOnScope;\r\n\r\n try {\r\n this.$parse(adapterAttr).assign(this.startScope, {});\r\n adapterOnScope = this.$parse(adapterAttr)(this.startScope);\r\n }\r\n catch (error) {\r\n error.message = `Angular ui-scroll Adapter assignment exception.\\n` +\r\n `Can't parse \"${adapterAttr}\" expression.\\n` +\r\n error.message;\r\n throw error;\r\n }\r\n\r\n angular.extend(adapterOnScope, this.publicContext);\r\n this.publicContext = adapterOnScope;\r\n }\r\n\r\n generatePublicContext() {\r\n // these methods will be accessible out of ui-scroll via user defined adapter\r\n const publicMethods = ['reload', 'applyUpdates', 'append', 'prepend', 'isBOF', 'isEOF', 'isEmpty'];\r\n for (let i = publicMethods.length - 1; i >= 0; i--) {\r\n this.publicContext[publicMethods[i]] = this[publicMethods[i]].bind(this);\r\n }\r\n\r\n // these read-only props will be accessible out of ui-scroll via user defined adapter\r\n const publicProps = ['isLoading', 'topVisible', 'topVisibleElement', 'topVisibleScope', 'bottomVisible', 'bottomVisibleElement', 'bottomVisibleScope'];\r\n for (let i = publicProps.length - 1; i >= 0; i--) {\r\n let property, attr = this.$attr[publicProps[i]];\r\n Object.defineProperty(this, publicProps[i], {\r\n get: () => property,\r\n set: (value) => {\r\n property = value;\r\n this.publicContext[publicProps[i]] = value;\r\n if (attr) {\r\n this.$parse(attr).assign(this.startScope, value);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // read-only immediately calculated public properties\r\n const publicPropsImmediate = ['bufferFirst', 'bufferLast', 'bufferLength'];\r\n for (let i = publicPropsImmediate.length - 1; i >= 0; i--) {\r\n Object.defineProperty(this.publicContext, publicPropsImmediate[i], {\r\n get: () => this[publicPropsImmediate[i]]\r\n });\r\n }\r\n\r\n // non-read-only public property\r\n Object.defineProperty(this.publicContext, 'disabled', {\r\n get: () => this.disabled,\r\n set: (value) => (!(this.disabled = value)) ? this.doAdjust() : null\r\n });\r\n }\r\n\r\n loading(value) {\r\n this.isLoading = value;\r\n }\r\n\r\n isBOF() {\r\n return this.buffer.bof;\r\n }\r\n\r\n isEOF() {\r\n return this.buffer.eof;\r\n }\r\n\r\n isEmpty() {\r\n return !this.buffer.length;\r\n }\r\n\r\n get bufferLength() {\r\n return this.buffer.getItems().length;\r\n }\r\n\r\n get bufferFirst() {\r\n return this.buffer.getFirstItem();\r\n }\r\n\r\n get bufferLast() {\r\n return this.buffer.getLastItem();\r\n }\r\n\r\n append(newItems) {\r\n this.buffer.append(newItems);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n prepend(newItems, options = {}) {\r\n this.buffer.prepend(newItems, options.immutableTop);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n applyUpdates(arg1, arg2, arg3) {\r\n if (typeof arg1 === 'function') {\r\n this.applyUpdatesFunc(arg1, arg2);\r\n } else {\r\n this.applyUpdatesIndex(arg1, arg2, arg3);\r\n }\r\n this.doAdjust();\r\n }\r\n\r\n applyUpdatesFunc(cb, options = {}) {\r\n this.buffer.slice(0).forEach((wrapper) => {\r\n // we need to do it on the buffer clone, because buffer content\r\n // may change as we iterate through\r\n this.applyUpdate(wrapper, cb(wrapper.item, wrapper.scope, wrapper.element), options);\r\n });\r\n }\r\n\r\n applyUpdatesIndex(index, newItems, options = {}) {\r\n if (index % 1 !== 0) {\r\n throw new Error('applyUpdates - ' + index + ' is not a valid index (should be an integer)');\r\n }\r\n const _index = index - this.buffer.first;\r\n\r\n // apply updates only within buffer\r\n if (_index >= 0 && _index < this.buffer.length) {\r\n this.applyUpdate(this.buffer[_index], newItems, options);\r\n }\r\n // out-of-buffer case: deletion may affect Paddings\r\n else if(index >= this.buffer.getAbsMinIndex() && index <= this.buffer.getAbsMaxIndex()) {\r\n if(angular.isArray(newItems) && !newItems.length) {\r\n this.viewport.removeCacheItem(index, !options.immutableTop && index === this.buffer.minIndex);\r\n if (!options.immutableTop && index === this.buffer.getAbsMinIndex()) {\r\n this.buffer.incrementMinIndex();\r\n }\r\n else {\r\n this.buffer.decrementMaxIndex();\r\n }\r\n }\r\n }\r\n }\r\n\r\n applyUpdate(wrapper, newItems, options = {}) {\r\n if (!angular.isArray(newItems)) {\r\n return;\r\n }\r\n let position = this.buffer.indexOf(wrapper);\r\n if (!newItems.reverse().some(newItem => newItem === wrapper.item)) {\r\n wrapper.op = OPERATIONS.REMOVE;\r\n // try to catch \"first\" edge case on remove\r\n if (!options.immutableTop && !newItems.length) {\r\n // this is the first item, or the previous one's part of the \"shift-top\" group\r\n if (\r\n (position === 0 && this.buffer.bof) ||\r\n (position !== 0 && this.buffer[position - 1].shiftTop)\r\n ) {\r\n wrapper.shiftTop = true;\r\n }\r\n }\r\n }\r\n newItems.forEach((newItem) => {\r\n if (newItem === wrapper.item) {\r\n position--;\r\n } else {\r\n // 3 parameter (shiftTop) is to catch \"first\" edge case on insert\r\n this.buffer.insert(position + 1, newItem, !options.immutableTop && position === -1);\r\n }\r\n });\r\n }\r\n\r\n calculateProperties() {\r\n let rowTop = null, topHeight = 0;\r\n let topDone = false, bottomDone = false;\r\n const length = this.buffer.length;\r\n\r\n for (let i = 0; i < length; i++) {\r\n const item = this.buffer[i];\r\n const itemTop = item.element.offset().top;\r\n\r\n if (rowTop !== itemTop) { // a new row condition\r\n const itemHeight = item.element.outerHeight(true);\r\n const top = this.viewport.topDataPos() + topHeight + itemHeight;\r\n\r\n if (!topDone && top > this.viewport.topVisiblePos()) {\r\n topDone = true;\r\n this['topVisible'] = item.item;\r\n this['topVisibleElement'] = item.element;\r\n this['topVisibleScope'] = item.scope;\r\n }\r\n if (!bottomDone && (top >= this.viewport.bottomVisiblePos() || (i === length - 1 && this.isEOF()))) {\r\n bottomDone = true;\r\n this['bottomVisible'] = item.item;\r\n this['bottomVisibleElement'] = item.element;\r\n this['bottomVisibleScope'] = item.scope;\r\n }\r\n topHeight += itemHeight;\r\n }\r\n rowTop = itemTop;\r\n\r\n if (topDone && bottomDone) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default Adapter;\r\n","import JQLiteExtras from './modules/jqLiteExtras';\r\nimport ElementRoutines from './modules/elementRoutines.js';\r\nimport ScrollBuffer from './modules/buffer.js';\r\nimport Viewport from './modules/viewport.js';\r\nimport Adapter from './modules/adapter.js';\r\nimport { OPERATIONS } from './modules/utils';\r\n\r\nangular.module('ui.scroll', [])\r\n\r\n .constant('JQLiteExtras', JQLiteExtras)\r\n .run(['JQLiteExtras', (JQLiteExtras) => {\r\n const elt = angular.element;\r\n !(window.jQuery && elt.fn && elt.fn.jquery) ? (new JQLiteExtras()).registerFor(elt) : null;\r\n ElementRoutines.addCSSRules();\r\n }])\r\n\r\n .directive('uiScrollViewport', function () {\r\n return {\r\n restrict: 'A',\r\n controller: [\r\n '$scope',\r\n '$element',\r\n function (scope, element) {\r\n this.container = element;\r\n this.viewport = element;\r\n this.scope = scope;\r\n\r\n angular.forEach(element.children(), child => {\r\n if (child.tagName.toLowerCase() === 'tbody') {\r\n this.viewport = angular.element(child);\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n ]\r\n };\r\n })\r\n\r\n .directive('uiScroll', [\r\n '$log',\r\n '$injector',\r\n '$rootScope',\r\n '$timeout',\r\n '$interval',\r\n '$q',\r\n '$parse',\r\n function (console, $injector, $rootScope, $timeout, $interval, $q, $parse) {\r\n\r\n return {\r\n require: ['?^uiScrollViewport'],\r\n restrict: 'A',\r\n transclude: 'element',\r\n priority: 1000,\r\n terminal: true,\r\n link: link\r\n };\r\n\r\n function link($scope, element, $attr, controllers, linker) {\r\n const match = $attr.uiScroll.match(/^\\s*(\\w+)\\s+in\\s+([(\\w|\\$)\\.]+)\\s*$/);\r\n if (!match) {\r\n throw new Error('Expected uiScroll in form of \\'_item_ in _datasource_\\' but got \\'' + $attr.uiScroll + '\\'');\r\n }\r\n\r\n function parseNumber(value, defaultValue, isFloat) {\r\n if (!isFloat) {\r\n value = value === null ? defaultValue : Math.floor(value);\r\n }\r\n return isNaN(value) ? defaultValue : value;\r\n }\r\n\r\n function parseNumericAttr(value, defaultValue, isFloat) {\r\n const result = $parse(value)($scope);\r\n return parseNumber(result, defaultValue, isFloat);\r\n }\r\n\r\n function parseBooleanAttr(value, defaultValue) {\r\n const result = $parse(value)($scope);\r\n return typeof result === 'boolean' ? result : defaultValue;\r\n }\r\n\r\n const BUFFER_MIN = 3;\r\n const BUFFER_DEFAULT = 10;\r\n const PADDING_MIN = 0.3;\r\n const PADDING_DEFAULT = 0.5;\r\n const HANDLE_INERTIA_DEFAULT = true;\r\n const START_INDEX_DEFAULT = 1;\r\n const MAX_VIEWPORT_DELAY = 500;\r\n const VIEWPORT_POLLING_INTERVAL = 50;\r\n\r\n let datasource = null;\r\n const itemName = match[1];\r\n const datasourceName = match[2];\r\n const viewportController = controllers[0];\r\n const bufferSize = Math.max(BUFFER_MIN, parseNumericAttr($attr.bufferSize, BUFFER_DEFAULT));\r\n const padding = Math.max(PADDING_MIN, parseNumericAttr($attr.padding, PADDING_DEFAULT, true));\r\n const handleInertia = parseBooleanAttr($attr.handleInertia, HANDLE_INERTIA_DEFAULT);\r\n let startIndex = parseNumericAttr($attr.startIndex, START_INDEX_DEFAULT);\r\n let ridActual = 0; // current data revision id\r\n let pending = [];\r\n\r\n const elementRoutines = new ElementRoutines($injector, $q);\r\n const buffer = new ScrollBuffer(elementRoutines, bufferSize, startIndex);\r\n const viewport = new Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding);\r\n const adapter = new Adapter($scope, $parse, $attr, viewport, buffer, doAdjust, reload);\r\n\r\n if (viewportController) {\r\n viewportController.adapter = adapter;\r\n }\r\n\r\n const isDatasourceValid = () =>\r\n Object.prototype.toString.call(datasource) === '[object Object]' && typeof datasource.get === 'function';\r\n\r\n datasource = $parse(datasourceName)($scope); // try to get datasource on scope\r\n if (!isDatasourceValid()) {\r\n datasource = $injector.get(datasourceName); // try to inject datasource as service\r\n if (!isDatasourceValid()) {\r\n throw new Error(datasourceName + ' is not a valid datasource');\r\n }\r\n }\r\n\r\n let onRenderHandlers = [];\r\n function onRenderHandlersRunner() {\r\n onRenderHandlers.forEach(handler => handler.run());\r\n onRenderHandlers = [];\r\n }\r\n function persistDatasourceIndex(datasource, propName) {\r\n let getter;\r\n // need to postpone min/maxIndexUser processing if the view is empty\r\n if (angular.isNumber(datasource[propName])) {\r\n getter = datasource[propName];\r\n if (angular.isNumber(getter)) {\r\n onRenderHandlers = onRenderHandlers.filter(handler => handler.id !== propName);\r\n onRenderHandlers.push({\r\n id: propName,\r\n run: () => datasource[propName] = getter\r\n });\r\n }\r\n }\r\n }\r\n\r\n function defineDatasourceIndex(datasource, propName, propUserName) {\r\n const descriptor = Object.getOwnPropertyDescriptor(datasource, propName);\r\n if (descriptor && (descriptor.set || descriptor.get)) {\r\n return;\r\n }\r\n let getter;\r\n persistDatasourceIndex(datasource, propName);\r\n Object.defineProperty(datasource, propName, {\r\n set: (value) => {\r\n getter = value;\r\n if (pending.length && !buffer.length) {\r\n persistDatasourceIndex(datasource, propName);\r\n return;\r\n }\r\n buffer[propUserName] = value;\r\n const topPaddingHeightOld = viewport.topDataPos();\r\n viewport.adjustPaddings();\r\n if (propName === 'minIndex') {\r\n viewport.onAfterMinIndexSet(topPaddingHeightOld);\r\n }\r\n },\r\n get: () => getter\r\n });\r\n }\r\n\r\n defineDatasourceIndex(datasource, 'minIndex', 'minIndexUser');\r\n defineDatasourceIndex(datasource, 'maxIndex', 'maxIndexUser');\r\n\r\n const fetchNext = (datasource.get.length !== 2) ?\r\n (success) => datasource.get(buffer.next, bufferSize, success) :\r\n (success) => {\r\n datasource.get({\r\n index: buffer.next,\r\n append: buffer.length ? buffer[buffer.length - 1].item : void 0,\r\n count: bufferSize\r\n }, success);\r\n };\r\n\r\n const fetchPrevious = (datasource.get.length !== 2) ?\r\n (success) => datasource.get(buffer.first - bufferSize, bufferSize, success) :\r\n (success) => {\r\n datasource.get({\r\n index: buffer.first - bufferSize,\r\n prepend: buffer.length ? buffer[0].item : void 0,\r\n count: bufferSize\r\n }, success);\r\n };\r\n\r\n const initialize = () => {\r\n let tryCount = 0;\r\n if (!viewport.applyContainerStyle()) {\r\n const timer = $interval(() => {\r\n tryCount++;\r\n if (viewport.applyContainerStyle()) {\r\n $interval.cancel(timer);\r\n doAdjust();\r\n }\r\n if (tryCount * VIEWPORT_POLLING_INTERVAL >= MAX_VIEWPORT_DELAY) {\r\n $interval.cancel(timer);\r\n throw Error(`ui-scroll directive requires a viewport with non-zero height in ${MAX_VIEWPORT_DELAY}ms`);\r\n }\r\n }, VIEWPORT_POLLING_INTERVAL);\r\n }\r\n else {\r\n doAdjust();\r\n }\r\n };\r\n\r\n /**\r\n * Build padding elements\r\n *\r\n * Calling linker is the only way I found to get access to the tag name of the template\r\n * to prevent the directive scope from pollution a new scope is created and destroyed\r\n * right after the builder creation is completed\r\n */\r\n linker((clone, scope) => {\r\n viewport.createPaddingElements(clone[0]);\r\n // we do not include the clone in the DOM. It means that the nested directives will not\r\n // be able to reach the parent directives, but in this case it is intentional because we\r\n // created the clone to access the template tag name\r\n scope.$destroy();\r\n clone.remove();\r\n });\r\n\r\n $scope.$on('$destroy', () => {\r\n unbindEvents();\r\n viewport.off('mousewheel', wheelHandler);\r\n });\r\n\r\n viewport.on('mousewheel', wheelHandler);\r\n\r\n initialize();\r\n\r\n /* Private function definitions */\r\n\r\n function isInvalid(rid) {\r\n return (rid && rid !== ridActual) || $scope.$$destroyed;\r\n }\r\n\r\n function bindEvents() {\r\n viewport.on('resize', resizeAndScrollHandler);\r\n viewport.on('scroll', resizeAndScrollHandler);\r\n }\r\n\r\n function unbindEvents() {\r\n viewport.off('resize', resizeAndScrollHandler);\r\n viewport.off('scroll', resizeAndScrollHandler);\r\n }\r\n\r\n function reload() {\r\n unbindEvents();\r\n viewport.resetTopPadding();\r\n viewport.resetBottomPadding();\r\n if (arguments.length) {\r\n startIndex = parseNumber(arguments[0], START_INDEX_DEFAULT, false);\r\n }\r\n buffer.reset(startIndex);\r\n persistDatasourceIndex(datasource, 'minIndex');\r\n persistDatasourceIndex(datasource, 'maxIndex');\r\n doAdjust();\r\n }\r\n\r\n function isElementVisible(wrapper) {\r\n return wrapper.element.height() && wrapper.element[0].offsetParent;\r\n }\r\n\r\n function visibilityWatcher(wrapper) {\r\n if (isElementVisible(wrapper)) {\r\n buffer.forEach((item) => {\r\n if (typeof item.unregisterVisibilityWatcher === 'function') {\r\n item.unregisterVisibilityWatcher();\r\n delete item.unregisterVisibilityWatcher;\r\n }\r\n });\r\n if (!pending.length) {\r\n $timeout(() => doAdjust());\r\n }\r\n }\r\n }\r\n\r\n function insertWrapperContent(wrapper, insertAfter) {\r\n createElement(wrapper, insertAfter, viewport.insertElement);\r\n if (!isElementVisible(wrapper)) {\r\n wrapper.unregisterVisibilityWatcher = wrapper.scope.$watch(() => visibilityWatcher(wrapper));\r\n }\r\n elementRoutines.hideElement(wrapper); // hide inserted elements before data binding\r\n }\r\n\r\n function createElement(wrapper, insertAfter, insertElement) {\r\n let promises = null;\r\n const sibling = (insertAfter > 0) ? buffer[insertAfter - 1].element : undefined;\r\n linker((clone, scope) => {\r\n promises = insertElement(clone, sibling);\r\n wrapper.element = clone;\r\n wrapper.scope = scope;\r\n scope[itemName] = wrapper.item;\r\n });\r\n // ui-scroll-grid apply\r\n if (adapter.transform) {\r\n const tdInitializer = wrapper.scope.uiScrollTdInitializer;\r\n if (tdInitializer && tdInitializer.linking) {\r\n adapter.transform(wrapper.scope, wrapper.element);\r\n } else {\r\n wrapper.scope.uiScrollTdInitializer = {\r\n onLink: () => adapter.transform(wrapper.scope, wrapper.element),\r\n scope: wrapper.scope\r\n };\r\n }\r\n }\r\n return promises;\r\n }\r\n\r\n function updateDOM() {\r\n let promises = [];\r\n const toBePrepended = [];\r\n const toBeRemoved = [];\r\n const inserted = [];\r\n\r\n buffer.forEach((wrapper, i) => {\r\n switch (wrapper.op) {\r\n case OPERATIONS.PREPEND:\r\n toBePrepended.unshift(wrapper);\r\n break;\r\n case OPERATIONS.APPEND:\r\n insertWrapperContent(wrapper, i);\r\n wrapper.op = OPERATIONS.NONE;\r\n inserted.push(wrapper);\r\n break;\r\n case OPERATIONS.INSERT:\r\n promises = promises.concat(createElement(wrapper, i, viewport.insertElementAnimated));\r\n wrapper.op = OPERATIONS.NONE;\r\n inserted.push(wrapper);\r\n break;\r\n case OPERATIONS.REMOVE:\r\n toBeRemoved.push(wrapper);\r\n }\r\n });\r\n\r\n toBeRemoved.forEach((wrapper) => promises = promises.concat(viewport.removeItem(wrapper)));\r\n\r\n if (toBePrepended.length)\r\n toBePrepended.forEach((wrapper) => {\r\n insertWrapperContent(wrapper);\r\n wrapper.op = OPERATIONS.NONE;\r\n });\r\n\r\n buffer.forEach((item, i) => item.scope.$index = buffer.first + i);\r\n\r\n return {\r\n prepended: toBePrepended,\r\n removed: toBeRemoved,\r\n inserted: inserted,\r\n animated: promises\r\n };\r\n\r\n }\r\n\r\n function updatePaddings(rid, updates) {\r\n // schedule another doAdjust after animation completion\r\n if (updates.animated.length) {\r\n $q.all(updates.animated).then(() => {\r\n viewport.adjustPaddings();\r\n doAdjust(rid);\r\n });\r\n } else {\r\n viewport.adjustPaddings();\r\n }\r\n }\r\n\r\n function enqueueFetch(rid, updates) {\r\n if (viewport.shouldLoadBottom()) {\r\n if (!updates || buffer.effectiveHeight(updates.inserted) > 0) {\r\n // this means that at least one item appended in the last batch has height > 0\r\n if (pending.push(true) === 1) {\r\n adapter.loading(true);\r\n fetch(rid);\r\n }\r\n }\r\n } else if (viewport.shouldLoadTop()) {\r\n if ((!updates || buffer.effectiveHeight(updates.prepended) > 0) || pending[0]) {\r\n // this means that at least one item appended in the last batch has height > 0\r\n // pending[0] = true means that previous fetch was appending. We need to force at least one prepend\r\n // BTW there will always be at least 1 element in the pending array because bottom is fetched first\r\n if (pending.push(false) === 1) {\r\n adapter.loading(true);\r\n fetch(rid);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function processUpdates() {\r\n const updates = updateDOM();\r\n\r\n // We need the item bindings to be processed before we can do adjustments\r\n !$scope.$$phase && !$rootScope.$$phase && $scope.$digest();\r\n\r\n updates.inserted.forEach(w => elementRoutines.showElement(w));\r\n updates.prepended.forEach(w => elementRoutines.showElement(w));\r\n return updates;\r\n }\r\n\r\n function doAdjust(rid) {\r\n if (!rid) { // dismiss pending requests\r\n pending = [];\r\n rid = ++ridActual;\r\n }\r\n\r\n const updates = processUpdates();\r\n\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n updatePaddings(rid, updates);\r\n enqueueFetch(rid);\r\n\r\n if (!pending.length) {\r\n adapter.calculateProperties();\r\n }\r\n }\r\n\r\n function doAdjustAfterFetch(rid) {\r\n const updates = processUpdates();\r\n\r\n viewport.onAfterPrepend(updates);\r\n\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n updatePaddings(rid, updates);\r\n onRenderHandlersRunner();\r\n enqueueFetch(rid, updates);\r\n pending.shift();\r\n\r\n if (pending.length)\r\n fetch(rid);\r\n else {\r\n adapter.loading(false);\r\n bindEvents();\r\n adapter.calculateProperties();\r\n }\r\n }\r\n\r\n function fetch(rid) {\r\n if (pending[0]) {// scrolling down\r\n if (buffer.length && !viewport.shouldLoadBottom()) {\r\n doAdjustAfterFetch(rid);\r\n } else {\r\n fetchNext((result) => {\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n if (result.length < bufferSize) {\r\n buffer.eof = true;\r\n }\r\n\r\n if (result.length > 0) {\r\n viewport.clipTop();\r\n buffer.append(result);\r\n }\r\n\r\n doAdjustAfterFetch(rid);\r\n });\r\n }\r\n } else { // scrolling up\r\n if (buffer.length && !viewport.shouldLoadTop()) {\r\n doAdjustAfterFetch(rid);\r\n } else {\r\n fetchPrevious((result) => {\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n if (result.length < bufferSize) {\r\n buffer.bof = true;\r\n // log 'bof is reached'\r\n }\r\n\r\n if (result.length > 0) {\r\n if (buffer.length) {\r\n viewport.clipBottom();\r\n }\r\n buffer.prepend(result);\r\n }\r\n\r\n doAdjustAfterFetch(rid);\r\n });\r\n }\r\n }\r\n }\r\n\r\n function fixInertia() {\r\n if (!viewport.synthetic) {\r\n return;\r\n }\r\n const oldPosition = viewport.synthetic.previous;\r\n const newPosition = viewport.synthetic.next;\r\n if (viewport.scrollTop() !== newPosition) {\r\n requestAnimationFrame(() => {\r\n const position = viewport.scrollTop();\r\n const diff = oldPosition - position;\r\n if (diff > 0) { // inertia over synthetic\r\n viewport.scrollTop(newPosition - diff);\r\n } else {\r\n viewport.scrollTop(newPosition);\r\n }\r\n viewport.synthetic = null;\r\n });\r\n return true;\r\n }\r\n viewport.synthetic = null;\r\n }\r\n\r\n function resizeAndScrollHandler() {\r\n if (handleInertia && fixInertia()) {\r\n return;\r\n }\r\n if (!$rootScope.$$phase && !adapter.isLoading && !adapter.disabled) {\r\n\r\n enqueueFetch(ridActual);\r\n\r\n if (pending.length) {\r\n unbindEvents();\r\n } else {\r\n adapter.calculateProperties();\r\n !$scope.$$phase && $scope.$digest();\r\n }\r\n }\r\n }\r\n\r\n function wheelHandler(event) {\r\n if (!adapter.disabled) {\r\n const scrollTop = viewport[0].scrollTop;\r\n const yMax = viewport[0].scrollHeight - viewport[0].clientHeight;\r\n\r\n if ((scrollTop === 0 && !buffer.bof) || (scrollTop === yMax && !buffer.eof)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n ]);\r\n"],"names":["JQLiteExtras","_classCallCheck","key","value","element","convertToPx","css","getStyle","isWindow","scrollTo","self","direction","elem","_top$left$direction","_slicedToArray","top","left","method","prop","preserve","isValueDefined","call","document","documentElement","getWidthHeight","measure","result","measurements","base","borderA","borderB","computedMarginA","computedMarginB","computedStyle","dirA","dirB","paddingA","paddingB","height","width","padding","border","margin","_width$height$measure","offsetWidth","offsetHeight","getMeasurements","outer","outerfull","style","parseFloat","angular","prototype","name","this","nodeType","obj","location","alert","setInterval","window","getComputedStyle","currentStyle","rs","rsLeft","RegExp","source","test","runtimeStyle","pixelLeft","forEach","before","newElem","children","i","j","parent","ref","contents","prepend","length","after","Error","outerHTML","isNumber","outerHeight","option","outerWidth","offset","docElem","win","box","doc","ownerDocument","arguments","undefined","getBoundingClientRect","defaultView","parentWindow","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","hideClassToken","ElementRoutines","$injector","$q","$animate","has","get","isAngularVersionLessThen1_3","version","major","minor","index","selector","rules","sheet","styleSheets","cssRules","err","insertRule","addRule","wrapper","addClass","removeClass","newElement","previousElement","remove","scope","$destroy","insertElement","deferred","defer","enter","resolve","promise","removeElement","leave","then","OPERATIONS","PREPEND","APPEND","INSERT","REMOVE","NONE","ScrollBuffer","elementRoutines","bufferSize","startIndex","buffer","Object","create","Array","extend","size","reset","eof","bof","first","next","minIndex","maxIndex","minIndexUser","maxIndexUser","append","items","item","insert","Math","max","immutableTop","reverse","min","operation","shiftTop","op","splice","push","unshift","arg1","arg2","indexOf","getAbsMinIndex","incrementMinIndex","decrementMaxIndex","removeElementAnimated","getAbsMaxIndex","effectiveHeight","elements","Number","MAX_VALUE","bottom","NEGATIVE_INFINITY","offsetParent","getItems","filter","getFirstItem","list","getLastItem","CacheProto","_createClass","$index","sort","a","b","argument","_shiftTop","Cache","instance","apply","setPrototypeOf","getOwnPropertyNames","methodName","Padding","template","Node","ELEMENT_NODE","tagName","toLowerCase","concat","find","generateElement","cache","Viewport","viewportController","$rootScope","topPadding","bottomPadding","viewport","container","bufferPadding","getScope","createPaddingElements","applyContainerStyle","bottomDataPos","scrollHeight","topDataPos","bottomVisiblePos","topVisiblePos","e","sibling","insertElementAnimated","shouldLoadBottom","clipBottom","overage","overageHeight","itemHeight","emptySpaceHeight","add","adjustPaddings","shouldLoadTop","clipTop","visibleItemsHeight","reduce","summ","topPaddingHeight","topCount","bottomPaddingHeight","bottomCount","averageItemHeight","adjustTopPadding","adjustBottomPadding","topPaddingHeightAdd","bottomPaddingHeightAdd","onAfterMinIndexSet","topPaddingHeightOld","diff","onAfterPrepend","updates","prepended","paddingHeight","position","newPosition","synthetic","previous","resetTopPadding","clear","resetBottomPadding","removeCacheItem","removeItem","Adapter","$scope","$parse","$attr","doAdjust","reload","isLoading","disabled","viewportScope","startScope","$parent","publicContext","assignAdapter","adapter","generatePublicContext","adapterAttr","replace","adapterOnScope","assign","error","message","_this","publicMethods","bind","publicProps","_loop","_i","property","attr","defineProperty","set","publicPropsImmediate","_loop2","_i2","newItems","options","arg3","applyUpdatesFunc","applyUpdatesIndex","cb","_this2","slice","applyUpdate","_index","isArray","_this3","some","newItem","rowTop","topHeight","topDone","bottomDone","itemTop","isEOF","module","constant","run","elt","jQuery","fn","jquery","registerFor","addCSSRules","directive","restrict","controller","child","console","$timeout","$interval","require","transclude","priority","terminal","link","controllers","linker","match","uiScroll","parseNumber","defaultValue","isFloat","floor","isNaN","parseNumericAttr","datasource","itemName","datasourceName","handleInertia","ridActual","pending","unbindEvents","persistDatasourceIndex","isDatasourceValid","toString","onRenderHandlers","propName","getter","handler","id","defineDatasourceIndex","propUserName","descriptor","getOwnPropertyDescriptor","fetchNext","success","count","fetchPrevious","isInvalid","rid","$$destroyed","off","resizeAndScrollHandler","isElementVisible","insertWrapperContent","insertAfter","createElement","unregisterVisibilityWatcher","$watch","visibilityWatcher","hideElement","promises","clone","transform","tdInitializer","uiScrollTdInitializer","linking","onLink","updatePaddings","animated","all","enqueueFetch","inserted","loading","fetch","processUpdates","toBePrepended","toBeRemoved","removed","$$phase","$digest","w","showElement","calculateProperties","doAdjustAfterFetch","shift","on","oldPosition","requestAnimationFrame","fixInertia","wheelHandler","event","yMax","clientHeight","preventDefault","$on","tryCount","timer","cancel","initialize"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"ui-scroll.min.js","mappings":"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","sources":["webpack://angular-ui-scroll/./src/modules/jqLiteExtras.js","webpack://angular-ui-scroll/./src/modules/elementRoutines.js","webpack://angular-ui-scroll/./src/modules/utils.js","webpack://angular-ui-scroll/./src/modules/buffer.js","webpack://angular-ui-scroll/./src/modules/padding.js","webpack://angular-ui-scroll/./src/modules/viewport.js","webpack://angular-ui-scroll/./src/modules/adapter.js","webpack://angular-ui-scroll/./src/ui-scroll.js"],"sourcesContent":["/*!\r\n globals: angular, window\r\n List of used element methods available in JQuery but not in JQuery Lite\r\n element.before(elem)\r\n element.height()\r\n element.outerHeight(true)\r\n element.height(value) = only for Top/Bottom padding elements\r\n element.scrollTop()\r\n element.scrollTop(value)\r\n */\r\n\r\nexport default class JQLiteExtras {\r\n\r\n registerFor(element) {\r\n let convertToPx, css, getStyle, isWindow;\r\n // angular implementation blows up if elem is the window\r\n css = angular.element.prototype.css;\r\n\r\n element.prototype.css = function (name, value) {\r\n let self = this;\r\n let elem = self[0];\r\n if (!(!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style)) {\r\n return css.call(self, name, value);\r\n }\r\n };\r\n\r\n // as defined in angularjs v1.0.5\r\n isWindow = (obj) => obj && obj.document && obj.location && obj.alert && obj.setInterval;\r\n\r\n function scrollTo(self, direction, value) {\r\n let elem = self[0];\r\n let [method, prop, preserve] = {\r\n top: [\r\n 'scrollTop',\r\n 'pageYOffset',\r\n 'scrollLeft'\r\n ],\r\n left: [\r\n 'scrollLeft',\r\n 'pageXOffset',\r\n 'scrollTop'\r\n ]\r\n }[direction];\r\n\r\n const isValueDefined = typeof value !== 'undefined';\r\n if (isWindow(elem)) {\r\n if (isValueDefined) {\r\n return elem.scrollTo(self[preserve].call(self), value);\r\n }\r\n return (prop in elem) ? elem[prop] : elem.document.documentElement[method];\r\n } else {\r\n if (isValueDefined) {\r\n elem[method] = value;\r\n }\r\n return elem[method];\r\n }\r\n }\r\n\r\n if (window.getComputedStyle) {\r\n getStyle = (elem) => window.getComputedStyle(elem, null);\r\n convertToPx = (elem, value) => parseFloat(value);\r\n } else {\r\n getStyle = (elem) => elem.currentStyle;\r\n convertToPx = (elem, value) => {\r\n let left, result, rs, rsLeft, style;\r\n let core_pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\r\n let rnumnonpx = new RegExp('^(' + core_pnum + ')(?!px)[a-z%]+$', 'i');\r\n\r\n if (!rnumnonpx.test(value)) {\r\n return parseFloat(value);\r\n }\r\n\r\n // ported from JQuery\r\n style = elem.style;\r\n left = style.left;\r\n rs = elem.runtimeStyle;\r\n rsLeft = rs && rs.left;\r\n if (rs) {\r\n rs.left = style.left;\r\n }\r\n // put in the new values to get a computed style out\r\n style.left = value;\r\n result = style.pixelLeft;\r\n style.left = left;\r\n if (rsLeft) {\r\n rs.left = rsLeft;\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n function getMeasurements(elem, measure) {\r\n let base, borderA, borderB, computedMarginA, computedMarginB, computedStyle, dirA, dirB, marginA, marginB, paddingA, paddingB;\r\n\r\n if (isWindow(elem)) {\r\n base = document.documentElement[{height: 'clientHeight', width: 'clientWidth'}[measure]];\r\n\r\n return {\r\n base: base,\r\n padding: 0,\r\n border: 0,\r\n margin: 0\r\n };\r\n }\r\n\r\n // Start with offset property\r\n [\r\n base,\r\n dirA,\r\n dirB\r\n ] = {\r\n width: [\r\n elem.offsetWidth,\r\n 'Left',\r\n 'Right'\r\n ],\r\n height: [\r\n elem.offsetHeight,\r\n 'Top',\r\n 'Bottom'\r\n ]\r\n }[measure];\r\n\r\n computedStyle = getStyle(elem);\r\n paddingA = convertToPx(elem, computedStyle['padding' + dirA]) || 0;\r\n paddingB = convertToPx(elem, computedStyle['padding' + dirB]) || 0;\r\n borderA = convertToPx(elem, computedStyle['border' + dirA + 'Width']) || 0;\r\n borderB = convertToPx(elem, computedStyle['border' + dirB + 'Width']) || 0;\r\n computedMarginA = computedStyle['margin' + dirA];\r\n computedMarginB = computedStyle['margin' + dirB];\r\n\r\n // I do not care for width for now, so this hack is irrelevant\r\n // if ( !supportsPercentMargin )\r\n // computedMarginA = hackPercentMargin( elem, computedStyle, computedMarginA )\r\n // computedMarginB = hackPercentMargin( elem, computedStyle, computedMarginB )\r\n marginA = convertToPx(elem, computedMarginA) || 0;\r\n marginB = convertToPx(elem, computedMarginB) || 0;\r\n\r\n return {\r\n base: base,\r\n padding: paddingA + paddingB,\r\n border: borderA + borderB,\r\n margin: marginA + marginB\r\n };\r\n }\r\n\r\n function getWidthHeight(elem, direction, measure) {\r\n let computedStyle, result;\r\n\r\n let measurements = getMeasurements(elem, direction);\r\n\r\n if (measurements.base > 0) {\r\n return {\r\n base: measurements.base - measurements.padding - measurements.border,\r\n outer: measurements.base,\r\n outerfull: measurements.base + measurements.margin\r\n }[measure];\r\n }\r\n\r\n // Fall back to computed then uncomputed css if necessary\r\n computedStyle = getStyle(elem);\r\n result = computedStyle[direction];\r\n\r\n if (result < 0 || result === null) {\r\n result = elem.style[direction] || 0;\r\n }\r\n\r\n // Normalize \"\", auto, and prepare for extra\r\n result = parseFloat(result) || 0;\r\n\r\n return {\r\n base: result - measurements.padding - measurements.border,\r\n outer: result,\r\n outerfull: result + measurements.padding + measurements.border + measurements.margin\r\n }[measure];\r\n }\r\n\r\n // define missing methods\r\n return angular.forEach({\r\n before(newElem) {\r\n var children, elem, i, j, parent, ref, self;\r\n self = this;\r\n elem = self[0];\r\n parent = self.parent();\r\n children = parent.contents();\r\n if (children[0] === elem) {\r\n return parent.prepend(newElem);\r\n } else {\r\n for (i = j = 1, ref = children.length - 1; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\r\n if (children[i] === elem) {\r\n angular.element(children[i - 1]).after(newElem);\r\n return;\r\n }\r\n }\r\n throw new Error('invalid DOM structure ' + elem.outerHTML);\r\n }\r\n },\r\n height (value){\r\n var self;\r\n self = this;\r\n if (typeof value !== 'undefined') {\r\n if (angular.isNumber(value)) {\r\n value = value + 'px';\r\n }\r\n return css.call(self, 'height', value);\r\n } else {\r\n return getWidthHeight(this[0], 'height', 'base');\r\n }\r\n },\r\n outerHeight(option) {\r\n return getWidthHeight(this[0], 'height', option ? 'outerfull' : 'outer');\r\n },\r\n outerWidth(option) {\r\n return getWidthHeight(this[0], 'width', option ? 'outerfull' : 'outer');\r\n },\r\n\r\n /*\r\n The offset setter method is not implemented\r\n */\r\n offset(value) {\r\n let docElem, win;\r\n let self = this;\r\n let box = {\r\n top: 0,\r\n left: 0\r\n };\r\n let elem = self[0];\r\n let doc = elem && elem.ownerDocument;\r\n\r\n if (arguments.length) {\r\n if (value === undefined) {\r\n return self;\r\n }\r\n // TODO: implement setter\r\n throw new Error('offset setter method is not implemented');\r\n }\r\n\r\n if (!doc) {\r\n return;\r\n }\r\n\r\n docElem = doc.documentElement;\r\n\r\n // TODO: Make sure it's not a disconnected DOM node\r\n\r\n if (elem.getBoundingClientRect != null) {\r\n box = elem.getBoundingClientRect();\r\n }\r\n\r\n win = doc.defaultView || doc.parentWindow;\r\n\r\n return {\r\n top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\r\n left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)\r\n };\r\n },\r\n scrollTop(value) {\r\n return scrollTo(this, 'top', value);\r\n },\r\n scrollLeft(value) {\r\n return scrollTo(this, 'left', value);\r\n }\r\n }, (value, key) => {\r\n if (!element.prototype[key]) {\r\n return element.prototype[key] = value;\r\n }\r\n });\r\n }\r\n\r\n}\r\n","const hideClassToken = 'ng-ui-scroll-hide';\r\n\r\nexport default class ElementRoutines {\r\n\r\n static addCSSRules() {\r\n const selector = '.' + hideClassToken;\r\n const rules = 'display: none';\r\n const sheet = document.styleSheets[0];\r\n let index;\r\n try {\r\n index = sheet.cssRules.length;\r\n } catch (err) {\r\n index = 0;\r\n }\r\n if('insertRule' in sheet) {\r\n sheet.insertRule(selector + '{' + rules + '}', index);\r\n }\r\n else if('addRule' in sheet) {\r\n sheet.addRule(selector, rules, index);\r\n }\r\n }\r\n\r\n constructor($injector, $q) {\r\n this.$animate = ($injector.has && $injector.has('$animate')) ? $injector.get('$animate') : null;\r\n this.isAngularVersionLessThen1_3 = angular.version.major === 1 && angular.version.minor < 3;\r\n this.$q = $q;\r\n }\r\n\r\n hideElement(wrapper) {\r\n wrapper.element.addClass(hideClassToken);\r\n }\r\n\r\n showElement(wrapper) {\r\n wrapper.element.removeClass(hideClassToken);\r\n }\r\n\r\n insertElement(newElement, previousElement) {\r\n previousElement.after(newElement);\r\n return [];\r\n }\r\n\r\n removeElement(wrapper) {\r\n wrapper.element.remove();\r\n wrapper.scope.$destroy();\r\n return [];\r\n }\r\n\r\n insertElementAnimated(newElement, previousElement) {\r\n if (!this.$animate) {\r\n return this.insertElement(newElement, previousElement);\r\n }\r\n\r\n if (this.isAngularVersionLessThen1_3) {\r\n const deferred = this.$q.defer();\r\n // no need for parent - previous element is never null\r\n this.$animate.enter(newElement, null, previousElement, () => deferred.resolve());\r\n\r\n return [deferred.promise];\r\n }\r\n\r\n // no need for parent - previous element is never null\r\n return [this.$animate.enter(newElement, null, previousElement)];\r\n }\r\n\r\n removeElementAnimated(wrapper) {\r\n if (!this.$animate) {\r\n return this.removeElement(wrapper);\r\n }\r\n\r\n if (this.isAngularVersionLessThen1_3) {\r\n const deferred = this.$q.defer();\r\n this.$animate.leave(wrapper.element, () => {\r\n wrapper.scope.$destroy();\r\n return deferred.resolve();\r\n });\r\n\r\n return [deferred.promise];\r\n }\r\n\r\n return [(this.$animate.leave(wrapper.element)).then(() => wrapper.scope.$destroy())];\r\n }\r\n}","export const OPERATIONS = {\r\n PREPEND: 'prepend',\r\n APPEND: 'append',\r\n INSERT: 'insert',\r\n REMOVE: 'remove',\r\n NONE: 'none'\r\n};\r\n","import { OPERATIONS } from './utils';\r\n\r\nexport default function ScrollBuffer(elementRoutines, bufferSize, startIndex) {\r\n const buffer = Object.create(Array.prototype);\r\n\r\n angular.extend(buffer, {\r\n size: bufferSize,\r\n\r\n reset(startIndex) {\r\n buffer.remove(0, buffer.length);\r\n buffer.eof = false;\r\n buffer.bof = false;\r\n buffer.first = startIndex;\r\n buffer.next = startIndex;\r\n buffer.minIndex = startIndex;\r\n buffer.maxIndex = startIndex;\r\n buffer.minIndexUser = null;\r\n buffer.maxIndexUser = null;\r\n },\r\n\r\n append(items) {\r\n items.forEach((item) => {\r\n ++buffer.next;\r\n buffer.insert(OPERATIONS.APPEND, item);\r\n });\r\n buffer.maxIndex = buffer.eof ? buffer.next - 1 : Math.max(buffer.next - 1, buffer.maxIndex);\r\n },\r\n\r\n prepend(items, immutableTop) {\r\n items.reverse().forEach((item) => {\r\n if (immutableTop) {\r\n ++buffer.next;\r\n }\r\n else {\r\n --buffer.first;\r\n }\r\n buffer.insert(OPERATIONS.PREPEND, item);\r\n });\r\n buffer.minIndex = buffer.bof ? buffer.minIndex = buffer.first : Math.min(buffer.first, buffer.minIndex);\r\n },\r\n\r\n /**\r\n * inserts wrapped element in the buffer\r\n * the first argument is either operation keyword (see below) or a number for operation 'insert'\r\n * for insert the number is the index for the buffer element the new one have to be inserted after\r\n * operations: 'append', 'prepend', 'insert', 'remove', 'none'\r\n */\r\n insert(operation, item, shiftTop) {\r\n const wrapper = {\r\n item: item\r\n };\r\n\r\n if (operation % 1 === 0) { // it is an insert\r\n wrapper.op = OPERATIONS.INSERT;\r\n buffer.splice(operation, 0, wrapper);\r\n if (shiftTop) {\r\n buffer.first--;\r\n }\r\n else {\r\n buffer.next++;\r\n }\r\n } else {\r\n wrapper.op = operation;\r\n switch (operation) {\r\n case OPERATIONS.APPEND:\r\n buffer.push(wrapper);\r\n break;\r\n case OPERATIONS.PREPEND:\r\n buffer.unshift(wrapper);\r\n break;\r\n }\r\n }\r\n },\r\n\r\n // removes elements from buffer\r\n remove(arg1, arg2) {\r\n if (angular.isNumber(arg1)) {\r\n // removes items from arg1 (including) through arg2 (excluding)\r\n for (let i = arg1; i < arg2; i++) {\r\n elementRoutines.removeElement(buffer[i]);\r\n }\r\n return buffer.splice(arg1, arg2 - arg1);\r\n }\r\n // removes single item (wrapper) from the buffer\r\n buffer.splice(buffer.indexOf(arg1), 1);\r\n if (arg1.shiftTop && buffer.first === this.getAbsMinIndex()) {\r\n this.incrementMinIndex();\r\n }\r\n else {\r\n this.decrementMaxIndex();\r\n }\r\n if (arg1.shiftTop) {\r\n buffer.first++;\r\n }\r\n else {\r\n buffer.next--;\r\n }\r\n if (!buffer.length) {\r\n buffer.minIndex = Math.min(buffer.maxIndex, buffer.minIndex);\r\n }\r\n\r\n return elementRoutines.removeElementAnimated(arg1);\r\n },\r\n\r\n incrementMinIndex() {\r\n if (buffer.minIndexUser !== null) {\r\n if (buffer.minIndex > buffer.minIndexUser) {\r\n buffer.minIndexUser++;\r\n return;\r\n }\r\n if (buffer.minIndex === buffer.minIndexUser) {\r\n buffer.minIndexUser++;\r\n }\r\n }\r\n buffer.minIndex++;\r\n },\r\n\r\n decrementMaxIndex() {\r\n if (buffer.maxIndexUser !== null && buffer.maxIndex <= buffer.maxIndexUser) {\r\n buffer.maxIndexUser--;\r\n }\r\n buffer.maxIndex--;\r\n },\r\n\r\n getAbsMinIndex() {\r\n if (buffer.minIndexUser !== null) {\r\n return Math.min(buffer.minIndexUser, buffer.minIndex);\r\n }\r\n return buffer.minIndex;\r\n },\r\n\r\n getAbsMaxIndex() {\r\n if (buffer.maxIndexUser !== null) {\r\n return Math.max(buffer.maxIndexUser, buffer.maxIndex);\r\n }\r\n return buffer.maxIndex;\r\n },\r\n\r\n effectiveHeight(elements) {\r\n if (!elements.length) {\r\n return 0;\r\n }\r\n let top = Number.MAX_VALUE;\r\n let bottom = Number.NEGATIVE_INFINITY;\r\n elements.forEach((wrapper) => {\r\n if (wrapper.element[0].offsetParent) {\r\n // element style is not display:none\r\n top = Math.min(top, wrapper.element.offset().top);\r\n bottom = Math.max(bottom, wrapper.element.offset().top + wrapper.element.outerHeight(true));\r\n }\r\n });\r\n return Math.max(0, bottom - top);\r\n },\r\n\r\n getItems() {\r\n return buffer.filter(item => item.op === OPERATIONS.NONE);\r\n },\r\n\r\n getFirstItem() {\r\n const list = buffer.getItems();\r\n if (!list.length) {\r\n return null;\r\n }\r\n return list[0].item;\r\n },\r\n\r\n getLastItem() {\r\n const list = buffer.getItems();\r\n if (!list.length) {\r\n return null;\r\n }\r\n return list[list.length - 1].item;\r\n }\r\n\r\n });\r\n\r\n buffer.reset(startIndex);\r\n\r\n return buffer;\r\n}\r\n","// Can't just extend the Array, due to Babel does not support built-in classes extending\r\n// This solution was taken from https://stackoverflow.com/questions/46897414/es6-class-extends-array-workaround-for-es5-babel-transpile\r\nclass CacheProto {\r\n add(item) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index === item.scope.$index) {\r\n this[i].height = item.element.outerHeight();\r\n return;\r\n }\r\n }\r\n this.push({\r\n index: item.scope.$index,\r\n height: item.element.outerHeight()\r\n });\r\n this.sort((a, b) => ((a.index < b.index) ? -1 : ((a.index > b.index) ? 1 : 0)));\r\n }\r\n\r\n remove(argument, _shiftTop) {\r\n const index = argument % 1 === 0 ? argument : argument.scope.$index;\r\n const shiftTop = argument % 1 === 0 ? _shiftTop : argument.shiftTop;\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index === index) {\r\n this.splice(i, 1);\r\n break;\r\n }\r\n }\r\n if (!shiftTop) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n if (this[i].index > index) {\r\n this[i].index--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n clear() {\r\n this.length = 0;\r\n }\r\n}\r\n\r\nfunction Cache() {\r\n const instance = [];\r\n instance.push.apply(instance, arguments);\r\n Object.setPrototypeOf(instance, Cache.prototype);\r\n return instance;\r\n}\r\nCache.prototype = Object.create(Array.prototype);\r\nObject.getOwnPropertyNames(CacheProto.prototype).forEach(methodName =>\r\n Cache.prototype[methodName] = CacheProto.prototype[methodName]\r\n);\r\n\r\nfunction generateElement(template) {\r\n if (template.nodeType !== Node.ELEMENT_NODE) {\r\n throw new Error('ui-scroll directive requires an Element node for templating the view');\r\n }\r\n let element;\r\n switch (template.tagName.toLowerCase()) {\r\n case 'dl':\r\n throw new Error(`ui-scroll directive does not support <${template.tagName}> as a repeating tag: ${template.outerHTML}`);\r\n case 'tr':\r\n let table = angular.element('');\r\n element = table.find('tr');\r\n break;\r\n case 'li':\r\n element = angular.element('');\r\n break;\r\n default:\r\n element = angular.element('');\r\n }\r\n return element;\r\n}\r\n\r\nclass Padding {\r\n constructor(template) {\r\n this.element = generateElement(template);\r\n this.cache = new Cache();\r\n }\r\n\r\n height() {\r\n return this.element.height.apply(this.element, arguments);\r\n }\r\n}\r\n\r\nexport default Padding;","import Padding from './padding';\r\n\r\nexport default function Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding) {\r\n let topPadding = null;\r\n let bottomPadding = null;\r\n const viewport = viewportController && viewportController.viewport ? viewportController.viewport : angular.element(window);\r\n const container = viewportController && viewportController.container ? viewportController.container : undefined;\r\n const scope = viewportController && viewportController.scope ? viewportController.scope : $rootScope;\r\n\r\n viewport.css({\r\n 'overflow-anchor': 'none',\r\n 'overflow-y': 'auto',\r\n 'display': 'block'\r\n });\r\n\r\n function bufferPadding() {\r\n return viewport.outerHeight() * padding; // some extra space to initiate preload\r\n }\r\n\r\n angular.extend(viewport, {\r\n getScope() {\r\n return scope;\r\n },\r\n\r\n createPaddingElements(template) {\r\n topPadding = new Padding(template);\r\n bottomPadding = new Padding(template);\r\n element.before(topPadding.element);\r\n element.after(bottomPadding.element);\r\n topPadding.height(0);\r\n bottomPadding.height(0);\r\n },\r\n\r\n applyContainerStyle() {\r\n if (!container) {\r\n return true;\r\n }\r\n if (container !== viewport) {\r\n viewport.css('height', window.getComputedStyle(container[0]).height);\r\n }\r\n return viewport.height() > 0;\r\n },\r\n\r\n bottomDataPos() {\r\n let scrollHeight = viewport[0].scrollHeight;\r\n scrollHeight = scrollHeight != null ? scrollHeight : viewport[0].document.documentElement.scrollHeight;\r\n return scrollHeight - bottomPadding.height();\r\n },\r\n\r\n topDataPos() {\r\n return topPadding.height();\r\n },\r\n\r\n bottomVisiblePos() {\r\n return viewport.scrollTop() + viewport.outerHeight();\r\n },\r\n\r\n topVisiblePos() {\r\n return viewport.scrollTop();\r\n },\r\n\r\n insertElement(e, sibling) {\r\n return elementRoutines.insertElement(e, sibling || topPadding.element);\r\n },\r\n\r\n insertElementAnimated(e, sibling) {\r\n return elementRoutines.insertElementAnimated(e, sibling || topPadding.element);\r\n },\r\n\r\n shouldLoadBottom() {\r\n return !buffer.eof && viewport.bottomDataPos() < viewport.bottomVisiblePos() + bufferPadding();\r\n },\r\n\r\n clipBottom() {\r\n // clip the invisible items off the bottom\r\n let overage = 0;\r\n let overageHeight = 0;\r\n let itemHeight = 0;\r\n let emptySpaceHeight = viewport.bottomDataPos() - viewport.bottomVisiblePos() - bufferPadding();\r\n\r\n for (let i = buffer.length - 1; i >= 0; i--) {\r\n itemHeight = buffer[i].element.outerHeight(true);\r\n if (overageHeight + itemHeight > emptySpaceHeight) {\r\n break;\r\n }\r\n bottomPadding.cache.add(buffer[i]);\r\n overageHeight += itemHeight;\r\n overage++;\r\n }\r\n\r\n if (overage > 0) {\r\n buffer.eof = false;\r\n buffer.remove(buffer.length - overage, buffer.length);\r\n buffer.next -= overage;\r\n viewport.adjustPaddings();\r\n }\r\n },\r\n\r\n shouldLoadTop() {\r\n return !buffer.bof && (viewport.topDataPos() > viewport.topVisiblePos() - bufferPadding());\r\n },\r\n\r\n clipTop() {\r\n // clip the invisible items off the top\r\n let overage = 0;\r\n let overageHeight = 0;\r\n let itemHeight = 0;\r\n let emptySpaceHeight = viewport.topVisiblePos() - viewport.topDataPos() - bufferPadding();\r\n\r\n for (let i = 0; i < buffer.length; i++) {\r\n itemHeight = buffer[i].element.outerHeight(true);\r\n if (overageHeight + itemHeight > emptySpaceHeight) {\r\n break;\r\n }\r\n topPadding.cache.add(buffer[i]);\r\n overageHeight += itemHeight;\r\n overage++;\r\n }\r\n\r\n if (overage > 0) {\r\n // we need to adjust top padding element before items are removed from top\r\n // to avoid strange behaviour of scroll bar during remove top items when we are at the very bottom\r\n topPadding.height(topPadding.height() + overageHeight);\r\n buffer.bof = false;\r\n buffer.remove(0, overage);\r\n buffer.first += overage;\r\n }\r\n },\r\n\r\n adjustPaddings() {\r\n if (!buffer.length) {\r\n return;\r\n }\r\n\r\n // precise heights calculation based on items that are in buffer or that were in buffer once\r\n const visibleItemsHeight = buffer.reduce((summ, item) => summ + item.element.outerHeight(true), 0);\r\n\r\n let topPaddingHeight = 0, topCount = 0;\r\n topPadding.cache.forEach(item => {\r\n if (item.index < buffer.first) {\r\n topPaddingHeight += item.height;\r\n topCount++;\r\n }\r\n });\r\n\r\n let bottomPaddingHeight = 0, bottomCount = 0;\r\n bottomPadding.cache.forEach(item => {\r\n if (item.index >= buffer.next) {\r\n bottomPaddingHeight += item.height;\r\n bottomCount++;\r\n }\r\n });\r\n\r\n const totalHeight = visibleItemsHeight + topPaddingHeight + bottomPaddingHeight;\r\n const averageItemHeight = totalHeight / (topCount + bottomCount + buffer.length);\r\n\r\n // average heights calculation, items that have never been reached\r\n let adjustTopPadding = buffer.minIndexUser !== null && buffer.minIndex > buffer.minIndexUser;\r\n let adjustBottomPadding = buffer.maxIndexUser !== null && buffer.maxIndex < buffer.maxIndexUser;\r\n let topPaddingHeightAdd = adjustTopPadding ? (buffer.minIndex - buffer.minIndexUser) * averageItemHeight : 0;\r\n let bottomPaddingHeightAdd = adjustBottomPadding ? (buffer.maxIndexUser - buffer.maxIndex) * averageItemHeight : 0;\r\n\r\n // paddings combine adjustment\r\n topPadding.height(topPaddingHeight + topPaddingHeightAdd);\r\n bottomPadding.height(bottomPaddingHeight + bottomPaddingHeightAdd);\r\n },\r\n\r\n onAfterMinIndexSet(topPaddingHeightOld) {\r\n // additional scrollTop adjustment in case of datasource.minIndex external set\r\n if (buffer.minIndexUser !== null && buffer.minIndex > buffer.minIndexUser) {\r\n let diff = topPadding.height() - topPaddingHeightOld;\r\n viewport.scrollTop(viewport.scrollTop() + diff);\r\n while((diff -= viewport.scrollTop()) > 0) {\r\n bottomPadding.height(bottomPadding.height() + diff);\r\n viewport.scrollTop(viewport.scrollTop() + diff);\r\n }\r\n }\r\n },\r\n\r\n onAfterPrepend(updates) {\r\n if (!updates.prepended.length) {\r\n return;\r\n }\r\n const height = buffer.effectiveHeight(updates.prepended);\r\n const paddingHeight = topPadding.height() - height;\r\n if (paddingHeight >= 0) {\r\n topPadding.height(paddingHeight);\r\n return;\r\n }\r\n const position = viewport.scrollTop();\r\n const newPosition = position - paddingHeight;\r\n viewport.synthetic = { previous: position, next: newPosition };\r\n topPadding.height(0);\r\n viewport.scrollTop(newPosition);\r\n },\r\n\r\n resetTopPadding() {\r\n topPadding.height(0);\r\n topPadding.cache.clear();\r\n },\r\n\r\n resetBottomPadding() {\r\n bottomPadding.height(0);\r\n bottomPadding.cache.clear();\r\n },\r\n\r\n removeCacheItem(item, shiftTop) {\r\n topPadding.cache.remove(item, shiftTop);\r\n bottomPadding.cache.remove(item, shiftTop);\r\n },\r\n\r\n removeItem(item) {\r\n this.removeCacheItem(item);\r\n return buffer.remove(item);\r\n }\r\n });\r\n\r\n return viewport;\r\n}\r\n","import { OPERATIONS } from './utils';\r\n\r\nclass Adapter {\r\n\r\n constructor($scope, $parse, $attr, viewport, buffer, doAdjust, reload) {\r\n this.$parse = $parse;\r\n this.$attr = $attr;\r\n this.viewport = viewport;\r\n this.buffer = buffer;\r\n\r\n this.doAdjust = doAdjust;\r\n this.reload = reload;\r\n\r\n this.isLoading = false;\r\n this.disabled = false;\r\n\r\n const viewportScope = viewport.getScope();\r\n this.startScope = viewportScope.$parent ? viewportScope : $scope;\r\n\r\n this.publicContext = {};\r\n this.assignAdapter($attr.adapter);\r\n this.generatePublicContext();\r\n }\r\n\r\n assignAdapter(adapterAttr) {\r\n if (!adapterAttr || !(adapterAttr = adapterAttr.replace(/^\\s+|\\s+$/gm, ''))) {\r\n return;\r\n }\r\n let adapterOnScope;\r\n\r\n try {\r\n this.$parse(adapterAttr).assign(this.startScope, {});\r\n adapterOnScope = this.$parse(adapterAttr)(this.startScope);\r\n }\r\n catch (error) {\r\n error.message = `Angular ui-scroll Adapter assignment exception.\\n` +\r\n `Can't parse \"${adapterAttr}\" expression.\\n` +\r\n error.message;\r\n throw error;\r\n }\r\n\r\n angular.extend(adapterOnScope, this.publicContext);\r\n this.publicContext = adapterOnScope;\r\n }\r\n\r\n generatePublicContext() {\r\n // these methods will be accessible out of ui-scroll via user defined adapter\r\n const publicMethods = ['reload', 'applyUpdates', 'append', 'prepend', 'isBOF', 'isEOF', 'isEmpty'];\r\n for (let i = publicMethods.length - 1; i >= 0; i--) {\r\n this.publicContext[publicMethods[i]] = this[publicMethods[i]].bind(this);\r\n }\r\n\r\n // these read-only props will be accessible out of ui-scroll via user defined adapter\r\n const publicProps = ['isLoading', 'topVisible', 'topVisibleElement', 'topVisibleScope', 'bottomVisible', 'bottomVisibleElement', 'bottomVisibleScope'];\r\n for (let i = publicProps.length - 1; i >= 0; i--) {\r\n let property, attr = this.$attr[publicProps[i]];\r\n Object.defineProperty(this, publicProps[i], {\r\n get: () => property,\r\n set: (value) => {\r\n property = value;\r\n this.publicContext[publicProps[i]] = value;\r\n if (attr) {\r\n this.$parse(attr).assign(this.startScope, value);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // read-only immediately calculated public properties\r\n const publicPropsImmediate = ['bufferFirst', 'bufferLast', 'bufferLength'];\r\n for (let i = publicPropsImmediate.length - 1; i >= 0; i--) {\r\n Object.defineProperty(this.publicContext, publicPropsImmediate[i], {\r\n get: () => this[publicPropsImmediate[i]]\r\n });\r\n }\r\n\r\n // non-read-only public property\r\n Object.defineProperty(this.publicContext, 'disabled', {\r\n get: () => this.disabled,\r\n set: (value) => (!(this.disabled = value)) ? this.doAdjust() : null\r\n });\r\n }\r\n\r\n loading(value) {\r\n this.isLoading = value;\r\n }\r\n\r\n isBOF() {\r\n return this.buffer.bof;\r\n }\r\n\r\n isEOF() {\r\n return this.buffer.eof;\r\n }\r\n\r\n isEmpty() {\r\n return !this.buffer.length;\r\n }\r\n\r\n get bufferLength() {\r\n return this.buffer.getItems().length;\r\n }\r\n\r\n get bufferFirst() {\r\n return this.buffer.getFirstItem();\r\n }\r\n\r\n get bufferLast() {\r\n return this.buffer.getLastItem();\r\n }\r\n\r\n append(newItems) {\r\n this.buffer.append(newItems);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n prepend(newItems, options = {}) {\r\n this.buffer.prepend(newItems, options.immutableTop);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n applyUpdates(arg1, arg2, arg3) {\r\n if (typeof arg1 === 'function') {\r\n this.applyUpdatesFunc(arg1, arg2);\r\n } else {\r\n this.applyUpdatesIndex(arg1, arg2, arg3);\r\n }\r\n this.doAdjust();\r\n }\r\n\r\n applyUpdatesFunc(cb, options = {}) {\r\n this.buffer.slice(0).forEach((wrapper) => {\r\n // we need to do it on the buffer clone, because buffer content\r\n // may change as we iterate through\r\n this.applyUpdate(wrapper, cb(wrapper.item, wrapper.scope, wrapper.element), options);\r\n });\r\n }\r\n\r\n applyUpdatesIndex(index, newItems, options = {}) {\r\n if (index % 1 !== 0) {\r\n throw new Error('applyUpdates - ' + index + ' is not a valid index (should be an integer)');\r\n }\r\n const _index = index - this.buffer.first;\r\n\r\n // apply updates only within buffer\r\n if (_index >= 0 && _index < this.buffer.length) {\r\n this.applyUpdate(this.buffer[_index], newItems, options);\r\n }\r\n // out-of-buffer case: deletion may affect Paddings\r\n else if(index >= this.buffer.getAbsMinIndex() && index <= this.buffer.getAbsMaxIndex()) {\r\n if(angular.isArray(newItems) && !newItems.length) {\r\n this.viewport.removeCacheItem(index, !options.immutableTop && index === this.buffer.minIndex);\r\n if (!options.immutableTop && index === this.buffer.getAbsMinIndex()) {\r\n this.buffer.incrementMinIndex();\r\n }\r\n else {\r\n this.buffer.decrementMaxIndex();\r\n }\r\n }\r\n }\r\n }\r\n\r\n applyUpdate(wrapper, newItems, options = {}) {\r\n if (!angular.isArray(newItems)) {\r\n return;\r\n }\r\n let position = this.buffer.indexOf(wrapper);\r\n if (!newItems.reverse().some(newItem => newItem === wrapper.item)) {\r\n wrapper.op = OPERATIONS.REMOVE;\r\n // try to catch \"first\" edge case on remove\r\n if (!options.immutableTop && !newItems.length) {\r\n // this is the first item, or the previous one's part of the \"shift-top\" group\r\n if (\r\n (position === 0 && this.buffer.bof) ||\r\n (position !== 0 && this.buffer[position - 1].shiftTop)\r\n ) {\r\n wrapper.shiftTop = true;\r\n }\r\n }\r\n }\r\n newItems.forEach((newItem) => {\r\n if (newItem === wrapper.item) {\r\n position--;\r\n } else {\r\n // 3 parameter (shiftTop) is to catch \"first\" edge case on insert\r\n this.buffer.insert(position + 1, newItem, !options.immutableTop && position === -1);\r\n }\r\n });\r\n }\r\n\r\n calculateProperties() {\r\n let rowTop = null, topHeight = 0;\r\n let topDone = false, bottomDone = false;\r\n const length = this.buffer.length;\r\n\r\n for (let i = 0; i < length; i++) {\r\n const item = this.buffer[i];\r\n const itemTop = item.element.offset().top;\r\n\r\n if (rowTop !== itemTop) { // a new row condition\r\n const itemHeight = item.element.outerHeight(true);\r\n const top = this.viewport.topDataPos() + topHeight + itemHeight;\r\n\r\n if (!topDone && top > this.viewport.topVisiblePos()) {\r\n topDone = true;\r\n this['topVisible'] = item.item;\r\n this['topVisibleElement'] = item.element;\r\n this['topVisibleScope'] = item.scope;\r\n }\r\n if (!bottomDone && (top >= this.viewport.bottomVisiblePos() || (i === length - 1 && this.isEOF()))) {\r\n bottomDone = true;\r\n this['bottomVisible'] = item.item;\r\n this['bottomVisibleElement'] = item.element;\r\n this['bottomVisibleScope'] = item.scope;\r\n }\r\n topHeight += itemHeight;\r\n }\r\n rowTop = itemTop;\r\n\r\n if (topDone && bottomDone) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default Adapter;\r\n","import JQLiteExtras from './modules/jqLiteExtras';\r\nimport ElementRoutines from './modules/elementRoutines.js';\r\nimport ScrollBuffer from './modules/buffer.js';\r\nimport Viewport from './modules/viewport.js';\r\nimport Adapter from './modules/adapter.js';\r\nimport { OPERATIONS } from './modules/utils';\r\n\r\nangular.module('ui.scroll', [])\r\n\r\n .constant('JQLiteExtras', JQLiteExtras)\r\n .run(['JQLiteExtras', (JQLiteExtras) => {\r\n const elt = angular.element;\r\n !(window.jQuery && elt.fn && elt.fn.jquery) ? (new JQLiteExtras()).registerFor(elt) : null;\r\n ElementRoutines.addCSSRules();\r\n }])\r\n\r\n .directive('uiScrollViewport', function () {\r\n return {\r\n restrict: 'A',\r\n controller: [\r\n '$scope',\r\n '$element',\r\n function (scope, element) {\r\n this.container = element;\r\n this.viewport = element;\r\n this.scope = scope;\r\n\r\n angular.forEach(element.children(), child => {\r\n if (child.tagName.toLowerCase() === 'tbody') {\r\n this.viewport = angular.element(child);\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n ]\r\n };\r\n })\r\n\r\n .directive('uiScroll', [\r\n '$log',\r\n '$injector',\r\n '$rootScope',\r\n '$timeout',\r\n '$interval',\r\n '$q',\r\n '$parse',\r\n function (console, $injector, $rootScope, $timeout, $interval, $q, $parse) {\r\n\r\n return {\r\n require: ['?^uiScrollViewport'],\r\n restrict: 'A',\r\n transclude: 'element',\r\n priority: 1000,\r\n terminal: true,\r\n link: link\r\n };\r\n\r\n function link($scope, element, $attr, controllers, linker) {\r\n const match = $attr.uiScroll.match(/^\\s*(\\w+)\\s+in\\s+([(\\w|\\$)\\.]+)\\s*$/);\r\n if (!match) {\r\n throw new Error('Expected uiScroll in form of \\'_item_ in _datasource_\\' but got \\'' + $attr.uiScroll + '\\'');\r\n }\r\n\r\n function parseNumber(value, defaultValue, isFloat) {\r\n if (!isFloat) {\r\n value = value === null ? defaultValue : Math.floor(value);\r\n }\r\n return isNaN(value) ? defaultValue : value;\r\n }\r\n\r\n function parseNumericAttr(value, defaultValue, isFloat) {\r\n const result = $parse(value)($scope);\r\n return parseNumber(result, defaultValue, isFloat);\r\n }\r\n\r\n function parseBooleanAttr(value, defaultValue) {\r\n const result = $parse(value)($scope);\r\n return typeof result === 'boolean' ? result : defaultValue;\r\n }\r\n\r\n const BUFFER_MIN = 3;\r\n const BUFFER_DEFAULT = 10;\r\n const PADDING_MIN = 0.3;\r\n const PADDING_DEFAULT = 0.5;\r\n const HANDLE_INERTIA_DEFAULT = true;\r\n const START_INDEX_DEFAULT = 1;\r\n const MAX_VIEWPORT_DELAY = 500;\r\n const VIEWPORT_POLLING_INTERVAL = 50;\r\n\r\n let datasource = null;\r\n const itemName = match[1];\r\n const datasourceName = match[2];\r\n const viewportController = controllers[0];\r\n const bufferSize = Math.max(BUFFER_MIN, parseNumericAttr($attr.bufferSize, BUFFER_DEFAULT));\r\n const padding = Math.max(PADDING_MIN, parseNumericAttr($attr.padding, PADDING_DEFAULT, true));\r\n const handleInertia = parseBooleanAttr($attr.handleInertia, HANDLE_INERTIA_DEFAULT);\r\n let startIndex = parseNumericAttr($attr.startIndex, START_INDEX_DEFAULT);\r\n let ridActual = 0; // current data revision id\r\n let pending = [];\r\n\r\n const elementRoutines = new ElementRoutines($injector, $q);\r\n const buffer = new ScrollBuffer(elementRoutines, bufferSize, startIndex);\r\n const viewport = new Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding);\r\n const adapter = new Adapter($scope, $parse, $attr, viewport, buffer, doAdjust, reload);\r\n\r\n if (viewportController) {\r\n viewportController.adapter = adapter;\r\n }\r\n\r\n const isDatasourceValid = () =>\r\n Object.prototype.toString.call(datasource) === '[object Object]' && typeof datasource.get === 'function';\r\n\r\n datasource = $parse(datasourceName)($scope); // try to get datasource on scope\r\n if (!isDatasourceValid()) {\r\n datasource = $injector.get(datasourceName); // try to inject datasource as service\r\n if (!isDatasourceValid()) {\r\n throw new Error(datasourceName + ' is not a valid datasource');\r\n }\r\n }\r\n\r\n let onRenderHandlers = [];\r\n function onRenderHandlersRunner() {\r\n onRenderHandlers.forEach(handler => handler.run());\r\n onRenderHandlers = [];\r\n }\r\n function persistDatasourceIndex(datasource, propName) {\r\n let getter;\r\n // need to postpone min/maxIndexUser processing if the view is empty\r\n if (angular.isNumber(datasource[propName])) {\r\n getter = datasource[propName];\r\n if (angular.isNumber(getter)) {\r\n onRenderHandlers = onRenderHandlers.filter(handler => handler.id !== propName);\r\n onRenderHandlers.push({\r\n id: propName,\r\n run: () => datasource[propName] = getter\r\n });\r\n }\r\n }\r\n }\r\n\r\n function defineDatasourceIndex(datasource, propName, propUserName) {\r\n const descriptor = Object.getOwnPropertyDescriptor(datasource, propName);\r\n if (descriptor && (descriptor.set || descriptor.get)) {\r\n return;\r\n }\r\n let getter;\r\n persistDatasourceIndex(datasource, propName);\r\n Object.defineProperty(datasource, propName, {\r\n set: (value) => {\r\n getter = value;\r\n if (pending.length && !buffer.length) {\r\n persistDatasourceIndex(datasource, propName);\r\n return;\r\n }\r\n buffer[propUserName] = value;\r\n const topPaddingHeightOld = viewport.topDataPos();\r\n viewport.adjustPaddings();\r\n if (propName === 'minIndex') {\r\n viewport.onAfterMinIndexSet(topPaddingHeightOld);\r\n }\r\n },\r\n get: () => getter\r\n });\r\n }\r\n\r\n defineDatasourceIndex(datasource, 'minIndex', 'minIndexUser');\r\n defineDatasourceIndex(datasource, 'maxIndex', 'maxIndexUser');\r\n\r\n const fetchNext = (datasource.get.length !== 2) ?\r\n (success) => datasource.get(buffer.next, bufferSize, success) :\r\n (success) => {\r\n datasource.get({\r\n index: buffer.next,\r\n append: buffer.length ? buffer[buffer.length - 1].item : void 0,\r\n count: bufferSize\r\n }, success);\r\n };\r\n\r\n const fetchPrevious = (datasource.get.length !== 2) ?\r\n (success) => datasource.get(buffer.first - bufferSize, bufferSize, success) :\r\n (success) => {\r\n datasource.get({\r\n index: buffer.first - bufferSize,\r\n prepend: buffer.length ? buffer[0].item : void 0,\r\n count: bufferSize\r\n }, success);\r\n };\r\n\r\n const initialize = () => {\r\n let tryCount = 0;\r\n if (!viewport.applyContainerStyle()) {\r\n const timer = $interval(() => {\r\n tryCount++;\r\n if (viewport.applyContainerStyle()) {\r\n $interval.cancel(timer);\r\n doAdjust();\r\n }\r\n if (tryCount * VIEWPORT_POLLING_INTERVAL >= MAX_VIEWPORT_DELAY) {\r\n $interval.cancel(timer);\r\n throw Error(`ui-scroll directive requires a viewport with non-zero height in ${MAX_VIEWPORT_DELAY}ms`);\r\n }\r\n }, VIEWPORT_POLLING_INTERVAL);\r\n }\r\n else {\r\n doAdjust();\r\n }\r\n };\r\n\r\n /**\r\n * Build padding elements\r\n *\r\n * Calling linker is the only way I found to get access to the tag name of the template\r\n * to prevent the directive scope from pollution a new scope is created and destroyed\r\n * right after the builder creation is completed\r\n */\r\n linker((clone, scope) => {\r\n viewport.createPaddingElements(clone[0]);\r\n // we do not include the clone in the DOM. It means that the nested directives will not\r\n // be able to reach the parent directives, but in this case it is intentional because we\r\n // created the clone to access the template tag name\r\n scope.$destroy();\r\n clone.remove();\r\n });\r\n\r\n $scope.$on('$destroy', () => {\r\n unbindEvents();\r\n viewport.off('mousewheel', wheelHandler);\r\n });\r\n\r\n viewport.on('mousewheel', wheelHandler);\r\n\r\n initialize();\r\n\r\n /* Private function definitions */\r\n\r\n function isInvalid(rid) {\r\n return (rid && rid !== ridActual) || $scope.$$destroyed;\r\n }\r\n\r\n function bindEvents() {\r\n viewport.on('resize', resizeAndScrollHandler);\r\n viewport.on('scroll', resizeAndScrollHandler);\r\n }\r\n\r\n function unbindEvents() {\r\n viewport.off('resize', resizeAndScrollHandler);\r\n viewport.off('scroll', resizeAndScrollHandler);\r\n }\r\n\r\n function reload() {\r\n unbindEvents();\r\n viewport.resetTopPadding();\r\n viewport.resetBottomPadding();\r\n if (arguments.length) {\r\n startIndex = parseNumber(arguments[0], START_INDEX_DEFAULT, false);\r\n }\r\n buffer.reset(startIndex);\r\n persistDatasourceIndex(datasource, 'minIndex');\r\n persistDatasourceIndex(datasource, 'maxIndex');\r\n doAdjust();\r\n }\r\n\r\n function isElementVisible(wrapper) {\r\n return wrapper.element.height() && wrapper.element[0].offsetParent;\r\n }\r\n\r\n function visibilityWatcher(wrapper) {\r\n if (isElementVisible(wrapper)) {\r\n buffer.forEach((item) => {\r\n if (typeof item.unregisterVisibilityWatcher === 'function') {\r\n item.unregisterVisibilityWatcher();\r\n delete item.unregisterVisibilityWatcher;\r\n }\r\n });\r\n if (!pending.length) {\r\n $timeout(() => doAdjust());\r\n }\r\n }\r\n }\r\n\r\n function insertWrapperContent(wrapper, insertAfter) {\r\n createElement(wrapper, insertAfter, viewport.insertElement);\r\n if (!isElementVisible(wrapper)) {\r\n wrapper.unregisterVisibilityWatcher = wrapper.scope.$watch(() => visibilityWatcher(wrapper));\r\n }\r\n elementRoutines.hideElement(wrapper); // hide inserted elements before data binding\r\n }\r\n\r\n function createElement(wrapper, insertAfter, insertElement) {\r\n let promises = null;\r\n const sibling = (insertAfter > 0) ? buffer[insertAfter - 1].element : undefined;\r\n linker((clone, scope) => {\r\n promises = insertElement(clone, sibling);\r\n wrapper.element = clone;\r\n wrapper.scope = scope;\r\n scope[itemName] = wrapper.item;\r\n });\r\n // ui-scroll-grid apply\r\n if (adapter.transform) {\r\n const tdInitializer = wrapper.scope.uiScrollTdInitializer;\r\n if (tdInitializer && tdInitializer.linking) {\r\n adapter.transform(wrapper.scope, wrapper.element);\r\n } else {\r\n wrapper.scope.uiScrollTdInitializer = {\r\n onLink: () => adapter.transform(wrapper.scope, wrapper.element),\r\n scope: wrapper.scope\r\n };\r\n }\r\n }\r\n return promises;\r\n }\r\n\r\n function updateDOM() {\r\n let promises = [];\r\n const toBePrepended = [];\r\n const toBeRemoved = [];\r\n const inserted = [];\r\n\r\n buffer.forEach((wrapper, i) => {\r\n switch (wrapper.op) {\r\n case OPERATIONS.PREPEND:\r\n toBePrepended.unshift(wrapper);\r\n break;\r\n case OPERATIONS.APPEND:\r\n insertWrapperContent(wrapper, i);\r\n wrapper.op = OPERATIONS.NONE;\r\n inserted.push(wrapper);\r\n break;\r\n case OPERATIONS.INSERT:\r\n promises = promises.concat(createElement(wrapper, i, viewport.insertElementAnimated));\r\n wrapper.op = OPERATIONS.NONE;\r\n inserted.push(wrapper);\r\n break;\r\n case OPERATIONS.REMOVE:\r\n toBeRemoved.push(wrapper);\r\n }\r\n });\r\n\r\n toBeRemoved.forEach((wrapper) => promises = promises.concat(viewport.removeItem(wrapper)));\r\n\r\n if (toBePrepended.length)\r\n toBePrepended.forEach((wrapper) => {\r\n insertWrapperContent(wrapper);\r\n wrapper.op = OPERATIONS.NONE;\r\n });\r\n\r\n buffer.forEach((item, i) => item.scope.$index = buffer.first + i);\r\n\r\n return {\r\n prepended: toBePrepended,\r\n removed: toBeRemoved,\r\n inserted: inserted,\r\n animated: promises\r\n };\r\n\r\n }\r\n\r\n function updatePaddings(rid, updates) {\r\n // schedule another doAdjust after animation completion\r\n if (updates.animated.length) {\r\n $q.all(updates.animated).then(() => {\r\n viewport.adjustPaddings();\r\n doAdjust(rid);\r\n });\r\n } else {\r\n viewport.adjustPaddings();\r\n }\r\n }\r\n\r\n function enqueueFetch(rid, updates) {\r\n if (viewport.shouldLoadBottom()) {\r\n if (!updates || buffer.effectiveHeight(updates.inserted) > 0) {\r\n // this means that at least one item appended in the last batch has height > 0\r\n if (pending.push(true) === 1) {\r\n adapter.loading(true);\r\n fetch(rid);\r\n }\r\n }\r\n } else if (viewport.shouldLoadTop()) {\r\n if ((!updates || buffer.effectiveHeight(updates.prepended) > 0) || pending[0]) {\r\n // this means that at least one item appended in the last batch has height > 0\r\n // pending[0] = true means that previous fetch was appending. We need to force at least one prepend\r\n // BTW there will always be at least 1 element in the pending array because bottom is fetched first\r\n if (pending.push(false) === 1) {\r\n adapter.loading(true);\r\n fetch(rid);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function processUpdates() {\r\n const updates = updateDOM();\r\n\r\n // We need the item bindings to be processed before we can do adjustments\r\n !$scope.$$phase && !$rootScope.$$phase && $scope.$digest();\r\n\r\n updates.inserted.forEach(w => elementRoutines.showElement(w));\r\n updates.prepended.forEach(w => elementRoutines.showElement(w));\r\n return updates;\r\n }\r\n\r\n function doAdjust(rid) {\r\n if (!rid) { // dismiss pending requests\r\n pending = [];\r\n rid = ++ridActual;\r\n }\r\n\r\n const updates = processUpdates();\r\n\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n updatePaddings(rid, updates);\r\n enqueueFetch(rid);\r\n\r\n if (!pending.length) {\r\n adapter.calculateProperties();\r\n }\r\n }\r\n\r\n function doAdjustAfterFetch(rid) {\r\n const updates = processUpdates();\r\n\r\n viewport.onAfterPrepend(updates);\r\n\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n updatePaddings(rid, updates);\r\n onRenderHandlersRunner();\r\n enqueueFetch(rid, updates);\r\n pending.shift();\r\n\r\n if (pending.length)\r\n fetch(rid);\r\n else {\r\n adapter.loading(false);\r\n bindEvents();\r\n adapter.calculateProperties();\r\n }\r\n }\r\n\r\n function fetch(rid) {\r\n if (pending[0]) {// scrolling down\r\n if (buffer.length && !viewport.shouldLoadBottom()) {\r\n doAdjustAfterFetch(rid);\r\n } else {\r\n fetchNext((result) => {\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n if (result.length < bufferSize) {\r\n buffer.eof = true;\r\n }\r\n\r\n if (result.length > 0) {\r\n viewport.clipTop();\r\n buffer.append(result);\r\n }\r\n\r\n doAdjustAfterFetch(rid);\r\n });\r\n }\r\n } else { // scrolling up\r\n if (buffer.length && !viewport.shouldLoadTop()) {\r\n doAdjustAfterFetch(rid);\r\n } else {\r\n fetchPrevious((result) => {\r\n if (isInvalid(rid)) {\r\n return;\r\n }\r\n\r\n if (result.length < bufferSize) {\r\n buffer.bof = true;\r\n // log 'bof is reached'\r\n }\r\n\r\n if (result.length > 0) {\r\n if (buffer.length) {\r\n viewport.clipBottom();\r\n }\r\n buffer.prepend(result);\r\n }\r\n\r\n doAdjustAfterFetch(rid);\r\n });\r\n }\r\n }\r\n }\r\n\r\n function fixInertia() {\r\n if (!viewport.synthetic) {\r\n return;\r\n }\r\n const oldPosition = viewport.synthetic.previous;\r\n const newPosition = viewport.synthetic.next;\r\n if (viewport.scrollTop() !== newPosition) {\r\n requestAnimationFrame(() => {\r\n const position = viewport.scrollTop();\r\n const diff = oldPosition - position;\r\n if (diff > 0) { // inertia over synthetic\r\n viewport.scrollTop(newPosition - diff);\r\n } else {\r\n viewport.scrollTop(newPosition);\r\n }\r\n viewport.synthetic = null;\r\n });\r\n return true;\r\n }\r\n viewport.synthetic = null;\r\n }\r\n\r\n function resizeAndScrollHandler() {\r\n if (handleInertia && fixInertia()) {\r\n return;\r\n }\r\n if (!$rootScope.$$phase && !adapter.isLoading && !adapter.disabled) {\r\n\r\n enqueueFetch(ridActual);\r\n\r\n if (pending.length) {\r\n unbindEvents();\r\n } else {\r\n adapter.calculateProperties();\r\n !$scope.$$phase && $scope.$digest();\r\n }\r\n }\r\n }\r\n\r\n function wheelHandler(event) {\r\n if (!adapter.disabled) {\r\n const scrollTop = viewport[0].scrollTop;\r\n const yMax = viewport[0].scrollHeight - viewport[0].clientHeight;\r\n\r\n if ((scrollTop === 0 && !buffer.bof) || (scrollTop === yMax && !buffer.eof)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n ]);\r\n"],"names":["JQLiteExtras","_classCallCheck","key","value","element","convertToPx","css","getStyle","isWindow","scrollTo","self","direction","elem","_top$left$direction","_slicedToArray","top","left","method","prop","preserve","isValueDefined","call","document","documentElement","getWidthHeight","measure","result","measurements","base","borderA","borderB","computedMarginA","computedMarginB","computedStyle","dirA","dirB","paddingA","paddingB","height","width","padding","border","margin","_width$height$measure","offsetWidth","offsetHeight","getMeasurements","outer","outerfull","style","parseFloat","angular","prototype","name","this","nodeType","obj","location","alert","setInterval","window","getComputedStyle","currentStyle","rs","rsLeft","RegExp","source","test","runtimeStyle","pixelLeft","forEach","before","newElem","children","i","j","parent","ref","contents","prepend","length","after","Error","outerHTML","isNumber","outerHeight","option","outerWidth","offset","docElem","win","box","doc","ownerDocument","arguments","undefined","getBoundingClientRect","defaultView","parentWindow","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","hideClassToken","ElementRoutines","$injector","$q","$animate","has","get","isAngularVersionLessThen1_3","version","major","minor","index","selector","rules","sheet","styleSheets","cssRules","err","insertRule","addRule","wrapper","addClass","removeClass","newElement","previousElement","remove","scope","$destroy","insertElement","deferred","defer","enter","resolve","promise","removeElement","leave","then","OPERATIONS","PREPEND","APPEND","INSERT","REMOVE","NONE","ScrollBuffer","elementRoutines","bufferSize","startIndex","buffer","Object","create","Array","extend","size","reset","eof","bof","first","next","minIndex","maxIndex","minIndexUser","maxIndexUser","append","items","item","insert","Math","max","immutableTop","reverse","min","operation","shiftTop","op","splice","push","unshift","arg1","arg2","indexOf","getAbsMinIndex","incrementMinIndex","decrementMaxIndex","removeElementAnimated","getAbsMaxIndex","effectiveHeight","elements","Number","MAX_VALUE","bottom","NEGATIVE_INFINITY","offsetParent","getItems","filter","getFirstItem","list","getLastItem","CacheProto","_createClass","$index","sort","a","b","argument","_shiftTop","Cache","instance","apply","setPrototypeOf","getOwnPropertyNames","methodName","Padding","template","Node","ELEMENT_NODE","tagName","toLowerCase","concat","find","generateElement","cache","Viewport","viewportController","$rootScope","topPadding","bottomPadding","viewport","container","bufferPadding","getScope","createPaddingElements","applyContainerStyle","bottomDataPos","scrollHeight","topDataPos","bottomVisiblePos","topVisiblePos","e","sibling","insertElementAnimated","shouldLoadBottom","clipBottom","overage","overageHeight","itemHeight","emptySpaceHeight","add","adjustPaddings","shouldLoadTop","clipTop","visibleItemsHeight","reduce","summ","topPaddingHeight","topCount","bottomPaddingHeight","bottomCount","averageItemHeight","adjustTopPadding","adjustBottomPadding","topPaddingHeightAdd","bottomPaddingHeightAdd","onAfterMinIndexSet","topPaddingHeightOld","diff","onAfterPrepend","updates","prepended","paddingHeight","position","newPosition","synthetic","previous","resetTopPadding","clear","resetBottomPadding","removeCacheItem","removeItem","Adapter","$scope","$parse","$attr","doAdjust","reload","isLoading","disabled","viewportScope","startScope","$parent","publicContext","assignAdapter","adapter","generatePublicContext","adapterAttr","replace","adapterOnScope","assign","error","message","_this","publicMethods","bind","publicProps","_loop","_i","property","attr","defineProperty","set","publicPropsImmediate","_loop2","_i2","newItems","options","arg3","applyUpdatesFunc","applyUpdatesIndex","cb","_this2","slice","applyUpdate","_index","isArray","_this3","some","newItem","rowTop","topHeight","topDone","bottomDone","itemTop","isEOF","module","constant","run","elt","jQuery","fn","jquery","registerFor","addCSSRules","directive","restrict","controller","child","console","$timeout","$interval","require","transclude","priority","terminal","link","controllers","linker","match","uiScroll","parseNumber","defaultValue","isFloat","floor","isNaN","parseNumericAttr","datasource","itemName","datasourceName","handleInertia","ridActual","pending","unbindEvents","persistDatasourceIndex","isDatasourceValid","toString","onRenderHandlers","propName","getter","handler","id","defineDatasourceIndex","propUserName","descriptor","getOwnPropertyDescriptor","fetchNext","success","count","fetchPrevious","isInvalid","rid","$$destroyed","off","resizeAndScrollHandler","isElementVisible","insertWrapperContent","insertAfter","createElement","unregisterVisibilityWatcher","$watch","visibilityWatcher","hideElement","promises","clone","transform","tdInitializer","uiScrollTdInitializer","linking","onLink","updatePaddings","animated","all","enqueueFetch","inserted","loading","fetch","processUpdates","toBePrepended","toBeRemoved","removed","$$phase","$digest","w","showElement","calculateProperties","doAdjustAfterFetch","shift","on","oldPosition","requestAnimationFrame","fixInertia","wheelHandler","event","yMax","clientHeight","preventDefault","$on","tryCount","timer","cancel","initialize"],"sourceRoot":""}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index a3ca3f0..919b501 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "angular-ui-scroll",
- "version": "1.9.0",
+ "version": "1.9.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "angular-ui-scroll",
- "version": "1.9.0",
+ "version": "1.9.1",
"license": "MIT",
"devDependencies": {
"@babel/core": "^7.21.4",
@@ -8511,4 +8511,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 966ad9a..1fe64f4 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "angular-ui-scroll",
"description": "AngularJS virtual scrolling module",
- "version": "1.9.0",
+ "version": "1.9.1",
"src": "./src/",
"public": "./dist/",
"main": "./dist/ui-scroll.js",
diff --git a/webpack.config.js b/webpack.config.js
index 77befc4..9a4ca43 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -135,6 +135,8 @@ module.exports = {
mode: ENV,
+ target: ['web', 'es5'],
+
optimization: configEnv.optimization,
module: {