UNPKG

@angular/cdk

Version:

Angular Material Component Development Kit

53 lines 26.6 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/cdk/coercion"),require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("@angular/cdk/platform"),require("@angular/cdk/bidi"),require("tslib"),require("@angular/cdk/collections")):"function"==typeof define&&define.amd?define("@angular/cdk/scrolling",["exports","@angular/cdk/coercion","@angular/core","rxjs","rxjs/operators","@angular/cdk/platform","@angular/cdk/bidi","tslib","@angular/cdk/collections"],e):e(((t=t||self).ng=t.ng||{},t.ng.cdk=t.ng.cdk||{},t.ng.cdk.scrolling={}),t.ng.cdk.coercion,t.ng.core,t.rxjs,t.rxjs.operators,t.ng.cdk.platform,t.ng.cdk.bidi,t.tslib,t.ng.cdk.collections)}(this,(function(t,e,r,n,i,o,a,s,l){"use strict"; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */var c=new r.InjectionToken("VIRTUAL_SCROLL_STRATEGY"),d=function(){function t(t,e,r){this._scrolledIndexChange=new n.Subject,this.scrolledIndexChange=this._scrolledIndexChange.pipe(i.distinctUntilChanged()),this._viewport=null,this._itemSize=t,this._minBufferPx=e,this._maxBufferPx=r}return t.prototype.attach=function(t){this._viewport=t,this._updateTotalContentSize(),this._updateRenderedRange()},t.prototype.detach=function(){this._scrolledIndexChange.complete(),this._viewport=null},t.prototype.updateItemAndBufferSize=function(t,e,r){if(r<e)throw Error("CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx");this._itemSize=t,this._minBufferPx=e,this._maxBufferPx=r,this._updateTotalContentSize(),this._updateRenderedRange()},t.prototype.onContentScrolled=function(){this._updateRenderedRange()},t.prototype.onDataLengthChanged=function(){this._updateTotalContentSize(),this._updateRenderedRange()},t.prototype.onContentRendered=function(){},t.prototype.onRenderedOffsetChanged=function(){},t.prototype.scrollToIndex=function(t,e){this._viewport&&this._viewport.scrollToOffset(t*this._itemSize,e)},t.prototype._updateTotalContentSize=function(){this._viewport&&this._viewport.setTotalContentSize(this._viewport.getDataLength()*this._itemSize)},t.prototype._updateRenderedRange=function(){if(this._viewport){var t=this._viewport.measureScrollOffset(),e=t/this._itemSize,r=this._viewport.getRenderedRange(),n={start:r.start,end:r.end},i=this._viewport.getViewportSize(),o=this._viewport.getDataLength(),a=t-n.start*this._itemSize;if(a<this._minBufferPx&&0!=n.start){var s=Math.ceil((this._maxBufferPx-a)/this._itemSize);n.start=Math.max(0,n.start-s),n.end=Math.min(o,Math.ceil(e+(i+this._minBufferPx)/this._itemSize))}else{var l=n.end*this._itemSize-(t+i);if(l<this._minBufferPx&&n.end!=o){var c=Math.ceil((this._maxBufferPx-l)/this._itemSize);c>0&&(n.end=Math.min(o,n.end+c),n.start=Math.max(0,Math.floor(e-this._minBufferPx/this._itemSize)))}}this._viewport.setRenderedRange(n),this._viewport.setRenderedContentOffset(this._itemSize*n.start),this._scrolledIndexChange.next(Math.floor(e))}},t}(); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */function u(t){return t._scrollStrategy}var h=function(){function t(){this._itemSize=20,this._minBufferPx=100,this._maxBufferPx=200,this._scrollStrategy=new d(this.itemSize,this.minBufferPx,this.maxBufferPx)}return Object.defineProperty(t.prototype,"itemSize",{get:function(){return this._itemSize},set:function(t){this._itemSize=e.coerceNumberProperty(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minBufferPx",{get:function(){return this._minBufferPx},set:function(t){this._minBufferPx=e.coerceNumberProperty(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxBufferPx",{get:function(){return this._maxBufferPx},set:function(t){this._maxBufferPx=e.coerceNumberProperty(t)},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(){this._scrollStrategy.updateItemAndBufferSize(this.itemSize,this.minBufferPx,this.maxBufferPx)},t.decorators=[{type:r.Directive,args:[{selector:"cdk-virtual-scroll-viewport[itemSize]",providers:[{provide:c,useFactory:u,deps:[r.forwardRef((function(){return t}))]}]}]}],t.propDecorators={itemSize:[{type:r.Input}],minBufferPx:[{type:r.Input}],maxBufferPx:[{type:r.Input}]},t}(),p=function(){function t(t,e){this._ngZone=t,this._platform=e,this._scrolled=new n.Subject,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map}return t.prototype.register=function(t){var e=this;this.scrollContainers.has(t)||this.scrollContainers.set(t,t.elementScrolled().subscribe((function(){return e._scrolled.next(t)})))},t.prototype.deregister=function(t){var e=this.scrollContainers.get(t);e&&(e.unsubscribe(),this.scrollContainers.delete(t))},t.prototype.scrolled=function(t){var e=this;return void 0===t&&(t=20),this._platform.isBrowser?new n.Observable((function(r){e._globalSubscription||e._addGlobalListener();var n=t>0?e._scrolled.pipe(i.auditTime(t)).subscribe(r):e._scrolled.subscribe(r);return e._scrolledCount++,function(){n.unsubscribe(),e._scrolledCount--,e._scrolledCount||e._removeGlobalListener()}})):n.of()},t.prototype.ngOnDestroy=function(){var t=this;this._removeGlobalListener(),this.scrollContainers.forEach((function(e,r){return t.deregister(r)})),this._scrolled.complete()},t.prototype.ancestorScrolled=function(t,e){var r=this.getAncestorScrollContainers(t);return this.scrolled(e).pipe(i.filter((function(t){return!t||r.indexOf(t)>-1})))},t.prototype.getAncestorScrollContainers=function(t){var e=this,r=[];return this.scrollContainers.forEach((function(n,i){e._scrollableContainsElement(i,t)&&r.push(i)})),r},t.prototype._scrollableContainsElement=function(t,e){var r=e.nativeElement,n=t.getElementRef().nativeElement;do{if(r==n)return!0}while(r=r.parentElement);return!1},t.prototype._addGlobalListener=function(){var t=this;this._globalSubscription=this._ngZone.runOutsideAngular((function(){return n.fromEvent(window.document,"scroll").subscribe((function(){return t._scrolled.next()}))}))},t.prototype._removeGlobalListener=function(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)},t.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:r.NgZone},{type:o.Platform}]},t.ɵprov=r.ɵɵdefineInjectable({factory:function e(){return new t(r.ɵɵinject(r.NgZone),r.ɵɵinject(o.Platform))},token:t,providedIn:"root"}),t}(),f=function(){function t(t,e,r,o){var a=this;this.elementRef=t,this.scrollDispatcher=e,this.ngZone=r,this.dir=o,this._destroyed=new n.Subject,this._elementScrolled=new n.Observable((function(t){return a.ngZone.runOutsideAngular((function(){return n.fromEvent(a.elementRef.nativeElement,"scroll").pipe(i.takeUntil(a._destroyed)).subscribe(t)}))}))}return t.prototype.ngOnInit=function(){this.scrollDispatcher.register(this)},t.prototype.ngOnDestroy=function(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()},t.prototype.elementScrolled=function(){return this._elementScrolled},t.prototype.getElementRef=function(){return this.elementRef},t.prototype.scrollTo=function(t){var e=this.elementRef.nativeElement,r=this.dir&&"rtl"==this.dir.value;t.left=null==t.left?r?t.end:t.start:t.left,t.right=null==t.right?r?t.start:t.end:t.right,null!=t.bottom&&(t.top=e.scrollHeight-e.clientHeight-t.bottom),r&&o.getRtlScrollAxisType()!=o.RtlScrollAxisType.NORMAL?(null!=t.left&&(t.right=e.scrollWidth-e.clientWidth-t.left),o.getRtlScrollAxisType()==o.RtlScrollAxisType.INVERTED?t.left=t.right:o.getRtlScrollAxisType()==o.RtlScrollAxisType.NEGATED&&(t.left=t.right?-t.right:t.right)):null!=t.right&&(t.left=e.scrollWidth-e.clientWidth-t.right),this._applyScrollToOptions(t)},t.prototype._applyScrollToOptions=function(t){var e=this.elementRef.nativeElement;o.supportsScrollBehavior()?e.scrollTo(t):(null!=t.top&&(e.scrollTop=t.top),null!=t.left&&(e.scrollLeft=t.left))},t.prototype.measureScrollOffset=function(t){var e=this.elementRef.nativeElement;if("top"==t)return e.scrollTop;if("bottom"==t)return e.scrollHeight-e.clientHeight-e.scrollTop;var r=this.dir&&"rtl"==this.dir.value;return"start"==t?t=r?"right":"left":"end"==t&&(t=r?"left":"right"),r&&o.getRtlScrollAxisType()==o.RtlScrollAxisType.INVERTED?"left"==t?e.scrollWidth-e.clientWidth-e.scrollLeft:e.scrollLeft:r&&o.getRtlScrollAxisType()==o.RtlScrollAxisType.NEGATED?"left"==t?e.scrollLeft+e.scrollWidth-e.clientWidth:-e.scrollLeft:"left"==t?e.scrollLeft:e.scrollWidth-e.clientWidth-e.scrollLeft},t.decorators=[{type:r.Directive,args:[{selector:"[cdk-scrollable], [cdkScrollable]"}]}],t.ctorParameters=function(){return[{type:r.ElementRef},{type:p},{type:r.NgZone},{type:a.Directionality,decorators:[{type:r.Optional}]}]},t}(),_=function(){function t(t,e){var r=this;this._platform=t,e.runOutsideAngular((function(){r._change=t.isBrowser?n.merge(n.fromEvent(window,"resize"),n.fromEvent(window,"orientationchange")):n.of(),r._invalidateCache=r.change().subscribe((function(){return r._updateViewportSize()}))}))}return t.prototype.ngOnDestroy=function(){this._invalidateCache.unsubscribe()},t.prototype.getViewportSize=function(){this._viewportSize||this._updateViewportSize();var t={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),t},t.prototype.getViewportRect=function(){var t=this.getViewportScrollPosition(),e=this.getViewportSize(),r=e.width,n=e.height;return{top:t.top,left:t.left,bottom:t.top+n,right:t.left+r,height:n,width:r}},t.prototype.getViewportScrollPosition=function(){if(!this._platform.isBrowser)return{top:0,left:0};var t=document.documentElement,e=t.getBoundingClientRect();return{top:-e.top||document.body.scrollTop||window.scrollY||t.scrollTop||0,left:-e.left||document.body.scrollLeft||window.scrollX||t.scrollLeft||0}},t.prototype.change=function(t){return void 0===t&&(t=20),t>0?this._change.pipe(i.auditTime(t)):this._change},t.prototype._updateViewportSize=function(){this._viewportSize=this._platform.isBrowser?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0}},t.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:o.Platform},{type:r.NgZone}]},t.ɵprov=r.ɵɵdefineInjectable({factory:function e(){return new t(r.ɵɵinject(o.Platform),r.ɵɵinject(r.NgZone))},token:t,providedIn:"root"}),t}(),g="undefined"!=typeof requestAnimationFrame?n.animationFrameScheduler:n.asapScheduler,m=function(t){function e(e,r,i,o,a,s,l){var c=t.call(this,e,s,i,a)||this;if(c.elementRef=e,c._changeDetectorRef=r,c._scrollStrategy=o,c._detachedSubject=new n.Subject,c._renderedRangeSubject=new n.Subject,c._orientation="vertical",c.scrolledIndexChange=new n.Observable((function(t){return c._scrollStrategy.scrolledIndexChange.subscribe((function(e){return Promise.resolve().then((function(){return c.ngZone.run((function(){return t.next(e)}))}))}))})),c.renderedRangeStream=c._renderedRangeSubject.asObservable(),c._totalContentSize=0,c._totalContentWidth="",c._totalContentHeight="",c._renderedRange={start:0,end:0},c._dataLength=0,c._viewportSize=0,c._renderedContentOffset=0,c._renderedContentOffsetNeedsRewrite=!1,c._isChangeDetectionPending=!1,c._runAfterChangeDetection=[],c._viewportChanges=n.Subscription.EMPTY,!o)throw Error('Error: cdk-virtual-scroll-viewport requires the "itemSize" property to be set.');return l&&(c._viewportChanges=l.change().subscribe((function(){c.checkViewportSize()}))),c}return s.__extends(e,t),Object.defineProperty(e.prototype,"orientation",{get:function(){return this._orientation},set:function(t){this._orientation!==t&&(this._orientation=t,this._calculateSpacerSize())},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;t.prototype.ngOnInit.call(this),this.ngZone.runOutsideAngular((function(){return Promise.resolve().then((function(){e._measureViewportSize(),e._scrollStrategy.attach(e),e.elementScrolled().pipe(i.startWith(null),i.auditTime(0,g)).subscribe((function(){return e._scrollStrategy.onContentScrolled()})),e._markChangeDetectionNeeded()}))}))},e.prototype.ngOnDestroy=function(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),t.prototype.ngOnDestroy.call(this)},e.prototype.attach=function(t){var e=this;if(this._forOf)throw Error("CdkVirtualScrollViewport is already attached.");this.ngZone.runOutsideAngular((function(){e._forOf=t,e._forOf.dataStream.pipe(i.takeUntil(e._detachedSubject)).subscribe((function(t){var r=t.length;r!==e._dataLength&&(e._dataLength=r,e._scrollStrategy.onDataLengthChanged()),e._doChangeDetection()}))}))},e.prototype.detach=function(){this._forOf=null,this._detachedSubject.next()},e.prototype.getDataLength=function(){return this._dataLength},e.prototype.getViewportSize=function(){return this._viewportSize},e.prototype.getRenderedRange=function(){return this._renderedRange},e.prototype.setTotalContentSize=function(t){this._totalContentSize!==t&&(this._totalContentSize=t,this._calculateSpacerSize(),this._markChangeDetectionNeeded())},e.prototype.setRenderedRange=function(t){var e=this;( /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function r(t,e){return t.start==e.start&&t.end==e.end})(this._renderedRange,t)||(this._renderedRangeSubject.next(this._renderedRange=t),this._markChangeDetectionNeeded((function(){return e._scrollStrategy.onContentRendered()})))},e.prototype.getOffsetToRenderedContentStart=function(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset},e.prototype.setRenderedContentOffset=function(t,e){var r=this;void 0===e&&(e="to-start");var n="horizontal"==this.orientation,i=n?"X":"Y",o="translate"+i+"("+Number((n&&this.dir&&"rtl"==this.dir.value?-1:1)*t)+"px)";this._renderedContentOffset=t,"to-end"===e&&(o+=" translate"+i+"(-100%)",this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=o&&(this._renderedContentTransform=o,this._markChangeDetectionNeeded((function(){r._renderedContentOffsetNeedsRewrite?(r._renderedContentOffset-=r.measureRenderedContentSize(),r._renderedContentOffsetNeedsRewrite=!1,r.setRenderedContentOffset(r._renderedContentOffset)):r._scrollStrategy.onRenderedOffsetChanged()})))},e.prototype.scrollToOffset=function(t,e){void 0===e&&(e="auto");var r={behavior:e};"horizontal"===this.orientation?r.start=t:r.top=t,this.scrollTo(r)},e.prototype.scrollToIndex=function(t,e){void 0===e&&(e="auto"),this._scrollStrategy.scrollToIndex(t,e)},e.prototype.measureScrollOffset=function(e){return t.prototype.measureScrollOffset.call(this,e||("horizontal"===this.orientation?"start":"top"))},e.prototype.measureRenderedContentSize=function(){var t=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?t.offsetWidth:t.offsetHeight},e.prototype.measureRangeSize=function(t){return this._forOf?this._forOf.measureRangeSize(t,this.orientation):0},e.prototype.checkViewportSize=function(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()},e.prototype._measureViewportSize=function(){var t=this.elementRef.nativeElement;this._viewportSize="horizontal"===this.orientation?t.clientWidth:t.clientHeight},e.prototype._markChangeDetectionNeeded=function(t){var e=this;t&&this._runAfterChangeDetection.push(t),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular((function(){return Promise.resolve().then((function(){e._doChangeDetection()}))})))},e.prototype._doChangeDetection=function(){var t,e,r=this;this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run((function(){return r._changeDetectorRef.markForCheck()}));var n=this._runAfterChangeDetection;this._runAfterChangeDetection=[];try{for(var i=s.__values(n),o=i.next();!o.done;o=i.next())(0,o.value)()}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}},e.prototype._calculateSpacerSize=function(){this._totalContentHeight="horizontal"===this.orientation?"":this._totalContentSize+"px",this._totalContentWidth="horizontal"===this.orientation?this._totalContentSize+"px":""},e.decorators=[{type:r.Component,args:[{selector:"cdk-virtual-scroll-viewport",template:'\x3c!--\n Wrap the rendered content in an element that will be used to offset it based on the scroll\n position.\n--\x3e\n<div #contentWrapper class="cdk-virtual-scroll-content-wrapper">\n <ng-content></ng-content>\n</div>\n\x3c!--\n Spacer used to force the scrolling container to the correct size for the *total* number of items\n so that the scrollbar captures the size of the entire data set.\n--\x3e\n<div class="cdk-virtual-scroll-spacer"\n [style.width]="_totalContentWidth" [style.height]="_totalContentHeight"></div>\n',host:{class:"cdk-virtual-scroll-viewport","[class.cdk-virtual-scroll-orientation-horizontal]":'orientation === "horizontal"',"[class.cdk-virtual-scroll-orientation-vertical]":'orientation !== "horizontal"'},encapsulation:r.ViewEncapsulation.None,changeDetection:r.ChangeDetectionStrategy.OnPush,providers:[{provide:f,useExisting:e}],styles:["cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\n"]}]}],e.ctorParameters=function(){return[{type:r.ElementRef},{type:r.ChangeDetectorRef},{type:r.NgZone},{type:void 0,decorators:[{type:r.Optional},{type:r.Inject,args:[c]}]},{type:a.Directionality,decorators:[{type:r.Optional}]},{type:p},{type:_,decorators:[{type:r.Optional}]}]},e.propDecorators={orientation:[{type:r.Input}],scrolledIndexChange:[{type:r.Output}],_contentWrapper:[{type:r.ViewChild,args:["contentWrapper",{static:!0}]}]},e}(f); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function v(t,e){if(!e.getBoundingClientRect)return 0;var r=e.getBoundingClientRect();return"horizontal"==t?r.width:r.height}var y=function(){function t(t,e,r,o,a){var l=this;this._viewContainerRef=t,this._template=e,this._differs=r,this._viewport=o,this.viewChange=new n.Subject,this._dataSourceChanges=new n.Subject,this.cdkVirtualForTemplateCacheSize=20,this.dataStream=this._dataSourceChanges.pipe(i.startWith(null),i.pairwise(),i.switchMap((function(t){var e=s.__read(t,2);return l._changeDataSource(e[0],e[1])})),i.shareReplay(1)),this._differ=null,this._templateCache=[],this._needsUpdate=!1,this._destroyed=new n.Subject,this.dataStream.subscribe((function(t){l._data=t,l._onRenderedDataChange()})),this._viewport.renderedRangeStream.pipe(i.takeUntil(this._destroyed)).subscribe((function(t){l._renderedRange=t,a.run((function(){return l.viewChange.next(l._renderedRange)})),l._onRenderedDataChange()})),this._viewport.attach(this)}return Object.defineProperty(t.prototype,"cdkVirtualForOf",{get:function(){return this._cdkVirtualForOf},set:function(t){this._cdkVirtualForOf=t;var e=l.isDataSource(t)?t:new l.ArrayDataSource(t instanceof n.Observable?t:Array.prototype.slice.call(t||[]));this._dataSourceChanges.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cdkVirtualForTrackBy",{get:function(){return this._cdkVirtualForTrackBy},set:function(t){var e=this;this._needsUpdate=!0,this._cdkVirtualForTrackBy=t?function(r,n){return t(r+(e._renderedRange?e._renderedRange.start:0),n)}:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cdkVirtualForTemplate",{set:function(t){t&&(this._needsUpdate=!0,this._template=t)},enumerable:!0,configurable:!0}),t.prototype.measureRangeSize=function(t,e){if(t.start>=t.end)return 0;if(t.start<this._renderedRange.start||t.end>this._renderedRange.end)throw Error("Error: attempted to measure an item that isn't rendered.");for(var r=t.start-this._renderedRange.start,n=0,i=t.end-t.start;i--;)for(var o=this._viewContainerRef.get(i+r),a=o?o.rootNodes.length:0;a--;)n+=v(e,o.rootNodes[a]);return n},t.prototype.ngDoCheck=function(){if(this._differ&&this._needsUpdate){var t=this._differ.diff(this._renderedItems);t?this._applyChanges(t):this._updateContext(),this._needsUpdate=!1}},t.prototype.ngOnDestroy=function(){var t,e;this._viewport.detach(),this._dataSourceChanges.next(),this._dataSourceChanges.complete(),this.viewChange.complete(),this._destroyed.next(),this._destroyed.complete();try{for(var r=s.__values(this._templateCache),n=r.next();!n.done;n=r.next())n.value.destroy()}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},t.prototype._onRenderedDataChange=function(){this._renderedRange&&(this._renderedItems=this._data.slice(this._renderedRange.start,this._renderedRange.end),this._differ||(this._differ=this._differs.find(this._renderedItems).create(this.cdkVirtualForTrackBy)),this._needsUpdate=!0)},t.prototype._changeDataSource=function(t,e){return t&&t.disconnect(this),this._needsUpdate=!0,e?e.connect(this):n.of()},t.prototype._updateContext=function(){for(var t=this._data.length,e=this._viewContainerRef.length;e--;){var r=this._viewContainerRef.get(e);r.context.index=this._renderedRange.start+e,r.context.count=t,this._updateComputedContextProperties(r.context),r.detectChanges()}},t.prototype._applyChanges=function(t){var e=this;t.forEachOperation((function(t,r,n){if(null==t.previousIndex)(i=e._insertViewForNewItem(n)).context.$implicit=t.item;else if(null==n)e._cacheView(e._detachView(r));else{var i=e._viewContainerRef.get(r);e._viewContainerRef.move(i,n),i.context.$implicit=t.item}})),t.forEachIdentityChange((function(t){e._viewContainerRef.get(t.currentIndex).context.$implicit=t.item}));for(var r=this._data.length,n=this._viewContainerRef.length;n--;){var i=this._viewContainerRef.get(n);i.context.index=this._renderedRange.start+n,i.context.count=r,this._updateComputedContextProperties(i.context)}},t.prototype._cacheView=function(t){if(this._templateCache.length<this.cdkVirtualForTemplateCacheSize)this._templateCache.push(t);else{var e=this._viewContainerRef.indexOf(t);-1===e?t.destroy():this._viewContainerRef.remove(e)}},t.prototype._insertViewForNewItem=function(t){return this._insertViewFromCache(t)||this._createEmbeddedViewAt(t)},t.prototype._updateComputedContextProperties=function(t){t.first=0===t.index,t.last=t.index===t.count-1,t.even=t.index%2==0,t.odd=!t.even},t.prototype._createEmbeddedViewAt=function(t){return this._viewContainerRef.createEmbeddedView(this._template,{$implicit:null,cdkVirtualForOf:this._cdkVirtualForOf,index:-1,count:-1,first:!1,last:!1,odd:!1,even:!1},t)},t.prototype._insertViewFromCache=function(t){var e=this._templateCache.pop();return e&&this._viewContainerRef.insert(e,t),e||null},t.prototype._detachView=function(t){return this._viewContainerRef.detach(t)},t.decorators=[{type:r.Directive,args:[{selector:"[cdkVirtualFor][cdkVirtualForOf]"}]}],t.ctorParameters=function(){return[{type:r.ViewContainerRef},{type:r.TemplateRef},{type:r.IterableDiffers},{type:m,decorators:[{type:r.SkipSelf}]},{type:r.NgZone}]},t.propDecorators={cdkVirtualForOf:[{type:r.Input}],cdkVirtualForTrackBy:[{type:r.Input}],cdkVirtualForTemplate:[{type:r.Input}],cdkVirtualForTemplateCacheSize:[{type:r.Input}]},t}(),S=function(){function t(){}return t.decorators=[{type:r.NgModule,args:[{imports:[a.BidiModule,o.PlatformModule],exports:[a.BidiModule,h,f,y,m],declarations:[h,f,y,m]}]}],t}(); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ t.CdkFixedSizeVirtualScroll=h,t.CdkScrollable=f,t.CdkVirtualForOf=y,t.CdkVirtualScrollViewport=m,t.DEFAULT_RESIZE_TIME=20,t.DEFAULT_SCROLL_TIME=20,t.FixedSizeVirtualScrollStrategy=d,t.ScrollDispatcher=p,t.ScrollingModule=S,t.VIRTUAL_SCROLL_STRATEGY=c,t.ViewportRuler=_,t._fixedSizeVirtualScrollStrategyFactory=u,Object.defineProperty(t,"__esModule",{value:!0})}));