rfx-parallax
Version:
RfxParallax - parallax made easy
58 lines • 6.98 kB
JavaScript
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