UNPKG

ngx-infinite-scroller

Version:

Infinite bidirectional scroll directive for Angular 11

35 lines 4.2 kB
export class ScrollHeightListener { constructor(directive, state) { this.directive = directive; this.state = state; this.DEFAULT_REQUEST_TIMEOUT = 30000; } start() { this.listener = window.requestAnimationFrame(this.listen.bind(this)); if (!this.httpRequestTimeout) { this.httpRequestTimeout = setTimeout(() => { this.stopIfRequestTimeout(); }, this.DEFAULT_REQUEST_TIMEOUT); } } stop() { window.cancelAnimationFrame(this.listener); clearTimeout(this.httpRequestTimeout); this.httpRequestTimeout = null; } listen() { if (this.state.previousScrollHeight !== this.state.scrollHeight) { this.stop(); this.directive.onScrollbarHeightChanged(); } else { this.start(); } } stopIfRequestTimeout() { if (!this.state.previousScrollPositionpUpdated) { this.stop(); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWhlaWdodC1saXN0ZW5lci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8iLCJzb3VyY2VzIjpbInNyYy9hcHAvc2Nyb2xsLWhlaWdodC1saXN0ZW5lci9zY3JvbGwtaGVpZ2h0LWxpc3RlbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFDVSxTQUF1QyxFQUN2QyxLQUE0QjtRQUQ1QixjQUFTLEdBQVQsU0FBUyxDQUE4QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQVI5Qiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFTcEMsQ0FBQztJQUVFLEtBQUs7UUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FDbEMsR0FBRyxFQUFFO2dCQUNILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLENBQUMsRUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQzdCLENBQUM7U0FDSDtJQUNILENBQUM7SUFFTSxJQUFJO1FBQ1QsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUMvRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDM0M7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5neEluZmluaXRlU2Nyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9uZ3gtaW5maW5pdGUtc2Nyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IERpcmVjdGl2ZVN0YXRlU2VydmljZSB9IGZyb20gJy4uL2RpcmVjdGl2ZS1zdGF0ZS5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIFNjcm9sbEhlaWdodExpc3RlbmVyIHtcblxuICBwcml2YXRlIERFRkFVTFRfUkVRVUVTVF9USU1FT1VUID0gMzAwMDA7XG5cbiAgcHJpdmF0ZSBsaXN0ZW5lcjogbnVtYmVyO1xuXG4gIHByaXZhdGUgaHR0cFJlcXVlc3RUaW1lb3V0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaXJlY3RpdmU6IE5neEluZmluaXRlU2Nyb2xsZXJEaXJlY3RpdmUsXG4gICAgcHJpdmF0ZSBzdGF0ZTogRGlyZWN0aXZlU3RhdGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgcHVibGljIHN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuZXIgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMubGlzdGVuLmJpbmQodGhpcykpO1xuXG4gICAgaWYgKCF0aGlzLmh0dHBSZXF1ZXN0VGltZW91dCkge1xuICAgICAgdGhpcy5odHRwUmVxdWVzdFRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdG9wSWZSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB9LFxuICAgICAgICB0aGlzLkRFRkFVTFRfUkVRVUVTVF9USU1FT1VUXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdG9wKCk6IHZvaWQge1xuICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmxpc3RlbmVyKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5odHRwUmVxdWVzdFRpbWVvdXQpO1xuICAgIHRoaXMuaHR0cFJlcXVlc3RUaW1lb3V0ID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlLnByZXZpb3VzU2Nyb2xsSGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnNjcm9sbEhlaWdodCkge1xuICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICB0aGlzLmRpcmVjdGl2ZS5vblNjcm9sbGJhckhlaWdodENoYW5nZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RvcElmUmVxdWVzdFRpbWVvdXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLnByZXZpb3VzU2Nyb2xsUG9zaXRpb25wVXBkYXRlZCkge1xuICAgICAgdGhpcy5zdG9wKCk7XG4gICAgfVxuICB9XG59XG4iXX0=