{"version":3,"file":"vendor.aurelia-ui-virtualization.9a05ffb083a6bf83.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","updateOverrideContext","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","createFullOverrideContext","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","ArrayRepeatStrategy","NullVirtualRepeatStrategy","getCollectionObserver","observerLocator","NullRepeatStrategy","VirtualRepeatStrategyLocator","matchers","strategies","addStrategy","matcher","strategy","getStrategy","DefaultTemplateStrategy","getScrollContainer","topBuffer","nextElementSibling","previousSibling","referenceNode","nodeType","data","createBuffers","createElement","nextSibling","removeBuffers","el","removeChild","getFirstElement","firstEl","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","getItemsSourceExpression","isOneTime","_onScroll","Element","$resource","type","name","templateController","bindables","scope","attached","isFixedHeightContainer","scrollListener","_currScrollerInfo","addEventListener","firstElement","_calcDistanceToTopInterval","global","setInterval","prevDistanceToTop","currDistanceToTop","currentScrollerInfo","prevScrollerInfo","_handleScroll","context","changes","detached","scrollCt","removeEventListener","unobserveScroller","_currScrollerContentRect","_unsubscribeCollection","$clearInterval","clearInterval","_sizeInterval","unbind","Error","_observeInnerCollection","_observeCollection","calculationSignals","$setInterval","$clearInterval_1","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","ResizeObserver","observer","_scrollerResizeObserver","disconnect","entries","oldRect","newRect","contentRect","width","sizeChangeHandler","observe","elEvents","_scrollerEvents","disposeAll","sizeChangeEventsHandler","subscribe","scrollerEvents","_getInnerCollection","expression","unwrapExpression","views","add","insert","returnToCache","skipAnimation","removeAll","removeAt","bindings","j","updateOneTimeBinding","controllers","boundProperties","k","binding","AbstractRepeater","InfiniteScrollNext","configure","config","globalResources"],"sourceRoot":""}