@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
JavaScript
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