UNPKG

ngx-screen-saver

Version:
37 lines 5.84 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject, fromEvent, merge, timer } from 'rxjs'; import { switchMap, tap, startWith, throttleTime } from 'rxjs/operators'; import * as i0 from "@angular/core"; export class IdleDetectionService { constructor() { this.isIdleSubject = new BehaviorSubject(false); this.isIdle$ = this.isIdleSubject.asObservable(); this.activityEvents$ = merge(fromEvent(window, 'mousemove'), fromEvent(window, 'resize'), fromEvent(document, 'keydown'), fromEvent(document, 'mousedown'), fromEvent(document, 'touchstart')); } startIdleDetection(idleAfterMs) { this.idleAfterMs = idleAfterMs; this.idleDetectionSubscription = this.activityEvents$ .pipe( // trigger idle detection before any user activity events startWith(undefined), throttleTime(100), tap(() => { this.isIdleSubject.next(false); }), switchMap(() => { return timer(this.idleAfterMs).pipe(tap(() => { this.isIdleSubject.next(true); })); })) .subscribe(); } stopIdleDetection() { this.idleDetectionSubscription?.unsubscribe(); } } IdleDetectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: IdleDetectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); IdleDetectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: IdleDetectionService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: IdleDetectionService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1kZXRlY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3JlZW4tc2F2ZXIvc3JjL2xpYi9zZXJ2aWNlcy9pZGxlLWRldGVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFnQixlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUt6RSxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CO1FBSVEsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNyRCxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUzQyxvQkFBZSxHQUFHLEtBQUssQ0FDN0IsU0FBUyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFDOUIsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFDM0IsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFDOUIsU0FBUyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFDaEMsU0FBUyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FDbEMsQ0FBQztJQWJhLENBQUM7SUFpQmhCLGtCQUFrQixDQUFDLFdBQW1CO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBRS9CLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsZUFBZTthQUNsRCxJQUFJO1FBQ0gseURBQXlEO1FBQ3pELFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDcEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDOztpSEExQ1Usb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBtZXJnZSwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAsIHN0YXJ0V2l0aCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIElkbGVEZXRlY3Rpb25TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIGlkbGVBZnRlck1zITogbnVtYmVyO1xyXG5cclxuICBwcml2YXRlIGlzSWRsZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgaXNJZGxlJCA9IHRoaXMuaXNJZGxlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBhY3Rpdml0eUV2ZW50cyQgPSBtZXJnZShcclxuICAgIGZyb21FdmVudCh3aW5kb3csICdtb3VzZW1vdmUnKSxcclxuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKSxcclxuICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2tleWRvd24nKSxcclxuICAgIGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlZG93bicpLFxyXG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAndG91Y2hzdGFydCcpXHJcbiAgKTtcclxuXHJcbiAgcHJpdmF0ZSBpZGxlRGV0ZWN0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBzdGFydElkbGVEZXRlY3Rpb24oaWRsZUFmdGVyTXM6IG51bWJlcikge1xyXG4gICAgdGhpcy5pZGxlQWZ0ZXJNcyA9IGlkbGVBZnRlck1zO1xyXG5cclxuICAgIHRoaXMuaWRsZURldGVjdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuYWN0aXZpdHlFdmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIC8vIHRyaWdnZXIgaWRsZSBkZXRlY3Rpb24gYmVmb3JlIGFueSB1c2VyIGFjdGl2aXR5IGV2ZW50c1xyXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxyXG4gICAgICAgIHRocm90dGxlVGltZSgxMDApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzSWRsZVN1YmplY3QubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aW1lcih0aGlzLmlkbGVBZnRlck1zKS5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNJZGxlU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHN0b3BJZGxlRGV0ZWN0aW9uKCkge1xyXG4gICAgdGhpcy5pZGxlRGV0ZWN0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=