UNPKG

ng-cdk-table-virtual-scroll

Version:
93 lines 13.7 kB
import { __decorate } from "tslib"; import { Injectable } from '@angular/core'; import { distinctUntilChanged } from 'rxjs/operators'; import { BehaviorSubject, Subject } from 'rxjs'; var FixedSizeTableVirtualScrollStrategy = /** @class */ (function () { function FixedSizeTableVirtualScrollStrategy() { this.indexChange = new Subject(); this.stickyChange = new Subject(); this.renderedRangeStream = new BehaviorSubject({ start: 0, end: 0 }); this.scrolledIndexChange = this.indexChange.pipe(distinctUntilChanged()); this._dataLength = 0; } Object.defineProperty(FixedSizeTableVirtualScrollStrategy.prototype, "dataLength", { get: function () { return this._dataLength; }, set: function (value) { this._dataLength = value; this.onDataLengthChanged(); }, enumerable: true, configurable: true }); FixedSizeTableVirtualScrollStrategy.prototype.attach = function (viewport) { this.viewport = viewport; this.viewport.renderedRangeStream.subscribe(this.renderedRangeStream); this.onDataLengthChanged(); }; FixedSizeTableVirtualScrollStrategy.prototype.detach = function () { this.indexChange.complete(); this.stickyChange.complete(); this.renderedRangeStream.complete(); }; FixedSizeTableVirtualScrollStrategy.prototype.onContentScrolled = function () { this.updateContent(); }; FixedSizeTableVirtualScrollStrategy.prototype.onDataLengthChanged = function () { if (this.viewport) { this.viewport.setTotalContentSize(this.dataLength * this.rowHeight + this.headerHeight + this.footerHeight); } this.updateContent(); }; FixedSizeTableVirtualScrollStrategy.prototype.onContentRendered = function () { // no-op }; FixedSizeTableVirtualScrollStrategy.prototype.onRenderedOffsetChanged = function () { // no-op }; FixedSizeTableVirtualScrollStrategy.prototype.scrollToIndex = function (index, behavior) { if (!this.viewport || !this.rowHeight) { return; } this.viewport.scrollToOffset((index - 1) * this.rowHeight + this.headerHeight); }; FixedSizeTableVirtualScrollStrategy.prototype.setConfig = function (configs) { var rowHeight = configs.rowHeight, headerHeight = configs.headerHeight, footerHeight = configs.footerHeight, bufferMultiplier = configs.bufferMultiplier; if (this.rowHeight === rowHeight && this.headerHeight === headerHeight && this.footerHeight === footerHeight && this.bufferMultiplier === bufferMultiplier) { return; } this.rowHeight = rowHeight; this.headerHeight = headerHeight; this.footerHeight = footerHeight; this.bufferMultiplier = bufferMultiplier; this.onDataLengthChanged(); }; FixedSizeTableVirtualScrollStrategy.prototype.updateContent = function () { if (!this.viewport || !this.rowHeight) { return; } var scrollOffset = this.viewport.measureScrollOffset(); var amount = Math.ceil(this.viewport.getViewportSize() / this.rowHeight); var offset = Math.max(scrollOffset - this.headerHeight, 0); var buffer = Math.ceil(amount * this.bufferMultiplier); var skip = Math.round(offset / this.rowHeight); var index = Math.max(0, skip); var start = Math.max(0, index - buffer); var end = Math.min(this.dataLength, index + amount + buffer); var renderedOffset = start * this.rowHeight; this.viewport.setRenderedContentOffset(renderedOffset); this.viewport.setRenderedRange({ start: start, end: end }); this.indexChange.next(index); this.stickyChange.next(renderedOffset); }; FixedSizeTableVirtualScrollStrategy = __decorate([ Injectable() ], FixedSizeTableVirtualScrollStrategy); return FixedSizeTableVirtualScrollStrategy; }()); export { FixedSizeTableVirtualScrollStrategy }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtc2l6ZS10YWJsZS12aXJ0dWFsLXNjcm9sbC1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWNkay10YWJsZS12aXJ0dWFsLXNjcm9sbC8iLCJzb3VyY2VzIjpbImxpYi9maXhlZC1zaXplLXRhYmxlLXZpcnR1YWwtc2Nyb2xsLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBWWhEO0lBQUE7UUFLVSxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDckMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBSXJDLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFZLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUV6RSx3QkFBbUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFXbkUsZ0JBQVcsR0FBRyxDQUFDLENBQUM7SUE0RTFCLENBQUM7SUFyRkMsc0JBQUksMkRBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQixDQUFDO2FBRUQsVUFBZSxLQUFhO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7OztPQUxBO0lBU00sb0RBQU0sR0FBYixVQUFjLFFBQWtDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUks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SUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQU0sY0FBYyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLEtBQUssT0FBQSxFQUFFLEdBQUcsS0FBQSxFQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBbEdVLG1DQUFtQztRQUQvQyxVQUFVLEVBQUU7T0FDQSxtQ0FBbUMsQ0FtRy9DO0lBQUQsMENBQUM7Q0FBQSxBQW5HRCxJQW1HQztTQW5HWSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCBWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgTGlzdFJhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVFNWU3RyYXRlZ3lDb25maWdzIHtcclxuICByb3dIZWlnaHQ6IG51bWJlcjtcclxuICBoZWFkZXJIZWlnaHQ6IG51bWJlcjtcclxuICBmb290ZXJIZWlnaHQ6IG51bWJlcjtcclxuICBidWZmZXJNdWx0aXBsaWVyOiBudW1iZXI7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZpeGVkU2l6ZVRhYmxlVmlydHVhbFNjcm9sbFN0cmF0ZWd5IGltcGxlbWVudHMgVmlydHVhbFNjcm9sbFN0cmF0ZWd5IHtcclxuICBwcml2YXRlIHJvd0hlaWdodCE6IG51bWJlcjtcclxuICBwcml2YXRlIGhlYWRlckhlaWdodCE6IG51bWJlcjtcclxuICBwcml2YXRlIGZvb3RlckhlaWdodCE6IG51bWJlcjtcclxuICBwcml2YXRlIGJ1ZmZlck11bHRpcGxpZXIhOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBpbmRleENoYW5nZSA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICBwdWJsaWMgc3RpY2t5Q2hhbmdlID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG5cclxuICBwdWJsaWMgdmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcclxuXHJcbiAgcHVibGljIHJlbmRlcmVkUmFuZ2VTdHJlYW0gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExpc3RSYW5nZT4oe3N0YXJ0OiAwLCBlbmQ6IDB9KTtcclxuXHJcbiAgcHVibGljIHNjcm9sbGVkSW5kZXhDaGFuZ2UgPSB0aGlzLmluZGV4Q2hhbmdlLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcblxyXG4gIGdldCBkYXRhTGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YUxlbmd0aDtcclxuICB9XHJcblxyXG4gIHNldCBkYXRhTGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2RhdGFMZW5ndGggPSB2YWx1ZTtcclxuICAgIHRoaXMub25EYXRhTGVuZ3RoQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YUxlbmd0aCA9IDA7XHJcblxyXG4gIHB1YmxpYyBhdHRhY2godmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3cG9ydCA9IHZpZXdwb3J0O1xyXG4gICAgdGhpcy52aWV3cG9ydC5yZW5kZXJlZFJhbmdlU3RyZWFtLnN1YnNjcmliZSh0aGlzLnJlbmRlcmVkUmFuZ2VTdHJlYW0pO1xyXG4gICAgdGhpcy5vbkRhdGFMZW5ndGhDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGV0YWNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbmRleENoYW5nZS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5zdGlja3lDaGFuZ2UuY29tcGxldGUoKTtcclxuICAgIHRoaXMucmVuZGVyZWRSYW5nZVN0cmVhbS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ29udGVudFNjcm9sbGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EYXRhTGVuZ3RoQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZpZXdwb3J0KSB7XHJcbiAgICAgIHRoaXMudmlld3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0aGlzLmRhdGFMZW5ndGggKiB0aGlzLnJvd0hlaWdodCArIHRoaXMuaGVhZGVySGVpZ2h0ICsgdGhpcy5mb290ZXJIZWlnaHQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Db250ZW50UmVuZGVyZWQoKTogdm9pZCB7XHJcbiAgICAvLyBuby1vcFxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUmVuZGVyZWRPZmZzZXRDaGFuZ2VkKCk6IHZvaWQge1xyXG4gICAgLy8gbm8tb3BcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIsIGJlaGF2aW9yPzogU2Nyb2xsQmVoYXZpb3IpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy52aWV3cG9ydCB8fCAhdGhpcy5yb3dIZWlnaHQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb09mZnNldCgoaW5kZXggLSAxICkgKiB0aGlzLnJvd0hlaWdodCArIHRoaXMuaGVhZGVySGVpZ2h0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb25maWcoY29uZmlnczogVFNWU3RyYXRlZ3lDb25maWdzKSB7XHJcbiAgICBjb25zdCB7cm93SGVpZ2h0LCBoZWFkZXJIZWlnaHQsIGZvb3RlckhlaWdodCwgYnVmZmVyTXVsdGlwbGllcn0gPSBjb25maWdzO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJvd0hlaWdodCA9PT0gcm93SGVpZ2h0XHJcbiAgICAgICYmIHRoaXMuaGVhZGVySGVpZ2h0ID09PSBoZWFkZXJIZWlnaHRcclxuICAgICAgJiYgdGhpcy5mb290ZXJIZWlnaHQgPT09IGZvb3RlckhlaWdodFxyXG4gICAgICAmJiB0aGlzLmJ1ZmZlck11bHRpcGxpZXIgPT09IGJ1ZmZlck11bHRpcGxpZXJcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0hlaWdodCA9IHJvd0hlaWdodDtcclxuICAgIHRoaXMuaGVhZGVySGVpZ2h0ID0gaGVhZGVySGVpZ2h0O1xyXG4gICAgdGhpcy5mb290ZXJIZWlnaHQgPSBmb290ZXJIZWlnaHQ7XHJcbiAgICB0aGlzLmJ1ZmZlck11bHRpcGxpZXIgPSBidWZmZXJNdWx0aXBsaWVyO1xyXG4gICAgdGhpcy5vbkRhdGFMZW5ndGhDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XHJcbiAgICBpZiAoIXRoaXMudmlld3BvcnQgfHwgIXRoaXMucm93SGVpZ2h0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHNjcm9sbE9mZnNldCA9IHRoaXMudmlld3BvcnQubWVhc3VyZVNjcm9sbE9mZnNldCgpO1xyXG4gICAgY29uc3QgYW1vdW50ID0gTWF0aC5jZWlsKHRoaXMudmlld3BvcnQuZ2V0Vmlld3BvcnRTaXplKCkgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgICBjb25zdCBvZmZzZXQgPSBNYXRoLm1heChzY3JvbGxPZmZzZXQgLSB0aGlzLmhlYWRlckhlaWdodCwgMCk7XHJcbiAgICBjb25zdCBidWZmZXIgPSBNYXRoLmNlaWwoYW1vdW50ICogdGhpcy5idWZmZXJNdWx0aXBsaWVyKTtcclxuXHJcbiAgICBjb25zdCBza2lwID0gTWF0aC5yb3VuZChvZmZzZXQgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgICBjb25zdCBpbmRleCA9IE1hdGgubWF4KDAsIHNraXApO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBpbmRleCAtIGJ1ZmZlcik7XHJcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1pbih0aGlzLmRhdGFMZW5ndGgsIGluZGV4ICsgYW1vdW50ICsgYnVmZmVyKTtcclxuICAgIGNvbnN0IHJlbmRlcmVkT2Zmc2V0ID0gc3RhcnQgKiB0aGlzLnJvd0hlaWdodDtcclxuICAgIHRoaXMudmlld3BvcnQuc2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHJlbmRlcmVkT2Zmc2V0KTtcclxuICAgIHRoaXMudmlld3BvcnQuc2V0UmVuZGVyZWRSYW5nZSh7c3RhcnQsIGVuZH0pO1xyXG4gICAgdGhpcy5pbmRleENoYW5nZS5uZXh0KGluZGV4KTtcclxuICAgIHRoaXMuc3RpY2t5Q2hhbmdlLm5leHQocmVuZGVyZWRPZmZzZXQpO1xyXG4gIH1cclxufVxyXG4iXX0=