UNPKG

@angular/cdk

Version:

Angular Material Component Development Kit

54 lines (52 loc) 28 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/common"),require("@angular/cdk/bidi"),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/common","@angular/cdk/bidi","@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.common,t.ng.cdk.bidi,t.ng.cdk.collections)}(this,(function(t,e,r,n,o,i,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(o.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){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.getRenderedRange(),e={start:t.start,end:t.end},r=this._viewport.getViewportSize(),n=this._viewport.getDataLength(),o=this._viewport.measureScrollOffset(),i=o/this._itemSize;if(e.end>n){var a=Math.ceil(r/this._itemSize),s=Math.max(0,Math.min(i,n-a));i!=s&&(i=s,o=s*this._itemSize,e.start=Math.floor(i)),e.end=Math.max(0,Math.min(n,e.start+a))}var l=o-e.start*this._itemSize;if(l<this._minBufferPx&&0!=e.start){var c=Math.ceil((this._maxBufferPx-l)/this._itemSize);e.start=Math.max(0,e.start-c),e.end=Math.min(n,Math.ceil(i+(r+this._minBufferPx)/this._itemSize))}else{var d=e.end*this._itemSize-(o+r);if(d<this._minBufferPx&&e.end!=n){var u=Math.ceil((this._maxBufferPx-d)/this._itemSize);u>0&&(e.end=Math.min(n,e.end+u),e.start=Math.max(0,Math.floor(i-this._minBufferPx/this._itemSize)))}}this._viewport.setRenderedRange(e),this._viewport.setRenderedContentOffset(this._itemSize*e.start),this._scrolledIndexChange.next(Math.floor(i))}},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:!1,configurable:!0}),Object.defineProperty(t.prototype,"minBufferPx",{get:function(){return this._minBufferPx},set:function(t){this._minBufferPx=e.coerceNumberProperty(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"maxBufferPx",{get:function(){return this._maxBufferPx},set:function(t){this._maxBufferPx=e.coerceNumberProperty(t)},enumerable:!1,configurable:!0}),t.prototype.ngOnChanges=function(){this._scrollStrategy.updateItemAndBufferSize(this.itemSize,this.minBufferPx,this.maxBufferPx)},t}();h.decorators=[{type:r.Directive,args:[{selector:"cdk-virtual-scroll-viewport[itemSize]",providers:[{provide:c,useFactory:u,deps:[r.forwardRef((function(){return h}))]}]}]}],h.propDecorators={itemSize:[{type:r.Input}],minBufferPx:[{type:r.Input}],maxBufferPx:[{type:r.Input}]}; /** * @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 p=function(){function t(t,e,r){this._ngZone=t,this._platform=e,this._scrolled=new n.Subject,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=r}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(o.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(o.filter((function(t){return!t||r.indexOf(t)>-1})))},t.prototype.getAncestorScrollContainers=function(t){var e=this,r=[];return this.scrollContainers.forEach((function(n,o){e._scrollableContainsElement(o,t)&&r.push(o)})),r},t.prototype._getWindow=function(){return this._document.defaultView||window},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(){var e=t._getWindow();return n.fromEvent(e.document,"scroll").subscribe((function(){return t._scrolled.next()}))}))},t.prototype._removeGlobalListener=function(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)},t}();p.ɵprov=r.ɵɵdefineInjectable({factory:function t(){return new p(r.ɵɵinject(r.NgZone),r.ɵɵinject(i.Platform),r.ɵɵinject(a.DOCUMENT,8))},token:p,providedIn:"root"}),p.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],p.ctorParameters=function(){return[{type:r.NgZone},{type:i.Platform},{type:void 0,decorators:[{type:r.Optional},{type:r.Inject,args:[a.DOCUMENT]}]}]}; /** * @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 f=function(){function t(t,e,r,i){var a=this;this.elementRef=t,this.scrollDispatcher=e,this.ngZone=r,this.dir=i,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(o.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;null==t.left&&(t.left=r?t.end:t.start),null==t.right&&(t.right=r?t.start:t.end),null!=t.bottom&&(t.top=e.scrollHeight-e.clientHeight-t.bottom),r&&0!=i.getRtlScrollAxisType()?(null!=t.left&&(t.right=e.scrollWidth-e.clientWidth-t.left),2==i.getRtlScrollAxisType()?t.left=t.right:1==i.getRtlScrollAxisType()&&(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;i.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&&2==i.getRtlScrollAxisType()?"left"==t?e.scrollWidth-e.clientWidth-e.scrollLeft:e.scrollLeft:r&&1==i.getRtlScrollAxisType()?"left"==t?e.scrollLeft+e.scrollWidth-e.clientWidth:-e.scrollLeft:"left"==t?e.scrollLeft:e.scrollWidth-e.clientWidth-e.scrollLeft},t}();f.decorators=[{type:r.Directive,args:[{selector:"[cdk-scrollable], [cdkScrollable]"}]}],f.ctorParameters=function(){return[{type:r.ElementRef},{type:p},{type:r.NgZone},{type:s.Directionality,decorators:[{type:r.Optional}]}]}; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ var g=function(t,e){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},_=function(){function t(t,e,r){var o=this;this._platform=t,this._change=new n.Subject,this._changeListener=function(t){o._change.next(t)},this._document=r,e.runOutsideAngular((function(){if(t.isBrowser){var e=o._getWindow();e.addEventListener("resize",o._changeListener),e.addEventListener("orientationchange",o._changeListener)}o.change().subscribe((function(){return o._updateViewportSize()}))}))}return t.prototype.ngOnDestroy=function(){if(this._platform.isBrowser){var t=this._getWindow();t.removeEventListener("resize",this._changeListener),t.removeEventListener("orientationchange",this._changeListener)}this._change.complete()},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=this._document,e=this._getWindow(),r=t.documentElement,n=r.getBoundingClientRect();return{top:-n.top||t.body.scrollTop||e.scrollY||r.scrollTop||0,left:-n.left||t.body.scrollLeft||e.scrollX||r.scrollLeft||0}},t.prototype.change=function(t){return void 0===t&&(t=20),t>0?this._change.pipe(o.auditTime(t)):this._change},t.prototype._getWindow=function(){return this._document.defaultView||window},t.prototype._updateViewportSize=function(){var t=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:t.innerWidth,height:t.innerHeight}:{width:0,height:0}},t}();_.ɵprov=r.ɵɵdefineInjectable({factory:function t(){return new _(r.ɵɵinject(i.Platform),r.ɵɵinject(r.NgZone),r.ɵɵinject(a.DOCUMENT,8))},token:_,providedIn:"root"}),_.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],_.ctorParameters=function(){return[{type:i.Platform},{type:r.NgZone},{type:void 0,decorators:[{type:r.Optional},{type:r.Inject,args:[a.DOCUMENT]}]}]};var m="undefined"!=typeof requestAnimationFrame?n.animationFrameScheduler:n.asapScheduler,y=function(t){function e(e,r,o,i,a,s,l){var c=t.call(this,e,s,o,a)||this;return c.elementRef=e,c._changeDetectorRef=r,c._scrollStrategy=i,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,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,c._viewportChanges=l.change().subscribe((function(){c.checkViewportSize()})),c}return function r(t,e){function r(){this.constructor=t}g(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}(e,t),Object.defineProperty(e.prototype,"orientation",{get:function(){return this._orientation},set:function(t){this._orientation!==t&&(this._orientation=t,this._calculateSpacerSize())},enumerable:!1,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(o.startWith(null),o.auditTime(0,m)).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;this.ngZone.runOutsideAngular((function(){e._forOf=t,e._forOf.dataStream.pipe(o.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;(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,o=n?"X":"Y",i="translate"+o+"("+Number((n&&this.dir&&"rtl"==this.dir.value?-1:1)*t)+"px)";this._renderedContentOffset=t,"to-end"===e&&(i+=" translate"+o+"(-100%)",this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=i&&(this._renderedContentTransform=i,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 o=function i(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}(n),a=o.next();!a.done;a=o.next())(0,a.value)()}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=o.return)&&e.call(o)}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}(f);function v(t,e,r){if(!r.getBoundingClientRect)return 0;var n=r.getBoundingClientRect();return"horizontal"===t?"start"===e?n.left:n.right:"start"===e?n.top:n.bottom}y.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:y}],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"]}]}],y.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:s.Directionality,decorators:[{type:r.Optional}]},{type:p},{type:_}]},y.propDecorators={orientation:[{type:r.Input}],scrolledIndexChange:[{type:r.Output}],_contentWrapper:[{type:r.ViewChild,args:["contentWrapper",{static:!0}]}]};var S,b,w=function(){function t(t,e,r,i,a,s){var l=this;this._viewContainerRef=t,this._template=e,this._differs=r,this._viewRepeater=i,this._viewport=a,this.viewChange=new n.Subject,this._dataSourceChanges=new n.Subject,this.dataStream=this._dataSourceChanges.pipe(o.startWith(null),o.pairwise(),o.switchMap((function(t){var e=function r(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,i=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}(t,2);return l._changeDataSource(e[0],e[1])})),o.shareReplay(1)),this._differ=null,this._needsUpdate=!1,this._destroyed=new n.Subject,this.dataStream.subscribe((function(t){l._data=t,l._onRenderedDataChange()})),this._viewport.renderedRangeStream.pipe(o.takeUntil(this._destroyed)).subscribe((function(t){l._renderedRange=t,s.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,l.isDataSource(t)?this._dataSourceChanges.next(t):this._dataSourceChanges.next(new l.ArrayDataSource(n.isObservable(t)?t:Array.from(t||[])))},enumerable:!1,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:!1,configurable:!0}),Object.defineProperty(t.prototype,"cdkVirtualForTemplate",{set:function(t){t&&(this._needsUpdate=!0,this._template=t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"cdkVirtualForTemplateCacheSize",{get:function(){return this._viewRepeater.viewCacheSize},set:function(t){this._viewRepeater.viewCacheSize=e.coerceNumberProperty(t)},enumerable:!1,configurable:!0}),t.prototype.measureRangeSize=function(t,e){if(t.start>=t.end)return 0;for(var r,n,o=t.start-this._renderedRange.start,i=t.end-t.start,a=0;a<i;a++)if((s=this._viewContainerRef.get(a+o))&&s.rootNodes.length){r=n=s.rootNodes[0];break}for(a=i-1;a>-1;a--){var s;if((s=this._viewContainerRef.get(a+o))&&s.rootNodes.length){n=s.rootNodes[s.rootNodes.length-1];break}}return r&&n?v(e,"end",n)-v(e,"start",r):0},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(){this._viewport.detach(),this._dataSourceChanges.next(void 0),this._dataSourceChanges.complete(),this.viewChange.complete(),this._destroyed.next(),this._destroyed.complete(),this._viewRepeater.detach()},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;this._viewRepeater.applyChanges(t,this._viewContainerRef,(function(t,r,n){return e._getEmbeddedViewArgs(t,n)}),(function(t){return 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 o=this._viewContainerRef.get(n);o.context.index=this._renderedRange.start+n,o.context.count=r,this._updateComputedContextProperties(o.context)}},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._getEmbeddedViewArgs=function(t,e){return{templateRef:this._template,context:{$implicit:t.item,cdkVirtualForOf:this._cdkVirtualForOf,index:-1,count:-1,first:!1,last:!1,odd:!1,even:!1},index:e}},t}();w.decorators=[{type:r.Directive,args:[{selector:"[cdkVirtualFor][cdkVirtualForOf]",providers:[{provide:l._VIEW_REPEATER_STRATEGY,useClass:l._RecycleViewRepeaterStrategy}]}]}],w.ctorParameters=function(){return[{type:r.ViewContainerRef},{type:r.TemplateRef},{type:r.IterableDiffers},{type:l._RecycleViewRepeaterStrategy,decorators:[{type:r.Inject,args:[l._VIEW_REPEATER_STRATEGY]}]},{type:y,decorators:[{type:r.SkipSelf}]},{type:r.NgZone}]},w.propDecorators={cdkVirtualForOf:[{type:r.Input}],cdkVirtualForTrackBy:[{type:r.Input}],cdkVirtualForTemplate:[{type:r.Input}],cdkVirtualForTemplateCacheSize:[{type:r.Input}]},(S=function S(){}).decorators=[{type:r.NgModule,args:[{exports:[f],declarations:[f]}]}],(b=function b(){}).decorators=[{type:r.NgModule,args:[{imports:[s.BidiModule,i.PlatformModule,S],exports:[s.BidiModule,S,h,w,y],declarations:[h,w,y]}]}], /** * @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.CdkScrollableModule=S,t.CdkVirtualForOf=w,t.CdkVirtualScrollViewport=y,t.DEFAULT_RESIZE_TIME=20,t.DEFAULT_SCROLL_TIME=20,t.FixedSizeVirtualScrollStrategy=d,t.ScrollDispatcher=p,t.ScrollingModule=b,t.VIRTUAL_SCROLL_STRATEGY=c,t.ViewportRuler=_,t._fixedSizeVirtualScrollStrategyFactory=u,Object.defineProperty(t,"__esModule",{value:!0})}));