UNPKG

@universal-material/angular

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.1.0.

43 lines 5.45 kB
import { BehaviorSubject } from "rxjs"; import { distinctUntilChanged } from "rxjs/operators"; export class ScrollableContainerWrapper { constructor() { this._innerScrollTop = new BehaviorSubject(null); this.scrollTop = null; this.scrollTop$ = this._innerScrollTop.pipe(distinctUntilChanged()); this._emitScroll = () => { this.scrollTop = this._getScrollTop(); this._innerScrollTop.next(this.scrollTop); }; } _getScrollTop() { if (typeof this._container.scrollY === 'number') { return this._container.scrollY; } if (typeof this._container.scrollTop === 'number') { return this._container.scrollTop; } if (this._container.body && typeof this._container.body.scrollTop === 'number') { return this._container.body.scrollTop; } return null; } get container() { return this._container; } set container(value) { value = value || this.defaultTarget; if (value === this._container) { return; } if (this._container) { this._container.removeEventListener('scroll', this._emitScroll); } this._container = value; if (this._container) { this._container.addEventListener('scroll', this._emitScroll); } this._emitScroll(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1jb250YWluZXItd3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91dGlsL3Njcm9sbGFibGUtY29udGFpbmVyLXdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxNQUFNLE9BQU8sMEJBQTBCO0lBQXZDO1FBSUUsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFM0QsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsZUFBVSxHQUE4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFFbEYsZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQztJQXdDSixDQUFDO0lBdENTLGFBQWE7UUFDbkIsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMvQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUNqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1NBQ2xDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDOUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEtBQXdCO1FBQ3BDLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNwQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDakU7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5leHBvcnQgY2xhc3MgU2Nyb2xsYWJsZUNvbnRhaW5lcldyYXBwZXIge1xuICBwcml2YXRlIF9jb250YWluZXI6IEV2ZW50VGFyZ2V0IHwgYW55O1xuICBkZWZhdWx0VGFyZ2V0OiBFdmVudFRhcmdldCB8IGFueTtcblxuICBfaW5uZXJTY3JvbGxUb3AgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gIHNjcm9sbFRvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHNjcm9sbFRvcCQ6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD4gPSB0aGlzLl9pbm5lclNjcm9sbFRvcC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gIHByaXZhdGUgX2VtaXRTY3JvbGwgPSAoKSA9PiB7XG4gICAgdGhpcy5zY3JvbGxUb3AgPSB0aGlzLl9nZXRTY3JvbGxUb3AoKTtcbiAgICB0aGlzLl9pbm5lclNjcm9sbFRvcC5uZXh0KHRoaXMuc2Nyb2xsVG9wKTtcbiAgfTtcblxuICBwcml2YXRlIF9nZXRTY3JvbGxUb3AoKTogbnVtYmVyIHwgbnVsbHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2NvbnRhaW5lci5zY3JvbGxZID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lci5zY3JvbGxZO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5fY29udGFpbmVyLnNjcm9sbFRvcCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb250YWluZXIuc2Nyb2xsVG9wO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb250YWluZXIuYm9keSAmJiB0eXBlb2YgdGhpcy5fY29udGFpbmVyLmJvZHkuc2Nyb2xsVG9wID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lci5ib2R5LnNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBjb250YWluZXIoKTogRXZlbnRUYXJnZXQgfCBhbnkge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXI7XG4gIH1cblxuICBzZXQgY29udGFpbmVyKHZhbHVlOiBFdmVudFRhcmdldCB8IGFueSkge1xuICAgIHZhbHVlID0gdmFsdWUgfHwgdGhpcy5kZWZhdWx0VGFyZ2V0O1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fY29udGFpbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lcikge1xuICAgICAgdGhpcy5fY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX2VtaXRTY3JvbGwpO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbnRhaW5lciA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lcikge1xuICAgICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX2VtaXRTY3JvbGwpO1xuICAgIH1cblxuICAgIHRoaXMuX2VtaXRTY3JvbGwoKTtcbiAgfVxufVxuIl19