ngx-lift 1.7.2 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/pipes/array-join.pipe.mjs +3 -3
- package/esm2022/lib/pipes/byte-converter.pipe.mjs +3 -3
- package/esm2022/lib/pipes/is-https.pipe.mjs +3 -3
- package/esm2022/lib/pipes/mask.pipe.mjs +3 -3
- package/esm2022/lib/pipes/range.pipe.mjs +3 -3
- package/esm2022/lib/utils/idle-detection/idle-detection.config.mjs +7 -0
- package/esm2022/lib/utils/idle-detection/idle-detection.module.mjs +25 -0
- package/esm2022/lib/utils/idle-detection/idle-detection.service.mjs +187 -0
- package/esm2022/lib/utils/idle-detection/index.mjs +4 -0
- package/esm2022/lib/utils/index.mjs +2 -1
- package/fesm2022/ngx-lift.mjs +229 -18
- package/fesm2022/ngx-lift.mjs.map +1 -1
- package/lib/utils/idle-detection/idle-detection.config.d.ts +5 -0
- package/lib/utils/idle-detection/idle-detection.module.d.ts +13 -0
- package/lib/utils/idle-detection/idle-detection.service.d.ts +116 -0
- package/lib/utils/idle-detection/index.d.ts +3 -0
- package/lib/utils/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -8,10 +8,10 @@ export class ArrayJoinPipe {
|
|
|
8
8
|
// For non-array cases or unexpected types, return the value as is
|
|
9
9
|
return value;
|
|
10
10
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
12
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ArrayJoinPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
12
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: ArrayJoinPipe, isStandalone: true, name: "arrayJoin" }); }
|
|
13
13
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ArrayJoinPipe, decorators: [{
|
|
15
15
|
type: Pipe,
|
|
16
16
|
args: [{
|
|
17
17
|
name: 'arrayJoin',
|
|
@@ -50,10 +50,10 @@ export class ByteConverterPipe {
|
|
|
50
50
|
formatNumber(value) {
|
|
51
51
|
return new Intl.NumberFormat(this.locale, { maximumFractionDigits: 2 }).format(value);
|
|
52
52
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
54
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ByteConverterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
54
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: ByteConverterPipe, isStandalone: true, name: "byteConverter" }); }
|
|
55
55
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ByteConverterPipe, decorators: [{
|
|
57
57
|
type: Pipe,
|
|
58
58
|
args: [{
|
|
59
59
|
name: 'byteConverter',
|
|
@@ -5,10 +5,10 @@ export class IsHttpsPipe {
|
|
|
5
5
|
transform(value) {
|
|
6
6
|
return isHttps(value);
|
|
7
7
|
}
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
9
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IsHttpsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
9
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: IsHttpsPipe, isStandalone: true, name: "isHttps" }); }
|
|
10
10
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IsHttpsPipe, decorators: [{
|
|
12
12
|
type: Pipe,
|
|
13
13
|
args: [{
|
|
14
14
|
name: 'isHttps',
|
|
@@ -23,10 +23,10 @@ export class MaskPipe {
|
|
|
23
23
|
.map((char, i) => (i < unmaskedPrefixLength || i > value.length - unmaskedSuffixLength - 1 ? char : maskChar))
|
|
24
24
|
.join('');
|
|
25
25
|
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
27
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
27
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: MaskPipe, isStandalone: true, name: "mask" }); }
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MaskPipe, decorators: [{
|
|
30
30
|
type: Pipe,
|
|
31
31
|
args: [{
|
|
32
32
|
name: 'mask',
|
|
@@ -6,10 +6,10 @@ export class RangePipe {
|
|
|
6
6
|
const input = value;
|
|
7
7
|
return range(...input);
|
|
8
8
|
}
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
10
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RangePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
10
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: RangePipe, isStandalone: true, name: "range" }); }
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RangePipe, decorators: [{
|
|
13
13
|
type: Pipe,
|
|
14
14
|
args: [{
|
|
15
15
|
name: 'range',
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
export class IdleDetectionConfig {
|
|
3
|
+
}
|
|
4
|
+
export function provideIdleDetectionConfig(config) {
|
|
5
|
+
return makeEnvironmentProviders([{ provide: IdleDetectionConfig, useValue: config }]);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1kZXRlY3Rpb24uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpZnQvc3JjL2xpYi91dGlscy9pZGxlLWRldGVjdGlvbi9pZGxlLWRldGVjdGlvbi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZELE1BQU0sT0FBTyxtQkFBbUI7Q0FHL0I7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBMkI7SUFDcEUsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWFrZUVudmlyb25tZW50UHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIElkbGVEZXRlY3Rpb25Db25maWcge1xuICBpZGxlRHVyYXRpb25JblNlY29uZHM/OiBudW1iZXI7XG4gIHRpbWVvdXREdXJhdGlvbkluU2Vjb25kcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVJZGxlRGV0ZWN0aW9uQ29uZmlnKGNvbmZpZzogSWRsZURldGVjdGlvbkNvbmZpZykge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFt7cHJvdmlkZTogSWRsZURldGVjdGlvbkNvbmZpZywgdXNlVmFsdWU6IGNvbmZpZ31dKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { provideIdleDetectionConfig } from './idle-detection.config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Idle detection module.
|
|
6
|
+
* @deprecated use provideIdleDetectionConfig(config: IdleDetectionConfig) instead
|
|
7
|
+
*/
|
|
8
|
+
export class IdleDetectionModule {
|
|
9
|
+
static forRoot(config) {
|
|
10
|
+
return {
|
|
11
|
+
ngModule: IdleDetectionModule,
|
|
12
|
+
providers: [provideIdleDetectionConfig(config)],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IdleDetectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
16
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: IdleDetectionModule }); }
|
|
17
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IdleDetectionModule }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IdleDetectionModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
imports: [],
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1kZXRlY3Rpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpZnQvc3JjL2xpYi91dGlscy9pZGxlLWRldGVjdGlvbi9pZGxlLWRldGVjdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFzQiwwQkFBMEIsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQUV4Rjs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBMkI7UUFDeEMsT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDaEQsQ0FBQztJQUNKLENBQUM7OEdBTlUsbUJBQW1COytHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFIL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0lkbGVEZXRlY3Rpb25Db25maWcsIHByb3ZpZGVJZGxlRGV0ZWN0aW9uQ29uZmlnfSBmcm9tICcuL2lkbGUtZGV0ZWN0aW9uLmNvbmZpZyc7XG5cbi8qKlxuICogSWRsZSBkZXRlY3Rpb24gbW9kdWxlLlxuICogQGRlcHJlY2F0ZWQgdXNlIHByb3ZpZGVJZGxlRGV0ZWN0aW9uQ29uZmlnKGNvbmZpZzogSWRsZURldGVjdGlvbkNvbmZpZykgaW5zdGVhZFxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgSWRsZURldGVjdGlvbk1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogSWRsZURldGVjdGlvbkNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SWRsZURldGVjdGlvbk1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSWRsZURldGVjdGlvbk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3Byb3ZpZGVJZGxlRGV0ZWN0aW9uQ29uZmlnKGNvbmZpZyldLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { fromEvent, merge, Subject, throttleTime } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./idle-detection.config";
|
|
5
|
+
/**
|
|
6
|
+
* Service for detecting user idle time and implementing a countdown.
|
|
7
|
+
*/
|
|
8
|
+
export class IdleDetectionService {
|
|
9
|
+
/**
|
|
10
|
+
* Constructs the IdleDetectionService.
|
|
11
|
+
* @param config - Optional configuration for idle and timeout durations.
|
|
12
|
+
*/
|
|
13
|
+
constructor(config) {
|
|
14
|
+
/**
|
|
15
|
+
* The list of interruption events that will end the idle detection.
|
|
16
|
+
*/
|
|
17
|
+
this.interruptionEvents = [
|
|
18
|
+
'click',
|
|
19
|
+
'keydown',
|
|
20
|
+
'keypress',
|
|
21
|
+
'mousemove',
|
|
22
|
+
'mousedown',
|
|
23
|
+
'scroll',
|
|
24
|
+
'wheel',
|
|
25
|
+
'touchmove',
|
|
26
|
+
'pointermove',
|
|
27
|
+
'resize',
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* The default idle duration in seconds (19 minutes).
|
|
31
|
+
*/
|
|
32
|
+
this.idleDuration = 19 * 60;
|
|
33
|
+
/**
|
|
34
|
+
* The default timeout duration in seconds (1 minute).
|
|
35
|
+
*/
|
|
36
|
+
this.timeoutDuration = 60;
|
|
37
|
+
/**
|
|
38
|
+
* Flag to indicate if countdown is in progress.
|
|
39
|
+
*/
|
|
40
|
+
this.isCountingDown = false;
|
|
41
|
+
/**
|
|
42
|
+
* The current countdown value.
|
|
43
|
+
*/
|
|
44
|
+
this.countdown = this.timeoutDuration;
|
|
45
|
+
/**
|
|
46
|
+
* Subject to emit when idle period ends.
|
|
47
|
+
*/
|
|
48
|
+
this.idleEndSubject = new Subject();
|
|
49
|
+
/**
|
|
50
|
+
* Subject to emit the countdown value.
|
|
51
|
+
*/
|
|
52
|
+
this.countdownSubject = new Subject();
|
|
53
|
+
/**
|
|
54
|
+
* Subject to emit when countdown ends.
|
|
55
|
+
*/
|
|
56
|
+
this.countdownEndSubject = new Subject();
|
|
57
|
+
if (config) {
|
|
58
|
+
this.setConfig(config);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Starts to watch for user inactivity.
|
|
63
|
+
*/
|
|
64
|
+
startWatching() {
|
|
65
|
+
this.setupInterruptionEvents();
|
|
66
|
+
this.startIdleTimer();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resets the idle timer when user activity is detected.
|
|
70
|
+
*/
|
|
71
|
+
resetTimer() {
|
|
72
|
+
this.startIdleTimer();
|
|
73
|
+
if (this.isCountingDown) {
|
|
74
|
+
this.stopCountdown();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Sets up the interruption events that will end the idle detection.
|
|
79
|
+
* Listens to a set of events on the document (e.g. click, keydown, mousemove, etc.).
|
|
80
|
+
* When any of these events is triggered, the idle timer is reset.
|
|
81
|
+
* Uses `throttleTime` operator to only trigger the reset when the events are spaced
|
|
82
|
+
* out by at least 1000ms (1 second).
|
|
83
|
+
* @private
|
|
84
|
+
*/
|
|
85
|
+
setupInterruptionEvents() {
|
|
86
|
+
if (!this.interruptionSubscription) {
|
|
87
|
+
const throttledInterruptionEvents = this.interruptionEvents.map((eventName) => fromEvent(document, eventName).pipe(throttleTime(1000)));
|
|
88
|
+
this.interruptionSubscription = merge(...throttledInterruptionEvents).subscribe(() => this.resetTimer());
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Starts the idle timer.
|
|
93
|
+
* When the timer expires, it emits an event through onIdleEnd() and starts the countdown.
|
|
94
|
+
*/
|
|
95
|
+
startIdleTimer() {
|
|
96
|
+
clearTimeout(this.idleTimer);
|
|
97
|
+
this.idleTimer = window.setTimeout(() => {
|
|
98
|
+
// after idle period, user inactivity detected
|
|
99
|
+
this.idleEndSubject.next();
|
|
100
|
+
this.startCountdown();
|
|
101
|
+
}, this.idleDuration * 1000);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Starts the countdown.
|
|
105
|
+
*/
|
|
106
|
+
startCountdown() {
|
|
107
|
+
this.isCountingDown = true;
|
|
108
|
+
this.countdownSubject.next(this.countdown);
|
|
109
|
+
this.countdownTimer = window.setInterval(() => {
|
|
110
|
+
this.countdown--;
|
|
111
|
+
this.countdownSubject.next(this.countdown);
|
|
112
|
+
if (this.countdown <= 0) {
|
|
113
|
+
this.stopCountdown();
|
|
114
|
+
this.countdownEndSubject.next();
|
|
115
|
+
}
|
|
116
|
+
}, 1000);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Stops the countdown.
|
|
120
|
+
*/
|
|
121
|
+
stopCountdown() {
|
|
122
|
+
clearInterval(this.countdownTimer);
|
|
123
|
+
this.isCountingDown = false;
|
|
124
|
+
// reset countdown
|
|
125
|
+
this.countdown = this.timeoutDuration;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Returns an observable that emits when the user has been idle for a long period.
|
|
129
|
+
* Developers can use this to perform actions like opening a dialog.
|
|
130
|
+
*
|
|
131
|
+
* user has been inactive for a long period (idleDuration), at this moment, idle detection phase ends, onIdleEnd event is emitted, and then enter countdown/timeout phase.
|
|
132
|
+
* During the countdown phase:
|
|
133
|
+
* - if user has any activity, countdown phase immediately ends and restart the idle detection phase.
|
|
134
|
+
* - else, countdownEnd event will be emitted when timeoutDuration is over.
|
|
135
|
+
* @returns {Observable<void>} - Observable for idle end event.
|
|
136
|
+
*/
|
|
137
|
+
onIdleEnd() {
|
|
138
|
+
return this.idleEndSubject.asObservable();
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Returns an observable that emits when the countdown ends.
|
|
142
|
+
* Usually means the user has been inactive for a very long time and should be logged out.
|
|
143
|
+
* @returns {Observable<void>} - Observable for countdown end event.
|
|
144
|
+
*/
|
|
145
|
+
onTimeoutEnd() {
|
|
146
|
+
return this.countdownEndSubject.asObservable();
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Returns an observable that emits the countdown value every second.
|
|
150
|
+
* @returns {Observable<number>} - Observable for countdown value.
|
|
151
|
+
*/
|
|
152
|
+
onCountDown() {
|
|
153
|
+
return this.countdownSubject.asObservable();
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Clears all timers when the component is destroyed.
|
|
157
|
+
*/
|
|
158
|
+
clearTimers() {
|
|
159
|
+
clearTimeout(this.idleTimer);
|
|
160
|
+
clearInterval(this.countdownTimer);
|
|
161
|
+
this.interruptionSubscription?.unsubscribe();
|
|
162
|
+
this.interruptionSubscription = undefined;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Sets the idle and timeout durations based on the provided configuration.
|
|
166
|
+
* @param config - Configuration object with idle and timeout durations.
|
|
167
|
+
*/
|
|
168
|
+
setConfig(config) {
|
|
169
|
+
if (config.idleDurationInSeconds) {
|
|
170
|
+
this.idleDuration = config.idleDurationInSeconds;
|
|
171
|
+
}
|
|
172
|
+
if (config.timeoutDurationInSeconds) {
|
|
173
|
+
this.countdown = this.timeoutDuration = config.timeoutDurationInSeconds;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IdleDetectionService, deps: [{ token: i1.IdleDetectionConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
177
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IdleDetectionService, providedIn: 'root' }); }
|
|
178
|
+
}
|
|
179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IdleDetectionService, decorators: [{
|
|
180
|
+
type: Injectable,
|
|
181
|
+
args: [{
|
|
182
|
+
providedIn: 'root',
|
|
183
|
+
}]
|
|
184
|
+
}], ctorParameters: () => [{ type: i1.IdleDetectionConfig, decorators: [{
|
|
185
|
+
type: Optional
|
|
186
|
+
}] }] });
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1kZXRlY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvdXRpbHMvaWRsZS1kZXRlY3Rpb24vaWRsZS1kZXRlY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQWdCLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7O0FBSTNFOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQStEL0I7OztPQUdHO0lBQ0gsWUFBd0IsTUFBMkI7UUFsRW5EOztXQUVHO1FBQ0ssdUJBQWtCLEdBQUc7WUFDM0IsT0FBTztZQUNQLFNBQVM7WUFDVCxVQUFVO1lBQ1YsV0FBVztZQUNYLFdBQVc7WUFDWCxRQUFRO1lBQ1IsT0FBTztZQUNQLFdBQVc7WUFDWCxhQUFhO1lBQ2IsUUFBUTtTQUNULENBQUM7UUFHRjs7V0FFRztRQUNLLGlCQUFZLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUUvQjs7V0FFRztRQUNLLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBWTdCOztXQUVHO1FBQ0ssbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFL0I7O1dBRUc7UUFDSyxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUV6Qzs7V0FFRztRQUNLLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3Qzs7V0FFRztRQUNLLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFakQ7O1dBRUc7UUFDSyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT2hELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxD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Q0FBQyxDQUFDO1FBQzdCLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxTQUFTLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxNQUEyQjtRQUNuQyxJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7OEdBOU1VLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQW9FYyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2Zyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGhyb3R0bGVUaW1lfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtJZGxlRGV0ZWN0aW9uQ29uZmlnfSBmcm9tICcuL2lkbGUtZGV0ZWN0aW9uLmNvbmZpZyc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgZGV0ZWN0aW5nIHVzZXIgaWRsZSB0aW1lIGFuZCBpbXBsZW1lbnRpbmcgYSBjb3VudGRvd24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJZGxlRGV0ZWN0aW9uU2VydmljZSB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBpbnRlcnJ1cHRpb24gZXZlbnRzIHRoYXQgd2lsbCBlbmQgdGhlIGlkbGUgZGV0ZWN0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnRlcnJ1cHRpb25FdmVudHMgPSBbXG4gICAgJ2NsaWNrJyxcbiAgICAna2V5ZG93bicsXG4gICAgJ2tleXByZXNzJyxcbiAgICAnbW91c2Vtb3ZlJyxcbiAgICAnbW91c2Vkb3duJyxcbiAgICAnc2Nyb2xsJyxcbiAgICAnd2hlZWwnLFxuICAgICd0b3VjaG1vdmUnLFxuICAgICdwb2ludGVybW92ZScsXG4gICAgJ3Jlc2l6ZScsXG4gIF07XG4gIHByaXZhdGUgaW50ZXJydXB0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBpZGxlIGR1cmF0aW9uIGluIHNlY29uZHMgKDE5IG1pbnV0ZXMpLlxuICAgKi9cbiAgcHJpdmF0ZSBpZGxlRHVyYXRpb24gPSAxOSAqIDYwO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB0aW1lb3V0IGR1cmF0aW9uIGluIHNlY29uZHMgKDEgbWludXRlKS5cbiAgICovXG4gIHByaXZhdGUgdGltZW91dER1cmF0aW9uID0gNjA7XG5cbiAgLyoqXG4gICAqIFRpbWVyIGZvciBpZGxlIGRldGVjdGlvbi5cbiAgICovXG4gIHByaXZhdGUgaWRsZVRpbWVyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lciBmb3IgY291bnRkb3duLlxuICAgKi9cbiAgcHJpdmF0ZSBjb3VudGRvd25UaW1lcj86IG51bWJlcjtcblxuICAvKipcbiAgICogRmxhZyB0byBpbmRpY2F0ZSBpZiBjb3VudGRvd24gaXMgaW4gcHJvZ3Jlc3MuXG4gICAqL1xuICBwcml2YXRlIGlzQ291bnRpbmdEb3duID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGNvdW50ZG93biB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgY291bnRkb3duID0gdGhpcy50aW1lb3V0RHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFN1YmplY3QgdG8gZW1pdCB3aGVuIGlkbGUgcGVyaW9kIGVuZHMuXG4gICAqL1xuICBwcml2YXRlIGlkbGVFbmRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogU3ViamVjdCB0byBlbWl0IHRoZSBjb3VudGRvd24gdmFsdWUuXG4gICAqL1xuICBwcml2YXRlIGNvdW50ZG93blN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIFN1YmplY3QgdG8gZW1pdCB3aGVuIGNvdW50ZG93biBlbmRzLlxuICAgKi9cbiAgcHJpdmF0ZSBjb3VudGRvd25FbmRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyB0aGUgSWRsZURldGVjdGlvblNlcnZpY2UuXG4gICAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciBpZGxlIGFuZCB0aW1lb3V0IGR1cmF0aW9ucy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIGNvbmZpZzogSWRsZURldGVjdGlvbkNvbmZpZykge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0byB3YXRjaCBmb3IgdXNlciBpbmFjdGl2aXR5LlxuICAgKi9cbiAgc3RhcnRXYXRjaGluZygpIHtcbiAgICB0aGlzLnNldHVwSW50ZXJydXB0aW9uRXZlbnRzKCk7XG4gICAgdGhpcy5zdGFydElkbGVUaW1lcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaWRsZSB0aW1lciB3aGVuIHVzZXIgYWN0aXZpdHkgaXMgZGV0ZWN0ZWQuXG4gICAqL1xuICByZXNldFRpbWVyKCkge1xuICAgIHRoaXMuc3RhcnRJZGxlVGltZXIoKTtcblxuICAgIGlmICh0aGlzLmlzQ291bnRpbmdEb3duKSB7XG4gICAgICB0aGlzLnN0b3BDb3VudGRvd24oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB0aGUgaW50ZXJydXB0aW9uIGV2ZW50cyB0aGF0IHdpbGwgZW5kIHRoZSBpZGxlIGRldGVjdGlvbi5cbiAgICogTGlzdGVucyB0byBhIHNldCBvZiBldmVudHMgb24gdGhlIGRvY3VtZW50IChlLmcuIGNsaWNrLCBrZXlkb3duLCBtb3VzZW1vdmUsIGV0Yy4pLlxuICAgKiBXaGVuIGFueSBvZiB0aGVzZSBldmVudHMgaXMgdHJpZ2dlcmVkLCB0aGUgaWRsZSB0aW1lciBpcyByZXNldC5cbiAgICogVXNlcyBgdGhyb3R0bGVUaW1lYCBvcGVyYXRvciB0byBvbmx5IHRyaWdnZXIgdGhlIHJlc2V0IHdoZW4gdGhlIGV2ZW50cyBhcmUgc3BhY2VkXG4gICAqIG91dCBieSBhdCBsZWFzdCAxMDAwbXMgKDEgc2Vjb25kKS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2V0dXBJbnRlcnJ1cHRpb25FdmVudHMoKSB7XG4gICAgaWYgKCF0aGlzLmludGVycnVwdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgY29uc3QgdGhyb3R0bGVkSW50ZXJydXB0aW9uRXZlbnRzID0gdGhpcy5pbnRlcnJ1cHRpb25FdmVudHMubWFwKChldmVudE5hbWUpID0+XG4gICAgICAgIGZyb21FdmVudChkb2N1bWVudCwgZXZlbnROYW1lKS5waXBlKHRocm90dGxlVGltZSgxMDAwKSksXG4gICAgICApO1xuICAgICAgdGhpcy5pbnRlcnJ1cHRpb25TdWJzY3JpcHRpb24gPSBtZXJnZSguLi50aHJvdHRsZWRJbnRlcnJ1cHRpb25FdmVudHMpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlc2V0VGltZXIoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgaWRsZSB0aW1lci5cbiAgICogV2hlbiB0aGUgdGltZXIgZXhwaXJlcywgaXQgZW1pdHMgYW4gZXZlbnQgdGhyb3VnaCBvbklkbGVFbmQoKSBhbmQgc3RhcnRzIHRoZSBjb3VudGRvd24uXG4gICAqL1xuICBwcml2YXRlIHN0YXJ0SWRsZVRpbWVyKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmlkbGVUaW1lcik7XG5cbiAgICB0aGlzLmlkbGVUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIGFmdGVyIGlkbGUgcGVyaW9kLCB1c2VyIGluYWN0aXZpdHkgZGV0ZWN0ZWRcbiAgICAgIHRoaXMuaWRsZUVuZFN1YmplY3QubmV4dCgpO1xuICAgICAgdGhpcy5zdGFydENvdW50ZG93bigpO1xuICAgIH0sIHRoaXMuaWRsZUR1cmF0aW9uICogMTAwMCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSBjb3VudGRvd24uXG4gICAqL1xuICBwcml2YXRlIHN0YXJ0Q291bnRkb3duKCkge1xuICAgIHRoaXMuaXNDb3VudGluZ0Rvd24gPSB0cnVlO1xuICAgIHRoaXMuY291bnRkb3duU3ViamVjdC5uZXh0KHRoaXMuY291bnRkb3duKTtcblxuICAgIHRoaXMuY291bnRkb3duVGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5jb3VudGRvd24tLTtcbiAgICAgIHRoaXMuY291bnRkb3duU3ViamVjdC5uZXh0KHRoaXMuY291bnRkb3duKTtcblxuICAgICAgaWYgKHRoaXMuY291bnRkb3duIDw9IDApIHtcbiAgICAgICAgdGhpcy5zdG9wQ291bnRkb3duKCk7XG4gICAgICAgIHRoaXMuY291bnRkb3duRW5kU3ViamVjdC5uZXh0KCk7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgdGhlIGNvdW50ZG93bi5cbiAgICovXG4gIHByaXZhdGUgc3RvcENvdW50ZG93bigpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuY291bnRkb3duVGltZXIpO1xuICAgIHRoaXMuaXNDb3VudGluZ0Rvd24gPSBmYWxzZTtcblxuICAgIC8vIHJlc2V0IGNvdW50ZG93blxuICAgIHRoaXMuY291bnRkb3duID0gdGhpcy50aW1lb3V0RHVyYXRpb247XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgdXNlciBoYXMgYmVlbiBpZGxlIGZvciBhIGxvbmcgcGVyaW9kLlxuICAgKiBEZXZlbG9wZXJzIGNhbiB1c2UgdGhpcyB0byBwZXJmb3JtIGFjdGlvbnMgbGlrZSBvcGVuaW5nIGEgZGlhbG9nLlxuICAgKlxuICAgKiB1c2VyIGhhcyBiZWVuIGluYWN0aXZlIGZvciBhIGxvbmcgcGVyaW9kIChpZGxlRHVyYXRpb24pLCBhdCB0aGlzIG1vbWVudCwgaWRsZSBkZXRlY3Rpb24gcGhhc2UgZW5kcywgb25JZGxlRW5kIGV2ZW50IGlzIGVtaXR0ZWQsIGFuZCB0aGVuIGVudGVyIGNvdW50ZG93bi90aW1lb3V0IHBoYXNlLlxuICAgKiBEdXJpbmcgdGhlIGNvdW50ZG93biBwaGFzZTpcbiAgICogIC0gaWYgdXNlciBoYXMgYW55IGFjdGl2aXR5LCBjb3VudGRvd24gcGhhc2UgaW1tZWRpYXRlbHkgZW5kcyBhbmQgcmVzdGFydCB0aGUgaWRsZSBkZXRlY3Rpb24gcGhhc2UuXG4gICAqICAtIGVsc2UsIGNvdW50ZG93bkVuZCBldmVudCB3aWxsIGJlIGVtaXR0ZWQgd2hlbiB0aW1lb3V0RHVyYXRpb24gaXMgb3Zlci5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8dm9pZD59IC0gT2JzZXJ2YWJsZSBmb3IgaWRsZSBlbmQgZXZlbnQuXG4gICAqL1xuICBvbklkbGVFbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRsZUVuZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgY291bnRkb3duIGVuZHMuXG4gICAqIFVzdWFsbHkgbWVhbnMgdGhlIHVzZXIgaGFzIGJlZW4gaW5hY3RpdmUgZm9yIGEgdmVyeSBsb25nIHRpbWUgYW5kIHNob3VsZCBiZSBsb2dnZWQgb3V0LlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTx2b2lkPn0gLSBPYnNlcnZhYmxlIGZvciBjb3VudGRvd24gZW5kIGV2ZW50LlxuICAgKi9cbiAgb25UaW1lb3V0RW5kKCkge1xuICAgIHJldHVybiB0aGlzLmNvdW50ZG93bkVuZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGNvdW50ZG93biB2YWx1ZSBldmVyeSBzZWNvbmQuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPG51bWJlcj59IC0gT2JzZXJ2YWJsZSBmb3IgY291bnRkb3duIHZhbHVlLlxuICAgKi9cbiAgb25Db3VudERvd24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY291bnRkb3duU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIHRpbWVycyB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxuICAgKi9cbiAgY2xlYXJUaW1lcnMoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaWRsZVRpbWVyKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuY291bnRkb3duVGltZXIpO1xuXG4gICAgdGhpcy5pbnRlcnJ1cHRpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnRlcnJ1cHRpb25TdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaWRsZSBhbmQgdGltZW91dCBkdXJhdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIG9iamVjdCB3aXRoIGlkbGUgYW5kIHRpbWVvdXQgZHVyYXRpb25zLlxuICAgKi9cbiAgc2V0Q29uZmlnKGNvbmZpZzogSWRsZURldGVjdGlvbkNvbmZpZykge1xuICAgIGlmIChjb25maWcuaWRsZUR1cmF0aW9uSW5TZWNvbmRzKSB7XG4gICAgICB0aGlzLmlkbGVEdXJhdGlvbiA9IGNvbmZpZy5pZGxlRHVyYXRpb25JblNlY29uZHM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy50aW1lb3V0RHVyYXRpb25JblNlY29uZHMpIHtcbiAgICAgIHRoaXMuY291bnRkb3duID0gdGhpcy50aW1lb3V0RHVyYXRpb24gPSBjb25maWcudGltZW91dER1cmF0aW9uSW5TZWNvbmRzO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './idle-detection.config';
|
|
2
|
+
export * from './idle-detection.module';
|
|
3
|
+
export * from './idle-detection.service';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbGliL3V0aWxzL2lkbGUtZGV0ZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pZGxlLWRldGVjdGlvbi5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9pZGxlLWRldGVjdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pZGxlLWRldGVjdGlvbi5zZXJ2aWNlJztcbiJdfQ==
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export * from './difference-in-days.util';
|
|
2
2
|
export * from './form.util';
|
|
3
|
+
export * from './idle-detection';
|
|
3
4
|
export * from './is-empty.util';
|
|
4
5
|
export * from './is-equal.util';
|
|
5
6
|
export * from './omit-by.util';
|
|
6
7
|
export * from './pick-by.util';
|
|
7
8
|
export * from './range.util';
|
|
8
9
|
export * from './url.util';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaWZmZXJlbmNlLWluLWRheXMudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0udXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2lkbGUtZGV0ZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vaXMtZW1wdHkudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2lzLWVxdWFsLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9vbWl0LWJ5LnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9waWNrLWJ5LnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yYW5nZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vdXJsLnV0aWwnO1xuIl19
|