{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/modules/jqLiteExtras.js","webpack:///./src/modules/elementRoutines.js","webpack:///./src/modules/buffer.js","webpack:///./src/modules/padding.js","webpack:///./src/modules/viewport.js","webpack:///./src/modules/adapter.js","webpack:///./src/ui-scroll.js"],"names":["JQLiteExtras","element","convertToPx","css","getStyle","isWindow","angular","prototype","name","value","self","elem","nodeType","style","call","obj","document","location","alert","setInterval","scrollTo","direction","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","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","key","hideClassToken","ElementRoutines","selector","rules","sheet","styleSheets","index","cssRules","err","insertRule","addRule","$injector","$q","$animate","has","get","isAngularVersionLessThen1_3","version","major","minor","wrapper","addClass","removeClass","newElement","previousElement","remove","scope","$destroy","insertElement","deferred","defer","enter","resolve","promise","removeElement","leave","then","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","isTop","op","splice","push","unshift","arg1","arg2","indexOf","_op","getAbsMinIndex","incrementMinIndex","decrementMaxIndex","removeElementAnimated","getAbsMaxIndex","effectiveHeight","elements","Number","MAX_VALUE","bottom","NEGATIVE_INFINITY","offsetParent","getItems","filter","getFirstItem","list","getLastItem","CacheProto","$index","sort","a","b","argument","_isTop","Cache","instance","apply","setPrototypeOf","getOwnPropertyNames","methodName","generateElement","template","Node","ELEMENT_NODE","tagName","toLowerCase","table","find","Padding","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","totalHeight","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","publicMethods","bind","publicProps","property","attr","defineProperty","set","publicPropsImmediate","newItems","options","arg3","applyUpdatesFunc","applyUpdatesIndex","cb","slice","applyUpdate","_index","isArray","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","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","unbind","wheelHandler","isInvalid","rid","$$destroyed","bindEvents","resizeAndScrollHandler","isElementVisible","visibilityWatcher","unregisterVisibilityWatcher","insertWrapperContent","insertAfter","createElement","$watch","hideElement","promises","transform","tdInitializer","uiScrollTdInitializer","linking","onLink","updateDOM","toBePrepended","toBeRemoved","inserted","concat","removed","animated","updatePaddings","all","enqueueFetch","loading","fetch","processUpdates","$$phase","$digest","w","showElement","calculateProperties","doAdjustAfterFetch","shift","fixInertia","oldPosition","requestAnimationFrame","event","yMax","clientHeight","preventDefault"],"mappings":"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","file":"ui-scroll.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","/*!\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 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('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('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', 'update', 'none'\r\n */\r\n insert(operation, item, isTop) {\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 = 'insert';\r\n buffer.splice(operation, 0, wrapper);\r\n if(isTop) {\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 'append':\r\n buffer.push(wrapper);\r\n break;\r\n case '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._op === 'isTop' && buffer.first === this.getAbsMinIndex()) {\r\n this.incrementMinIndex();\r\n }\r\n else {\r\n this.decrementMaxIndex();\r\n }\r\n if(arg1._op === 'isTop') {\r\n buffer.first++;\r\n }\r\n else {\r\n buffer.next--;\r\n }\r\n if(!buffer.length) {\r\n buffer.first = 1;\r\n buffer.next = 1;\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 === '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, _isTop) {\r\n const index = argument % 1 === 0 ? argument : argument.scope.$index;\r\n const isTop = argument % 1 === 0 ? _isTop : argument._op === 'isTop';\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(!isTop) {\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, isTop) {\r\n topPadding.cache.remove(item, isTop);\r\n bottomPadding.cache.remove(item, isTop);\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","class 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 = 'remove';\r\n if (!options.immutableTop && position === 0 && !newItems.length) {\r\n wrapper._op = 'isTop'; // to catch \"first\" edge case on remove\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 (isTop) 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';\nimport ElementRoutines from './modules/elementRoutines.js';\nimport ScrollBuffer from './modules/buffer.js';\nimport Viewport from './modules/viewport.js';\nimport Adapter from './modules/adapter.js';\n\nangular.module('ui.scroll', [])\n\n .constant('JQLiteExtras', JQLiteExtras)\n .run(['JQLiteExtras', (JQLiteExtras) => {\n const elt = angular.element;\n !(window.jQuery && elt.fn && elt.fn.jquery) ? (new JQLiteExtras()).registerFor(elt) : null;\n ElementRoutines.addCSSRules();\n }])\n\n .directive('uiScrollViewport', function () {\n return {\n restrict: 'A',\n controller: [\n '$scope',\n '$element',\n function (scope, element) {\n this.container = element;\n this.viewport = element;\n this.scope = scope;\n\n angular.forEach(element.children(), child => {\n if (child.tagName.toLowerCase() === 'tbody') {\n this.viewport = angular.element(child);\n }\n });\n\n return this;\n }\n ]\n };\n })\n\n .directive('uiScroll', [\n '$log',\n '$injector',\n '$rootScope',\n '$timeout',\n '$interval',\n '$q',\n '$parse',\n function (console, $injector, $rootScope, $timeout, $interval, $q, $parse) {\n\n return {\n require: ['?^uiScrollViewport'],\n restrict: 'A',\n transclude: 'element',\n priority: 1000,\n terminal: true,\n link: link\n };\n\n function link($scope, element, $attr, controllers, linker) {\n const match = $attr.uiScroll.match(/^\\s*(\\w+)\\s+in\\s+([(\\w|\\$)\\.]+)\\s*$/);\n if (!match) {\n throw new Error('Expected uiScroll in form of \\'_item_ in _datasource_\\' but got \\'' + $attr.uiScroll + '\\'');\n }\n\n function parseNumber(value, defaultValue, isFloat) {\n if (!isFloat) {\n value = value === null ? defaultValue : Math.floor(value);\n }\n return isNaN(value) ? defaultValue : value;\n }\n\n function parseNumericAttr(value, defaultValue, isFloat) {\n const result = $parse(value)($scope);\n return parseNumber(result, defaultValue, isFloat);\n }\n\n function parseBooleanAttr(value, defaultValue) {\n const result = $parse(value)($scope);\n return typeof result === 'boolean' ? result : defaultValue;\n }\n\n const BUFFER_MIN = 3;\n const BUFFER_DEFAULT = 10;\n const PADDING_MIN = 0.3;\n const PADDING_DEFAULT = 0.5;\n const HANDLE_INERTIA_DEFAULT = true;\n const START_INDEX_DEFAULT = 1;\n const MAX_VIEWPORT_DELAY = 500;\n const VIEWPORT_POLLING_INTERVAL = 50;\n\n let datasource = null;\n const itemName = match[1];\n const datasourceName = match[2];\n const viewportController = controllers[0];\n const bufferSize = Math.max(BUFFER_MIN, parseNumericAttr($attr.bufferSize, BUFFER_DEFAULT));\n const padding = Math.max(PADDING_MIN, parseNumericAttr($attr.padding, PADDING_DEFAULT, true));\n const handleInertia = parseBooleanAttr($attr.handleInertia, HANDLE_INERTIA_DEFAULT);\n let startIndex = parseNumericAttr($attr.startIndex, START_INDEX_DEFAULT);\n let ridActual = 0; // current data revision id\n let pending = [];\n\n const elementRoutines = new ElementRoutines($injector, $q);\n const buffer = new ScrollBuffer(elementRoutines, bufferSize, startIndex);\n const viewport = new Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding);\n const adapter = new Adapter($scope, $parse, $attr, viewport, buffer, doAdjust, reload);\n\n if (viewportController) {\n viewportController.adapter = adapter;\n }\n\n const isDatasourceValid = () =>\n Object.prototype.toString.call(datasource) === '[object Object]' && typeof datasource.get === 'function';\n\n datasource = $parse(datasourceName)($scope); // try to get datasource on scope\n if (!isDatasourceValid()) {\n datasource = $injector.get(datasourceName); // try to inject datasource as service\n if (!isDatasourceValid()) {\n throw new Error(datasourceName + ' is not a valid datasource');\n }\n }\n\n let onRenderHandlers = [];\n function onRenderHandlersRunner() {\n onRenderHandlers.forEach(handler => handler.run());\n onRenderHandlers = [];\n }\n function persistDatasourceIndex(datasource, propName) {\n let getter;\n // need to postpone min/maxIndexUser processing if the view is empty\n if(angular.isNumber(datasource[propName])) {\n getter = datasource[propName];\n if(angular.isNumber(getter)) {\n onRenderHandlers = onRenderHandlers.filter(handler => handler.id !== propName);\n onRenderHandlers.push({\n id: propName,\n run: () => datasource[propName] = getter\n });\n }\n }\n }\n\n function defineDatasourceIndex(datasource, propName, propUserName) {\n const descriptor = Object.getOwnPropertyDescriptor(datasource, propName);\n if (descriptor && (descriptor.set || descriptor.get)) {\n return;\n }\n let getter;\n persistDatasourceIndex(datasource, propName);\n Object.defineProperty(datasource, propName, {\n set: (value) => {\n getter = value;\n if(pending.length && !buffer.length) {\n persistDatasourceIndex(datasource, propName);\n return;\n }\n buffer[propUserName] = value;\n const topPaddingHeightOld = viewport.topDataPos();\n viewport.adjustPaddings();\n if (propName === 'minIndex') {\n viewport.onAfterMinIndexSet(topPaddingHeightOld);\n }\n },\n get: () => getter\n });\n }\n\n defineDatasourceIndex(datasource, 'minIndex', 'minIndexUser');\n defineDatasourceIndex(datasource, 'maxIndex', 'maxIndexUser');\n\n const fetchNext = (datasource.get.length !== 2) ?\n (success) => datasource.get(buffer.next, bufferSize, success) :\n (success) => {\n datasource.get({\n index: buffer.next,\n append: buffer.length ? buffer[buffer.length - 1].item : void 0,\n count: bufferSize\n }, success);\n };\n\n const fetchPrevious = (datasource.get.length !== 2) ?\n (success) => datasource.get(buffer.first - bufferSize, bufferSize, success) :\n (success) => {\n datasource.get({\n index: buffer.first - bufferSize,\n prepend: buffer.length ? buffer[0].item : void 0,\n count: bufferSize\n }, success);\n };\n\n const initialize = () => {\n let tryCount = 0;\n if(!viewport.applyContainerStyle()) {\n const timer = $interval(() => {\n tryCount++;\n if(viewport.applyContainerStyle()) {\n $interval.cancel(timer);\n doAdjust();\n }\n if(tryCount * VIEWPORT_POLLING_INTERVAL >= MAX_VIEWPORT_DELAY) {\n $interval.cancel(timer);\n throw Error(`ui-scroll directive requires a viewport with non-zero height in ${MAX_VIEWPORT_DELAY}ms`);\n }\n }, VIEWPORT_POLLING_INTERVAL);\n }\n else {\n doAdjust();\n }\n };\n\n /**\n * Build padding elements\n *\n * Calling linker is the only way I found to get access to the tag name of the template\n * to prevent the directive scope from pollution a new scope is created and destroyed\n * right after the builder creation is completed\n */\n linker((clone, scope) => {\n viewport.createPaddingElements(clone[0]);\n // we do not include the clone in the DOM. It means that the nested directives will not\n // be able to reach the parent directives, but in this case it is intentional because we\n // created the clone to access the template tag name\n scope.$destroy();\n clone.remove();\n });\n\n $scope.$on('$destroy', () => {\n unbindEvents();\n viewport.unbind('mousewheel', wheelHandler);\n });\n\n viewport.bind('mousewheel', wheelHandler);\n\n initialize();\n\n /* Private function definitions */\n\n function isInvalid(rid) {\n return (rid && rid !== ridActual) || $scope.$$destroyed;\n }\n\n function bindEvents() {\n viewport.bind('resize', resizeAndScrollHandler);\n viewport.bind('scroll', resizeAndScrollHandler);\n }\n\n function unbindEvents() {\n viewport.unbind('resize', resizeAndScrollHandler);\n viewport.unbind('scroll', resizeAndScrollHandler);\n }\n\n function reload() {\n unbindEvents();\n viewport.resetTopPadding();\n viewport.resetBottomPadding();\n if (arguments.length) {\n startIndex = parseNumber(arguments[0], START_INDEX_DEFAULT, false);\n }\n buffer.reset(startIndex);\n persistDatasourceIndex(datasource, 'minIndex');\n persistDatasourceIndex(datasource, 'maxIndex');\n doAdjust();\n }\n\n function isElementVisible(wrapper) {\n return wrapper.element.height() && wrapper.element[0].offsetParent;\n }\n\n function visibilityWatcher(wrapper) {\n if (isElementVisible(wrapper)) {\n buffer.forEach((item) => {\n if (typeof item.unregisterVisibilityWatcher === 'function') {\n item.unregisterVisibilityWatcher();\n delete item.unregisterVisibilityWatcher;\n }\n });\n if (!pending.length) {\n $timeout(() => doAdjust());\n }\n }\n }\n\n function insertWrapperContent(wrapper, insertAfter) {\n createElement(wrapper, insertAfter, viewport.insertElement);\n if (!isElementVisible(wrapper)) {\n wrapper.unregisterVisibilityWatcher = wrapper.scope.$watch(() => visibilityWatcher(wrapper));\n }\n elementRoutines.hideElement(wrapper); // hide inserted elements before data binding\n }\n\n function createElement(wrapper, insertAfter, insertElement) {\n let promises = null;\n const sibling = (insertAfter > 0) ? buffer[insertAfter - 1].element : undefined;\n linker((clone, scope) => {\n promises = insertElement(clone, sibling);\n wrapper.element = clone;\n wrapper.scope = scope;\n scope[itemName] = wrapper.item;\n });\n // ui-scroll-grid apply\n if (adapter.transform) {\n const tdInitializer = wrapper.scope.uiScrollTdInitializer;\n if (tdInitializer && tdInitializer.linking) {\n adapter.transform(wrapper.scope, wrapper.element);\n } else {\n wrapper.scope.uiScrollTdInitializer = {\n onLink: () => adapter.transform(wrapper.scope, wrapper.element),\n scope: wrapper.scope\n };\n }\n }\n return promises;\n }\n\n function updateDOM() {\n let promises = [];\n const toBePrepended = [];\n const toBeRemoved = [];\n const inserted = [];\n\n buffer.forEach((wrapper, i) => {\n switch (wrapper.op) {\n case 'prepend':\n toBePrepended.unshift(wrapper);\n break;\n case 'append':\n insertWrapperContent(wrapper, i);\n wrapper.op = 'none';\n inserted.push(wrapper);\n break;\n case 'insert':\n promises = promises.concat(createElement(wrapper, i, viewport.insertElementAnimated));\n wrapper.op = 'none';\n inserted.push(wrapper);\n break;\n case 'remove':\n toBeRemoved.push(wrapper);\n }\n });\n\n toBeRemoved.forEach((wrapper) => promises = promises.concat(viewport.removeItem(wrapper)));\n\n if (toBePrepended.length)\n toBePrepended.forEach((wrapper) => {\n insertWrapperContent(wrapper);\n wrapper.op = 'none';\n });\n\n buffer.forEach((item, i) => item.scope.$index = buffer.first + i);\n\n return {\n prepended: toBePrepended,\n removed: toBeRemoved,\n inserted: inserted,\n animated: promises\n };\n\n }\n\n function updatePaddings(rid, updates) {\n // schedule another doAdjust after animation completion\n if (updates.animated.length) {\n $q.all(updates.animated).then(() => {\n viewport.adjustPaddings();\n doAdjust(rid);\n });\n } else {\n viewport.adjustPaddings();\n }\n }\n\n function enqueueFetch(rid, updates) {\n if (viewport.shouldLoadBottom()) {\n if (!updates || buffer.effectiveHeight(updates.inserted) > 0) {\n // this means that at least one item appended in the last batch has height > 0\n if (pending.push(true) === 1) {\n adapter.loading(true);\n fetch(rid);\n }\n }\n } else if (viewport.shouldLoadTop()) {\n if ((!updates || buffer.effectiveHeight(updates.prepended) > 0) || pending[0]) {\n // this means that at least one item appended in the last batch has height > 0\n // pending[0] = true means that previous fetch was appending. We need to force at least one prepend\n // BTW there will always be at least 1 element in the pending array because bottom is fetched first\n if (pending.push(false) === 1) {\n adapter.loading(true);\n fetch(rid);\n }\n }\n }\n }\n\n function processUpdates() {\n const updates = updateDOM();\n\n // We need the item bindings to be processed before we can do adjustments\n !$scope.$$phase && !$rootScope.$$phase && $scope.$digest();\n\n updates.inserted.forEach(w => elementRoutines.showElement(w));\n updates.prepended.forEach(w => elementRoutines.showElement(w));\n return updates;\n }\n\n function doAdjust(rid) {\n if (!rid) { // dismiss pending requests\n pending = [];\n rid = ++ridActual;\n }\n\n const updates = processUpdates();\n\n if (isInvalid(rid)) {\n return;\n }\n\n updatePaddings(rid, updates);\n enqueueFetch(rid);\n\n if (!pending.length) {\n adapter.calculateProperties();\n }\n }\n\n function doAdjustAfterFetch(rid) {\n const updates = processUpdates();\n\n viewport.onAfterPrepend(updates);\n\n if (isInvalid(rid)) {\n return;\n }\n\n updatePaddings(rid, updates);\n onRenderHandlersRunner();\n enqueueFetch(rid, updates);\n pending.shift();\n\n if (pending.length)\n fetch(rid);\n else {\n adapter.loading(false);\n bindEvents();\n adapter.calculateProperties();\n }\n }\n\n function fetch(rid) {\n if (pending[0]) {// scrolling down\n if (buffer.length && !viewport.shouldLoadBottom()) {\n doAdjustAfterFetch(rid);\n } else {\n fetchNext((result) => {\n if (isInvalid(rid)) {\n return;\n }\n\n if (result.length < bufferSize) {\n buffer.eof = true;\n }\n\n if (result.length > 0) {\n viewport.clipTop();\n buffer.append(result);\n }\n\n doAdjustAfterFetch(rid);\n });\n }\n } else { // scrolling up\n if (buffer.length && !viewport.shouldLoadTop()) {\n doAdjustAfterFetch(rid);\n } else {\n fetchPrevious((result) => {\n if (isInvalid(rid)) {\n return;\n }\n\n if (result.length < bufferSize) {\n buffer.bof = true;\n // log 'bof is reached'\n }\n\n if (result.length > 0) {\n if (buffer.length) {\n viewport.clipBottom();\n }\n buffer.prepend(result);\n }\n\n doAdjustAfterFetch(rid);\n });\n }\n }\n }\n\n function fixInertia() {\n if (!viewport.synthetic) {\n return;\n }\n const oldPosition = viewport.synthetic.previous;\n const newPosition = viewport.synthetic.next;\n if (viewport.scrollTop() !== newPosition) {\n requestAnimationFrame(() => {\n const position = viewport.scrollTop();\n const diff = oldPosition - position;\n if (diff > 0) { // inertia over synthetic\n viewport.scrollTop(newPosition - diff);\n } else {\n viewport.scrollTop(newPosition);\n }\n viewport.synthetic = null;\n });\n return true;\n }\n viewport.synthetic = null;\n }\n\n function resizeAndScrollHandler() {\n if (handleInertia && fixInertia()) {\n return;\n }\n if (!$rootScope.$$phase && !adapter.isLoading && !adapter.disabled) {\n\n enqueueFetch(ridActual);\n\n if (pending.length) {\n unbindEvents();\n } else {\n adapter.calculateProperties();\n !$scope.$$phase && $scope.$digest();\n }\n }\n }\n\n function wheelHandler(event) {\n if (!adapter.disabled) {\n const scrollTop = viewport[0].scrollTop;\n const yMax = viewport[0].scrollHeight - viewport[0].clientHeight;\n\n if ((scrollTop === 0 && !buffer.bof) || (scrollTop === yMax && !buffer.eof)) {\n event.preventDefault();\n }\n }\n }\n }\n\n }\n ]);\n"],"sourceRoot":""}