UNPKG

rfx-parallax

Version:
58 lines 6.98 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; export class ScrollEventService { constructor() { this.subjectScroll = new BehaviorSubject(0); this.mouseScrollEvent = this.onMouseScroll.bind(this); } ngOnDestroy() { this.destroyListener(); } /** * Create mouse scroll listener. * @param {HTMLElement} element - Element with scroll event. */ createListener(element) { this.element = element; this.element.addEventListener('scroll', this.mouseScrollEvent, { passive: true }); } /** * Destroy mouse scroll listener. */ destroyListener() { this.element?.removeEventListener('scroll', this.mouseScrollEvent); this.element = undefined; } /** * Trigger mouse scroll event. * @param {number} event - Mouse scroll event. */ onMouseScroll(event) { const target = event.target instanceof Document ? event.target.documentElement : event.target; this.subjectScroll.next(target.scrollTop); } /** * Get body scroll event. * @return {Observable<number>} - Body scroll event. */ getMouseScroll() { return this.subjectScroll.asObservable(); } /** * Get body scroll current value. * @return {number} - Body scroll value. */ getMouseScrollValue() { return this.subjectScroll.value; } } ScrollEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ScrollEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); ScrollEventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ScrollEventService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ScrollEventService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWV2ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZngtcGFyYWxsYXgvc3JjL2xpYi9zZXJ2aWNlcy9zY3JvbGwtZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25ELE1BQU0sT0FBTyxrQkFBa0I7SUFtQjdCO1FBQ0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxjQUFjLENBQUMsT0FBK0I7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssYUFBYSxDQUFDLEtBQVk7UUFDaEMsTUFBTSxNQUFNLEdBQWdCLEtBQUssQ0FBQyxNQUFNLFlBQVksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUUsS0FBSyxDQUFDLE1BQXNCLENBQUM7UUFDNUgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQzs7K0dBcEVVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjcm9sbEV2ZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaWJlIHRvIGJvZHkgc2Nyb2xsIGNoYW5nZXMuXHJcbiAgICogQHR5cGUge0JlaGF2aW9yU3ViamVjdDxudW1iZXI+fVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3ViamVjdFNjcm9sbDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdXNlIHNjcm9sbCBsaXN0ZW5lci5cclxuICAgKiBAdHlwZSB7RXZlbnRMaXN0ZW5lck9yRXZlbnRMaXN0ZW5lck9iamVjdH1cclxuICAgKi9cclxuICBwcml2YXRlIG1vdXNlU2Nyb2xsRXZlbnQ6IEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3Q7XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1cnJlbnQgZWxlbWVudCB3aXRoIHNjcm9sbCBldmVudC5cclxuICAgKiBAdHlwZSB7SFRNTEVsZW1lbnQgfCBEb2N1bWVudCB8IHVuZGVmaW5lZH1cclxuICAgKi9cclxuICBwcml2YXRlIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5zdWJqZWN0U2Nyb2xsID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gICAgdGhpcy5tb3VzZVNjcm9sbEV2ZW50ID0gdGhpcy5vbk1vdXNlU2Nyb2xsLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3lMaXN0ZW5lcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIG1vdXNlIHNjcm9sbCBsaXN0ZW5lci5cclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB3aXRoIHNjcm9sbCBldmVudC5cclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlTGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBEb2N1bWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcclxuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm1vdXNlU2Nyb2xsRXZlbnQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3Ryb3kgbW91c2Ugc2Nyb2xsIGxpc3RlbmVyLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZXN0cm95TGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVsZW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMubW91c2VTY3JvbGxFdmVudCk7XHJcbiAgICB0aGlzLmVsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VyIG1vdXNlIHNjcm9sbCBldmVudC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gZXZlbnQgLSBNb3VzZSBzY3JvbGwgZXZlbnQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1vdXNlU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgdGFyZ2V0OiBIVE1MRWxlbWVudCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIERvY3VtZW50ID8gZXZlbnQudGFyZ2V0LmRvY3VtZW50RWxlbWVudCA6IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xyXG4gICAgdGhpcy5zdWJqZWN0U2Nyb2xsLm5leHQodGFyZ2V0LnNjcm9sbFRvcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYm9keSBzY3JvbGwgZXZlbnQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxudW1iZXI+fSAtIEJvZHkgc2Nyb2xsIGV2ZW50LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRNb3VzZVNjcm9sbCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdFNjcm9sbC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBib2R5IHNjcm9sbCBjdXJyZW50IHZhbHVlLlxyXG4gICAqIEByZXR1cm4ge251bWJlcn0gLSBCb2R5IHNjcm9sbCB2YWx1ZS5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0TW91c2VTY3JvbGxWYWx1ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdFNjcm9sbC52YWx1ZTtcclxuICB9XHJcbn1cclxuIl19