@smartbit4all/ng-client 4.5.36 → 4.5.37

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.
@@ -1,4 +1,4 @@
1
- import { Component, computed, signal } from '@angular/core';
1
+ import { Component, computed, output, signal } from '@angular/core';
2
2
  import { Subject, takeUntil } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../smart-session.service";
@@ -11,13 +11,14 @@ export class SmartSessionTimerComponent {
11
11
  this.secondsLeft = signal(undefined);
12
12
  this.timeFormatted = computed(() => {
13
13
  const secs = this.secondsLeft();
14
- if (!secs) {
14
+ if (!secs || secs < 1) {
15
15
  return '--:--';
16
16
  }
17
17
  const minutes = Math.floor(secs / 60);
18
18
  const remainingSeconds = secs % 60;
19
19
  return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;
20
20
  });
21
+ this.onTimerExpired = output();
21
22
  }
22
23
  ngOnInit() {
23
24
  this.bootstrap.whenReady().then(() => {
@@ -37,7 +38,11 @@ export class SmartSessionTimerComponent {
37
38
  }
38
39
  const expiration = new Date(expirationStr);
39
40
  const now = new Date();
40
- this.secondsLeft.set(Math.floor((expiration.getTime() - now.getTime()) / 1000));
41
+ const secsLeft = Math.floor((expiration.getTime() - now.getTime()) / 1000);
42
+ if (secsLeft < 1) {
43
+ this.onTimerExpired.emit();
44
+ }
45
+ this.secondsLeft.set(secsLeft);
41
46
  }
42
47
  ngOnDestroy() {
43
48
  clearInterval(this.timerId);
@@ -45,10 +50,10 @@ export class SmartSessionTimerComponent {
45
50
  this._destroy$.complete();
46
51
  }
47
52
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, deps: [{ token: i1.SmartSessionService }, { token: i2.SmartBackendBootstrapService }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n", styles: [""] }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", outputs: { onTimerExpired: "onTimerExpired" }, ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n", styles: [""] }); }
49
54
  }
50
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, decorators: [{
51
56
  type: Component,
52
57
  args: [{ selector: 'smart-session-timer', template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n" }]
53
58
  }], ctorParameters: () => [{ type: i1.SmartSessionService }, { type: i2.SmartBackendBootstrapService }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LXRpbWVyL3NtYXJ0LXNlc3Npb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC10aW1lci9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFTMUMsTUFBTSxPQUFPLDBCQUEwQjtJQWlCckMsWUFDVSxPQUE0QixFQUM1QixTQUF1QztRQUR2QyxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM1QixjQUFTLEdBQVQsU0FBUyxDQUE4QjtRQWxCekMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWpELGdCQUFXLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUNwRCxrQkFBYSxHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1lBRUQsTUFBTSxPQUFPLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUMsTUFBTSxnQkFBZ0IsR0FBVyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzNDLE9BQU8sR0FBRyxPQUFPLElBQUksZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdFLENBQUMsQ0FBQyxDQUFDO0lBT0EsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxXQUFXO1FBQ1QsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzsrR0FqRFUsMEJBQTBCO21HQUExQiwwQkFBMEIsMkRDWHZDLG1JQUdBOzs0RkRRYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtYmFja2VuZC1ib290c3RyYXAuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LXNlc3Npb24tdGltZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0U2Vzc2lvblRpbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgc2Vjb25kc0xlZnQgPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHRpbWVGb3JtYXR0ZWQgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgIGNvbnN0IHNlY3MgPSB0aGlzLnNlY29uZHNMZWZ0KCk7XHJcbiAgICBpZiAoIXNlY3MpIHtcclxuICAgICAgcmV0dXJuICctLTotLSc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWludXRlczogbnVtYmVyID0gTWF0aC5mbG9vcihzZWNzIC8gNjApO1xyXG4gICAgY29uc3QgcmVtYWluaW5nU2Vjb25kczogbnVtYmVyID0gc2VjcyAlIDYwO1xyXG4gICAgcmV0dXJuIGAke21pbnV0ZXN9OiR7cmVtYWluaW5nU2Vjb25kcyA8IDEwID8gJzAnIDogJyd9JHtyZW1haW5pbmdTZWNvbmRzfWA7XHJcbiAgfSk7XHJcblxyXG4gIHRpbWVySWQ/OiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uOiBTbWFydFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBib290c3RyYXA6IFNtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ib290c3RyYXAud2hlblJlYWR5KCkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2Vzc2lvbi5zZXNzaW9uRXhwaXJhY3lDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlY29uZHNMZWZ0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWNvbmRzTGVmdCgpO1xyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWNvbmRzTGVmdCgpIHtcclxuICAgIGNvbnN0IGV4cGlyYXRpb25TdHIgPSB0aGlzLnNlc3Npb24uc2Vzc2lvbkluZm9EYXRhPy5leHBpcmF0aW9uO1xyXG4gICAgaWYgKCFleHBpcmF0aW9uU3RyKSB7XHJcbiAgICAgIHRoaXMuc2Vjb25kc0xlZnQuc2V0KHVuZGVmaW5lZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBleHBpcmF0aW9uID0gbmV3IERhdGUoZXhwaXJhdGlvblN0cik7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5zZWNvbmRzTGVmdC5zZXQoTWF0aC5mbG9vcigoZXhwaXJhdGlvbi5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpKSAvIDEwMDApKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVySWQpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNtYXJ0LXNlc3Npb24tdGltZXItY29udGFpbmVyXCI+XHJcbiAgPHNwYW4gY2xhc3M9XCJzbWFydC1zZXNzaW9uLXRpbWVyXCI+e3sgdGltZUZvcm1hdHRlZCgpIH19PC9zcGFuPlxyXG48L2Rpdj5cclxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LXRpbWVyL3NtYXJ0LXNlc3Npb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC10aW1lci9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBUzFDLE1BQU0sT0FBTywwQkFBMEI7SUFrQnJDLFlBQ1UsT0FBNEIsRUFDNUIsU0FBdUM7UUFEdkMsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBOEI7UUFuQnpDLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVqRCxnQkFBVyxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDcEQsa0JBQWEsR0FBRyxRQUFRLENBQVMsR0FBRyxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sZ0JBQWdCLEdBQVcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUMzQyxPQUFPLEdBQUcsT0FBTyxJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQztRQUdILG1CQUFjLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFLN0IsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMzRSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVztRQUNULGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7K0dBdERVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDBHQ1h2QyxtSUFHQTs7NEZEUWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtYmFja2VuZC1ib290c3RyYXAuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LXNlc3Npb24tdGltZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0U2Vzc2lvblRpbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgc2Vjb25kc0xlZnQgPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHRpbWVGb3JtYXR0ZWQgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgIGNvbnN0IHNlY3MgPSB0aGlzLnNlY29uZHNMZWZ0KCk7XHJcbiAgICBpZiAoIXNlY3MgfHwgc2VjcyA8IDEpIHtcclxuICAgICAgcmV0dXJuICctLTotLSc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWludXRlczogbnVtYmVyID0gTWF0aC5mbG9vcihzZWNzIC8gNjApO1xyXG4gICAgY29uc3QgcmVtYWluaW5nU2Vjb25kczogbnVtYmVyID0gc2VjcyAlIDYwO1xyXG4gICAgcmV0dXJuIGAke21pbnV0ZXN9OiR7cmVtYWluaW5nU2Vjb25kcyA8IDEwID8gJzAnIDogJyd9JHtyZW1haW5pbmdTZWNvbmRzfWA7XHJcbiAgfSk7XHJcblxyXG4gIHRpbWVySWQ/OiBudW1iZXI7XHJcbiAgb25UaW1lckV4cGlyZWQgPSBvdXRwdXQ8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJvb3RzdHJhcDogU21hcnRCYWNrZW5kQm9vdHN0cmFwU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJvb3RzdHJhcC53aGVuUmVhZHkoKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXNzaW9uLnNlc3Npb25FeHBpcmFjeUNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2Vjb25kc0xlZnQoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudGltZXJJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlY29uZHNMZWZ0KCk7XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNlY29uZHNMZWZ0KCkge1xyXG4gICAgY29uc3QgZXhwaXJhdGlvblN0ciA9IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSW5mb0RhdGE/LmV4cGlyYXRpb247XHJcbiAgICBpZiAoIWV4cGlyYXRpb25TdHIpIHtcclxuICAgICAgdGhpcy5zZWNvbmRzTGVmdC5zZXQodW5kZWZpbmVkKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGV4cGlyYXRpb24gPSBuZXcgRGF0ZShleHBpcmF0aW9uU3RyKTtcclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBzZWNzTGVmdCA9IE1hdGguZmxvb3IoKGV4cGlyYXRpb24uZ2V0VGltZSgpIC0gbm93LmdldFRpbWUoKSkgLyAxMDAwKTtcclxuICAgIGlmIChzZWNzTGVmdCA8IDEpIHtcclxuICAgICAgdGhpcy5vblRpbWVyRXhwaXJlZC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlY29uZHNMZWZ0LnNldChzZWNzTGVmdCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcklkKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWFydC1zZXNzaW9uLXRpbWVyLWNvbnRhaW5lclwiPlxyXG4gIDxzcGFuIGNsYXNzPVwic21hcnQtc2Vzc2lvbi10aW1lclwiPnt7IHRpbWVGb3JtYXR0ZWQoKSB9fTwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, Optional, Inject, PLATFORM_ID, NgModule, SkipSelf, RendererStyleFlags2, Directive, Input, HostBinding, HostListener, Component, EventEmitter, Output, ViewChildren, ViewChild, ElementRef, forwardRef, Pipe, ViewContainerRef, ViewEncapsulation, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, signal, computed, input, effect, inject, ApplicationRef, viewChild, ChangeDetectorRef } from '@angular/core';
2
+ import { InjectionToken, Injectable, Optional, Inject, PLATFORM_ID, NgModule, SkipSelf, RendererStyleFlags2, Directive, Input, HostBinding, HostListener, Component, EventEmitter, Output, ViewChildren, ViewChild, ElementRef, forwardRef, Pipe, ViewContainerRef, ViewEncapsulation, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, signal, computed, output, input, effect, inject, ApplicationRef, viewChild, ChangeDetectorRef } from '@angular/core';
3
3
  import * as i1 from '@angular/common/http';
4
4
  import { HttpHeaders, HttpContext, HttpErrorResponse, HttpParams, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
5
5
  import { Subject, lastValueFrom, take, takeUntil, interval, startWith, map, distinctUntilChanged, catchError, throwError, from } from 'rxjs';
@@ -13639,13 +13639,14 @@ class SmartSessionTimerComponent {
13639
13639
  this.secondsLeft = signal(undefined);
13640
13640
  this.timeFormatted = computed(() => {
13641
13641
  const secs = this.secondsLeft();
13642
- if (!secs) {
13642
+ if (!secs || secs < 1) {
13643
13643
  return '--:--';
13644
13644
  }
13645
13645
  const minutes = Math.floor(secs / 60);
13646
13646
  const remainingSeconds = secs % 60;
13647
13647
  return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;
13648
13648
  });
13649
+ this.onTimerExpired = output();
13649
13650
  }
13650
13651
  ngOnInit() {
13651
13652
  this.bootstrap.whenReady().then(() => {
@@ -13665,7 +13666,11 @@ class SmartSessionTimerComponent {
13665
13666
  }
13666
13667
  const expiration = new Date(expirationStr);
13667
13668
  const now = new Date();
13668
- this.secondsLeft.set(Math.floor((expiration.getTime() - now.getTime()) / 1000));
13669
+ const secsLeft = Math.floor((expiration.getTime() - now.getTime()) / 1000);
13670
+ if (secsLeft < 1) {
13671
+ this.onTimerExpired.emit();
13672
+ }
13673
+ this.secondsLeft.set(secsLeft);
13669
13674
  }
13670
13675
  ngOnDestroy() {
13671
13676
  clearInterval(this.timerId);
@@ -13673,7 +13678,7 @@ class SmartSessionTimerComponent {
13673
13678
  this._destroy$.complete();
13674
13679
  }
13675
13680
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, deps: [{ token: SmartSessionService }, { token: SmartBackendBootstrapService }], target: i0.ɵɵFactoryTarget.Component }); }
13676
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n", styles: [""] }); }
13681
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", outputs: { onTimerExpired: "onTimerExpired" }, ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n", styles: [""] }); }
13677
13682
  }
13678
13683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, decorators: [{
13679
13684
  type: Component,