{"version":3,"sources":["webpack:///webpack/bootstrap 2386088bf7ce5bf5d4af","webpack:///./src/ui-scroll.js","webpack:///./src/modules/jqLiteExtras.js","webpack:///./src/modules/elementRoutines.js","webpack:///./src/modules/buffer.js","webpack:///./src/modules/viewport.js","webpack:///./src/modules/padding.js","webpack:///./src/modules/adapter.js"],"names":["angular","module","constant","JQLiteExtras","run","window","jQuery","registerFor","element","ElementRoutines","addCSSRules","directive","restrict","controller","scope","container","viewport","forEach","children","child","tagName","toLowerCase","console","$injector","$rootScope","$timeout","$interval","$q","$parse","require","transclude","priority","terminal","link","$scope","$attr","controllers","linker","match","uiScroll","Error","parseNumericAttr","value","defaultValue","result","isNaN","BUFFER_MIN","BUFFER_DEFAULT","PADDING_MIN","PADDING_DEFAULT","MAX_VIEWPORT_DELAY","VIEWPORT_POLLING_INTERVAL","datasource","itemName","datasourceName","viewportController","bufferSize","Math","max","padding","startIndex","ridActual","pending","elementRoutines","buffer","ScrollBuffer","Viewport","adapter","Adapter","doAdjust","reload","isDatasourceValid","Object","prototype","toString","call","get","onRenderHandlers","onRenderHandlersRunner","handler","persistDatasourceIndex","propName","getter","isNumber","filter","id","push","defineDatasourceIndex","propUserName","descriptor","getOwnPropertyDescriptor","set","defineProperty","length","topPaddingHeightOld","topDataPos","adjustPaddings","onAfterMinIndexSet","fetchNext","success","next","index","append","item","count","fetchPrevious","first","prepend","initialize","tryCount","applyContainerStyle","timer","cancel","clone","createPaddingElements","$destroy","remove","$on","unbindEvents","unbind","wheelHandler","bind","isInvalid","rid","$$destroyed","bindEvents","resizeAndScrollHandler","resetTopPadding","resetBottomPadding","arguments","reset","isElementVisible","wrapper","height","offsetParent","visibilityWatcher","unregisterVisibilityWatcher","insertWrapperContent","insertAfter","createElement","insertElement","$watch","hideElement","promises","sibling","undefined","transform","tdInitializer","uiScrollTdInitializer","linking","onLink","updateDOM","toBePrepended","toBeRemoved","inserted","i","op","unshift","concat","insertElementAnimated","removeItem","$index","prepended","removed","animated","updatePaddings","updates","all","then","enqueueFetch","shouldLoadBottom","effectiveHeight","loading","fetch","shouldLoadTop","processUpdates","$$phase","$digest","showElement","w","calculateProperties","doAdjustAfterFetch","onAfterPrepend","shift","eof","clipTop","bof","clipBottom","ev","isLoading","disabled","type","scrollTop","scrollTopValue","scrollTopSetFailed","curScrollTop","abs","scrollTopBeforeSet","scrollTopAdjust","event","yMax","scrollHeight","clientHeight","preventDefault","convertToPx","css","getStyle","isWindow","name","self","elem","nodeType","style","obj","document","location","alert","setInterval","scrollTo","direction","top","left","method","prop","preserve","isValueDefined","documentElement","getComputedStyle","parseFloat","currentStyle","rs","rsLeft","core_pnum","source","rnumnonpx","RegExp","test","runtimeStyle","pixelLeft","getMeasurements","measure","base","borderA","borderB","computedMarginA","computedMarginB","computedStyle","dirA","dirB","marginA","marginB","paddingA","paddingB","width","border","margin","offsetWidth","offsetHeight","getWidthHeight","measurements","outer","outerfull","before","newElem","j","parent","ref","contents","after","outerHTML","outerHeight","option","outerWidth","offset","docElem","win","box","doc","ownerDocument","getBoundingClientRect","defaultView","parentWindow","pageYOffset","clientTop","pageXOffset","scrollLeft","clientLeft","key","hideClassToken","selector","rules","sheet","styleSheets","cssRules","err","insertRule","addRule","$animate","has","isAngularVersionLessThen1_3","version","major","minor","addClass","removeClass","newElement","previousElement","deferred","defer","enter","resolve","promise","removeElement","leave","create","Array","extend","size","minIndex","maxIndex","minIndexUser","maxIndexUser","items","insert","reverse","min","operation","isTop","splice","arg1","arg2","indexOf","_op","getAbsMinIndex","incrementMinIndex","decrementMaxIndex","removeElementAnimated","getAbsMaxIndex","elements","Number","MAX_VALUE","bottom","NEGATIVE_INFINITY","topPadding","bottomPadding","scrollTopOriginal","bufferPadding","getScope","apply","template","Padding","bottomDataPos","bottomVisiblePos","topVisiblePos","e","overage","overageHeight","itemHeight","emptySpaceHeight","cache","add","visibleItemsHeight","reduce","summ","topPaddingHeight","topCount","bottomPaddingHeight","bottomCount","totalHeight","averageItemHeight","adjustTopPadding","adjustBottomPadding","topPaddingHeightAdd","bottomPaddingHeightAdd","diff","paddingHeight","clear","removeCacheItem","CacheProto","sort","a","b","argument","_isTop","Cache","instance","setPrototypeOf","getOwnPropertyNames","methodName","generateElement","Node","ELEMENT_NODE","table","find","viewportScope","startScope","$parent","publicContext","assignAdapter","generatePublicContext","adapterAttr","replace","adapterOnScope","assign","error","message","publicMethods","publicProps","property","attr","newItems","applyUpdatesFunc","applyUpdatesIndex","cb","slice","applyUpdate","_index","isArray","position","some","newItem","rowTop","topHeight","topDone","bottomDone","itemTop","isEOF"],"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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 2386088bf7ce5bf5d4af","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 !window.jQuery ? (new JQLiteExtras()).registerFor(angular.element) : 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 parseNumericAttr(value, defaultValue) {\n const result = $parse(value)($scope);\n return isNaN(result) ? defaultValue : result;\n }\n\n const BUFFER_MIN = 3;\n const BUFFER_DEFAULT = 10;\n const PADDING_MIN = 0.01;\n const PADDING_DEFAULT = 0.5;\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));\n let startIndex = parseNumericAttr($attr.startIndex, 1);\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 viewport.resetTopPadding();\n viewport.resetBottomPadding();\n if (arguments.length) {\n startIndex = arguments[0];\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 resizeAndScrollHandler(ev) {\n if ($rootScope.$$phase || adapter.isLoading || adapter.disabled) {\n return;\n }\n\n if (ev.type === 'scroll') {\n // Don't process scroll event if it was triggered by us setting scrollTop.\n if (viewport[0].scrollTop === viewport.scrollTopValue) {\n return false;\n }\n\n // Check if we tried to set scrollTop and it failed. If that happens, don't prepend more items based on the stale value\n // of scrollTop that will be used by shouldLoadTop(). Also, try to set it again.\n viewport.scrollTopSetFailed = false;\n if (viewport.scrollTopValue != null) {\n const curScrollTop = viewport[0].scrollTop;\n if (Math.abs(curScrollTop - viewport.scrollTopValue) > Math.abs(curScrollTop - viewport.scrollTopBeforeSet)) {\n viewport.scrollTopSetFailed = true;\n viewport.scrollTop(curScrollTop - viewport.scrollTopAdjust);\n }\n }\n }\n\n enqueueFetch(ridActual);\n\n // we got a real scroll event, so browser is now in charge of scrollTop\n viewport.scrollTopValue = null;\n\n if (pending.length) {\n unbindEvents();\n } else {\n adapter.calculateProperties();\n !$scope.$$phase && $scope.$digest();\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\n\n\n// WEBPACK FOOTER //\n// ./src/ui-scroll.js","/*!\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\n\n\n// WEBPACK FOOTER //\n// ./src/modules/jqLiteExtras.js","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}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/elementRoutines.js","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) {\r\n items.reverse().forEach((item) => {\r\n --buffer.first;\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 });\r\n\r\n buffer.reset(startIndex);\r\n\r\n return buffer;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/buffer.js","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 viewport.scrollTopOriginal = viewport.scrollTopOriginal || viewport.scrollTop;\r\n viewport.scrollTopBeforeSet = null;\r\n viewport.scrollTopValue = null;\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 scrollTop() {\r\n if (typeof arguments[0] !== 'undefined') {\r\n viewport.scrollTopBeforeSet = viewport.scrollTop();\r\n viewport.scrollTopValue = arguments[0];\r\n }\r\n return viewport.scrollTopOriginal.apply(viewport, arguments);\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.scrollTopSetFailed && 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 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 }\r\n else {\r\n topPadding.height(0);\r\n viewport.scrollTopAdjust = paddingHeight;\r\n viewport.scrollTop(viewport.scrollTop() - paddingHeight);\r\n }\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\n\n\n// WEBPACK FOOTER //\n// ./src/modules/viewport.js","// 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;\n\n\n// WEBPACK FOOTER //\n// ./src/modules/padding.js","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', 'resetScrollTopCorrection'];\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 // 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 resetScrollTopCorrection() {\r\n // is needed to scroll at negative area programmatically (e.g. tests)\r\n this.viewport.scrollTopValue = null;\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) {\r\n this.buffer.prepend(newItems);\r\n this.doAdjust();\r\n this.viewport.clipTop();\r\n this.viewport.clipBottom();\r\n }\r\n\r\n applyUpdates(arg1, arg2) {\r\n if (typeof arg1 === 'function') {\r\n this.applyUpdatesFunc(arg1);\r\n } else {\r\n this.applyUpdatesIndex(arg1, arg2);\r\n }\r\n this.doAdjust();\r\n }\r\n\r\n applyUpdatesFunc(cb) {\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));\r\n });\r\n }\r\n\r\n applyUpdatesIndex(index, newItems) {\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);\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, index === this.buffer.minIndex);\r\n if(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) {\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(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, 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\n\n\n// WEBPACK FOOTER //\n// ./src/modules/adapter.js"],"sourceRoot":""}