{"version":3,"sources":["node_modules/@tweenjs/tween.js/dist/tween.esm.js","node_modules/@iharbeck/ngx-virtual-scroller/fesm2022/iharbeck-ngx-virtual-scroller.mjs"],"sourcesContent":["/**\n * The Ease class provides a collection of easing functions for use with tween.js.\n */\nvar Easing = Object.freeze({\n Linear: Object.freeze({\n None: function (amount) {\n return amount;\n },\n In: function (amount) {\n return this.None(amount);\n },\n Out: function (amount) {\n return this.None(amount);\n },\n InOut: function (amount) {\n return this.None(amount);\n }\n }),\n Quadratic: Object.freeze({\n In: function (amount) {\n return amount * amount;\n },\n Out: function (amount) {\n return amount * (2 - amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount;\n }\n return -0.5 * (--amount * (amount - 2) - 1);\n }\n }),\n Cubic: Object.freeze({\n In: function (amount) {\n return amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount + 2);\n }\n }),\n Quartic: Object.freeze({\n In: function (amount) {\n return amount * amount * amount * amount;\n },\n Out: function (amount) {\n return 1 - --amount * amount * amount * amount;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount;\n }\n return -0.5 * ((amount -= 2) * amount * amount * amount - 2);\n }\n }),\n Quintic: Object.freeze({\n In: function (amount) {\n return amount * amount * amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2);\n }\n }),\n Sinusoidal: Object.freeze({\n In: function (amount) {\n return 1 - Math.sin((1.0 - amount) * Math.PI / 2);\n },\n Out: function (amount) {\n return Math.sin(amount * Math.PI / 2);\n },\n InOut: function (amount) {\n return 0.5 * (1 - Math.sin(Math.PI * (0.5 - amount)));\n }\n }),\n Exponential: Object.freeze({\n In: function (amount) {\n return amount === 0 ? 0 : Math.pow(1024, amount - 1);\n },\n Out: function (amount) {\n return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount);\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n if ((amount *= 2) < 1) {\n return 0.5 * Math.pow(1024, amount - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2);\n }\n }),\n Circular: Object.freeze({\n In: function (amount) {\n return 1 - Math.sqrt(1 - amount * amount);\n },\n Out: function (amount) {\n return Math.sqrt(1 - --amount * amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - amount * amount) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1);\n }\n }),\n Elastic: Object.freeze({\n In: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n },\n Out: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1;\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n amount *= 2;\n if (amount < 1) {\n return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n }\n return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1;\n }\n }),\n Back: Object.freeze({\n In: function (amount) {\n var s = 1.70158;\n return amount === 1 ? 1 : amount * amount * ((s + 1) * amount - s);\n },\n Out: function (amount) {\n var s = 1.70158;\n return amount === 0 ? 0 : --amount * amount * ((s + 1) * amount + s) + 1;\n },\n InOut: function (amount) {\n var s = 1.70158 * 1.525;\n if ((amount *= 2) < 1) {\n return 0.5 * (amount * amount * ((s + 1) * amount - s));\n }\n return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2);\n }\n }),\n Bounce: Object.freeze({\n In: function (amount) {\n return 1 - Easing.Bounce.Out(1 - amount);\n },\n Out: function (amount) {\n if (amount < 1 / 2.75) {\n return 7.5625 * amount * amount;\n } else if (amount < 2 / 2.75) {\n return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;\n } else if (amount < 2.5 / 2.75) {\n return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;\n } else {\n return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375;\n }\n },\n InOut: function (amount) {\n if (amount < 0.5) {\n return Easing.Bounce.In(amount * 2) * 0.5;\n }\n return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5;\n }\n }),\n generatePow: function (power) {\n if (power === void 0) {\n power = 4;\n }\n power = power < Number.EPSILON ? Number.EPSILON : power;\n power = power > 10000 ? 10000 : power;\n return {\n In: function (amount) {\n return Math.pow(amount, power);\n },\n Out: function (amount) {\n return 1 - Math.pow(1 - amount, power);\n },\n InOut: function (amount) {\n if (amount < 0.5) {\n return Math.pow(amount * 2, power) / 2;\n }\n return (1 - Math.pow(2 - amount * 2, power)) / 2 + 0.5;\n }\n };\n }\n});\nvar now = function () {\n return performance.now();\n};\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nvar Group = /** @class */function () {\n function Group() {\n this._tweens = {};\n this._tweensAddedDuringUpdate = {};\n }\n Group.prototype.getAll = function () {\n var _this = this;\n return Object.keys(this._tweens).map(function (tweenId) {\n return _this._tweens[tweenId];\n });\n };\n Group.prototype.removeAll = function () {\n this._tweens = {};\n };\n Group.prototype.add = function (tween) {\n this._tweens[tween.getId()] = tween;\n this._tweensAddedDuringUpdate[tween.getId()] = tween;\n };\n Group.prototype.remove = function (tween) {\n delete this._tweens[tween.getId()];\n delete this._tweensAddedDuringUpdate[tween.getId()];\n };\n Group.prototype.update = function (time, preserve) {\n if (time === void 0) {\n time = now();\n }\n if (preserve === void 0) {\n preserve = false;\n }\n var tweenIds = Object.keys(this._tweens);\n if (tweenIds.length === 0) {\n return false;\n }\n // Tweens are updated in \"batches\". If you add a new tween during an\n // update, then the new tween will be updated in the next batch.\n // If you remove a tween during an update, it may or may not be updated.\n // However, if the removed tween was added during the current batch,\n // then it will not be updated.\n while (tweenIds.length > 0) {\n this._tweensAddedDuringUpdate = {};\n for (var i = 0; i < tweenIds.length; i++) {\n var tween = this._tweens[tweenIds[i]];\n var autoStart = !preserve;\n if (tween && tween.update(time, autoStart) === false && !preserve) {\n delete this._tweens[tweenIds[i]];\n }\n }\n tweenIds = Object.keys(this._tweensAddedDuringUpdate);\n }\n return true;\n };\n return Group;\n}();\n\n/**\n *\n */\nvar Interpolation = {\n Linear: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.Linear;\n if (k < 0) {\n return fn(v[0], v[1], f);\n }\n if (k > 1) {\n return fn(v[m], v[m - 1], m - f);\n }\n return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\n },\n Bezier: function (v, k) {\n var b = 0;\n var n = v.length - 1;\n var pw = Math.pow;\n var bn = Interpolation.Utils.Bernstein;\n for (var i = 0; i <= n; i++) {\n b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\n }\n return b;\n },\n CatmullRom: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.CatmullRom;\n if (v[0] === v[m]) {\n if (k < 0) {\n i = Math.floor(f = m * (1 + k));\n }\n return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\n } else {\n if (k < 0) {\n return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\n }\n if (k > 1) {\n return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\n }\n return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\n }\n },\n Utils: {\n Linear: function (p0, p1, t) {\n return (p1 - p0) * t + p0;\n },\n Bernstein: function (n, i) {\n var fc = Interpolation.Utils.Factorial;\n return fc(n) / fc(i) / fc(n - i);\n },\n Factorial: function () {\n var a = [1];\n return function (n) {\n var s = 1;\n if (a[n]) {\n return a[n];\n }\n for (var i = n; i > 1; i--) {\n s *= i;\n }\n a[n] = s;\n return s;\n };\n }(),\n CatmullRom: function (p0, p1, p2, p3, t) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n var t2 = t * t;\n var t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n }\n }\n};\n\n/**\n * Utils\n */\nvar Sequence = /** @class */function () {\n function Sequence() {}\n Sequence.nextId = function () {\n return Sequence._nextId++;\n };\n Sequence._nextId = 0;\n return Sequence;\n}();\nvar mainGroup = new Group();\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar Tween = /** @class */function () {\n function Tween(_object, _group) {\n if (_group === void 0) {\n _group = mainGroup;\n }\n this._object = _object;\n this._group = _group;\n this._isPaused = false;\n this._pauseStart = 0;\n this._valuesStart = {};\n this._valuesEnd = {};\n this._valuesStartRepeat = {};\n this._duration = 1000;\n this._isDynamic = false;\n this._initialRepeat = 0;\n this._repeat = 0;\n this._yoyo = false;\n this._isPlaying = false;\n this._reversed = false;\n this._delayTime = 0;\n this._startTime = 0;\n this._easingFunction = Easing.Linear.None;\n this._interpolationFunction = Interpolation.Linear;\n // eslint-disable-next-line\n this._chainedTweens = [];\n this._onStartCallbackFired = false;\n this._onEveryStartCallbackFired = false;\n this._id = Sequence.nextId();\n this._isChainStopped = false;\n this._propertiesAreSetUp = false;\n this._goToEnd = false;\n }\n Tween.prototype.getId = function () {\n return this._id;\n };\n Tween.prototype.isPlaying = function () {\n return this._isPlaying;\n };\n Tween.prototype.isPaused = function () {\n return this._isPaused;\n };\n Tween.prototype.getDuration = function () {\n return this._duration;\n };\n Tween.prototype.to = function (target, duration) {\n if (duration === void 0) {\n duration = 1000;\n }\n if (this._isPlaying) throw new Error('Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.');\n this._valuesEnd = target;\n this._propertiesAreSetUp = false;\n this._duration = duration < 0 ? 0 : duration;\n return this;\n };\n Tween.prototype.duration = function (duration) {\n if (duration === void 0) {\n duration = 1000;\n }\n this._duration = duration < 0 ? 0 : duration;\n return this;\n };\n Tween.prototype.dynamic = function (dynamic) {\n if (dynamic === void 0) {\n dynamic = false;\n }\n this._isDynamic = dynamic;\n return this;\n };\n Tween.prototype.start = function (time, overrideStartingValues) {\n if (time === void 0) {\n time = now();\n }\n if (overrideStartingValues === void 0) {\n overrideStartingValues = false;\n }\n if (this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.add(this);\n this._repeat = this._initialRepeat;\n if (this._reversed) {\n // If we were reversed (f.e. using the yoyo feature) then we need to\n // flip the tween direction back to forward.\n this._reversed = false;\n for (var property in this._valuesStartRepeat) {\n this._swapEndStartRepeatValues(property);\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n }\n this._isPlaying = true;\n this._isPaused = false;\n this._onStartCallbackFired = false;\n this._onEveryStartCallbackFired = false;\n this._isChainStopped = false;\n this._startTime = time;\n this._startTime += this._delayTime;\n if (!this._propertiesAreSetUp || overrideStartingValues) {\n this._propertiesAreSetUp = true;\n // If dynamic is not enabled, clone the end values instead of using the passed-in end values.\n if (!this._isDynamic) {\n var tmp = {};\n for (var prop in this._valuesEnd) tmp[prop] = this._valuesEnd[prop];\n this._valuesEnd = tmp;\n }\n this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, overrideStartingValues);\n }\n return this;\n };\n Tween.prototype.startFromCurrentValues = function (time) {\n return this.start(time, true);\n };\n Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat, overrideStartingValues) {\n for (var property in _valuesEnd) {\n var startValue = _object[property];\n var startValueIsArray = Array.isArray(startValue);\n var propType = startValueIsArray ? 'array' : typeof startValue;\n var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]);\n // If `to()` specifies a property that doesn't exist in the source object,\n // we should not set that property in the object\n if (propType === 'undefined' || propType === 'function') {\n continue;\n }\n // Check if an Array was provided as property value\n if (isInterpolationList) {\n var endValues = _valuesEnd[property];\n if (endValues.length === 0) {\n continue;\n }\n // Handle an array of relative values.\n // Creates a local copy of the Array with the start value at the front\n var temp = [startValue];\n for (var i = 0, l = endValues.length; i < l; i += 1) {\n var value = this._handleRelativeValue(startValue, endValues[i]);\n if (isNaN(value)) {\n isInterpolationList = false;\n console.warn('Found invalid interpolation list. Skipping.');\n break;\n }\n temp.push(value);\n }\n if (isInterpolationList) {\n // if (_valuesStart[property] === undefined) { // handle end values only the first time. NOT NEEDED? setupProperties is now guarded by _propertiesAreSetUp.\n _valuesEnd[property] = temp;\n // }\n }\n }\n // handle the deepness of the values\n if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\n _valuesStart[property] = startValueIsArray ? [] : {};\n var nestedObject = startValue;\n for (var prop in nestedObject) {\n _valuesStart[property][prop] = nestedObject[prop];\n }\n // TODO? repeat nested values? And yoyo? And array values?\n _valuesStartRepeat[property] = startValueIsArray ? [] : {};\n var endValues = _valuesEnd[property];\n // If dynamic is not enabled, clone the end values instead of using the passed-in end values.\n if (!this._isDynamic) {\n var tmp = {};\n for (var prop in endValues) tmp[prop] = endValues[prop];\n _valuesEnd[property] = endValues = tmp;\n }\n this._setupProperties(nestedObject, _valuesStart[property], endValues, _valuesStartRepeat[property], overrideStartingValues);\n } else {\n // Save the starting value, but only once unless override is requested.\n if (typeof _valuesStart[property] === 'undefined' || overrideStartingValues) {\n _valuesStart[property] = startValue;\n }\n if (!startValueIsArray) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\n }\n if (isInterpolationList) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();\n } else {\n _valuesStartRepeat[property] = _valuesStart[property] || 0;\n }\n }\n }\n };\n Tween.prototype.stop = function () {\n if (!this._isChainStopped) {\n this._isChainStopped = true;\n this.stopChainedTweens();\n }\n if (!this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n this._isPlaying = false;\n this._isPaused = false;\n if (this._onStopCallback) {\n this._onStopCallback(this._object);\n }\n return this;\n };\n Tween.prototype.end = function () {\n this._goToEnd = true;\n this.update(Infinity);\n return this;\n };\n Tween.prototype.pause = function (time) {\n if (time === void 0) {\n time = now();\n }\n if (this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = true;\n this._pauseStart = time;\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n return this;\n };\n Tween.prototype.resume = function (time) {\n if (time === void 0) {\n time = now();\n }\n if (!this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = false;\n this._startTime += time - this._pauseStart;\n this._pauseStart = 0;\n // eslint-disable-next-line\n this._group && this._group.add(this);\n return this;\n };\n Tween.prototype.stopChainedTweens = function () {\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n this._chainedTweens[i].stop();\n }\n return this;\n };\n Tween.prototype.group = function (group) {\n if (group === void 0) {\n group = mainGroup;\n }\n this._group = group;\n return this;\n };\n Tween.prototype.delay = function (amount) {\n if (amount === void 0) {\n amount = 0;\n }\n this._delayTime = amount;\n return this;\n };\n Tween.prototype.repeat = function (times) {\n if (times === void 0) {\n times = 0;\n }\n this._initialRepeat = times;\n this._repeat = times;\n return this;\n };\n Tween.prototype.repeatDelay = function (amount) {\n this._repeatDelayTime = amount;\n return this;\n };\n Tween.prototype.yoyo = function (yoyo) {\n if (yoyo === void 0) {\n yoyo = false;\n }\n this._yoyo = yoyo;\n return this;\n };\n Tween.prototype.easing = function (easingFunction) {\n if (easingFunction === void 0) {\n easingFunction = Easing.Linear.None;\n }\n this._easingFunction = easingFunction;\n return this;\n };\n Tween.prototype.interpolation = function (interpolationFunction) {\n if (interpolationFunction === void 0) {\n interpolationFunction = Interpolation.Linear;\n }\n this._interpolationFunction = interpolationFunction;\n return this;\n };\n // eslint-disable-next-line\n Tween.prototype.chain = function () {\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n this._chainedTweens = tweens;\n return this;\n };\n Tween.prototype.onStart = function (callback) {\n this._onStartCallback = callback;\n return this;\n };\n Tween.prototype.onEveryStart = function (callback) {\n this._onEveryStartCallback = callback;\n return this;\n };\n Tween.prototype.onUpdate = function (callback) {\n this._onUpdateCallback = callback;\n return this;\n };\n Tween.prototype.onRepeat = function (callback) {\n this._onRepeatCallback = callback;\n return this;\n };\n Tween.prototype.onComplete = function (callback) {\n this._onCompleteCallback = callback;\n return this;\n };\n Tween.prototype.onStop = function (callback) {\n this._onStopCallback = callback;\n return this;\n };\n /**\n * @returns true if the tween is still playing after the update, false\n * otherwise (calling update on a paused tween still returns true because\n * it is still playing, just paused).\n */\n Tween.prototype.update = function (time, autoStart) {\n var _this = this;\n var _a;\n if (time === void 0) {\n time = now();\n }\n if (autoStart === void 0) {\n autoStart = true;\n }\n if (this._isPaused) return true;\n var property;\n var endTime = this._startTime + this._duration;\n if (!this._goToEnd && !this._isPlaying) {\n if (time > endTime) return false;\n if (autoStart) this.start(time, true);\n }\n this._goToEnd = false;\n if (time < this._startTime) {\n return true;\n }\n if (this._onStartCallbackFired === false) {\n if (this._onStartCallback) {\n this._onStartCallback(this._object);\n }\n this._onStartCallbackFired = true;\n }\n if (this._onEveryStartCallbackFired === false) {\n if (this._onEveryStartCallback) {\n this._onEveryStartCallback(this._object);\n }\n this._onEveryStartCallbackFired = true;\n }\n var elapsedTime = time - this._startTime;\n var durationAndDelay = this._duration + ((_a = this._repeatDelayTime) !== null && _a !== void 0 ? _a : this._delayTime);\n var totalTime = this._duration + this._repeat * durationAndDelay;\n var calculateElapsedPortion = function () {\n if (_this._duration === 0) return 1;\n if (elapsedTime > totalTime) {\n return 1;\n }\n var timesRepeated = Math.trunc(elapsedTime / durationAndDelay);\n var timeIntoCurrentRepeat = elapsedTime - timesRepeated * durationAndDelay;\n // TODO use %?\n // const timeIntoCurrentRepeat = elapsedTime % durationAndDelay\n var portion = Math.min(timeIntoCurrentRepeat / _this._duration, 1);\n if (portion === 0 && elapsedTime === _this._duration) {\n return 1;\n }\n return portion;\n };\n var elapsed = calculateElapsedPortion();\n var value = this._easingFunction(elapsed);\n // properties transformations\n this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value);\n if (this._onUpdateCallback) {\n this._onUpdateCallback(this._object, elapsed);\n }\n if (this._duration === 0 || elapsedTime >= this._duration) {\n if (this._repeat > 0) {\n var completeCount = Math.min(Math.trunc((elapsedTime - this._duration) / durationAndDelay) + 1, this._repeat);\n if (isFinite(this._repeat)) {\n this._repeat -= completeCount;\n }\n // Reassign starting values, restart by making startTime = now\n for (property in this._valuesStartRepeat) {\n if (!this._yoyo && typeof this._valuesEnd[property] === 'string') {\n this._valuesStartRepeat[property] =\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\n }\n if (this._yoyo) {\n this._swapEndStartRepeatValues(property);\n }\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n if (this._yoyo) {\n this._reversed = !this._reversed;\n }\n this._startTime += durationAndDelay * completeCount;\n if (this._onRepeatCallback) {\n this._onRepeatCallback(this._object);\n }\n this._onEveryStartCallbackFired = false;\n return true;\n } else {\n if (this._onCompleteCallback) {\n this._onCompleteCallback(this._object);\n }\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n // Make the chained tweens start exactly at the time they should,\n // even if the `update()` method was called way past the duration of the tween\n this._chainedTweens[i].start(this._startTime + this._duration, false);\n }\n this._isPlaying = false;\n return false;\n }\n }\n return true;\n };\n Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) {\n for (var property in _valuesEnd) {\n // Don't update properties that do not exist in the source object\n if (_valuesStart[property] === undefined) {\n continue;\n }\n var start = _valuesStart[property] || 0;\n var end = _valuesEnd[property];\n var startIsArray = Array.isArray(_object[property]);\n var endIsArray = Array.isArray(end);\n var isInterpolationList = !startIsArray && endIsArray;\n if (isInterpolationList) {\n _object[property] = this._interpolationFunction(end, value);\n } else if (typeof end === 'object' && end) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._updateProperties(_object[property], start, end, value);\n } else {\n // Parses relative end values with start as base (e.g.: +10, -3)\n end = this._handleRelativeValue(start, end);\n // Protect against non numeric properties.\n if (typeof end === 'number') {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _object[property] = start + (end - start) * value;\n }\n }\n }\n };\n Tween.prototype._handleRelativeValue = function (start, end) {\n if (typeof end !== 'string') {\n return end;\n }\n if (end.charAt(0) === '+' || end.charAt(0) === '-') {\n return start + parseFloat(end);\n }\n return parseFloat(end);\n };\n Tween.prototype._swapEndStartRepeatValues = function (property) {\n var tmp = this._valuesStartRepeat[property];\n var endValue = this._valuesEnd[property];\n if (typeof endValue === 'string') {\n this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue);\n } else {\n this._valuesStartRepeat[property] = this._valuesEnd[property];\n }\n this._valuesEnd[property] = tmp;\n };\n return Tween;\n}();\nvar VERSION = '23.1.1';\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar nextId = Sequence.nextId;\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tweens.\n */\nvar TWEEN = mainGroup;\n// This is the best way to export things in a way that's compatible with both ES\n// Modules and CommonJS, without build hacks, and so as not to break the\n// existing API.\n// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881\nvar getAll = TWEEN.getAll.bind(TWEEN);\nvar removeAll = TWEEN.removeAll.bind(TWEEN);\nvar add = TWEEN.add.bind(TWEEN);\nvar remove = TWEEN.remove.bind(TWEEN);\nvar update = TWEEN.update.bind(TWEEN);\nvar exports = {\n Easing: Easing,\n Group: Group,\n Interpolation: Interpolation,\n now: now,\n Sequence: Sequence,\n nextId: nextId,\n Tween: Tween,\n VERSION: VERSION,\n getAll: getAll,\n removeAll: removeAll,\n add: add,\n remove: remove,\n update: update\n};\nexport { Easing, Group, Interpolation, Sequence, Tween, VERSION, add, exports as default, getAll, nextId, now, remove, removeAll, update };","import * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, ElementRef, Component, Inject, Optional, Input, Output, ViewChild, ContentChild, NgModule } from '@angular/core';\nimport { isPlatformServer, CommonModule } from '@angular/common';\nimport * as tween from '@tweenjs/tween.js';\nconst _c0 = [\"header\"];\nconst _c1 = [\"container\"];\nconst _c2 = [\"content\"];\nconst _c3 = [\"invisiblePadding\"];\nconst _c4 = [\"*\"];\nfunction VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY() {\n return {\n checkResizeInterval: 1000,\n modifyOverflowStyleOfParentScroll: true,\n resizeBypassRefreshThreshold: 5,\n scrollAnimationTime: 750,\n scrollDebounceTime: 0,\n scrollThrottlingTime: 0,\n stripedTable: false\n };\n}\nlet VirtualScrollerComponent = /*#__PURE__*/(() => {\n class VirtualScrollerComponent {\n element;\n renderer;\n zone;\n changeDetectorRef;\n viewPortItems;\n window = window;\n get viewPortInfo() {\n let pageInfo = this.previousViewPort || {};\n return {\n startIndex: pageInfo.startIndex || 0,\n endIndex: pageInfo.endIndex || 0,\n scrollStartPosition: pageInfo.scrollStartPosition || 0,\n scrollEndPosition: pageInfo.scrollEndPosition || 0,\n maxScrollPosition: pageInfo.maxScrollPosition || 0,\n startIndexWithBuffer: pageInfo.startIndexWithBuffer || 0,\n endIndexWithBuffer: pageInfo.endIndexWithBuffer || 0\n };\n }\n executeRefreshOutsideAngularZone = false;\n _enableUnequalChildrenSizes = false;\n get enableUnequalChildrenSizes() {\n return this._enableUnequalChildrenSizes;\n }\n set enableUnequalChildrenSizes(value) {\n if (this._enableUnequalChildrenSizes === value) {\n return;\n }\n this._enableUnequalChildrenSizes = value;\n this.minMeasuredChildWidth = undefined;\n this.minMeasuredChildHeight = undefined;\n }\n RTL = false;\n useMarginInsteadOfTranslate = false;\n modifyOverflowStyleOfParentScroll;\n stripedTable;\n scrollbarWidth;\n scrollbarHeight;\n childWidth;\n childHeight;\n ssrChildWidth;\n ssrChildHeight;\n ssrViewportWidth = 1920;\n ssrViewportHeight = 1080;\n _bufferAmount;\n get bufferAmount() {\n if (typeof this._bufferAmount === 'number' && this._bufferAmount >= 0) {\n return this._bufferAmount;\n } else {\n return this.enableUnequalChildrenSizes ? 5 : 0;\n }\n }\n set bufferAmount(value) {\n this._bufferAmount = value;\n }\n scrollAnimationTime;\n resizeBypassRefreshThreshold;\n _scrollThrottlingTime;\n get scrollThrottlingTime() {\n return this._scrollThrottlingTime;\n }\n set scrollThrottlingTime(value) {\n this._scrollThrottlingTime = value;\n this.updateOnScrollFunction();\n }\n _scrollDebounceTime;\n get scrollDebounceTime() {\n return this._scrollDebounceTime;\n }\n set scrollDebounceTime(value) {\n this._scrollDebounceTime = value;\n this.updateOnScrollFunction();\n }\n onScroll;\n updateOnScrollFunction() {\n if (this.scrollDebounceTime) {\n this.onScroll = this.debounce(() => {\n this.refresh_internal(false);\n }, this.scrollDebounceTime);\n } else if (this.scrollThrottlingTime) {\n this.onScroll = this.throttleTrailing(() => {\n this.refresh_internal(false);\n }, this.scrollThrottlingTime);\n } else {\n this.onScroll = () => {\n this.refresh_internal(false);\n };\n }\n }\n checkScrollElementResizedTimer;\n _checkResizeInterval;\n get checkResizeInterval() {\n return this._checkResizeInterval;\n }\n set checkResizeInterval(value) {\n if (this._checkResizeInterval === value) {\n return;\n }\n this._checkResizeInterval = value;\n this.addScrollEventHandlers();\n }\n _items = [];\n get items() {\n return this._items;\n }\n set items(value) {\n if (value === this._items) {\n return;\n }\n this._items = value || [];\n this.refresh_internal(true);\n }\n compareItems = (item1, item2) => item1 === item2;\n _horizontal;\n get horizontal() {\n return this._horizontal;\n }\n set horizontal(value) {\n this._horizontal = value;\n this.updateDirection();\n }\n revertParentOverscroll() {\n const scrollElement = this.getScrollElement();\n if (scrollElement && this.oldParentScrollOverflow) {\n scrollElement.style['overflow-y'] = this.oldParentScrollOverflow.y;\n scrollElement.style['overflow-x'] = this.oldParentScrollOverflow.x;\n }\n this.oldParentScrollOverflow = undefined;\n }\n oldParentScrollOverflow;\n _parentScroll;\n get parentScroll() {\n return this._parentScroll;\n }\n set parentScroll(value) {\n if (this._parentScroll === value) {\n return;\n }\n this.revertParentOverscroll();\n this._parentScroll = value;\n this.addScrollEventHandlers();\n const scrollElement = this.getScrollElement();\n if (this.modifyOverflowStyleOfParentScroll && scrollElement !== this.element.nativeElement) {\n this.oldParentScrollOverflow = {\n x: scrollElement.style['overflow-x'],\n y: scrollElement.style['overflow-y']\n };\n scrollElement.style['overflow-y'] = this.horizontal ? 'visible' : 'auto';\n scrollElement.style['overflow-x'] = this.horizontal ? 'auto' : 'visible';\n }\n }\n vsUpdate = new EventEmitter();\n vsChange = new EventEmitter();\n vsStart = new EventEmitter();\n vsEnd = new EventEmitter();\n contentElementRef;\n invisiblePaddingElementRef;\n headerElementRef;\n containerElementRef;\n ngOnInit() {\n this.addScrollEventHandlers();\n }\n ngOnDestroy() {\n this.removeScrollEventHandlers();\n this.revertParentOverscroll();\n }\n ngOnChanges(changes) {\n let indexLengthChanged = this.cachedItemsLength !== this.items.length;\n this.cachedItemsLength = this.items.length;\n const firstRun = !changes.items || !changes.items.previousValue || changes.items.previousValue.length === 0;\n this.refresh_internal(indexLengthChanged || firstRun);\n }\n ngDoCheck() {\n if (this.cachedItemsLength !== this.items.length) {\n this.cachedItemsLength = this.items.length;\n this.refresh_internal(true);\n return;\n }\n if (this.previousViewPort && this.viewPortItems && this.viewPortItems.length > 0) {\n let itemsArrayChanged = false;\n for (let i = 0; i < this.viewPortItems.length; ++i) {\n if (!this.compareItems(this.items[this.previousViewPort.startIndexWithBuffer + i], this.viewPortItems[i])) {\n itemsArrayChanged = true;\n break;\n }\n }\n if (itemsArrayChanged) {\n this.refresh_internal(true);\n }\n }\n }\n refresh() {\n this.refresh_internal(true);\n }\n invalidateAllCachedMeasurements() {\n this.wrapGroupDimensions = {\n maxChildSizePerWrapGroup: [],\n numberOfKnownWrapGroupChildSizes: 0,\n sumOfKnownWrapGroupChildWidths: 0,\n sumOfKnownWrapGroupChildHeights: 0\n };\n this.minMeasuredChildWidth = undefined;\n this.minMeasuredChildHeight = undefined;\n this.refresh_internal(false);\n }\n invalidateCachedMeasurementForItem(item) {\n if (this.enableUnequalChildrenSizes) {\n let index = this.items && this.items.indexOf(item);\n if (index >= 0) {\n this.invalidateCachedMeasurementAtIndex(index);\n }\n } else {\n this.minMeasuredChildWidth = undefined;\n this.minMeasuredChildHeight = undefined;\n }\n this.refresh_internal(false);\n }\n invalidateCachedMeasurementAtIndex(index) {\n if (this.enableUnequalChildrenSizes) {\n let cachedMeasurement = this.wrapGroupDimensions.maxChildSizePerWrapGroup[index];\n if (cachedMeasurement) {\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[index] = undefined;\n --this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= cachedMeasurement.childWidth || 0;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= cachedMeasurement.childHeight || 0;\n }\n } else {\n this.minMeasuredChildWidth = undefined;\n this.minMeasuredChildHeight = undefined;\n }\n this.refresh_internal(false);\n }\n scrollInto(item, alignToBeginning = true, additionalOffset = 0, animationMilliseconds = undefined, animationCompletedCallback = undefined) {\n let index = this.items.indexOf(item);\n if (index === -1) {\n return;\n }\n this.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\n }\n scrollToIndex(index, alignToBeginning = true, additionalOffset = 0, animationMilliseconds = undefined, animationCompletedCallback = undefined) {\n let maxRetries = 5;\n let retryIfNeeded = () => {\n --maxRetries;\n if (maxRetries <= 0) {\n if (animationCompletedCallback) {\n animationCompletedCallback();\n }\n return;\n }\n let dimensions = this.calculateDimensions();\n let desiredStartIndex = Math.min(Math.max(index, 0), dimensions.itemCount - 1);\n if (this.previousViewPort.startIndex === desiredStartIndex) {\n if (animationCompletedCallback) {\n animationCompletedCallback();\n }\n return;\n }\n this.scrollToIndex_internal(index, alignToBeginning, additionalOffset, 0, retryIfNeeded);\n };\n this.scrollToIndex_internal(index, alignToBeginning, additionalOffset, animationMilliseconds, retryIfNeeded);\n }\n scrollToIndex_internal(index, alignToBeginning = true, additionalOffset = 0, animationMilliseconds = undefined, animationCompletedCallback = undefined) {\n animationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\n let dimensions = this.calculateDimensions();\n let scroll = this.calculatePadding(index, dimensions) + additionalOffset;\n if (!alignToBeginning) {\n scroll -= dimensions.wrapGroupsPerPage * dimensions[this._childScrollDim];\n }\n this.scrollToPosition(scroll, animationMilliseconds, animationCompletedCallback);\n }\n scrollToPosition(scrollPosition, animationMilliseconds = undefined, animationCompletedCallback = undefined) {\n scrollPosition += this.getElementsOffset();\n animationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\n let scrollElement = this.getScrollElement();\n let animationRequest;\n if (this.currentTween) {\n this.currentTween.stop();\n this.currentTween = undefined;\n }\n if (!animationMilliseconds) {\n this.renderer.setProperty(scrollElement, this._scrollType, scrollPosition);\n this.refresh_internal(false, animationCompletedCallback);\n return;\n }\n const tweenConfigObj = {\n scrollPosition: scrollElement[this._scrollType]\n };\n let newTween = new tween.Tween(tweenConfigObj).to({\n scrollPosition\n }, animationMilliseconds).easing(tween.Easing.Quadratic.Out).onUpdate(data => {\n if (isNaN(data.scrollPosition)) {\n return;\n }\n this.renderer.setProperty(scrollElement, this._scrollType, data.scrollPosition);\n this.refresh_internal(false);\n }).onStop(() => {\n cancelAnimationFrame(animationRequest);\n }).start();\n const animate = time => {\n if (!newTween['isPlaying']()) {\n return;\n }\n newTween.update(time);\n if (tweenConfigObj.scrollPosition === scrollPosition) {\n this.refresh_internal(false, animationCompletedCallback);\n return;\n }\n this.zone.runOutsideAngular(() => {\n animationRequest = requestAnimationFrame(animate);\n });\n };\n animate();\n this.currentTween = newTween;\n }\n isAngularUniversalSSR;\n constructor(element, renderer, zone, changeDetectorRef, platformId, options) {\n this.element = element;\n this.renderer = renderer;\n this.zone = zone;\n this.changeDetectorRef = changeDetectorRef;\n this.isAngularUniversalSSR = isPlatformServer(platformId);\n this.checkResizeInterval = options.checkResizeInterval;\n this.modifyOverflowStyleOfParentScroll = options.modifyOverflowStyleOfParentScroll;\n this.resizeBypassRefreshThreshold = options.resizeBypassRefreshThreshold;\n this.scrollAnimationTime = options.scrollAnimationTime;\n this.scrollDebounceTime = options.scrollDebounceTime;\n this.scrollThrottlingTime = options.scrollThrottlingTime;\n this.scrollbarHeight = options.scrollbarHeight;\n this.scrollbarWidth = options.scrollbarWidth;\n this.stripedTable = options.stripedTable;\n this.horizontal = false;\n this.resetWrapGroupDimensions();\n }\n getElementSize(element) {\n let result = element.getBoundingClientRect();\n let styles = getComputedStyle(element);\n let marginTop = parseInt(styles['margin-top'], 10) || 0;\n let marginBottom = parseInt(styles['margin-bottom'], 10) || 0;\n let marginLeft = parseInt(styles['margin-left'], 10) || 0;\n let marginRight = parseInt(styles['margin-right'], 10) || 0;\n return {\n top: result.top + marginTop,\n bottom: result.bottom + marginBottom,\n left: result.left + marginLeft,\n right: result.right + marginRight,\n width: result.width + marginLeft + marginRight,\n height: result.height + marginTop + marginBottom\n };\n }\n previousScrollBoundingRect;\n checkScrollElementResized() {\n let boundingRect = this.getElementSize(this.getScrollElement());\n let sizeChanged;\n if (!this.previousScrollBoundingRect) {\n sizeChanged = true;\n } else {\n let widthChange = Math.abs(boundingRect.width - this.previousScrollBoundingRect.width);\n let heightChange = Math.abs(boundingRect.height - this.previousScrollBoundingRect.height);\n sizeChanged = widthChange > this.resizeBypassRefreshThreshold || heightChange > this.resizeBypassRefreshThreshold;\n }\n if (sizeChanged) {\n this.previousScrollBoundingRect = boundingRect;\n if (boundingRect.width > 0 && boundingRect.height > 0) {\n this.refresh_internal(false);\n }\n }\n }\n _invisiblePaddingProperty;\n _offsetType;\n _scrollType;\n _pageOffsetType;\n _childScrollDim;\n _translateDir;\n _marginDir;\n updateDirection() {\n if (this.horizontal) {\n this._childScrollDim = 'childWidth';\n this._invisiblePaddingProperty = 'width';\n this._marginDir = 'margin-left';\n this._offsetType = 'offsetLeft';\n this._pageOffsetType = 'pageXOffset';\n this._scrollType = 'scrollLeft';\n this._translateDir = 'translateX';\n } else {\n this._childScrollDim = 'childHeight';\n this._invisiblePaddingProperty = 'height';\n this._marginDir = 'margin-top';\n this._offsetType = 'offsetTop';\n this._pageOffsetType = 'pageYOffset';\n this._scrollType = 'scrollTop';\n this._translateDir = 'translateY';\n }\n }\n debounce(func, wait) {\n const throttled = this.throttleTrailing(func, wait);\n const result = function () {\n throttled['cancel']();\n throttled.apply(this, arguments);\n };\n result['cancel'] = function () {\n throttled['cancel']();\n };\n return result;\n }\n throttleTrailing(func, wait) {\n let timeout = undefined;\n let _arguments = arguments;\n const result = function () {\n const _this = this;\n _arguments = arguments;\n if (timeout) {\n return;\n }\n if (wait <= 0) {\n func.apply(_this, _arguments);\n } else {\n timeout = setTimeout(function () {\n timeout = undefined;\n func.apply(_this, _arguments);\n }, wait);\n }\n };\n result['cancel'] = function () {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n };\n return result;\n }\n calculatedScrollbarWidth = 0;\n calculatedScrollbarHeight = 0;\n padding = 0;\n previousViewPort = {};\n currentTween;\n cachedItemsLength;\n disposeScrollHandler;\n disposeResizeHandler;\n refresh_internal(itemsArrayModified, refreshCompletedCallback = undefined, maxRunTimes = 2) {\n //note: maxRunTimes is to force it to keep recalculating if the previous iteration caused a re-render (different sliced items in viewport or scrollPosition changed).\n //The default of 2x max will probably be accurate enough without causing too large a performance bottleneck\n //The code would typically quit out on the 2nd iteration anyways. The main time it'd think more than 2 runs would be necessary would be for vastly different sized child items or if this is the 1st time the items array was initialized.\n //Without maxRunTimes, If the user is actively scrolling this code would become an infinite loop until they stopped scrolling. This would be okay, except each scroll event would start an additional infinte loop. We want to short-circuit it to prevent this.\n if (itemsArrayModified && this.previousViewPort && this.previousViewPort.scrollStartPosition > 0) {\n //if items were prepended, scroll forward to keep same items visible\n let oldViewPort = this.previousViewPort;\n let oldViewPortItems = this.viewPortItems;\n let oldRefreshCompletedCallback = refreshCompletedCallback;\n refreshCompletedCallback = () => {\n let scrollLengthDelta = this.previousViewPort.scrollLength - oldViewPort.scrollLength;\n if (scrollLengthDelta > 0 && this.viewPortItems) {\n let oldStartItem = oldViewPortItems[0];\n let oldStartItemIndex = this.items.findIndex(x => this.compareItems(oldStartItem, x));\n if (oldStartItemIndex > this.previousViewPort.startIndexWithBuffer) {\n let itemOrderChanged = false;\n for (let i = 1; i < this.viewPortItems.length; ++i) {\n if (!this.compareItems(this.items[oldStartItemIndex + i], oldViewPortItems[i])) {\n itemOrderChanged = true;\n break;\n }\n }\n if (!itemOrderChanged) {\n this.scrollToPosition(this.previousViewPort.scrollStartPosition + scrollLengthDelta, 0, oldRefreshCompletedCallback);\n return;\n }\n }\n }\n if (oldRefreshCompletedCallback) {\n oldRefreshCompletedCallback();\n }\n };\n }\n this.zone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (itemsArrayModified) {\n this.resetWrapGroupDimensions();\n }\n let viewport = this.calculateViewport();\n let startChanged = itemsArrayModified || viewport.startIndex !== this.previousViewPort.startIndex;\n let endChanged = itemsArrayModified || viewport.endIndex !== this.previousViewPort.endIndex;\n let scrollbarLengthChanged = viewport.scrollbarLength !== this.previousViewPort.scrollbarLength;\n let paddingChanged = viewport.padding !== this.previousViewPort.padding;\n let scrollPositionChanged = viewport.scrollStartPosition !== this.previousViewPort.scrollStartPosition || viewport.scrollEndPosition !== this.previousViewPort.scrollEndPosition || viewport.maxScrollPosition !== this.previousViewPort.maxScrollPosition;\n this.previousViewPort = viewport;\n if (scrollbarLengthChanged) {\n this.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, this._invisiblePaddingProperty, `${viewport.scrollLength}px`);\n }\n if (paddingChanged) {\n if (this.useMarginInsteadOfTranslate) {\n this.renderer.setStyle(this.contentElementRef.nativeElement, this._marginDir, `${viewport.padding}px`);\n } else {\n this.renderer.setStyle(this.contentElementRef.nativeElement, 'transform', `${this._translateDir}(${viewport.padding}px)`);\n this.renderer.setStyle(this.contentElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${viewport.padding}px)`);\n }\n }\n if (this.headerElementRef) {\n let scrollPosition = this.getScrollElement()[this._scrollType];\n let containerOffset = this.getElementsOffset();\n let offset = Math.max(scrollPosition - viewport.padding - containerOffset + this.headerElementRef.nativeElement.clientHeight, 0);\n this.renderer.setStyle(this.headerElementRef.nativeElement, 'transform', `${this._translateDir}(${offset}px)`);\n this.renderer.setStyle(this.headerElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${offset}px)`);\n }\n const changeEventArg = startChanged || endChanged ? {\n startIndex: viewport.startIndex,\n endIndex: viewport.endIndex,\n scrollStartPosition: viewport.scrollStartPosition,\n scrollEndPosition: viewport.scrollEndPosition,\n startIndexWithBuffer: viewport.startIndexWithBuffer,\n endIndexWithBuffer: viewport.endIndexWithBuffer,\n maxScrollPosition: viewport.maxScrollPosition\n } : undefined;\n if (startChanged || endChanged || scrollPositionChanged) {\n const handleChanged = () => {\n // update the scroll list to trigger re-render of components in viewport\n this.viewPortItems = viewport.startIndexWithBuffer >= 0 && viewport.endIndexWithBuffer >= 0 ? this.items.slice(viewport.startIndexWithBuffer, viewport.endIndexWithBuffer + 1) : [];\n this.vsUpdate.emit(this.viewPortItems);\n if (startChanged) {\n this.vsStart.emit(changeEventArg);\n }\n if (endChanged) {\n this.vsEnd.emit(changeEventArg);\n }\n if (startChanged || endChanged) {\n this.changeDetectorRef.markForCheck();\n this.vsChange.emit(changeEventArg);\n }\n if (maxRunTimes > 0) {\n this.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\n return;\n }\n if (refreshCompletedCallback) {\n refreshCompletedCallback();\n }\n };\n if (this.executeRefreshOutsideAngularZone) {\n handleChanged();\n } else {\n this.zone.run(handleChanged);\n }\n } else {\n if (maxRunTimes > 0 && (scrollbarLengthChanged || paddingChanged)) {\n this.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\n return;\n }\n if (refreshCompletedCallback) {\n refreshCompletedCallback();\n }\n }\n });\n });\n }\n getScrollElement() {\n return this.parentScroll instanceof Window ? document.scrollingElement || document.documentElement || document.body : this.parentScroll || this.element.nativeElement;\n }\n addScrollEventHandlers() {\n if (this.isAngularUniversalSSR) {\n return;\n }\n let scrollElement = this.getScrollElement();\n this.removeScrollEventHandlers();\n this.zone.runOutsideAngular(() => {\n if (this.parentScroll instanceof Window) {\n this.disposeScrollHandler = this.renderer.listen('window', 'scroll', this.onScroll);\n this.disposeResizeHandler = this.renderer.listen('window', 'resize', this.onScroll);\n } else {\n this.disposeScrollHandler = this.renderer.listen(scrollElement, 'scroll', this.onScroll);\n if (this._checkResizeInterval > 0) {\n this.checkScrollElementResizedTimer = setInterval(() => {\n this.checkScrollElementResized();\n }, this._checkResizeInterval);\n }\n }\n });\n }\n removeScrollEventHandlers() {\n if (this.checkScrollElementResizedTimer) {\n clearInterval(this.checkScrollElementResizedTimer);\n }\n if (this.disposeScrollHandler) {\n this.disposeScrollHandler();\n this.disposeScrollHandler = undefined;\n }\n if (this.disposeResizeHandler) {\n this.disposeResizeHandler();\n this.disposeResizeHandler = undefined;\n }\n }\n getElementsOffset() {\n if (this.isAngularUniversalSSR) {\n return 0;\n }\n let offset = 0;\n if (this.containerElementRef && this.containerElementRef.nativeElement) {\n offset += this.containerElementRef.nativeElement[this._offsetType];\n }\n if (this.parentScroll) {\n let scrollElement = this.getScrollElement();\n let elementClientRect = this.getElementSize(this.element.nativeElement);\n let scrollClientRect = this.getElementSize(scrollElement);\n if (this.horizontal) {\n offset += elementClientRect.left - scrollClientRect.left;\n } else {\n offset += elementClientRect.top - scrollClientRect.top;\n }\n if (!(this.parentScroll instanceof Window)) {\n offset += scrollElement[this._scrollType];\n }\n }\n return offset;\n }\n countItemsPerWrapGroup() {\n if (this.isAngularUniversalSSR) {\n return Math.round(this.horizontal ? this.ssrViewportHeight / this.ssrChildHeight : this.ssrViewportWidth / this.ssrChildWidth);\n }\n let propertyName = this.horizontal ? 'offsetLeft' : 'offsetTop';\n let children = (this.containerElementRef && this.containerElementRef.nativeElement || this.contentElementRef.nativeElement).children;\n let childrenLength = children ? children.length : 0;\n if (childrenLength === 0) {\n return 1;\n }\n let firstOffset = children[0][propertyName];\n let result = 1;\n while (result < childrenLength && firstOffset === children[result][propertyName]) {\n ++result;\n }\n return result;\n }\n getScrollStartPosition() {\n let windowScrollValue = undefined;\n if (this.parentScroll instanceof Window) {\n windowScrollValue = window[this._pageOffsetType];\n }\n return windowScrollValue || this.getScrollElement()[this._scrollType] || 0;\n }\n minMeasuredChildWidth;\n minMeasuredChildHeight;\n wrapGroupDimensions;\n resetWrapGroupDimensions() {\n const oldWrapGroupDimensions = this.wrapGroupDimensions;\n this.invalidateAllCachedMeasurements();\n if (!this.enableUnequalChildrenSizes || !oldWrapGroupDimensions || oldWrapGroupDimensions.numberOfKnownWrapGroupChildSizes === 0) {\n return;\n }\n const itemsPerWrapGroup = this.countItemsPerWrapGroup();\n for (let wrapGroupIndex = 0; wrapGroupIndex < oldWrapGroupDimensions.maxChildSizePerWrapGroup.length; ++wrapGroupIndex) {\n const oldWrapGroupDimension = oldWrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\n if (!oldWrapGroupDimension || !oldWrapGroupDimension.items || !oldWrapGroupDimension.items.length) {\n continue;\n }\n if (oldWrapGroupDimension.items.length !== itemsPerWrapGroup) {\n return;\n }\n let itemsChanged = false;\n let arrayStartIndex = itemsPerWrapGroup * wrapGroupIndex;\n for (let i = 0; i < itemsPerWrapGroup; ++i) {\n if (!this.compareItems(oldWrapGroupDimension.items[i], this.items[arrayStartIndex + i])) {\n itemsChanged = true;\n break;\n }\n }\n if (!itemsChanged) {\n ++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += oldWrapGroupDimension.childWidth || 0;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += oldWrapGroupDimension.childHeight || 0;\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = oldWrapGroupDimension;\n }\n }\n }\n calculateDimensions() {\n let scrollElement = this.getScrollElement();\n const maxCalculatedScrollBarSize = 25; // Note: Formula to auto-calculate doesn't work for ParentScroll, so we default to this if not set by consuming application\n this.calculatedScrollbarHeight = Math.max(Math.min(scrollElement.offsetHeight - scrollElement.clientHeight, maxCalculatedScrollBarSize), this.calculatedScrollbarHeight);\n this.calculatedScrollbarWidth = Math.max(Math.min(scrollElement.offsetWidth - scrollElement.clientWidth, maxCalculatedScrollBarSize), this.calculatedScrollbarWidth);\n let viewportWidth = scrollElement.offsetWidth - (this.scrollbarWidth || this.calculatedScrollbarWidth || (this.horizontal ? 0 : maxCalculatedScrollBarSize));\n let viewportHeight = scrollElement.offsetHeight - (this.scrollbarHeight || this.calculatedScrollbarHeight || (this.horizontal ? maxCalculatedScrollBarSize : 0));\n let content = this.containerElementRef && this.containerElementRef.nativeElement || this.contentElementRef.nativeElement;\n let itemsPerWrapGroup = this.countItemsPerWrapGroup();\n let wrapGroupsPerPage;\n let defaultChildWidth;\n let defaultChildHeight;\n if (this.isAngularUniversalSSR) {\n viewportWidth = this.ssrViewportWidth;\n viewportHeight = this.ssrViewportHeight;\n defaultChildWidth = this.ssrChildWidth;\n defaultChildHeight = this.ssrChildHeight;\n let itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\n let itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\n wrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\n } else if (!this.enableUnequalChildrenSizes) {\n if (content.children.length > 0) {\n if (!this.childWidth || !this.childHeight) {\n if (!this.minMeasuredChildWidth && viewportWidth > 0) {\n this.minMeasuredChildWidth = viewportWidth;\n }\n if (!this.minMeasuredChildHeight && viewportHeight > 0) {\n this.minMeasuredChildHeight = viewportHeight;\n }\n }\n let child = content.children[0];\n let clientRect = this.getElementSize(child);\n this.minMeasuredChildWidth = Math.min(this.minMeasuredChildWidth, clientRect.width);\n this.minMeasuredChildHeight = Math.min(this.minMeasuredChildHeight, clientRect.height);\n }\n defaultChildWidth = this.childWidth || this.minMeasuredChildWidth || viewportWidth;\n defaultChildHeight = this.childHeight || this.minMeasuredChildHeight || viewportHeight;\n let itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\n let itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\n wrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\n } else {\n let scrollOffset = scrollElement[this._scrollType] - (this.previousViewPort ? this.previousViewPort.padding : 0);\n let arrayStartIndex = this.previousViewPort.startIndexWithBuffer || 0;\n let wrapGroupIndex = Math.ceil(arrayStartIndex / itemsPerWrapGroup);\n let maxWidthForWrapGroup = 0;\n let maxHeightForWrapGroup = 0;\n let sumOfVisibleMaxWidths = 0;\n let sumOfVisibleMaxHeights = 0;\n wrapGroupsPerPage = 0;\n for (let i = 0; i < content.children.length; ++i) {\n ++arrayStartIndex;\n let child = content.children[i];\n let clientRect = this.getElementSize(child);\n maxWidthForWrapGroup = Math.max(maxWidthForWrapGroup, clientRect.width);\n maxHeightForWrapGroup = Math.max(maxHeightForWrapGroup, clientRect.height);\n if (arrayStartIndex % itemsPerWrapGroup === 0) {\n let oldValue = this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\n if (oldValue) {\n --this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= oldValue.childWidth || 0;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= oldValue.childHeight || 0;\n }\n ++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n const items = this.items.slice(arrayStartIndex - itemsPerWrapGroup, arrayStartIndex);\n this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = {\n childWidth: maxWidthForWrapGroup,\n childHeight: maxHeightForWrapGroup,\n items: items\n };\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += maxWidthForWrapGroup;\n this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += maxHeightForWrapGroup;\n if (this.horizontal) {\n let maxVisibleWidthForWrapGroup = Math.min(maxWidthForWrapGroup, Math.max(viewportWidth - sumOfVisibleMaxWidths, 0));\n if (scrollOffset > 0) {\n let scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleWidthForWrapGroup);\n maxVisibleWidthForWrapGroup -= scrollOffsetToRemove;\n scrollOffset -= scrollOffsetToRemove;\n }\n sumOfVisibleMaxWidths += maxVisibleWidthForWrapGroup;\n if (maxVisibleWidthForWrapGroup > 0 && viewportWidth >= sumOfVisibleMaxWidths) {\n ++wrapGroupsPerPage;\n }\n } else {\n let maxVisibleHeightForWrapGroup = Math.min(maxHeightForWrapGroup, Math.max(viewportHeight - sumOfVisibleMaxHeights, 0));\n if (scrollOffset > 0) {\n let scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleHeightForWrapGroup);\n maxVisibleHeightForWrapGroup -= scrollOffsetToRemove;\n scrollOffset -= scrollOffsetToRemove;\n }\n sumOfVisibleMaxHeights += maxVisibleHeightForWrapGroup;\n if (maxVisibleHeightForWrapGroup > 0 && viewportHeight >= sumOfVisibleMaxHeights) {\n ++wrapGroupsPerPage;\n }\n }\n ++wrapGroupIndex;\n maxWidthForWrapGroup = 0;\n maxHeightForWrapGroup = 0;\n }\n }\n let averageChildWidth = this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n let averageChildHeight = this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\n defaultChildWidth = this.childWidth || averageChildWidth || viewportWidth;\n defaultChildHeight = this.childHeight || averageChildHeight || viewportHeight;\n if (this.horizontal) {\n if (viewportWidth > sumOfVisibleMaxWidths) {\n wrapGroupsPerPage += Math.ceil((viewportWidth - sumOfVisibleMaxWidths) / defaultChildWidth);\n }\n } else {\n if (viewportHeight > sumOfVisibleMaxHeights) {\n wrapGroupsPerPage += Math.ceil((viewportHeight - sumOfVisibleMaxHeights) / defaultChildHeight);\n }\n }\n }\n let itemCount = this.items.length;\n let itemsPerPage = itemsPerWrapGroup * wrapGroupsPerPage;\n let pageCount_fractional = itemCount / itemsPerPage;\n let numberOfWrapGroups = Math.ceil(itemCount / itemsPerWrapGroup);\n let scrollLength = 0;\n let defaultScrollLengthPerWrapGroup = this.horizontal ? defaultChildWidth : defaultChildHeight;\n if (this.enableUnequalChildrenSizes) {\n let numUnknownChildSizes = 0;\n for (let i = 0; i < numberOfWrapGroups; ++i) {\n let childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\n if (childSize) {\n scrollLength += childSize;\n } else {\n ++numUnknownChildSizes;\n }\n }\n scrollLength += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\n } else {\n scrollLength = numberOfWrapGroups * defaultScrollLengthPerWrapGroup;\n }\n if (this.headerElementRef) {\n scrollLength += this.headerElementRef.nativeElement.clientHeight;\n }\n let viewportLength = this.horizontal ? viewportWidth : viewportHeight;\n let maxScrollPosition = Math.max(scrollLength - viewportLength, 0);\n return {\n childHeight: defaultChildHeight,\n childWidth: defaultChildWidth,\n itemCount: itemCount,\n itemsPerPage: itemsPerPage,\n itemsPerWrapGroup: itemsPerWrapGroup,\n maxScrollPosition: maxScrollPosition,\n pageCount_fractional: pageCount_fractional,\n scrollLength: scrollLength,\n viewportLength: viewportLength,\n wrapGroupsPerPage: wrapGroupsPerPage\n };\n }\n cachedPageSize = 0;\n previousScrollNumberElements = 0;\n calculatePadding(arrayStartIndexWithBuffer, dimensions) {\n if (dimensions.itemCount === 0) {\n return 0;\n }\n let defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\n let startingWrapGroupIndex = Math.floor(arrayStartIndexWithBuffer / dimensions.itemsPerWrapGroup) || 0;\n if (!this.enableUnequalChildrenSizes) {\n return defaultScrollLengthPerWrapGroup * startingWrapGroupIndex;\n }\n let numUnknownChildSizes = 0;\n let result = 0;\n for (let i = 0; i < startingWrapGroupIndex; ++i) {\n let childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\n if (childSize) {\n result += childSize;\n } else {\n ++numUnknownChildSizes;\n }\n }\n result += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\n return result;\n }\n calculatePageInfo(scrollPosition, dimensions) {\n let scrollPercentage = 0;\n let scrollBottomPercentage = 1;\n let arrayStartIndex = 0;\n let arrayEndIndex = 0;\n if (this.enableUnequalChildrenSizes) {\n const numberOfWrapGroups = Math.ceil(dimensions.itemCount / dimensions.itemsPerWrapGroup);\n let totalScrolledLength = 0;\n let defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\n let i = 0;\n for (; i < numberOfWrapGroups; ++i) {\n let childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\n if (childSize) {\n totalScrolledLength += childSize;\n } else {\n totalScrolledLength += defaultScrollLengthPerWrapGroup;\n }\n if (scrollPosition < totalScrolledLength) {\n scrollPercentage = i / numberOfWrapGroups;\n break;\n }\n }\n let j = i + 1;\n for (; j < numberOfWrapGroups; ++j) {\n let childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[j] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[j][this._childScrollDim];\n if (childSize) {\n totalScrolledLength += childSize;\n } else {\n totalScrolledLength += defaultScrollLengthPerWrapGroup;\n }\n if (scrollPosition + dimensions.viewportLength < totalScrolledLength) {\n scrollBottomPercentage = j / numberOfWrapGroups;\n break;\n }\n }\n arrayStartIndex = i;\n arrayEndIndex = j;\n } else {\n scrollPercentage = scrollPosition / dimensions.scrollLength;\n let startingArrayIndex_fractional = Math.min(Math.max(scrollPercentage * dimensions.pageCount_fractional, 0), dimensions.pageCount_fractional) * dimensions.itemsPerPage;\n let maxStart = dimensions.itemCount - dimensions.itemsPerPage - 1;\n arrayStartIndex = Math.min(Math.floor(startingArrayIndex_fractional), maxStart);\n arrayEndIndex = Math.ceil(startingArrayIndex_fractional) + dimensions.itemsPerPage - 1;\n }\n arrayStartIndex -= arrayStartIndex % dimensions.itemsPerWrapGroup; // round down to start of wrapGroup\n if (this.stripedTable) {\n let bufferBoundary = 2 * dimensions.itemsPerWrapGroup;\n if (arrayStartIndex % bufferBoundary !== 0) {\n arrayStartIndex = Math.max(arrayStartIndex - arrayStartIndex % bufferBoundary, 0);\n }\n }\n let endIndexWithinWrapGroup = (arrayEndIndex + 1) % dimensions.itemsPerWrapGroup;\n if (endIndexWithinWrapGroup > 0) {\n arrayEndIndex += dimensions.itemsPerWrapGroup - endIndexWithinWrapGroup; // round up to end of wrapGroup\n }\n if (isNaN(arrayStartIndex)) {\n arrayStartIndex = 0;\n }\n if (isNaN(arrayEndIndex)) {\n arrayEndIndex = 0;\n }\n arrayStartIndex = Math.min(Math.max(arrayStartIndex, 0), dimensions.itemCount - 1);\n arrayEndIndex = Math.min(Math.max(arrayEndIndex, 0), dimensions.itemCount - 1);\n let bufferSize = this.bufferAmount * dimensions.itemsPerWrapGroup;\n let startIndexWithBuffer = Math.min(Math.max(arrayStartIndex - bufferSize, 0), dimensions.itemCount - 1);\n let endIndexWithBuffer = Math.min(Math.max(arrayEndIndex + bufferSize, 0), dimensions.itemCount - 1);\n return {\n startIndex: arrayStartIndex,\n endIndex: arrayEndIndex,\n startIndexWithBuffer: startIndexWithBuffer,\n endIndexWithBuffer: endIndexWithBuffer,\n scrollStartPosition: scrollPosition,\n scrollEndPosition: scrollPosition + dimensions.viewportLength,\n maxScrollPosition: dimensions.maxScrollPosition\n };\n }\n calculateViewport() {\n let dimensions = this.calculateDimensions();\n let offset = this.getElementsOffset();\n let scrollStartPosition = this.getScrollStartPosition();\n if (scrollStartPosition > dimensions.scrollLength + offset && !(this.parentScroll instanceof Window)) {\n scrollStartPosition = dimensions.scrollLength;\n } else {\n scrollStartPosition -= offset;\n }\n scrollStartPosition = Math.max(0, scrollStartPosition);\n let pageInfo = this.calculatePageInfo(scrollStartPosition, dimensions);\n let newPadding = this.calculatePadding(pageInfo.startIndexWithBuffer, dimensions);\n let newScrollLength = Math.round(dimensions.scrollLength);\n return {\n startIndex: pageInfo.startIndex,\n endIndex: pageInfo.endIndex,\n startIndexWithBuffer: pageInfo.startIndexWithBuffer,\n endIndexWithBuffer: pageInfo.endIndexWithBuffer,\n padding: Math.round(newPadding),\n scrollLength: newScrollLength,\n scrollbarLength: newScrollLength + offset,\n scrollStartPosition: pageInfo.scrollStartPosition,\n scrollEndPosition: pageInfo.scrollEndPosition,\n maxScrollPosition: pageInfo.maxScrollPosition\n };\n }\n static ɵfac = function VirtualScrollerComponent_Factory(t) {\n return new (t || VirtualScrollerComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(PLATFORM_ID), i0.ɵɵdirectiveInject('virtual-scroller-default-options', 8));\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: VirtualScrollerComponent,\n selectors: [[\"virtual-scroller\"], [\"\", \"virtualScroller\", \"\"]],\n contentQueries: function VirtualScrollerComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, _c0, 5, ElementRef);\n i0.ɵɵcontentQuery(dirIndex, _c1, 5, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerElementRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerElementRef = _t.first);\n }\n },\n viewQuery: function VirtualScrollerComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 7, ElementRef);\n i0.ɵɵviewQuery(_c3, 7, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentElementRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.invisiblePaddingElementRef = _t.first);\n }\n },\n hostVars: 8,\n hostBindings: function VirtualScrollerComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"horizontal\", ctx.horizontal)(\"vertical\", !ctx.horizontal)(\"selfScroll\", !ctx.parentScroll)(\"rtl\", ctx.RTL);\n }\n },\n inputs: {\n executeRefreshOutsideAngularZone: \"executeRefreshOutsideAngularZone\",\n enableUnequalChildrenSizes: \"enableUnequalChildrenSizes\",\n RTL: \"RTL\",\n useMarginInsteadOfTranslate: \"useMarginInsteadOfTranslate\",\n modifyOverflowStyleOfParentScroll: \"modifyOverflowStyleOfParentScroll\",\n stripedTable: \"stripedTable\",\n scrollbarWidth: \"scrollbarWidth\",\n scrollbarHeight: \"scrollbarHeight\",\n childWidth: \"childWidth\",\n childHeight: \"childHeight\",\n ssrChildWidth: \"ssrChildWidth\",\n ssrChildHeight: \"ssrChildHeight\",\n ssrViewportWidth: \"ssrViewportWidth\",\n ssrViewportHeight: \"ssrViewportHeight\",\n bufferAmount: \"bufferAmount\",\n scrollAnimationTime: \"scrollAnimationTime\",\n resizeBypassRefreshThreshold: \"resizeBypassRefreshThreshold\",\n scrollThrottlingTime: \"scrollThrottlingTime\",\n scrollDebounceTime: \"scrollDebounceTime\",\n checkResizeInterval: \"checkResizeInterval\",\n items: \"items\",\n compareItems: \"compareItems\",\n horizontal: \"horizontal\",\n parentScroll: \"parentScroll\"\n },\n outputs: {\n vsUpdate: \"vsUpdate\",\n vsChange: \"vsChange\",\n vsStart: \"vsStart\",\n vsEnd: \"vsEnd\"\n },\n exportAs: [\"virtualScroller\"],\n features: [i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c4,\n decls: 5,\n vars: 0,\n consts: [[\"invisiblePadding\", \"\"], [\"content\", \"\"], [1, \"total-padding\"], [1, \"scrollable-content\"]],\n template: function VirtualScrollerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"div\", 2, 0);\n i0.ɵɵelementStart(2, \"div\", 3, 1);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n },\n styles: [\"[_nghost-%COMP%]{position:relative;display:block;-webkit-overflow-scrolling:touch}.horizontal.selfScroll[_nghost-%COMP%]{overflow-y:visible;overflow-x:auto}.horizontal.selfScroll.rtl[_nghost-%COMP%]{transform:scaleX(-1)}.vertical.selfScroll[_nghost-%COMP%]{overflow-y:auto;overflow-x:visible}.scrollable-content[_ngcontent-%COMP%]{top:0;left:0;width:100%;height:100%;max-width:100vw;max-height:100vh;position:absolute}.scrollable-content[_ngcontent-%COMP%] >*{box-sizing:border-box}.horizontal[_nghost-%COMP%]{white-space:nowrap}.horizontal[_nghost-%COMP%] .scrollable-content[_ngcontent-%COMP%]{display:flex}.horizontal[_nghost-%COMP%] .scrollable-content[_ngcontent-%COMP%] >*{flex-shrink:0;flex-grow:0;white-space:initial}.horizontal.rtl[_nghost-%COMP%] .scrollable-content[_ngcontent-%COMP%] >*{transform:scaleX(-1)}.total-padding[_ngcontent-%COMP%]{width:1px;opacity:0}.horizontal[_nghost-%COMP%] .total-padding[_ngcontent-%COMP%]{height:100%}\"]\n });\n }\n return VirtualScrollerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet VirtualScrollerModule = /*#__PURE__*/(() => {\n class VirtualScrollerModule {\n static ɵfac = function VirtualScrollerModule_Factory(t) {\n return new (t || VirtualScrollerModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: VirtualScrollerModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: 'virtual-scroller-default-options',\n useFactory: VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY\n }],\n imports: [CommonModule]\n });\n }\n return VirtualScrollerModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of ngx-virtual-scroller\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY, VirtualScrollerComponent, VirtualScrollerModule };\n"],"mappings":"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","names":["Easing","amount","s","power","now","Group","_this","tweenId","tween","time","preserve","tweenIds","i","autoStart","Interpolation","v","k","m","f","fn","b","n","pw","bn","p0","p1","fc","a","p2","p3","t","v0","v1","t2","t3","Sequence","mainGroup","Tween","_object","_group","target","duration","dynamic","overrideStartingValues","property","tmp","prop","_valuesStart","_valuesEnd","_valuesStartRepeat","startValue","startValueIsArray","propType","isInterpolationList","endValues","temp","l","value","nestedObject","numChainedTweens","group","times","yoyo","easingFunction","interpolationFunction","tweens","_i","callback","_a","endTime","elapsedTime","durationAndDelay","totalTime","calculateElapsedPortion","timesRepeated","timeIntoCurrentRepeat","portion","elapsed","completeCount","start","end","startIsArray","endIsArray","endValue","nextId","Sequence","TWEEN","mainGroup","getAll","removeAll","add","remove","update","_c0","_c1","_c2","_c3","_c4","VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY","VirtualScrollerComponent","pageInfo","value","item1","item2","scrollElement","EventEmitter","changes","indexLengthChanged","firstRun","itemsArrayChanged","item","index","cachedMeasurement","alignToBeginning","additionalOffset","animationMilliseconds","animationCompletedCallback","maxRetries","retryIfNeeded","dimensions","desiredStartIndex","scroll","scrollPosition","animationRequest","tweenConfigObj","newTween","Tween","Easing","data","animate","time","element","renderer","zone","changeDetectorRef","platformId","options","isPlatformServer","result","styles","marginTop","marginBottom","marginLeft","marginRight","boundingRect","sizeChanged","widthChange","heightChange","func","wait","throttled","timeout","_arguments","_this","itemsArrayModified","refreshCompletedCallback","maxRunTimes","oldViewPort","oldViewPortItems","oldRefreshCompletedCallback","scrollLengthDelta","oldStartItem","oldStartItemIndex","x","itemOrderChanged","i","viewport","startChanged","endChanged","scrollbarLengthChanged","paddingChanged","scrollPositionChanged","containerOffset","offset","changeEventArg","handleChanged","elementClientRect","scrollClientRect","propertyName","children","childrenLength","firstOffset","windowScrollValue","oldWrapGroupDimensions","itemsPerWrapGroup","wrapGroupIndex","oldWrapGroupDimension","itemsChanged","arrayStartIndex","maxCalculatedScrollBarSize","viewportWidth","viewportHeight","content","wrapGroupsPerPage","defaultChildWidth","defaultChildHeight","itemsPerRow","itemsPerCol","scrollOffset","maxWidthForWrapGroup","maxHeightForWrapGroup","sumOfVisibleMaxWidths","sumOfVisibleMaxHeights","child","clientRect","oldValue","items","maxVisibleWidthForWrapGroup","scrollOffsetToRemove","maxVisibleHeightForWrapGroup","averageChildWidth","averageChildHeight","itemCount","itemsPerPage","pageCount_fractional","numberOfWrapGroups","scrollLength","defaultScrollLengthPerWrapGroup","numUnknownChildSizes","childSize","viewportLength","maxScrollPosition","arrayStartIndexWithBuffer","startingWrapGroupIndex","scrollPercentage","scrollBottomPercentage","arrayEndIndex","totalScrolledLength","j","startingArrayIndex_fractional","maxStart","bufferBoundary","endIndexWithinWrapGroup","bufferSize","startIndexWithBuffer","endIndexWithBuffer","scrollStartPosition","newPadding","newScrollLength","t","ɵɵdirectiveInject","ElementRef","Renderer2","NgZone","ChangeDetectorRef","PLATFORM_ID","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","ɵɵclassProp","ɵɵNgOnChangesFeature","ɵɵprojectionDef","ɵɵelement","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","VirtualScrollerModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule"],"x_google_ignoreList":[0,1]}