{"version":3,"file":"vendor.aurelia-ui-virtualization.0f6da31d6cdd9eaf.bundle.js","mappings":"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","sources":["webpack://client-app/./node_modules/aurelia-ui-virtualization/dist/native-modules/aurelia-ui-virtualization.js"],"sourcesContent":["import { mergeSplice, ObserverLocator } from 'aurelia-binding';\nimport { ElementEvents, BoundViewFactory, TargetInstruction, ViewSlot, ViewResources } from 'aurelia-templating';\nimport { updateOverrideContext, createFullOverrideContext, ArrayRepeatStrategy, NullRepeatStrategy, unwrapExpression, updateOneTimeBinding, viewsRequireLifecycle, getItemsSourceExpression, isOneTime, AbstractRepeater } from 'aurelia-templating-resources';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { Container } from 'aurelia-dependency-injection';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\nvar rebindView = function (repeat, view, collectionIndex, collection) {\r\n view.bindingContext[repeat.local] = collection[collectionIndex];\r\n updateOverrideContext(view.overrideContext, collectionIndex, collection.length);\r\n};\r\nvar rebindAndMoveView = function (repeat, view, index, moveToBottom) {\r\n var items = repeat.items;\r\n var viewSlot = repeat.viewSlot;\r\n updateOverrideContext(view.overrideContext, index, items.length);\r\n view.bindingContext[repeat.local] = items[index];\r\n if (moveToBottom) {\r\n viewSlot.children.push(viewSlot.children.shift());\r\n repeat.templateStrategy.moveViewLast(view, repeat.bottomBufferEl);\r\n }\r\n else {\r\n viewSlot.children.unshift(viewSlot.children.splice(-1, 1)[0]);\r\n repeat.templateStrategy.moveViewFirst(view, repeat.topBufferEl);\r\n }\r\n};\r\nvar calcMinViewsRequired = function (scrollerHeight, itemHeight) {\r\n return Math$floor(scrollerHeight / itemHeight) + 1;\r\n};\r\nvar Math$abs = Math.abs;\r\nvar Math$max = Math.max;\r\nvar Math$min = Math.min;\r\nvar Math$round = Math.round;\r\nvar Math$floor = Math.floor;\r\nvar $isNaN = isNaN;\n\nvar doc = document;\r\nvar htmlElement = doc.documentElement;\r\nvar $raf = requestAnimationFrame.bind(window);\n\nvar getScrollerElement = function (element) {\r\n var current = element.parentNode;\r\n while (current !== null && current !== htmlElement) {\r\n if (hasOverflowScroll(current)) {\r\n return current;\r\n }\r\n current = current.parentNode;\r\n }\r\n return doc.scrollingElement || htmlElement;\r\n};\r\nvar getElementDistanceToTopOfDocument = function (element) {\r\n var box = element.getBoundingClientRect();\r\n var scrollTop = window.pageYOffset;\r\n var clientTop = htmlElement.clientTop;\r\n var top = box.top + scrollTop - clientTop;\r\n return Math$round(top);\r\n};\r\nvar hasOverflowScroll = function (element) {\r\n var style = window.getComputedStyle(element);\r\n return style && (style.overflowY === 'scroll' || style.overflow === 'scroll' || style.overflowY === 'auto' || style.overflow === 'auto');\r\n};\r\nvar getStyleValues = function (element) {\r\n var styles = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n styles[_i - 1] = arguments[_i];\r\n }\r\n var currentStyle = window.getComputedStyle(element);\r\n var value = 0;\r\n var styleValue = 0;\r\n for (var i = 0, ii = styles.length; ii > i; ++i) {\r\n styleValue = parseFloat(currentStyle[styles[i]]);\r\n value += $isNaN(styleValue) ? 0 : styleValue;\r\n }\r\n return value;\r\n};\r\nvar calcOuterHeight = function (element) {\r\n var height = element.getBoundingClientRect().height;\r\n height += getStyleValues(element, 'marginTop', 'marginBottom');\r\n return height;\r\n};\r\nvar calcScrollHeight = function (element) {\r\n var height = element.getBoundingClientRect().height;\r\n height -= getStyleValues(element, 'borderTopWidth', 'borderBottomWidth');\r\n return height;\r\n};\r\nvar insertBeforeNode = function (view, bottomBuffer) {\r\n bottomBuffer.parentNode.insertBefore(view.lastChild, bottomBuffer);\r\n};\r\nvar getDistanceToParent = function (child, parent) {\r\n var offsetParent = child.offsetParent;\r\n var childOffsetTop = child.offsetTop;\r\n if (offsetParent === null || offsetParent === parent) {\r\n return childOffsetTop;\r\n }\r\n else {\r\n if (offsetParent.contains(parent)) {\r\n return childOffsetTop - parent.offsetTop;\r\n }\r\n else {\r\n return childOffsetTop + getDistanceToParent(offsetParent, parent);\r\n }\r\n }\r\n};\n\nvar ArrayVirtualRepeatStrategy = (function (_super) {\r\n __extends(ArrayVirtualRepeatStrategy, _super);\r\n function ArrayVirtualRepeatStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ArrayVirtualRepeatStrategy.prototype.createFirstRow = function (repeat) {\r\n var overrideContext = createFullOverrideContext(repeat, repeat.items[0], 0, 1);\r\n return repeat.addView(overrideContext.bindingContext, overrideContext);\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.count = function (items) {\r\n return items.length;\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.initCalculation = function (repeat, items) {\r\n var itemCount = items.length;\r\n if (!(itemCount > 0)) {\r\n return 1;\r\n }\r\n var scrollerInfo = repeat.getScrollerInfo();\r\n var existingViewCount = repeat.viewCount();\r\n if (itemCount > 0 && existingViewCount === 0) {\r\n this.createFirstRow(repeat);\r\n }\r\n var firstView = repeat.firstView();\r\n var itemHeight = calcOuterHeight(firstView.firstChild);\r\n if (itemHeight === 0) {\r\n return 0;\r\n }\r\n repeat.itemHeight = itemHeight;\r\n var scroll_el_height = scrollerInfo.height;\r\n repeat.minViewsRequired = calcMinViewsRequired(scroll_el_height, itemHeight);\r\n return 2 | 4;\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.onAttached = function (repeat) {\r\n if (repeat.items.length < repeat.minViewsRequired) {\r\n repeat.getMore(0, true, this.isNearBottom(repeat, repeat.lastViewIndex()), true);\r\n }\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.getViewRange = function (repeat, scrollerInfo) {\r\n var topBufferEl = repeat.topBufferEl;\r\n var scrollerEl = repeat.scrollerEl;\r\n var itemHeight = repeat.itemHeight;\r\n var realScrollTop = 0;\r\n var isFixedHeightContainer = scrollerInfo.scroller !== htmlElement;\r\n if (isFixedHeightContainer) {\r\n var topBufferDistance = getDistanceToParent(topBufferEl, scrollerEl);\r\n var scrollerScrollTop = scrollerInfo.scrollTop;\r\n realScrollTop = Math$max(0, scrollerScrollTop - Math$abs(topBufferDistance));\r\n }\r\n else {\r\n realScrollTop = pageYOffset - repeat.distanceToTop;\r\n }\r\n var realViewCount = repeat.minViewsRequired * 2;\r\n var firstVisibleIndex = Math$max(0, itemHeight > 0 ? Math$floor(realScrollTop / itemHeight) : 0);\r\n var lastVisibleIndex = Math$min(repeat.items.length - 1, firstVisibleIndex + (realViewCount - 1));\r\n firstVisibleIndex = Math$max(0, Math$min(firstVisibleIndex, lastVisibleIndex - (realViewCount - 1)));\r\n return [firstVisibleIndex, lastVisibleIndex];\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.updateBuffers = function (repeat, firstIndex) {\r\n var itemHeight = repeat.itemHeight;\r\n var itemCount = repeat.items.length;\r\n repeat.topBufferHeight = firstIndex * itemHeight;\r\n repeat.bottomBufferHeight = (itemCount - firstIndex - repeat.viewCount()) * itemHeight;\r\n repeat.updateBufferElements(true);\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.isNearTop = function (repeat, firstIndex) {\r\n var itemCount = repeat.items.length;\r\n return itemCount > 0\r\n ? firstIndex < repeat.edgeDistance\r\n : false;\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.isNearBottom = function (repeat, lastIndex) {\r\n var itemCount = repeat.items.length;\r\n return lastIndex === -1\r\n ? true\r\n : itemCount > 0\r\n ? lastIndex > (itemCount - 1 - repeat.edgeDistance)\r\n : false;\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.instanceChanged = function (repeat, items, first) {\r\n if (this._inPlaceProcessItems(repeat, items, first)) {\r\n this._remeasure(repeat, repeat.itemHeight, repeat.minViewsRequired * 2, items.length, repeat.$first);\r\n }\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.instanceMutated = function (repeat, array, splices) {\r\n this._standardProcessInstanceMutated(repeat, array, splices);\r\n };\r\n ArrayVirtualRepeatStrategy.prototype._inPlaceProcessItems = function ($repeat, items, firstIndex) {\r\n var repeat = $repeat;\r\n var currItemCount = items.length;\r\n if (currItemCount === 0) {\r\n repeat.removeAllViews(true, false);\r\n repeat.resetCalculation();\r\n repeat.__queuedSplices = repeat.__array = undefined;\r\n return false;\r\n }\r\n var max_views_count = repeat.minViewsRequired * 2;\r\n var realViewsCount = repeat.viewCount();\r\n while (realViewsCount > currItemCount) {\r\n realViewsCount--;\r\n repeat.removeView(realViewsCount, true, false);\r\n }\r\n while (realViewsCount > max_views_count) {\r\n realViewsCount--;\r\n repeat.removeView(realViewsCount, true, false);\r\n }\r\n realViewsCount = Math$min(realViewsCount, max_views_count);\r\n var local = repeat.local;\r\n var lastIndex = currItemCount - 1;\r\n if (firstIndex + realViewsCount > lastIndex) {\r\n firstIndex = Math$max(0, currItemCount - realViewsCount);\r\n }\r\n repeat.$first = firstIndex;\r\n for (var i = 0; i < realViewsCount; i++) {\r\n var currIndex = i + firstIndex;\r\n var view = repeat.view(i);\r\n var last = currIndex === currItemCount - 1;\r\n var middle = currIndex !== 0 && !last;\r\n var bindingContext = view.bindingContext;\r\n var overrideContext = view.overrideContext;\r\n if (bindingContext[local] === items[currIndex]\r\n && overrideContext.$index === currIndex\r\n && overrideContext.$middle === middle\r\n && overrideContext.$last === last) {\r\n continue;\r\n }\r\n bindingContext[local] = items[currIndex];\r\n overrideContext.$first = currIndex === 0;\r\n overrideContext.$middle = middle;\r\n overrideContext.$last = last;\r\n overrideContext.$index = currIndex;\r\n var odd = currIndex % 2 === 1;\r\n overrideContext.$odd = odd;\r\n overrideContext.$even = !odd;\r\n repeat.updateBindings(view);\r\n }\r\n var minLength = Math$min(max_views_count, currItemCount);\r\n for (var i = realViewsCount; i < minLength; i++) {\r\n var overrideContext = createFullOverrideContext(repeat, items[i], i, currItemCount);\r\n repeat.addView(overrideContext.bindingContext, overrideContext);\r\n }\r\n return true;\r\n };\r\n ArrayVirtualRepeatStrategy.prototype._standardProcessInstanceMutated = function ($repeat, array, splices) {\r\n var _this = this;\r\n var repeat = $repeat;\r\n if (repeat.__queuedSplices) {\r\n for (var i = 0, ii = splices.length; i < ii; ++i) {\r\n var _a = splices[i], index = _a.index, removed = _a.removed, addedCount = _a.addedCount;\r\n mergeSplice(repeat.__queuedSplices, index, removed, addedCount);\r\n }\r\n repeat.__array = array.slice(0);\r\n return;\r\n }\r\n if (array.length === 0) {\r\n repeat.removeAllViews(true, false);\r\n repeat.resetCalculation();\r\n repeat.__queuedSplices = repeat.__array = undefined;\r\n return;\r\n }\r\n var maybePromise = this._runSplices(repeat, array.slice(0), splices);\r\n if (maybePromise instanceof Promise) {\r\n var queuedSplices_1 = repeat.__queuedSplices = [];\r\n var runQueuedSplices_1 = function () {\r\n if (!queuedSplices_1.length) {\r\n repeat.__queuedSplices = repeat.__array = undefined;\r\n return;\r\n }\r\n var nextPromise = _this._runSplices(repeat, repeat.__array, queuedSplices_1) || Promise.resolve();\r\n nextPromise.then(runQueuedSplices_1);\r\n };\r\n maybePromise.then(runQueuedSplices_1);\r\n }\r\n };\r\n ArrayVirtualRepeatStrategy.prototype._runSplices = function (repeat, newArray, splices) {\r\n var firstIndex = repeat.$first;\r\n var totalRemovedCount = 0;\r\n var totalAddedCount = 0;\r\n var splice;\r\n var i = 0;\r\n var spliceCount = splices.length;\r\n var newArraySize = newArray.length;\r\n var allSplicesAreInplace = true;\r\n for (i = 0; spliceCount > i; i++) {\r\n splice = splices[i];\r\n var removedCount = splice.removed.length;\r\n var addedCount = splice.addedCount;\r\n totalRemovedCount += removedCount;\r\n totalAddedCount += addedCount;\r\n if (removedCount !== addedCount) {\r\n allSplicesAreInplace = false;\r\n }\r\n }\r\n if (allSplicesAreInplace) {\r\n var lastIndex = repeat.lastViewIndex();\r\n for (i = 0; spliceCount > i; i++) {\r\n splice = splices[i];\r\n for (var collectionIndex = splice.index; collectionIndex < splice.index + splice.addedCount; collectionIndex++) {\r\n if (collectionIndex >= firstIndex && collectionIndex <= lastIndex) {\r\n var viewIndex = collectionIndex - firstIndex;\r\n var overrideContext = createFullOverrideContext(repeat, newArray[collectionIndex], collectionIndex, newArraySize);\r\n repeat.removeView(viewIndex, true, true);\r\n repeat.insertView(viewIndex, overrideContext.bindingContext, overrideContext);\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n var firstIndexAfterMutation = firstIndex;\r\n var itemHeight = repeat.itemHeight;\r\n var originalSize = newArraySize + totalRemovedCount - totalAddedCount;\r\n var currViewCount = repeat.viewCount();\r\n var newViewCount = currViewCount;\r\n if (originalSize === 0 && itemHeight === 0) {\r\n repeat.resetCalculation();\r\n repeat.itemsChanged();\r\n return;\r\n }\r\n var all_splices_are_positive_and_before_view_port = totalRemovedCount === 0\r\n && totalAddedCount > 0\r\n && splices.every(function (splice) { return splice.index <= firstIndex; });\r\n if (all_splices_are_positive_and_before_view_port) {\r\n repeat.$first = firstIndex + totalAddedCount - 1;\r\n repeat.topBufferHeight += totalAddedCount * itemHeight;\r\n repeat.enableScroll();\r\n var scrollerInfo = repeat.getScrollerInfo();\r\n var scroller_scroll_top = scrollerInfo.scrollTop;\r\n var top_buffer_distance = getDistanceToParent(repeat.topBufferEl, scrollerInfo.scroller);\r\n var real_scroll_top = Math$max(0, scroller_scroll_top === 0\r\n ? 0\r\n : (scroller_scroll_top - top_buffer_distance));\r\n var first_index_after_scroll_adjustment = real_scroll_top === 0\r\n ? 0\r\n : Math$floor(real_scroll_top / itemHeight);\r\n if (scroller_scroll_top > top_buffer_distance\r\n && first_index_after_scroll_adjustment === firstIndex) {\r\n repeat.updateBufferElements(false);\r\n repeat.scrollerEl.scrollTop = real_scroll_top + totalAddedCount * itemHeight;\r\n this._remeasure(repeat, itemHeight, newViewCount, newArraySize, firstIndex);\r\n return;\r\n }\r\n }\r\n var lastViewIndex = repeat.lastViewIndex();\r\n var all_splices_are_after_view_port = currViewCount > repeat.minViewsRequired\r\n && splices.every(function (s) { return s.index > lastViewIndex; });\r\n if (all_splices_are_after_view_port) {\r\n repeat.bottomBufferHeight = Math$max(0, newArraySize - firstIndex - currViewCount) * itemHeight;\r\n repeat.updateBufferElements(true);\r\n }\r\n else {\r\n var viewsRequiredCount = repeat.minViewsRequired * 2;\r\n if (viewsRequiredCount === 0) {\r\n var scrollerInfo = repeat.getScrollerInfo();\r\n var minViewsRequired = calcMinViewsRequired(scrollerInfo.height, itemHeight);\r\n repeat.minViewsRequired = minViewsRequired;\r\n viewsRequiredCount = minViewsRequired * 2;\r\n }\r\n for (i = 0; spliceCount > i; ++i) {\r\n var _a = splices[i], addedCount = _a.addedCount, removedCount = _a.removed.length, spliceIndex = _a.index;\r\n var removeDelta = removedCount - addedCount;\r\n if (firstIndexAfterMutation > spliceIndex) {\r\n firstIndexAfterMutation = Math$max(0, firstIndexAfterMutation - removeDelta);\r\n }\r\n }\r\n newViewCount = 0;\r\n if (newArraySize <= repeat.minViewsRequired) {\r\n firstIndexAfterMutation = 0;\r\n newViewCount = newArraySize;\r\n }\r\n else {\r\n if (newArraySize <= viewsRequiredCount) {\r\n newViewCount = newArraySize;\r\n firstIndexAfterMutation = 0;\r\n }\r\n else {\r\n newViewCount = viewsRequiredCount;\r\n }\r\n }\r\n var newTopBufferItemCount = newArraySize >= firstIndexAfterMutation\r\n ? firstIndexAfterMutation\r\n : 0;\r\n var viewCountDelta = newViewCount - currViewCount;\r\n if (viewCountDelta > 0) {\r\n for (i = 0; viewCountDelta > i; ++i) {\r\n var collectionIndex = firstIndexAfterMutation + currViewCount + i;\r\n var overrideContext = createFullOverrideContext(repeat, newArray[collectionIndex], collectionIndex, newArray.length);\r\n repeat.addView(overrideContext.bindingContext, overrideContext);\r\n }\r\n }\r\n else {\r\n var ii = Math$abs(viewCountDelta);\r\n for (i = 0; ii > i; ++i) {\r\n repeat.removeView(newViewCount, true, false);\r\n }\r\n }\r\n var newBotBufferItemCount = Math$max(0, newArraySize - newTopBufferItemCount - newViewCount);\r\n repeat.$first = firstIndexAfterMutation;\r\n repeat.topBufferHeight = newTopBufferItemCount * itemHeight;\r\n repeat.bottomBufferHeight = newBotBufferItemCount * itemHeight;\r\n repeat.updateBufferElements(true);\r\n }\r\n this._remeasure(repeat, itemHeight, newViewCount, newArraySize, firstIndexAfterMutation);\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.updateAllViews = function (repeat, startIndex) {\r\n var views = repeat.viewSlot.children;\r\n var viewLength = views.length;\r\n var collection = repeat.items;\r\n var delta = Math$floor(repeat.topBufferHeight / repeat.itemHeight);\r\n var collectionIndex = 0;\r\n var view;\r\n for (; viewLength > startIndex; ++startIndex) {\r\n collectionIndex = startIndex + delta;\r\n view = repeat.view(startIndex);\r\n rebindView(repeat, view, collectionIndex, collection);\r\n repeat.updateBindings(view);\r\n }\r\n };\r\n ArrayVirtualRepeatStrategy.prototype.remeasure = function (repeat) {\r\n this._remeasure(repeat, repeat.itemHeight, repeat.viewCount(), repeat.items.length, repeat.firstViewIndex());\r\n };\r\n ArrayVirtualRepeatStrategy.prototype._remeasure = function (repeat, itemHeight, newViewCount, newArraySize, firstIndex) {\r\n var scrollerInfo = repeat.getScrollerInfo();\r\n var scroller_scroll_top = scrollerInfo.scrollTop;\r\n var top_buffer_distance = getDistanceToParent(repeat.topBufferEl, scrollerInfo.scroller);\r\n var real_scroll_top = Math$max(0, scroller_scroll_top === 0\r\n ? 0\r\n : (scroller_scroll_top - top_buffer_distance));\r\n var first_index_after_scroll_adjustment = real_scroll_top === 0\r\n ? 0\r\n : Math$floor(real_scroll_top / itemHeight);\r\n if (first_index_after_scroll_adjustment + newViewCount >= newArraySize) {\r\n first_index_after_scroll_adjustment = Math$max(0, newArraySize - newViewCount);\r\n }\r\n var top_buffer_item_count_after_scroll_adjustment = first_index_after_scroll_adjustment;\r\n var bot_buffer_item_count_after_scroll_adjustment = Math$max(0, newArraySize - top_buffer_item_count_after_scroll_adjustment - newViewCount);\r\n repeat.$first = first_index_after_scroll_adjustment;\r\n repeat.topBufferHeight = top_buffer_item_count_after_scroll_adjustment * itemHeight;\r\n repeat.bottomBufferHeight = bot_buffer_item_count_after_scroll_adjustment * itemHeight;\r\n repeat._handlingMutations = false;\r\n repeat.revertScrollCheckGuard();\r\n repeat.updateBufferElements();\r\n this.updateAllViews(repeat, 0);\r\n };\r\n return ArrayVirtualRepeatStrategy;\r\n}(ArrayRepeatStrategy));\n\nvar NullVirtualRepeatStrategy = (function (_super) {\r\n __extends(NullVirtualRepeatStrategy, _super);\r\n function NullVirtualRepeatStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n NullVirtualRepeatStrategy.prototype.createFirstRow = function () {\r\n return null;\r\n };\r\n NullVirtualRepeatStrategy.prototype.count = function (items) {\r\n return 0;\r\n };\r\n NullVirtualRepeatStrategy.prototype.getViewRange = function (repeat, scrollerInfo) {\r\n return [0, 0];\r\n };\r\n NullVirtualRepeatStrategy.prototype.updateBuffers = function (repeat, firstIndex) { };\r\n NullVirtualRepeatStrategy.prototype.onAttached = function () { };\r\n NullVirtualRepeatStrategy.prototype.isNearTop = function () {\r\n return false;\r\n };\r\n NullVirtualRepeatStrategy.prototype.isNearBottom = function () {\r\n return false;\r\n };\r\n NullVirtualRepeatStrategy.prototype.initCalculation = function (repeat, items) {\r\n repeat.itemHeight\r\n = repeat.minViewsRequired\r\n = 0;\r\n return 2;\r\n };\r\n NullVirtualRepeatStrategy.prototype.instanceMutated = function () { };\r\n NullVirtualRepeatStrategy.prototype.instanceChanged = function (repeat) {\r\n repeat.removeAllViews(true, false);\r\n repeat.resetCalculation();\r\n };\r\n NullVirtualRepeatStrategy.prototype.remeasure = function (repeat) { };\r\n NullVirtualRepeatStrategy.prototype.updateAllViews = function () { };\r\n NullVirtualRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n };\r\n return NullVirtualRepeatStrategy;\r\n}(NullRepeatStrategy));\n\nvar VirtualRepeatStrategyLocator = (function () {\r\n function VirtualRepeatStrategyLocator() {\r\n this.matchers = [];\r\n this.strategies = [];\r\n this.addStrategy(function (items) { return items === null || items === undefined; }, new NullVirtualRepeatStrategy());\r\n this.addStrategy(function (items) { return items instanceof Array; }, new ArrayVirtualRepeatStrategy());\r\n }\r\n VirtualRepeatStrategyLocator.prototype.addStrategy = function (matcher, strategy) {\r\n this.matchers.push(matcher);\r\n this.strategies.push(strategy);\r\n };\r\n VirtualRepeatStrategyLocator.prototype.getStrategy = function (items) {\r\n var matchers = this.matchers;\r\n for (var i = 0, ii = matchers.length; i < ii; ++i) {\r\n if (matchers[i](items)) {\r\n return this.strategies[i];\r\n }\r\n }\r\n return null;\r\n };\r\n return VirtualRepeatStrategyLocator;\r\n}());\n\nvar DefaultTemplateStrategy = (function () {\r\n function DefaultTemplateStrategy() {\r\n }\r\n DefaultTemplateStrategy.prototype.getScrollContainer = function (element) {\r\n return getScrollerElement(element);\r\n };\r\n DefaultTemplateStrategy.prototype.moveViewFirst = function (view, topBuffer) {\r\n insertBeforeNode(view, DOM.nextElementSibling(topBuffer));\r\n };\r\n DefaultTemplateStrategy.prototype.moveViewLast = function (view, bottomBuffer) {\r\n var previousSibling = bottomBuffer.previousSibling;\r\n var referenceNode = previousSibling.nodeType === 8 && previousSibling.data === 'anchor' ? previousSibling : bottomBuffer;\r\n insertBeforeNode(view, referenceNode);\r\n };\r\n DefaultTemplateStrategy.prototype.createBuffers = function (element) {\r\n var parent = element.parentNode;\r\n return [\r\n parent.insertBefore(DOM.createElement('div'), element),\r\n parent.insertBefore(DOM.createElement('div'), element.nextSibling),\r\n ];\r\n };\r\n DefaultTemplateStrategy.prototype.removeBuffers = function (el, topBuffer, bottomBuffer) {\r\n var parent = el.parentNode;\r\n parent.removeChild(topBuffer);\r\n parent.removeChild(bottomBuffer);\r\n };\r\n DefaultTemplateStrategy.prototype.getFirstElement = function (topBuffer, bottomBuffer) {\r\n var firstEl = topBuffer.nextElementSibling;\r\n return firstEl === bottomBuffer ? null : firstEl;\r\n };\r\n DefaultTemplateStrategy.prototype.getLastElement = function (topBuffer, bottomBuffer) {\r\n var lastEl = bottomBuffer.previousElementSibling;\r\n return lastEl === topBuffer ? null : lastEl;\r\n };\r\n return DefaultTemplateStrategy;\r\n}());\n\nvar BaseTableTemplateStrategy = (function (_super) {\r\n __extends(BaseTableTemplateStrategy, _super);\r\n function BaseTableTemplateStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BaseTableTemplateStrategy.prototype.getScrollContainer = function (element) {\r\n return getScrollerElement(this.getTable(element));\r\n };\r\n BaseTableTemplateStrategy.prototype.createBuffers = function (element) {\r\n var parent = element.parentNode;\r\n return [\r\n parent.insertBefore(DOM.createElement('tr'), element),\r\n parent.insertBefore(DOM.createElement('tr'), element.nextSibling),\r\n ];\r\n };\r\n return BaseTableTemplateStrategy;\r\n}(DefaultTemplateStrategy));\r\nvar TableBodyStrategy = (function (_super) {\r\n __extends(TableBodyStrategy, _super);\r\n function TableBodyStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TableBodyStrategy.prototype.getTable = function (element) {\r\n return element.parentNode;\r\n };\r\n return TableBodyStrategy;\r\n}(BaseTableTemplateStrategy));\r\nvar TableRowStrategy = (function (_super) {\r\n __extends(TableRowStrategy, _super);\r\n function TableRowStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TableRowStrategy.prototype.getTable = function (element) {\r\n return element.parentNode.parentNode;\r\n };\r\n return TableRowStrategy;\r\n}(BaseTableTemplateStrategy));\n\nvar ListTemplateStrategy = (function (_super) {\r\n __extends(ListTemplateStrategy, _super);\r\n function ListTemplateStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ListTemplateStrategy.prototype.createBuffers = function (element) {\r\n var parent = element.parentNode;\r\n return [\r\n parent.insertBefore(DOM.createElement('li'), element),\r\n parent.insertBefore(DOM.createElement('li'), element.nextSibling),\r\n ];\r\n };\r\n return ListTemplateStrategy;\r\n}(DefaultTemplateStrategy));\n\nvar TemplateStrategyLocator = (function () {\r\n function TemplateStrategyLocator(container) {\r\n this.container = container;\r\n }\r\n TemplateStrategyLocator.prototype.getStrategy = function (element) {\r\n var parent = element.parentNode;\r\n var container = this.container;\r\n if (parent === null) {\r\n return container.get(DefaultTemplateStrategy);\r\n }\r\n var parentTagName = parent.tagName;\r\n if (parentTagName === 'TBODY' || parentTagName === 'THEAD' || parentTagName === 'TFOOT') {\r\n return container.get(TableRowStrategy);\r\n }\r\n if (parentTagName === 'TABLE') {\r\n return container.get(TableBodyStrategy);\r\n }\r\n if (parentTagName === 'OL' || parentTagName === 'UL') {\r\n return container.get(ListTemplateStrategy);\r\n }\r\n return container.get(DefaultTemplateStrategy);\r\n };\r\n TemplateStrategyLocator.inject = [Container];\r\n return TemplateStrategyLocator;\r\n}());\n\nvar VirtualizationEvents = Object.assign(Object.create(null), {\r\n scrollerSizeChange: 'virtual-repeat-scroller-size-changed',\r\n itemSizeChange: 'virtual-repeat-item-size-changed',\r\n});\n\nvar getResizeObserverClass = function () { return PLATFORM.global.ResizeObserver; };\n\nvar VirtualRepeat = (function (_super) {\r\n __extends(VirtualRepeat, _super);\r\n function VirtualRepeat(element, viewFactory, instruction, viewSlot, viewResources, observerLocator, collectionStrategyLocator, templateStrategyLocator) {\r\n var _this = _super.call(this, {\r\n local: 'item',\r\n viewsRequireLifecycle: viewsRequireLifecycle(viewFactory),\r\n }) || this;\r\n _this.$first = 0;\r\n _this._isAttached = false;\r\n _this._ticking = false;\r\n _this._calledGetMore = false;\r\n _this._skipNextScrollHandle = false;\r\n _this._handlingMutations = false;\r\n _this._lastGetMore = 0;\r\n _this.element = element;\r\n _this.viewFactory = viewFactory;\r\n _this.instruction = instruction;\r\n _this.viewSlot = viewSlot;\r\n _this.lookupFunctions = viewResources['lookupFunctions'];\r\n _this.observerLocator = observerLocator;\r\n _this.taskQueue = observerLocator.taskQueue;\r\n _this.strategyLocator = collectionStrategyLocator;\r\n _this.templateStrategyLocator = templateStrategyLocator;\r\n _this.edgeDistance = 5;\r\n _this.sourceExpression = getItemsSourceExpression(_this.instruction, 'virtual-repeat.for');\r\n _this.isOneTime = isOneTime(_this.sourceExpression);\r\n _this.topBufferHeight\r\n = _this.bottomBufferHeight\r\n = _this.itemHeight\r\n = _this.distanceToTop\r\n = 0;\r\n _this.revertScrollCheckGuard = function () {\r\n _this._ticking = false;\r\n };\r\n _this._onScroll = _this._onScroll.bind(_this);\r\n return _this;\r\n }\r\n VirtualRepeat.inject = function () {\r\n return [\r\n DOM.Element,\r\n BoundViewFactory,\r\n TargetInstruction,\r\n ViewSlot,\r\n ViewResources,\r\n ObserverLocator,\r\n VirtualRepeatStrategyLocator,\r\n TemplateStrategyLocator,\r\n ];\r\n };\r\n VirtualRepeat.$resource = function () {\r\n return {\r\n type: 'attribute',\r\n name: 'virtual-repeat',\r\n templateController: true,\r\n bindables: ['items', 'local'],\r\n };\r\n };\r\n VirtualRepeat.prototype.bind = function (bindingContext, overrideContext) {\r\n this.scope = { bindingContext: bindingContext, overrideContext: overrideContext };\r\n };\r\n VirtualRepeat.prototype.attached = function () {\r\n var _this = this;\r\n this._isAttached = true;\r\n var element = this.element;\r\n var templateStrategy = this.templateStrategy = this.templateStrategyLocator.getStrategy(element);\r\n var scrollerEl = this.scrollerEl = templateStrategy.getScrollContainer(element);\r\n var _a = templateStrategy.createBuffers(element), topBufferEl = _a[0], bottomBufferEl = _a[1];\r\n var isFixedHeightContainer = scrollerEl !== htmlElement;\r\n var scrollListener = this._onScroll;\r\n this.topBufferEl = topBufferEl;\r\n this.bottomBufferEl = bottomBufferEl;\r\n this.itemsChanged();\r\n this._currScrollerInfo = this.getScrollerInfo();\r\n if (isFixedHeightContainer) {\r\n scrollerEl.addEventListener('scroll', scrollListener);\r\n }\r\n else {\r\n var firstElement = templateStrategy.getFirstElement(topBufferEl, bottomBufferEl);\r\n this.distanceToTop = firstElement === null ? 0 : getElementDistanceToTopOfDocument(topBufferEl);\r\n DOM.addEventListener('scroll', scrollListener, false);\r\n this._calcDistanceToTopInterval = PLATFORM.global.setInterval(function () {\r\n var prevDistanceToTop = _this.distanceToTop;\r\n var currDistanceToTop = getElementDistanceToTopOfDocument(topBufferEl);\r\n _this.distanceToTop = currDistanceToTop;\r\n if (prevDistanceToTop !== currDistanceToTop) {\r\n var currentScrollerInfo = _this.getScrollerInfo();\r\n var prevScrollerInfo = _this._currScrollerInfo;\r\n _this._currScrollerInfo = currentScrollerInfo;\r\n _this._handleScroll(currentScrollerInfo, prevScrollerInfo);\r\n }\r\n }, 500);\r\n }\r\n this.strategy.onAttached(this);\r\n };\r\n VirtualRepeat.prototype.call = function (context, changes) {\r\n this[context](this.items, changes);\r\n };\r\n VirtualRepeat.prototype.detached = function () {\r\n var scrollCt = this.scrollerEl;\r\n var scrollListener = this._onScroll;\r\n if (hasOverflowScroll(scrollCt)) {\r\n scrollCt.removeEventListener('scroll', scrollListener);\r\n }\r\n else {\r\n DOM.removeEventListener('scroll', scrollListener, false);\r\n }\r\n this.unobserveScroller();\r\n this._currScrollerContentRect = undefined;\r\n this._isAttached\r\n = false;\r\n this._unsubscribeCollection();\r\n this.resetCalculation();\r\n this.templateStrategy.removeBuffers(this.element, this.topBufferEl, this.bottomBufferEl);\r\n this.topBufferEl = this.bottomBufferEl = this.scrollerEl = null;\r\n this.removeAllViews(true, false);\r\n var $clearInterval = PLATFORM.global.clearInterval;\r\n $clearInterval(this._calcDistanceToTopInterval);\r\n $clearInterval(this._sizeInterval);\r\n this.distanceToTop\r\n = this._sizeInterval\r\n = this._calcDistanceToTopInterval = 0;\r\n };\r\n VirtualRepeat.prototype.unbind = function () {\r\n this.scope = null;\r\n this.items = null;\r\n };\r\n VirtualRepeat.prototype.itemsChanged = function () {\r\n var _this = this;\r\n this._unsubscribeCollection();\r\n if (!this.scope || !this._isAttached) {\r\n return;\r\n }\r\n var items = this.items;\r\n var strategy = this.strategy = this.strategyLocator.getStrategy(items);\r\n if (strategy === null) {\r\n throw new Error('Value is not iterateable for virtual repeat.');\r\n }\r\n if (!this.isOneTime && !this._observeInnerCollection()) {\r\n this._observeCollection();\r\n }\r\n var calculationSignals = strategy.initCalculation(this, items);\r\n strategy.instanceChanged(this, items, this.$first);\r\n if (calculationSignals & 1) {\r\n this.resetCalculation();\r\n }\r\n if ((calculationSignals & 2) === 0) {\r\n var _a = PLATFORM.global, $setInterval = _a.setInterval, $clearInterval_1 = _a.clearInterval;\r\n $clearInterval_1(this._sizeInterval);\r\n this._sizeInterval = $setInterval(function () {\r\n if (_this.items) {\r\n var firstView = _this.firstView() || _this.strategy.createFirstRow(_this);\r\n var newCalcSize = calcOuterHeight(firstView.firstChild);\r\n if (newCalcSize > 0) {\r\n $clearInterval_1(_this._sizeInterval);\r\n _this.itemsChanged();\r\n }\r\n }\r\n else {\r\n $clearInterval_1(_this._sizeInterval);\r\n }\r\n }, 500);\r\n }\r\n if (calculationSignals & 4) {\r\n this.observeScroller(this.scrollerEl);\r\n }\r\n };\r\n VirtualRepeat.prototype.handleCollectionMutated = function (collection, changes) {\r\n if (this._ignoreMutation) {\r\n return;\r\n }\r\n this._handlingMutations = true;\r\n this.strategy.instanceMutated(this, collection, changes);\r\n };\r\n VirtualRepeat.prototype.handleInnerCollectionMutated = function (collection, changes) {\r\n var _this = this;\r\n if (this._ignoreMutation) {\r\n return;\r\n }\r\n this._ignoreMutation = true;\r\n var newItems = this.sourceExpression.evaluate(this.scope, this.lookupFunctions);\r\n this.taskQueue.queueMicroTask(function () { return _this._ignoreMutation = false; });\r\n if (newItems === this.items) {\r\n this.itemsChanged();\r\n }\r\n else {\r\n this.items = newItems;\r\n }\r\n };\r\n VirtualRepeat.prototype.enableScroll = function () {\r\n this._ticking = false;\r\n this._handlingMutations = false;\r\n this._skipNextScrollHandle = false;\r\n };\r\n VirtualRepeat.prototype.getScroller = function () {\r\n return this.scrollerEl;\r\n };\r\n VirtualRepeat.prototype.getScrollerInfo = function () {\r\n var scroller = this.scrollerEl;\r\n return {\r\n scroller: scroller,\r\n scrollTop: scroller.scrollTop,\r\n height: scroller === htmlElement\r\n ? innerHeight\r\n : calcScrollHeight(scroller),\r\n };\r\n };\r\n VirtualRepeat.prototype.resetCalculation = function () {\r\n this.$first\r\n = this.topBufferHeight\r\n = this.bottomBufferHeight\r\n = this.itemHeight\r\n = this.minViewsRequired = 0;\r\n this._ignoreMutation\r\n = this._handlingMutations\r\n = this._ticking = false;\r\n this.updateBufferElements(true);\r\n };\r\n VirtualRepeat.prototype._onScroll = function () {\r\n var _this = this;\r\n var isHandlingMutations = this._handlingMutations;\r\n if (!this._ticking && !isHandlingMutations) {\r\n var prevScrollerInfo_1 = this._currScrollerInfo;\r\n var currentScrollerInfo_1 = this.getScrollerInfo();\r\n this._currScrollerInfo = currentScrollerInfo_1;\r\n this.taskQueue.queueMicroTask(function () {\r\n _this._ticking = false;\r\n _this._handleScroll(currentScrollerInfo_1, prevScrollerInfo_1);\r\n });\r\n this._ticking = true;\r\n }\r\n if (isHandlingMutations) {\r\n this._handlingMutations = false;\r\n }\r\n };\r\n VirtualRepeat.prototype._handleScroll = function (current_scroller_info, prev_scroller_info) {\r\n if (!this._isAttached) {\r\n return;\r\n }\r\n if (this._skipNextScrollHandle) {\r\n this._skipNextScrollHandle = false;\r\n return;\r\n }\r\n var items = this.items;\r\n if (!items) {\r\n return;\r\n }\r\n var strategy = this.strategy;\r\n var old_range_start_index = this.$first;\r\n var old_range_end_index = this.lastViewIndex();\r\n var _a = strategy.getViewRange(this, current_scroller_info), new_range_start_index = _a[0], new_range_end_index = _a[1];\r\n var scrolling_state = new_range_start_index > old_range_start_index\r\n ? 1\r\n : new_range_start_index < old_range_start_index\r\n ? 2\r\n : 0;\r\n var didMovedViews = 0;\r\n if (new_range_start_index >= old_range_start_index && old_range_end_index === new_range_end_index\r\n || new_range_end_index === old_range_end_index && old_range_end_index >= new_range_end_index) {\r\n if (new_range_start_index >= old_range_start_index && old_range_end_index === new_range_end_index) {\r\n if (strategy.isNearBottom(this, new_range_end_index)) {\r\n scrolling_state |= 8;\r\n }\r\n }\r\n else if (strategy.isNearTop(this, new_range_start_index)) {\r\n scrolling_state |= 4;\r\n }\r\n }\r\n else {\r\n if (new_range_start_index > old_range_start_index\r\n && old_range_end_index >= new_range_start_index\r\n && new_range_end_index >= old_range_end_index) {\r\n var views_to_move_count = new_range_start_index - old_range_start_index;\r\n this._moveViews(views_to_move_count, 1);\r\n didMovedViews = 1;\r\n if (strategy.isNearBottom(this, new_range_end_index)) {\r\n scrolling_state |= 8;\r\n }\r\n }\r\n else if (old_range_start_index > new_range_start_index\r\n && old_range_start_index <= new_range_end_index\r\n && old_range_end_index >= new_range_end_index) {\r\n var views_to_move_count = old_range_end_index - new_range_end_index;\r\n this._moveViews(views_to_move_count, -1);\r\n didMovedViews = 1;\r\n if (strategy.isNearTop(this, new_range_start_index)) {\r\n scrolling_state |= 4;\r\n }\r\n }\r\n else if (old_range_end_index < new_range_start_index || old_range_start_index > new_range_end_index) {\r\n strategy.remeasure(this);\r\n if (old_range_end_index < new_range_start_index) {\r\n if (strategy.isNearBottom(this, new_range_end_index)) {\r\n scrolling_state |= 8;\r\n }\r\n }\r\n else if (strategy.isNearTop(this, new_range_start_index)) {\r\n scrolling_state |= 4;\r\n }\r\n }\r\n else {\r\n if (old_range_start_index !== new_range_start_index || old_range_end_index !== new_range_end_index) {\r\n console.log(\"[!] Scroll intersection not handled. With indices: \"\r\n + \"new [\".concat(new_range_start_index, \", \").concat(new_range_end_index, \"] / old [\").concat(old_range_start_index, \", \").concat(old_range_end_index, \"]\"));\r\n strategy.remeasure(this);\r\n }\r\n else {\r\n console.log('[!] Scroll handled, and there\\'s no changes');\r\n }\r\n }\r\n }\r\n if (didMovedViews === 1) {\r\n this.$first = new_range_start_index;\r\n strategy.updateBuffers(this, new_range_start_index);\r\n }\r\n if ((scrolling_state & 9) === 9\r\n || (scrolling_state & 6) === 6) {\r\n this.getMore(new_range_start_index, (scrolling_state & 4) > 0, (scrolling_state & 8) > 0);\r\n }\r\n else {\r\n var scroll_top_delta = current_scroller_info.scrollTop - prev_scroller_info.scrollTop;\r\n scrolling_state = scroll_top_delta > 0\r\n ? 1\r\n : scroll_top_delta < 0\r\n ? 2\r\n : 0;\r\n if (strategy.isNearTop(this, new_range_start_index)) {\r\n scrolling_state |= 4;\r\n }\r\n if (strategy.isNearBottom(this, new_range_end_index)) {\r\n scrolling_state |= 8;\r\n }\r\n if ((scrolling_state & 9) === 9\r\n || (scrolling_state & 6) === 6) {\r\n this.getMore(new_range_start_index, (scrolling_state & 4) > 0, (scrolling_state & 8) > 0);\r\n }\r\n }\r\n };\r\n VirtualRepeat.prototype._moveViews = function (viewsCount, direction) {\r\n var repeat = this;\r\n if (direction === -1) {\r\n var startIndex = repeat.firstViewIndex();\r\n while (viewsCount--) {\r\n var view = repeat.lastView();\r\n rebindAndMoveView(repeat, view, --startIndex, false);\r\n }\r\n }\r\n else {\r\n var lastIndex = repeat.lastViewIndex();\r\n while (viewsCount--) {\r\n var view = repeat.view(0);\r\n rebindAndMoveView(repeat, view, ++lastIndex, true);\r\n }\r\n }\r\n };\r\n VirtualRepeat.prototype.getMore = function (topIndex, isNearTop, isNearBottom, force) {\r\n var _this = this;\r\n if (isNearTop || isNearBottom || force) {\r\n if (!this._calledGetMore) {\r\n var executeGetMore = function (time) {\r\n if (time - _this._lastGetMore < 16) {\r\n return;\r\n }\r\n _this._lastGetMore = time;\r\n _this._calledGetMore = true;\r\n var revertCalledGetMore = function () {\r\n _this._calledGetMore = false;\r\n };\r\n var firstView = _this.firstView();\r\n if (firstView === null) {\r\n revertCalledGetMore();\r\n return;\r\n }\r\n var firstViewElement = firstView.firstChild;\r\n var scrollNextAttrName = 'infinite-scroll-next';\r\n var func = firstViewElement\r\n && firstViewElement.au\r\n && firstViewElement.au[scrollNextAttrName]\r\n ? firstViewElement.au[scrollNextAttrName].instruction.attributes[scrollNextAttrName]\r\n : undefined;\r\n if (func === undefined) {\r\n revertCalledGetMore();\r\n }\r\n else {\r\n var scrollContext = {\r\n topIndex: topIndex,\r\n isAtBottom: isNearBottom,\r\n isAtTop: isNearTop,\r\n };\r\n var overrideContext = _this.scope.overrideContext;\r\n overrideContext.$scrollContext = scrollContext;\r\n if (typeof func === 'string') {\r\n var bindingContext = overrideContext.bindingContext;\r\n var getMoreFuncName = firstView.firstChild.getAttribute(scrollNextAttrName);\r\n var funcCall = bindingContext[getMoreFuncName];\r\n if (typeof funcCall === 'function') {\r\n revertCalledGetMore();\r\n var result = funcCall.call(bindingContext, topIndex, isNearBottom, isNearTop);\r\n if (result instanceof Promise) {\r\n _this._calledGetMore = true;\r\n return result.then(function () {\r\n revertCalledGetMore();\r\n });\r\n }\r\n }\r\n else {\r\n throw new Error(\"'\".concat(scrollNextAttrName, \"' must be a function or evaluate to one\"));\r\n }\r\n }\r\n else if (func.sourceExpression) {\r\n revertCalledGetMore();\r\n return func.sourceExpression.evaluate(_this.scope);\r\n }\r\n else {\r\n throw new Error(\"'\".concat(scrollNextAttrName, \"' must be a function or evaluate to one\"));\r\n }\r\n }\r\n };\r\n $raf(executeGetMore);\r\n }\r\n }\r\n };\r\n VirtualRepeat.prototype.updateBufferElements = function (skipUpdate) {\r\n this.topBufferEl.style.height = \"\".concat(this.topBufferHeight, \"px\");\r\n this.bottomBufferEl.style.height = \"\".concat(this.bottomBufferHeight, \"px\");\r\n if (skipUpdate) {\r\n this._ticking = true;\r\n $raf(this.revertScrollCheckGuard);\r\n }\r\n };\r\n VirtualRepeat.prototype._unsubscribeCollection = function () {\r\n var collectionObserver = this.collectionObserver;\r\n if (collectionObserver) {\r\n collectionObserver.unsubscribe(this.callContext, this);\r\n this.collectionObserver = this.callContext = null;\r\n }\r\n };\r\n VirtualRepeat.prototype.firstView = function () {\r\n return this.view(0);\r\n };\r\n VirtualRepeat.prototype.lastView = function () {\r\n return this.view(this.viewCount() - 1);\r\n };\r\n VirtualRepeat.prototype.firstViewIndex = function () {\r\n var firstView = this.firstView();\r\n return firstView === null ? -1 : firstView.overrideContext.$index;\r\n };\r\n VirtualRepeat.prototype.lastViewIndex = function () {\r\n var lastView = this.lastView();\r\n return lastView === null ? -1 : lastView.overrideContext.$index;\r\n };\r\n VirtualRepeat.prototype.observeScroller = function (scrollerEl) {\r\n var _this = this;\r\n var sizeChangeHandler = function (newRect) {\r\n $raf(function () {\r\n if (newRect === _this._currScrollerContentRect) {\r\n _this.itemsChanged();\r\n }\r\n });\r\n };\r\n var ResizeObserverConstructor = getResizeObserverClass();\r\n if (typeof ResizeObserverConstructor === 'function') {\r\n var observer = this._scrollerResizeObserver;\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n observer = this._scrollerResizeObserver = new ResizeObserverConstructor(function (entries) {\r\n var oldRect = _this._currScrollerContentRect;\r\n var newRect = entries[0].contentRect;\r\n _this._currScrollerContentRect = newRect;\r\n if (oldRect === undefined || newRect.height !== oldRect.height || newRect.width !== oldRect.width) {\r\n sizeChangeHandler(newRect);\r\n }\r\n });\r\n observer.observe(scrollerEl);\r\n }\r\n var elEvents = this._scrollerEvents;\r\n if (elEvents) {\r\n elEvents.disposeAll();\r\n }\r\n var sizeChangeEventsHandler = function () {\r\n $raf(function () {\r\n _this.itemsChanged();\r\n });\r\n };\r\n elEvents = this._scrollerEvents = new ElementEvents(scrollerEl);\r\n elEvents.subscribe(VirtualizationEvents.scrollerSizeChange, sizeChangeEventsHandler, false);\r\n elEvents.subscribe(VirtualizationEvents.itemSizeChange, sizeChangeEventsHandler, false);\r\n };\r\n VirtualRepeat.prototype.unobserveScroller = function () {\r\n var observer = this._scrollerResizeObserver;\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n var scrollerEvents = this._scrollerEvents;\r\n if (scrollerEvents) {\r\n scrollerEvents.disposeAll();\r\n }\r\n this._scrollerResizeObserver\r\n = this._scrollerEvents = undefined;\r\n };\r\n VirtualRepeat.prototype._observeInnerCollection = function () {\r\n var items = this._getInnerCollection();\r\n var strategy = this.strategyLocator.getStrategy(items);\r\n if (!strategy) {\r\n return false;\r\n }\r\n var collectionObserver = strategy.getCollectionObserver(this.observerLocator, items);\r\n if (!collectionObserver) {\r\n return false;\r\n }\r\n var context = \"handleInnerCollectionMutated\";\r\n this.collectionObserver = collectionObserver;\r\n this.callContext = context;\r\n collectionObserver.subscribe(context, this);\r\n return true;\r\n };\r\n VirtualRepeat.prototype._getInnerCollection = function () {\r\n var expression = unwrapExpression(this.sourceExpression);\r\n if (!expression) {\r\n return null;\r\n }\r\n return expression.evaluate(this.scope, null);\r\n };\r\n VirtualRepeat.prototype._observeCollection = function () {\r\n var collectionObserver = this.strategy.getCollectionObserver(this.observerLocator, this.items);\r\n if (collectionObserver) {\r\n this.callContext = \"handleCollectionMutated\";\r\n this.collectionObserver = collectionObserver;\r\n collectionObserver.subscribe(this.callContext, this);\r\n }\r\n };\r\n VirtualRepeat.prototype.viewCount = function () {\r\n return this.viewSlot.children.length;\r\n };\r\n VirtualRepeat.prototype.views = function () {\r\n return this.viewSlot.children;\r\n };\r\n VirtualRepeat.prototype.view = function (index) {\r\n var viewSlot = this.viewSlot;\r\n return index < 0 || index > viewSlot.children.length - 1 ? null : viewSlot.children[index];\r\n };\r\n VirtualRepeat.prototype.addView = function (bindingContext, overrideContext) {\r\n var view = this.viewFactory.create();\r\n view.bind(bindingContext, overrideContext);\r\n this.viewSlot.add(view);\r\n return view;\r\n };\r\n VirtualRepeat.prototype.insertView = function (index, bindingContext, overrideContext) {\r\n var view = this.viewFactory.create();\r\n view.bind(bindingContext, overrideContext);\r\n this.viewSlot.insert(index, view);\r\n };\r\n VirtualRepeat.prototype.removeAllViews = function (returnToCache, skipAnimation) {\r\n return this.viewSlot.removeAll(returnToCache, skipAnimation);\r\n };\r\n VirtualRepeat.prototype.removeView = function (index, returnToCache, skipAnimation) {\r\n return this.viewSlot.removeAt(index, returnToCache, skipAnimation);\r\n };\r\n VirtualRepeat.prototype.updateBindings = function (view) {\r\n var bindings = view.bindings;\r\n var j = bindings.length;\r\n while (j--) {\r\n updateOneTimeBinding(bindings[j]);\r\n }\r\n var controllers = view.controllers;\r\n j = controllers.length;\r\n while (j--) {\r\n var boundProperties = controllers[j].boundProperties;\r\n var k = boundProperties.length;\r\n while (k--) {\r\n var binding = boundProperties[k].binding;\r\n updateOneTimeBinding(binding);\r\n }\r\n }\r\n };\r\n return VirtualRepeat;\r\n}(AbstractRepeater));\n\nvar InfiniteScrollNext = (function () {\r\n function InfiniteScrollNext() {\r\n }\r\n InfiniteScrollNext.$resource = function () {\r\n return {\r\n type: 'attribute',\r\n name: 'infinite-scroll-next',\r\n };\r\n };\r\n return InfiniteScrollNext;\r\n}());\n\nfunction configure(config) {\r\n config.globalResources(VirtualRepeat, InfiniteScrollNext);\r\n}\n\nexport { InfiniteScrollNext, VirtualRepeat, VirtualizationEvents, configure };\n//# sourceMappingURL=aurelia-ui-virtualization.js.map\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","rebindView","repeat","view","collectionIndex","collection","bindingContext","local","overrideContext","length","rebindAndMoveView","index","moveToBottom","items","viewSlot","children","push","shift","templateStrategy","moveViewLast","bottomBufferEl","unshift","splice","moveViewFirst","topBufferEl","calcMinViewsRequired","scrollerHeight","itemHeight","Math$floor","Math$abs","Math","abs","Math$max","max","Math$min","min","Math$round","round","floor","$isNaN","isNaN","doc","document","htmlElement","documentElement","$raf","requestAnimationFrame","bind","window","getScrollerElement","element","current","parentNode","hasOverflowScroll","scrollingElement","getElementDistanceToTopOfDocument","box","getBoundingClientRect","scrollTop","pageYOffset","clientTop","top","style","getComputedStyle","overflowY","overflow","getStyleValues","styles","_i","arguments","currentStyle","value","styleValue","i","ii","parseFloat","calcOuterHeight","height","insertBeforeNode","bottomBuffer","insertBefore","lastChild","getDistanceToParent","child","parent","offsetParent","childOffsetTop","offsetTop","contains","ArrayVirtualRepeatStrategy","_super","apply","createFirstRow","addView","count","initCalculation","itemCount","scrollerInfo","getScrollerInfo","existingViewCount","viewCount","firstView","firstChild","scroll_el_height","minViewsRequired","onAttached","getMore","isNearBottom","lastViewIndex","getViewRange","scrollerEl","realScrollTop","scroller","topBufferDistance","scrollerScrollTop","distanceToTop","realViewCount","firstVisibleIndex","lastVisibleIndex","updateBuffers","firstIndex","topBufferHeight","bottomBufferHeight","updateBufferElements","isNearTop","edgeDistance","lastIndex","instanceChanged","first","_inPlaceProcessItems","_remeasure","$first","instanceMutated","array","splices","_standardProcessInstanceMutated","$repeat","currItemCount","removeAllViews","resetCalculation","__queuedSplices","__array","undefined","max_views_count","realViewsCount","removeView","currIndex","last","middle","$index","$middle","$last","odd","$odd","$even","updateBindings","minLength","_this","_a","removed","addedCount","slice","maybePromise","_runSplices","Promise","queuedSplices_1","runQueuedSplices_1","resolve","then","newArray","totalRemovedCount","totalAddedCount","spliceCount","newArraySize","allSplicesAreInplace","removedCount","viewIndex","insertView","firstIndexAfterMutation","originalSize","currViewCount","newViewCount","itemsChanged","all_splices_are_positive_and_before_view_port","every","enableScroll","scroller_scroll_top","top_buffer_distance","real_scroll_top","first_index_after_scroll_adjustment","s","viewsRequiredCount","newTopBufferItemCount","viewCountDelta","newBotBufferItemCount","updateAllViews","startIndex","viewLength","delta","remeasure","firstViewIndex","top_buffer_item_count_after_scroll_adjustment","bot_buffer_item_count_after_scroll_adjustment","_handlingMutations","revertScrollCheckGuard","NullVirtualRepeatStrategy","getCollectionObserver","observerLocator","VirtualRepeatStrategyLocator","matchers","strategies","addStrategy","matcher","strategy","getStrategy","DefaultTemplateStrategy","getScrollContainer","topBuffer","previousSibling","referenceNode","nodeType","data","createBuffers","nextSibling","removeBuffers","el","removeChild","getFirstElement","firstEl","nextElementSibling","getLastElement","lastEl","previousElementSibling","BaseTableTemplateStrategy","getTable","TableBodyStrategy","TableRowStrategy","ListTemplateStrategy","TemplateStrategyLocator","container","get","parentTagName","tagName","inject","VirtualizationEvents","assign","scrollerSizeChange","itemSizeChange","VirtualRepeat","viewFactory","instruction","viewResources","collectionStrategyLocator","templateStrategyLocator","viewsRequireLifecycle","_isAttached","_ticking","_calledGetMore","_skipNextScrollHandle","_lastGetMore","lookupFunctions","taskQueue","strategyLocator","sourceExpression","isOneTime","_onScroll","$resource","type","name","templateController","bindables","scope","attached","isFixedHeightContainer","scrollListener","_currScrollerInfo","addEventListener","firstElement","_calcDistanceToTopInterval","prevDistanceToTop","currDistanceToTop","currentScrollerInfo","prevScrollerInfo","_handleScroll","context","changes","detached","scrollCt","removeEventListener","unobserveScroller","_currScrollerContentRect","_unsubscribeCollection","$clearInterval","_sizeInterval","unbind","Error","_observeInnerCollection","_observeCollection","calculationSignals","$setInterval","setInterval","$clearInterval_1","clearInterval","observeScroller","handleCollectionMutated","_ignoreMutation","handleInnerCollectionMutated","newItems","evaluate","queueMicroTask","getScroller","innerHeight","isHandlingMutations","prevScrollerInfo_1","currentScrollerInfo_1","current_scroller_info","prev_scroller_info","old_range_start_index","old_range_end_index","new_range_start_index","new_range_end_index","scrolling_state","didMovedViews","views_to_move_count","_moveViews","console","log","concat","scroll_top_delta","viewsCount","direction","lastView","topIndex","force","time","revertCalledGetMore","firstViewElement","scrollNextAttrName","func","au","attributes","scrollContext","isAtBottom","isAtTop","$scrollContext","funcCall","getAttribute","result","skipUpdate","collectionObserver","unsubscribe","callContext","ResizeObserverConstructor","observer","_scrollerResizeObserver","disconnect","entries","oldRect","newRect","contentRect","width","sizeChangeHandler","observe","elEvents","_scrollerEvents","disposeAll","sizeChangeEventsHandler","subscribe","scrollerEvents","_getInnerCollection","expression","views","add","insert","returnToCache","skipAnimation","removeAll","removeAt","bindings","j","controllers","boundProperties","k","binding","InfiniteScrollNext","configure","config","globalResources"],"sourceRoot":""}