{"version":3,"file":"97.07359ef129792f0f.js","mappings":"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","names":["ToggleService","constructor","router","this","toggleState","toggleStateSource","ReplaySubject","toggleState$","asObservable","events","pipe","filter","event","NavigationStart","subscribe","next","toggle","take","state","set","t","i0","i1","_angular_core__WEBPACK_IMPORTED_MODULE_4__","Yz7","factory","ɵfac","providedIn","ctx_r3","size","t_r1","ctx_r5","LoadingComponent_ng_container_0_ng_container_1_ng_container_1_Template","LoadingComponent_ng_container_0_ng_container_1_ng_template_2_Template","ctx_r2","absolute","_r4","LoadingComponent_ng_container_0_ng_container_1_Template","ctx_r0","loading","LoadingComponent","message","_angular_core__WEBPACK_IMPORTED_MODULE_0__","Xpm","selectors","inputs","standalone","features","decls","vars","consts","template","rf","ctx","LoadingComponent_ng_container_0_Template","CommonModule","TranslocoDirective","changeDetection","_r5","ctx_r4","openExtrasDrawer","isExtrasOpen","_r8","ctx_r7","toggleService","filterActive","filterOpen","SideNavCompanionBarComponent_ng_container_0_button_8_Template","SideNavCompanionBarComponent_ng_container_0_button_9_Template","hasExtras","hasFilter","SideNavCompanionBarComponent","navService","utilityService","offcanvasService","EventEmitter","isFilterOpen","destroyRef","inject","DestroyRef","ngOnInit","sideNavCollapsed$","takeUntilDestroyed","sideNavCollapsed","getActiveBreakpoint","Breakpoint","Tablet","emit","toggleFilter","undefined","extraDrawer","drawerRef","open","position","scroll","closed","dismissed","i2","i3","i4","_angular_core__WEBPACK_IMPORTED_MODULE_1__","outputs","ngContentSelectors","_c1","SideNavCompanionBarComponent_ng_container_0_Template","i5","NgbTooltip","styles","auditTime","duration","scheduler","asyncScheduler","audit","durationSelector","operate","source","subscriber","hasValue","lastValue","durationSubscriber","isComplete","endDuration","unsubscribe","value","complete","cleanupDuration","createOperatorSubscriber","innerFrom","timer","a","Easing","Object","freeze","Linear","None","amount","In","Out","InOut","Quadratic","Cubic","Quartic","Quintic","Sinusoidal","Math","sin","PI","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","generatePow","power","Number","EPSILON","now","performance","Group","_tweens","_tweensAddedDuringUpdate","prototype","getAll","_this","keys","map","tweenId","removeAll","add","tween","getId","remove","update","time","preserve","tweenIds","length","i","Interpolation","v","k","m","f","floor","fn","Utils","Bezier","b","n","pw","bn","Bernstein","CatmullRom","p0","p1","fc","Factorial","p2","p3","v0","v1","t2","Sequence","nextId","_nextId","mainGroup","Tween","_object","_group","_isPaused","_pauseStart","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_isDynamic","_initialRepeat","_repeat","_yoyo","_isPlaying","_reversed","_delayTime","_startTime","_easingFunction","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_onEveryStartCallbackFired","_id","_isChainStopped","_propertiesAreSetUp","_goToEnd","isPlaying","isPaused","to","target","Error","dynamic","start","overrideStartingValues","property","_swapEndStartRepeatValues","tmp","prop","_setupProperties","startFromCurrentValues","startValue","startValueIsArray","Array","isArray","propType","isInterpolationList","endValues","temp","l","_handleRelativeValue","isNaN","console","warn","push","slice","reverse","nestedObject","stop","stopChainedTweens","_onStopCallback","end","Infinity","pause","resume","numChainedTweens","group","delay","repeat","times","repeatDelay","_repeatDelayTime","yoyo","easing","easingFunction","interpolation","interpolationFunction","chain","tweens","_i","arguments","onStart","callback","_onStartCallback","onEveryStart","_onEveryStartCallback","onUpdate","_onUpdateCallback","onRepeat","_onRepeatCallback","onComplete","_onCompleteCallback","onStop","autoStart","elapsed","_updateProperties","isFinite","parseFloat","startIsArray","endIsArray","charAt","endValue","TWEEN","bind","_c0","_c2","_c3","_c4","VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY","checkResizeInterval","modifyOverflowStyleOfParentScroll","resizeBypassRefreshThreshold","scrollAnimationTime","scrollDebounceTime","scrollThrottlingTime","stripedTable","VirtualScrollerComponent","viewPortInfo","pageInfo","previousViewPort","startIndex","endIndex","scrollStartPosition","scrollEndPosition","maxScrollPosition","startIndexWithBuffer","endIndexWithBuffer","enableUnequalChildrenSizes","_enableUnequalChildrenSizes","minMeasuredChildWidth","minMeasuredChildHeight","bufferAmount","_bufferAmount","_scrollThrottlingTime","updateOnScrollFunction","_scrollDebounceTime","onScroll","debounce","refresh_internal","throttleTrailing","_checkResizeInterval","addScrollEventHandlers","items","_items","horizontal","_horizontal","updateDirection","revertParentOverscroll","scrollElement","getScrollElement","oldParentScrollOverflow","style","y","x","parentScroll","_parentScroll","element","nativeElement","ngOnDestroy","removeScrollEventHandlers","ngOnChanges","changes","indexLengthChanged","cachedItemsLength","previousValue","ngDoCheck","viewPortItems","itemsArrayChanged","compareItems","refresh","invalidateAllCachedMeasurements","wrapGroupDimensions","maxChildSizePerWrapGroup","numberOfKnownWrapGroupChildSizes","sumOfKnownWrapGroupChildWidths","sumOfKnownWrapGroupChildHeights","invalidateCachedMeasurementForItem","item","index","indexOf","invalidateCachedMeasurementAtIndex","cachedMeasurement","childWidth","childHeight","scrollInto","alignToBeginning","additionalOffset","animationMilliseconds","animationCompletedCallback","scrollToIndex","maxRetries","retryIfNeeded","dimensions","calculateDimensions","desiredStartIndex","min","max","itemCount","scrollToIndex_internal","calculatePadding","wrapGroupsPerPage","_childScrollDim","scrollToPosition","scrollPosition","getElementsOffset","animationRequest","currentTween","renderer","setProperty","_scrollType","tweenConfigObj","newTween","data","cancelAnimationFrame","animate","zone","runOutsideAngular","requestAnimationFrame","changeDetectorRef","platformId","options","_defineProperty","window","item1","item2","isAngularUniversalSSR","isPlatformServer","scrollbarHeight","scrollbarWidth","resetWrapGroupDimensions","getElementSize","result","getBoundingClientRect","getComputedStyle","marginTop","parseInt","marginBottom","marginLeft","marginRight","top","bottom","left","right","width","height","checkScrollElementResized","sizeChanged","boundingRect","previousScrollBoundingRect","widthChange","abs","heightChange","_invisiblePaddingProperty","_marginDir","_offsetType","_pageOffsetType","_translateDir","func","wait","throttled","cancel","apply","timeout","_arguments","setTimeout","clearTimeout","itemsArrayModified","refreshCompletedCallback","maxRunTimes","oldViewPort","oldViewPortItems","oldRefreshCompletedCallback","scrollLengthDelta","scrollLength","oldStartItem","oldStartItemIndex","findIndex","itemOrderChanged","viewport","calculateViewport","startChanged","endChanged","scrollLengthChanged","paddingChanged","padding","scrollPositionChanged","setStyle","invisiblePaddingElementRef","useMarginInsteadOfTranslate","contentElementRef","headerElementRef","containerOffset","offset","clientHeight","changeEventArg","handleChanged","vsUpdate","vsStart","vsEnd","markForCheck","vsChange","executeRefreshOutsideAngularZone","run","Window","document","scrollingElement","documentElement","body","disposeScrollHandler","listen","disposeResizeHandler","checkScrollElementResizedTimer","setInterval","clearInterval","containerElementRef","elementClientRect","scrollClientRect","countItemsPerWrapGroup","round","ssrViewportHeight","ssrChildHeight","ssrViewportWidth","ssrChildWidth","propertyName","children","childrenLength","firstOffset","getScrollStartPosition","windowScrollValue","oldWrapGroupDimensions","itemsPerWrapGroup","wrapGroupIndex","oldWrapGroupDimension","itemsChanged","arrayStartIndex","calculatedScrollbarHeight","offsetHeight","calculatedScrollbarWidth","offsetWidth","clientWidth","defaultChildWidth","defaultChildHeight","viewportWidth","viewportHeight","content","itemsPerRow","ceil","itemsPerCol","scrollOffset","maxWidthForWrapGroup","maxHeightForWrapGroup","sumOfVisibleMaxWidths","sumOfVisibleMaxHeights","clientRect","oldValue","maxVisibleWidthForWrapGroup","scrollOffsetToRemove","maxVisibleHeightForWrapGroup","itemsPerPage","pageCount_fractional","numberOfWrapGroups","defaultScrollLengthPerWrapGroup","numUnknownChildSizes","childSize","viewportLength","arrayStartIndexWithBuffer","startingWrapGroupIndex","calculatePageInfo","scrollPercentage","totalScrolledLength","startingArrayIndex_fractional","maxStart","bufferBoundary","arrayEndIndex","endIndexWithinWrapGroup","bufferSize","newPadding","newScrollLength","PLATFORM_ID","type","contentQueries","dirIndex","ElementRef","_t","first","viewQuery","hostVars","hostBindings","RTL","exportAs","VirtualScrollerModule","providers","provide","useFactory","imports"],"sourceRoot":"webpack:///","sources":["./src/app/_services/toggle.service.ts","./src/app/shared/loading/loading.component.html","./src/app/shared/loading/loading.component.ts","./src/app/sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component.html","./src/app/sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component.ts","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/@tweenjs/tween.js/dist/tween.esm.js","./node_modules/@iharbeck/ngx-virtual-scroller/fesm2022/iharbeck-ngx-virtual-scroller.mjs"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter, ReplaySubject, take } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToggleService {\n\n toggleState: boolean = false;\n\n\n private toggleStateSource: ReplaySubject = new ReplaySubject(1);\n public toggleState$ = this.toggleStateSource.asObservable();\n\n constructor(router: Router) {\n router.events\n .pipe(filter(event => event instanceof NavigationStart))\n .subscribe((event) => {\n this.toggleState = false;\n this.toggleStateSource.next(this.toggleState);\n });\n this.toggleStateSource.next(false);\n }\n\n toggle() {\n this.toggleState = !this.toggleState;\n this.toggleStateSource.pipe(take(1)).subscribe(state => {\n this.toggleState = !state;\n this.toggleStateSource.next(this.toggleState);\n });\n \n }\n\n set(state: boolean) {\n this.toggleState = state;\n this.toggleStateSource.next(state);\n }\n}\n","\n \n \n
\n
\n {{t('loading')}}\n
\n
\n
\n\n \n
\n
\n {{t('loading')}}\n
\n
\n
\n
\n\n
\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-loading',\n standalone: true,\n imports: [CommonModule, TranslocoDirective],\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoadingComponent {\n\n @Input() loading: boolean = false;\n @Input() message: string = '';\n @Input() size: '' | 'spinner-border-sm' = '';\n /**\n * Uses absolute positioning to ensure it loads over content\n */\n @Input() absolute: boolean = false;\n\n constructor() { }\n}\n","\n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n\n
\n
\n","import {\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n TemplateRef\n} from '@angular/core';\nimport {NgbOffcanvas, NgbTooltip} from '@ng-bootstrap/ng-bootstrap';\nimport { Breakpoint, UtilityService } from 'src/app/shared/_services/utility.service';\nimport { NavService } from 'src/app/_services/nav.service';\nimport { ToggleService } from 'src/app/_services/toggle.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {CommonModule} from \"@angular/common\";\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n/**\n * This should go on all pages which have the side nav present and is not Settings related.\n * Content inside [main] selector should not have any padding top or bottom, they are included in this component.\n */\n@Component({\n selector: 'app-side-nav-companion-bar',\n standalone: true,\n imports: [CommonModule, NgbTooltip, TranslocoDirective],\n templateUrl: './side-nav-companion-bar.component.html',\n styleUrls: ['./side-nav-companion-bar.component.scss']\n})\nexport class SideNavCompanionBarComponent implements OnInit {\n /**\n * If the page should show a filter\n */\n @Input() hasFilter: boolean = false;\n /**\n * If the page should show an extra section button\n */\n @Input() hasExtras: boolean = false;\n\n /**\n * This implies there is a filter in effect on the underlying page. Will show UI styles to imply this to the user.\n */\n @Input() filterActive: boolean = false;\n\n @Input() extraDrawer!: TemplateRef;\n\n\n @Output() filterOpen: EventEmitter = new EventEmitter();\n\n isFilterOpen = false;\n isExtrasOpen = false;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private navService: NavService, private utilityService: UtilityService, public toggleService: ToggleService,\n private offcanvasService: NgbOffcanvas) {\n }\n\n ngOnInit(): void {\n // If user opens side nav while filter is open on mobile, then collapse filter (as it doesn't render well) TODO: Change this when we have new drawer\n this.navService.sideNavCollapsed$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(sideNavCollapsed => {\n if (this.isFilterOpen && sideNavCollapsed && this.utilityService.getActiveBreakpoint() < Breakpoint.Tablet) {\n this.isFilterOpen = false;\n this.filterOpen.emit(this.isFilterOpen);\n }\n });\n }\n\n toggleFilter() {\n this.isFilterOpen = !this.isFilterOpen;\n this.filterOpen.emit(this.isFilterOpen);\n }\n\n openExtrasDrawer() {\n if (this.extraDrawer === undefined) return;\n\n this.isExtrasOpen = true;\n const drawerRef = this.offcanvasService.open(this.extraDrawer, {position: 'end', scroll: true});\n drawerRef.closed.subscribe(() => this.isExtrasOpen = false);\n drawerRef.dismissed.subscribe(() => this.isExtrasOpen = false);\n }\n\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = asyncScheduler) {\n return audit(() => timer(duration, scheduler));\n}\n","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n let isComplete = false;\n const endDuration = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n","/**\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 }\n else if (amount < 2 / 2.75) {\n return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;\n }\n else if (amount < 2.5 / 2.75) {\n return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;\n }\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) { power = 4; }\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});\n\nvar now = function () { return performance.now(); };\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) { time = now(); }\n if (preserve === void 0) { preserve = false; }\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 }\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 }\n Sequence.nextId = function () {\n return Sequence._nextId++;\n };\n Sequence._nextId = 0;\n return Sequence;\n}());\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) { _group = mainGroup; }\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.to = function (target, duration) {\n if (duration === void 0) { duration = 1000; }\n if (this._isPlaying)\n 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;\n return this;\n };\n Tween.prototype.duration = function (duration) {\n if (duration === void 0) { duration = 1000; }\n this._duration = duration;\n return this;\n };\n Tween.prototype.dynamic = function (dynamic) {\n if (dynamic === void 0) { dynamic = false; }\n this._isDynamic = dynamic;\n return this;\n };\n Tween.prototype.start = function (time, overrideStartingValues) {\n if (time === void 0) { time = now(); }\n if (overrideStartingValues === void 0) { overrideStartingValues = false; }\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)\n 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)\n tmp[prop] = endValues[prop];\n _valuesEnd[property] = endValues = tmp;\n }\n this._setupProperties(nestedObject, _valuesStart[property], endValues, _valuesStartRepeat[property], overrideStartingValues);\n }\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 }\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) { time = now(); }\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) { time = now(); }\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) { group = mainGroup; }\n this._group = group;\n return this;\n };\n Tween.prototype.delay = function (amount) {\n if (amount === void 0) { amount = 0; }\n this._delayTime = amount;\n return this;\n };\n Tween.prototype.repeat = function (times) {\n if (times === void 0) { times = 0; }\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) { yoyo = false; }\n this._yoyo = yoyo;\n return this;\n };\n Tween.prototype.easing = function (easingFunction) {\n if (easingFunction === void 0) { easingFunction = Easing.Linear.None; }\n this._easingFunction = easingFunction;\n return this;\n };\n Tween.prototype.interpolation = function (interpolationFunction) {\n if (interpolationFunction === void 0) { interpolationFunction = Interpolation.Linear; }\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 if (time === void 0) { time = now(); }\n if (autoStart === void 0) { autoStart = true; }\n if (this._isPaused)\n return true;\n var property;\n var elapsed;\n var endTime = this._startTime + this._duration;\n if (!this._goToEnd && !this._isPlaying) {\n if (time > endTime)\n return false;\n if (autoStart)\n 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 elapsed = (time - this._startTime) / this._duration;\n elapsed = this._duration === 0 || elapsed > 1 ? 1 : elapsed;\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 (elapsed === 1) {\n if (this._repeat > 0) {\n if (isFinite(this._repeat)) {\n this._repeat--;\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 if (this._repeatDelayTime !== undefined) {\n this._startTime = time + this._repeatDelayTime;\n }\n else {\n this._startTime = time + this._delayTime;\n }\n if (this._onRepeatCallback) {\n this._onRepeatCallback(this._object);\n }\n this._onEveryStartCallbackFired = false;\n return true;\n }\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 }\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 }\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 }\n else {\n this._valuesStartRepeat[property] = this._valuesEnd[property];\n }\n this._valuesEnd[property] = tmp;\n };\n return Tween;\n}());\n\nvar VERSION = '21.0.0';\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};\n\nexport { Easing, Group, Interpolation, Sequence, Tween, VERSION, add, exports as default, getAll, nextId, now, remove, removeAll, update };\n","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';\n\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}\nclass 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 }\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 }\n else if (this.scrollThrottlingTime) {\n this.onScroll = this.throttleTrailing(() => {\n this.refresh_internal(false);\n }, this.scrollThrottlingTime);\n }\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 = { x: scrollElement.style['overflow-x'], y: scrollElement.style['overflow-y'] };\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 }\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 }\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 = { scrollPosition: scrollElement[this._scrollType] };\n let newTween = new tween.Tween(tweenConfigObj)\n .to({ scrollPosition }, animationMilliseconds)\n .easing(tween.Easing.Quadratic.Out)\n .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 })\n .onStop(() => {\n cancelAnimationFrame(animationRequest);\n })\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 }\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 = 'scaleX';\n this._marginDir = 'margin-left';\n this._offsetType = 'offsetLeft';\n this._pageOffsetType = 'pageXOffset';\n this._scrollType = 'scrollLeft';\n this._translateDir = 'translateX';\n }\n else {\n this._childScrollDim = 'childHeight';\n this._invisiblePaddingProperty = 'scaleY';\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 }\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 scrollLengthChanged = viewport.scrollLength !== this.previousViewPort.scrollLength;\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 (scrollLengthChanged) {\n this.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'transform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\n this.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'webkitTransform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\n }\n if (paddingChanged) {\n if (this.useMarginInsteadOfTranslate) {\n this.renderer.setStyle(this.contentElementRef.nativeElement, this._marginDir, `${viewport.padding}px`);\n }\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 }\n else {\n this.zone.run(handleChanged);\n }\n }\n else {\n if (maxRunTimes > 0 && (scrollLengthChanged || 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 }\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 }\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 }\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 }\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 }\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 }\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 }\n else {\n ++numUnknownChildSizes;\n }\n }\n scrollLength += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\n }\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 }\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 if (this.enableUnequalChildrenSizes) {\n const numberOfWrapGroups = Math.ceil(dimensions.itemCount / dimensions.itemsPerWrapGroup);\n let totalScrolledLength = 0;\n let defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\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 totalScrolledLength += childSize;\n }\n else {\n totalScrolledLength += defaultScrollLengthPerWrapGroup;\n }\n if (scrollPosition < totalScrolledLength) {\n scrollPercentage = i / numberOfWrapGroups;\n break;\n }\n }\n }\n else {\n scrollPercentage = scrollPosition / dimensions.scrollLength;\n }\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 let arrayStartIndex = Math.min(Math.floor(startingArrayIndex_fractional), maxStart);\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 arrayEndIndex = Math.ceil(startingArrayIndex_fractional) + dimensions.itemsPerPage - 1;\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 }\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 = 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: Math.round(newScrollLength),\n scrollStartPosition: pageInfo.scrollStartPosition,\n scrollEndPosition: pageInfo.scrollEndPosition,\n maxScrollPosition: pageInfo.maxScrollPosition\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: VirtualScrollerComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }, { token: 'virtual-scroller-default-options', optional: true }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0\", type: VirtualScrollerComponent, selector: \"virtual-scroller,[virtualScroller]\", inputs: { executeRefreshOutsideAngularZone: \"executeRefreshOutsideAngularZone\", enableUnequalChildrenSizes: \"enableUnequalChildrenSizes\", RTL: \"RTL\", useMarginInsteadOfTranslate: \"useMarginInsteadOfTranslate\", modifyOverflowStyleOfParentScroll: \"modifyOverflowStyleOfParentScroll\", stripedTable: \"stripedTable\", scrollbarWidth: \"scrollbarWidth\", scrollbarHeight: \"scrollbarHeight\", childWidth: \"childWidth\", childHeight: \"childHeight\", ssrChildWidth: \"ssrChildWidth\", ssrChildHeight: \"ssrChildHeight\", ssrViewportWidth: \"ssrViewportWidth\", ssrViewportHeight: \"ssrViewportHeight\", bufferAmount: \"bufferAmount\", scrollAnimationTime: \"scrollAnimationTime\", resizeBypassRefreshThreshold: \"resizeBypassRefreshThreshold\", scrollThrottlingTime: \"scrollThrottlingTime\", scrollDebounceTime: \"scrollDebounceTime\", checkResizeInterval: \"checkResizeInterval\", items: \"items\", compareItems: \"compareItems\", horizontal: \"horizontal\", parentScroll: \"parentScroll\" }, outputs: { vsUpdate: \"vsUpdate\", vsChange: \"vsChange\", vsStart: \"vsStart\", vsEnd: \"vsEnd\" }, host: { properties: { \"class.horizontal\": \"horizontal\", \"class.vertical\": \"!horizontal\", \"class.selfScroll\": \"!parentScroll\", \"class.rtl\": \"RTL\" } }, queries: [{ propertyName: \"headerElementRef\", first: true, predicate: [\"header\"], descendants: true, read: ElementRef }, { propertyName: \"containerElementRef\", first: true, predicate: [\"container\"], descendants: true, read: ElementRef }], viewQueries: [{ propertyName: \"contentElementRef\", first: true, predicate: [\"content\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"invisiblePaddingElementRef\", first: true, predicate: [\"invisiblePadding\"], descendants: true, read: ElementRef, static: true }], exportAs: [\"virtualScroller\"], usesOnChanges: true, ngImport: i0, template: `\n
\n
\n \n
\n `, isInline: true, styles: [\":host{position:relative;display:block;-webkit-overflow-scrolling:touch}:host.horizontal.selfScroll{overflow-y:visible;overflow-x:auto}:host.horizontal.selfScroll.rtl{transform:scaleX(-1)}:host.vertical.selfScroll{overflow-y:auto;overflow-x:visible}.scrollable-content{top:0;left:0;width:100%;height:100%;max-width:100vw;max-height:100vh;position:absolute}.scrollable-content ::ng-deep>*{box-sizing:border-box}:host.horizontal{white-space:nowrap}:host.horizontal .scrollable-content{display:flex}:host.horizontal .scrollable-content ::ng-deep>*{flex-shrink:0;flex-grow:0;white-space:initial}:host.horizontal.rtl .scrollable-content ::ng-deep>*{transform:scaleX(-1)}.total-padding{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0;opacity:0}:host.horizontal .total-padding{height:100%}\\n\"] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: VirtualScrollerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'virtual-scroller,[virtualScroller]', exportAs: 'virtualScroller', template: `\n
\n
\n \n
\n `, host: {\n '[class.horizontal]': 'horizontal',\n '[class.vertical]': '!horizontal',\n '[class.selfScroll]': '!parentScroll',\n '[class.rtl]': 'RTL'\n }, styles: [\":host{position:relative;display:block;-webkit-overflow-scrolling:touch}:host.horizontal.selfScroll{overflow-y:visible;overflow-x:auto}:host.horizontal.selfScroll.rtl{transform:scaleX(-1)}:host.vertical.selfScroll{overflow-y:auto;overflow-x:visible}.scrollable-content{top:0;left:0;width:100%;height:100%;max-width:100vw;max-height:100vh;position:absolute}.scrollable-content ::ng-deep>*{box-sizing:border-box}:host.horizontal{white-space:nowrap}:host.horizontal .scrollable-content{display:flex}:host.horizontal .scrollable-content ::ng-deep>*{flex-shrink:0;flex-grow:0;white-space:initial}:host.horizontal.rtl .scrollable-content ::ng-deep>*{transform:scaleX(-1)}.total-padding{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0;opacity:0}:host.horizontal .total-padding{height:100%}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['virtual-scroller-default-options']\n }] }]; }, propDecorators: { executeRefreshOutsideAngularZone: [{\n type: Input\n }], enableUnequalChildrenSizes: [{\n type: Input\n }], RTL: [{\n type: Input\n }], useMarginInsteadOfTranslate: [{\n type: Input\n }], modifyOverflowStyleOfParentScroll: [{\n type: Input\n }], stripedTable: [{\n type: Input\n }], scrollbarWidth: [{\n type: Input\n }], scrollbarHeight: [{\n type: Input\n }], childWidth: [{\n type: Input\n }], childHeight: [{\n type: Input\n }], ssrChildWidth: [{\n type: Input\n }], ssrChildHeight: [{\n type: Input\n }], ssrViewportWidth: [{\n type: Input\n }], ssrViewportHeight: [{\n type: Input\n }], bufferAmount: [{\n type: Input\n }], scrollAnimationTime: [{\n type: Input\n }], resizeBypassRefreshThreshold: [{\n type: Input\n }], scrollThrottlingTime: [{\n type: Input\n }], scrollDebounceTime: [{\n type: Input\n }], checkResizeInterval: [{\n type: Input\n }], items: [{\n type: Input\n }], compareItems: [{\n type: Input\n }], horizontal: [{\n type: Input\n }], parentScroll: [{\n type: Input\n }], vsUpdate: [{\n type: Output\n }], vsChange: [{\n type: Output\n }], vsStart: [{\n type: Output\n }], vsEnd: [{\n type: Output\n }], contentElementRef: [{\n type: ViewChild,\n args: ['content', { read: ElementRef, static: true }]\n }], invisiblePaddingElementRef: [{\n type: ViewChild,\n args: ['invisiblePadding', { read: ElementRef, static: true }]\n }], headerElementRef: [{\n type: ContentChild,\n args: ['header', { read: ElementRef, static: false }]\n }], containerElementRef: [{\n type: ContentChild,\n args: ['container', { read: ElementRef, static: false }]\n }] } });\n\nclass VirtualScrollerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: VirtualScrollerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.0.0\", ngImport: i0, type: VirtualScrollerModule, declarations: [VirtualScrollerComponent], imports: [CommonModule], exports: [VirtualScrollerComponent] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: VirtualScrollerModule, providers: [\n {\n provide: 'virtual-scroller-default-options',\n useFactory: VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY\n }\n ], imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: VirtualScrollerModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [VirtualScrollerComponent],\n declarations: [VirtualScrollerComponent],\n imports: [CommonModule],\n providers: [\n {\n provide: 'virtual-scroller-default-options',\n useFactory: VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY\n }\n ]\n }]\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"],"x_google_ignoreList":[5,6,7,8]}