ngssm-remote-data 16.2.1 → 16.2.2

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.
Files changed (19) hide show
  1. package/esm2022/lib/ngssm-remote-call/components/ngssm-remote-call-error/ngssm-remote-call-error.component.mjs +22 -15
  2. package/esm2022/lib/ngssm-remote-call/components/ngssm-remote-call.directive.mjs +3 -3
  3. package/esm2022/lib/ngssm-remote-call/ngssm-remote-call-state-initializer.mjs +3 -3
  4. package/esm2022/lib/ngssm-remote-call/reducers/remote-call-setter.reducer.mjs +3 -3
  5. package/esm2022/lib/ngssm-remote-call/reducers/remote-call.reducer.mjs +3 -3
  6. package/esm2022/lib/remote-data/components/ngssm-caches/ngssm-caches.component.mjs +3 -3
  7. package/esm2022/lib/remote-data/components/ngssm-caches-display-button/ngssm-caches-display-button.component.mjs +3 -3
  8. package/esm2022/lib/remote-data/components/ngssm-remote-data-overlay.directive.mjs +3 -3
  9. package/esm2022/lib/remote-data/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.mjs +3 -3
  10. package/esm2022/lib/remote-data/effects/caches-display.effect.mjs +3 -3
  11. package/esm2022/lib/remote-data/effects/remote-data-loading.effect.mjs +3 -3
  12. package/esm2022/lib/remote-data/guards/remote-data-loading.guard.mjs +3 -3
  13. package/esm2022/lib/remote-data/reducers/remote-data.reducer.mjs +3 -3
  14. package/esm2022/lib/remote-data/remote-data-state-initializer.mjs +3 -3
  15. package/fesm2022/ngssm-remote-data.mjs +57 -51
  16. package/fesm2022/ngssm-remote-data.mjs.map +1 -1
  17. package/lib/ngssm-remote-call/components/ngssm-remote-call-error/ngssm-remote-call-error.component.d.ts +2 -4
  18. package/package.json +2 -2
  19. package/styles/styles.scss +2 -0
@@ -1,10 +1,11 @@
1
- import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy, Input, HostBinding, signal } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { MatButtonModule } from '@angular/material/button';
4
4
  import { MatIconModule } from '@angular/material/icon';
5
- import { BehaviorSubject, Subject, switchMap } from 'rxjs';
5
+ import { Subject, switchMap } from 'rxjs';
6
6
  import { NgSsmComponent } from 'ngssm-store';
7
7
  import { selectNgssmRemoteCallState } from '../../state';
8
+ import { RemoteCallStatus } from '../../model';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "ngssm-store";
10
11
  import * as i2 from "@angular/common";
@@ -14,31 +15,37 @@ export class NgssmRemoteCallErrorComponent extends NgSsmComponent {
14
15
  constructor(store) {
15
16
  super(store);
16
17
  this._remoteCallId$ = new Subject();
17
- this._remoteCallError$ = new BehaviorSubject(undefined);
18
+ this.errorContainerRendered = signal(false);
19
+ this.errorDescription = signal('');
18
20
  this.hostCssClasses = 'ngssm-remote-call-error';
19
- this._remoteCallId$
20
- .pipe(switchMap((v) => this.watch((s) => selectNgssmRemoteCallState(s).remoteCalls[v])))
21
- .subscribe((remoteCall) => this._remoteCallError$.next(remoteCall?.error));
21
+ this._remoteCallId$.pipe(switchMap((v) => this.watch((s) => selectNgssmRemoteCallState(s).remoteCalls[v]))).subscribe((remoteCall) => {
22
+ this.errorContainerRendered.set(remoteCall?.status === RemoteCallStatus.ko);
23
+ const description = remoteCall?.status !== RemoteCallStatus.ko
24
+ ? ''
25
+ : !!remoteCall.message
26
+ ? remoteCall.message
27
+ : !!remoteCall.error
28
+ ? JSON.stringify(remoteCall.error, null, 2)
29
+ : 'No error description provided!';
30
+ this.errorDescription.set(description);
31
+ });
22
32
  }
23
33
  set remoteCallId(value) {
24
34
  this._remoteCallId$.next(value);
25
35
  }
26
- get remoteCallError$() {
27
- return this._remoteCallError$.asObservable();
28
- }
29
36
  hideComponent() {
30
- this._remoteCallError$.next(undefined);
37
+ this.errorContainerRendered.set(false);
31
38
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallErrorComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgssmRemoteCallErrorComponent, isStandalone: true, selector: "ngssm-remote-call-error", inputs: { remoteCallId: "remoteCallId" }, host: { properties: { "class": "this.hostCssClasses" } }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"(remoteCallError$ | async) !== undefined\" class=\"ngssm-remote-call-error-container\">\n {{remoteCallError$ | async | json}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.JsonPipe, name: "json" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallErrorComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: NgssmRemoteCallErrorComponent, isStandalone: true, selector: "ngssm-remote-call-error", inputs: { remoteCallId: "remoteCallId" }, host: { properties: { "class": "this.hostCssClasses" } }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"errorContainerRendered() === true\" class=\"ngssm-remote-call-error-container\">\n {{errorDescription()}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
41
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallErrorComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallErrorComponent, decorators: [{
36
43
  type: Component,
37
- args: [{ selector: 'ngssm-remote-call-error', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"(remoteCallError$ | async) !== undefined\" class=\"ngssm-remote-call-error-container\">\n {{remoteCallError$ | async | json}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>" }]
44
+ args: [{ selector: 'ngssm-remote-call-error', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"errorContainerRendered() === true\" class=\"ngssm-remote-call-error-container\">\n {{errorDescription()}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>" }]
38
45
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { hostCssClasses: [{
39
46
  type: HostBinding,
40
47
  args: ['class']
41
48
  }], remoteCallId: [{
42
49
  type: Input
43
50
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVtb3RlLWNhbGwtZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tcmVtb3RlLWRhdGEvc3JjL2xpYi9uZ3NzbS1yZW1vdGUtY2FsbC9jb21wb25lbnRzL25nc3NtLXJlbW90ZS1jYWxsLWVycm9yL25nc3NtLXJlbW90ZS1jYWxsLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvbmdzc20tcmVtb3RlLWNhbGwvY29tcG9uZW50cy9uZ3NzbS1yZW1vdGUtY2FsbC1lcnJvci9uZ3NzbS1yZW1vdGUtY2FsbC1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxjQUFjLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFFcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFXekQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGNBQWM7SUFNL0QsWUFBWSxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQU5FLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUN2QyxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBOEIsU0FBUyxDQUFDLENBQUM7UUFFcEUsbUJBQWMsR0FBRyx5QkFBeUIsQ0FBQztRQUt0RSxJQUFJLENBQUMsY0FBYzthQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZGLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBb0IsWUFBWSxDQUFDLEtBQWE7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQzs4R0F4QlUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsOE1DbkIxQyxrV0FNTSwyQ0RRTSxZQUFZLDBPQUFFLGVBQWUsMkxBQUUsYUFBYTs7MkZBSzNDLDZCQUE2QjtrQkFSekMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsbUJBR3RDLHVCQUF1QixDQUFDLE1BQU07NEZBTWxCLGNBQWM7c0JBQTFDLFdBQVc7dUJBQUMsT0FBTztnQkFVQSxZQUFZO3NCQUEvQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5nU3NtQ29tcG9uZW50LCBTdG9yZSB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuaW1wb3J0IHsgc2VsZWN0Tmdzc21SZW1vdGVDYWxsU3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZSc7XG5pbXBvcnQgeyBSZW1vdGVDYWxsRXJyb3IgfSBmcm9tICcuLi8uLi9tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nc3NtLXJlbW90ZS1jYWxsLWVycm9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLXJlbW90ZS1jYWxsLWVycm9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmdzc21SZW1vdGVDYWxsRXJyb3JDb21wb25lbnQgZXh0ZW5kcyBOZ1NzbUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbW90ZUNhbGxJZCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbW90ZUNhbGxFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlbW90ZUNhbGxFcnJvciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHVibGljIGhvc3RDc3NDbGFzc2VzID0gJ25nc3NtLXJlbW90ZS1jYWxsLWVycm9yJztcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcihzdG9yZSk7XG5cbiAgICB0aGlzLl9yZW1vdGVDYWxsSWQkXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKHYpID0+IHRoaXMud2F0Y2goKHMpID0+IHNlbGVjdE5nc3NtUmVtb3RlQ2FsbFN0YXRlKHMpLnJlbW90ZUNhbGxzW3ZdKSkpXG4gICAgICAuc3Vic2NyaWJlKChyZW1vdGVDYWxsKSA9PiB0aGlzLl9yZW1vdGVDYWxsRXJyb3IkLm5leHQocmVtb3RlQ2FsbD8uZXJyb3IpKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVtb3RlQ2FsbElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yZW1vdGVDYWxsSWQkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCByZW1vdGVDYWxsRXJyb3IkKCk6IE9ic2VydmFibGU8UmVtb3RlQ2FsbEVycm9yIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW90ZUNhbGxFcnJvciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdGVDYWxsRXJyb3IkLm5leHQodW5kZWZpbmVkKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIihyZW1vdGVDYWxsRXJyb3IkIHwgYXN5bmMpICE9PSB1bmRlZmluZWRcIiBjbGFzcz1cIm5nc3NtLXJlbW90ZS1jYWxsLWVycm9yLWNvbnRhaW5lclwiPlxuICAgIHt7cmVtb3RlQ2FsbEVycm9yJCB8IGFzeW5jIHwganNvbn19XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiBjbGFzcz1cIm5nc3NtLXJlbW90ZS1jYWxsLWVycm9yLWNsb3NlLWJ1dHRvblwiIChjbGljayk9XCJoaWRlQ29tcG9uZW50KClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtc3F1YXJlLXhtYXJrXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tcmVtb3RlLWNhbGwtZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tcmVtb3RlLWRhdGEvc3JjL2xpYi9uZ3NzbS1yZW1vdGUtY2FsbC9jb21wb25lbnRzL25nc3NtLXJlbW90ZS1jYWxsLWVycm9yL25nc3NtLXJlbW90ZS1jYWxsLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvbmdzc20tcmVtb3RlLWNhbGwvY29tcG9uZW50cy9uZ3NzbS1yZW1vdGUtY2FsbC1lcnJvci9uZ3NzbS1yZW1vdGUtY2FsbC1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxjQUFjLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFFcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBVS9DLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxjQUFjO0lBUS9ELFlBQVksS0FBWTtRQUN0QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFSRSxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFeEMsMkJBQXNCLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELHFCQUFnQixHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUV6QixtQkFBYyxHQUFHLHlCQUF5QixDQUFDO1FBS3RFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25JLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLFdBQVcsR0FDZixVQUFVLEVBQUUsTUFBTSxLQUFLLGdCQUFnQixDQUFDLEVBQUU7Z0JBQ3hDLENBQUMsQ0FBQyxFQUFFO2dCQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU87b0JBQ3RCLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztvQkFDcEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSzt3QkFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUMzQyxDQUFDLENBQUMsZ0NBQWdDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFvQixZQUFZLENBQUMsS0FBYTtRQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OEdBL0JVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDhNQ25CMUMsOFVBTU0sMkNEUU0sWUFBWSxrSUFBRSxlQUFlLDJMQUFFLGFBQWE7OzJGQUszQyw2QkFBNkI7a0JBUnpDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLG1CQUd0Qyx1QkFBdUIsQ0FBQyxNQUFNOzRGQVFsQixjQUFjO3NCQUExQyxXQUFXO3VCQUFDLE9BQU87Z0JBbUJBLFlBQVk7c0JBQS9CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCwgSG9zdEJpbmRpbmcsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmdTc21Db21wb25lbnQsIFN0b3JlIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBzZWxlY3ROZ3NzbVJlbW90ZUNhbGxTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlJztcbmltcG9ydCB7IFJlbW90ZUNhbGxTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nc3NtLXJlbW90ZS1jYWxsLWVycm9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL25nc3NtLXJlbW90ZS1jYWxsLWVycm9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmdzc21SZW1vdGVDYWxsRXJyb3JDb21wb25lbnQgZXh0ZW5kcyBOZ1NzbUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbW90ZUNhbGxJZCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVycm9yQ29udGFpbmVyUmVuZGVyZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgZXJyb3JEZXNjcmlwdGlvbiA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHVibGljIGhvc3RDc3NDbGFzc2VzID0gJ25nc3NtLXJlbW90ZS1jYWxsLWVycm9yJztcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcihzdG9yZSk7XG5cbiAgICB0aGlzLl9yZW1vdGVDYWxsSWQkLnBpcGUoc3dpdGNoTWFwKCh2KSA9PiB0aGlzLndhdGNoKChzKSA9PiBzZWxlY3ROZ3NzbVJlbW90ZUNhbGxTdGF0ZShzKS5yZW1vdGVDYWxsc1t2XSkpKS5zdWJzY3JpYmUoKHJlbW90ZUNhbGwpID0+IHtcbiAgICAgIHRoaXMuZXJyb3JDb250YWluZXJSZW5kZXJlZC5zZXQocmVtb3RlQ2FsbD8uc3RhdHVzID09PSBSZW1vdGVDYWxsU3RhdHVzLmtvKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uOiBzdHJpbmcgPVxuICAgICAgICByZW1vdGVDYWxsPy5zdGF0dXMgIT09IFJlbW90ZUNhbGxTdGF0dXMua29cbiAgICAgICAgICA/ICcnXG4gICAgICAgICAgOiAhIXJlbW90ZUNhbGwubWVzc2FnZVxuICAgICAgICAgID8gcmVtb3RlQ2FsbC5tZXNzYWdlXG4gICAgICAgICAgOiAhIXJlbW90ZUNhbGwuZXJyb3JcbiAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHJlbW90ZUNhbGwuZXJyb3IsIG51bGwsIDIpXG4gICAgICAgICAgOiAnTm8gZXJyb3IgZGVzY3JpcHRpb24gcHJvdmlkZWQhJztcbiAgICAgIHRoaXMuZXJyb3JEZXNjcmlwdGlvbi5zZXQoZGVzY3JpcHRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgQElucHV0KCkgcHVibGljIHNldCByZW1vdGVDYWxsSWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3JlbW90ZUNhbGxJZCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaGlkZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yQ29udGFpbmVyUmVuZGVyZWQuc2V0KGZhbHNlKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImVycm9yQ29udGFpbmVyUmVuZGVyZWQoKSA9PT0gdHJ1ZVwiIGNsYXNzPVwibmdzc20tcmVtb3RlLWNhbGwtZXJyb3ItY29udGFpbmVyXCI+XG4gICAge3tlcnJvckRlc2NyaXB0aW9uKCl9fVxuXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJ3YXJuXCIgY2xhc3M9XCJuZ3NzbS1yZW1vdGUtY2FsbC1lcnJvci1jbG9zZS1idXR0b25cIiAoY2xpY2spPVwiaGlkZUNvbXBvbmVudCgpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLXNxdWFyZS14bWFya1wiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG48L2Rpdj4iXX0=
@@ -23,10 +23,10 @@ export class NgssmRemoteCallDirective extends NgSsmComponent {
23
23
  }
24
24
  });
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallDirective, deps: [{ token: i1.Store }, { token: i2.NgssmOverlayBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
27
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgssmRemoteCallDirective, isStandalone: true, selector: "[ngssmRemoteCall]", inputs: { remoteCallId: ["ngssmRemoteCall", "remoteCallId"] }, providers: [NgssmOverlayBuilder], usesInheritance: true, ngImport: i0 }); }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallDirective, deps: [{ token: i1.Store }, { token: i2.NgssmOverlayBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
27
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: NgssmRemoteCallDirective, isStandalone: true, selector: "[ngssmRemoteCall]", inputs: { remoteCallId: ["ngssmRemoteCall", "remoteCallId"] }, providers: [NgssmOverlayBuilder], usesInheritance: true, ngImport: i0 }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallDirective, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallDirective, decorators: [{
30
30
  type: Directive,
31
31
  args: [{
32
32
  selector: '[ngssmRemoteCall]',
@@ -10,10 +10,10 @@ export class NgssmRemoteCallStateInitializer {
10
10
  let tempState = state;
11
11
  return (this.remoteCallConfigs ?? []).reduce((s, config) => updateNgssmRemoteCallState(s, { remoteCalls: { [config.id]: { $set: { status: RemoteCallStatus.none } } } }), tempState);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallStateInitializer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
14
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallStateInitializer }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallStateInitializer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
14
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallStateInitializer }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallStateInitializer, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallStateInitializer, decorators: [{
17
17
  type: Injectable
18
18
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
19
19
  type: Inject,
@@ -19,10 +19,10 @@ export class RemoteCallSetterReducer {
19
19
  }
20
20
  return state;
21
21
  }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallSetterReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
23
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallSetterReducer }); }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallSetterReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
23
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallSetterReducer }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallSetterReducer, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallSetterReducer, decorators: [{
26
26
  type: Injectable
27
27
  }] });
28
28
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNhbGwtc2V0dGVyLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1yZW1vdGUtZGF0YS9zcmMvbGliL25nc3NtLXJlbW90ZS1jYWxsL3JlZHVjZXJzL3JlbW90ZS1jYWxsLXNldHRlci5yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLHlCQUF5QixFQUF1QixNQUFNLFlBQVksQ0FBQztBQUM1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR3RELE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFFa0IscUJBQWdCLEdBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztLQWdCeEY7SUFkUSxXQUFXLENBQUMsS0FBWSxFQUFFLE1BQWM7UUFDN0MsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ25CLEtBQUsseUJBQXlCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzVDLE1BQU0sbUJBQW1CLEdBQUcsTUFBNkIsQ0FBQztnQkFDMUQsT0FBTywwQkFBMEIsQ0FBQyxLQUFLLEVBQUU7b0JBQ3ZDLFdBQVcsRUFBRTt3QkFDWCxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtxQkFDN0U7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0FoQlUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlZHVjZXIsIFN0YXRlLCBBY3Rpb24gfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IE5nc3NtUmVtb3RlQ2FsbEFjdGlvblR5cGUsIFNldFJlbW90ZUNhbGxBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IHVwZGF0ZU5nc3NtUmVtb3RlQ2FsbFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVtb3RlQ2FsbFNldHRlclJlZHVjZXIgaW1wbGVtZW50cyBSZWR1Y2VyIHtcbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NlZEFjdGlvbnM6IHN0cmluZ1tdID0gW05nc3NtUmVtb3RlQ2FsbEFjdGlvblR5cGUuc2V0UmVtb3RlQ2FsbF07XG5cbiAgcHVibGljIHVwZGF0ZVN0YXRlKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiBTdGF0ZSB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBOZ3NzbVJlbW90ZUNhbGxBY3Rpb25UeXBlLnNldFJlbW90ZUNhbGw6IHtcbiAgICAgICAgY29uc3Qgc2V0UmVtb3RlQ2FsbEFjdGlvbiA9IGFjdGlvbiBhcyBTZXRSZW1vdGVDYWxsQWN0aW9uO1xuICAgICAgICByZXR1cm4gdXBkYXRlTmdzc21SZW1vdGVDYWxsU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgICByZW1vdGVDYWxsczoge1xuICAgICAgICAgICAgW3NldFJlbW90ZUNhbGxBY3Rpb24ucmVtb3RlQ2FsbElkXTogeyAkc2V0OiBzZXRSZW1vdGVDYWxsQWN0aW9uLnJlbW90ZUNhbGwgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG4iXX0=
@@ -30,10 +30,10 @@ export class RemoteCallReducer {
30
30
  });
31
31
  return output;
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallReducer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallReducer }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallReducer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallReducer }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallReducer, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallReducer, decorators: [{
37
37
  type: Injectable
38
38
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
39
39
  type: Inject,
@@ -40,10 +40,10 @@ export class NgssmCachesComponent extends NgSsmComponent {
40
40
  reloadCache(cache) {
41
41
  this.dispatchAction(new LoadRemoteDataAction(cache.key, { forceReload: true, keepStoredGetterParams: true }));
42
42
  }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmCachesComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgssmCachesComponent, isStandalone: true, selector: "ngssm-caches", usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>List of caches</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-table [dataSource]=\"caches$\" class=\"fxFlex\">\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef> </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n <button mat-icon-button [disabled]=\"element.value.status === dataStatus.loading\" (click)=\"reloadCache(element)\" color=\"primary\" id=\"reload_{{element.key}}\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n </button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"key\">\n <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.key}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n\n <div [ngSwitch]=\"element.value.status\">\n <mat-icon *ngSwitchCase=\"dataStatus.none\" class=\"fa-solid fa-minus\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.loaded\" class=\"fa-solid fa-check\" color=\"primary\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.error\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.notFound\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-spinner [diameter]=\"20\" *ngSwitchCase=\"dataStatus.loading\"></mat-spinner>\n </div>\n\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"timestamp\">\n <mat-header-cell *matHeaderCellDef> Timestamp </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.value.timestamp}} </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"['actions', 'status', 'key', 'timestamp']; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: ['actions', 'status', 'key', 'timestamp']\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\" id=\"closeButton\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;min-width:800px;max-width:80vw;min-height:500px;max-height:80vh}:host .mat-column-actions{min-width:50px;max-width:50px;padding-left:0!important}:host .mat-column-status{min-width:60px;max-width:60px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmCachesComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: NgssmCachesComponent, isStandalone: true, selector: "ngssm-caches", usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>List of caches</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-table [dataSource]=\"caches$\" class=\"fxFlex\">\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef> </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n <button mat-icon-button [disabled]=\"element.value.status === dataStatus.loading\" (click)=\"reloadCache(element)\" color=\"primary\" id=\"reload_{{element.key}}\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n </button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"key\">\n <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.key}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n\n <div [ngSwitch]=\"element.value.status\">\n <mat-icon *ngSwitchCase=\"dataStatus.none\" class=\"fa-solid fa-minus\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.loaded\" class=\"fa-solid fa-check\" color=\"primary\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.error\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.notFound\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-spinner [diameter]=\"20\" *ngSwitchCase=\"dataStatus.loading\"></mat-spinner>\n </div>\n\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"timestamp\">\n <mat-header-cell *matHeaderCellDef> Timestamp </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.value.timestamp}} </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"['actions', 'status', 'key', 'timestamp']; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: ['actions', 'status', 'key', 'timestamp']\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\" id=\"closeButton\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;min-width:800px;max-width:80vw;min-height:500px;max-height:80vh}:host .mat-column-actions{min-width:50px;max-width:50px;padding-left:0!important}:host .mat-column-status{min-width:60px;max-width:60px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
45
45
  }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmCachesComponent, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmCachesComponent, decorators: [{
47
47
  type: Component,
48
48
  args: [{ selector: 'ngssm-caches', standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule, MatTableModule, MatIconModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 mat-dialog-title>List of caches</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-table [dataSource]=\"caches$\" class=\"fxFlex\">\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef> </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n <button mat-icon-button [disabled]=\"element.value.status === dataStatus.loading\" (click)=\"reloadCache(element)\" color=\"primary\" id=\"reload_{{element.key}}\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n </button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"key\">\n <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.key}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n\n <div [ngSwitch]=\"element.value.status\">\n <mat-icon *ngSwitchCase=\"dataStatus.none\" class=\"fa-solid fa-minus\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.loaded\" class=\"fa-solid fa-check\" color=\"primary\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.error\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.notFound\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-spinner [diameter]=\"20\" *ngSwitchCase=\"dataStatus.loading\"></mat-spinner>\n </div>\n\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"timestamp\">\n <mat-header-cell *matHeaderCellDef> Timestamp </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.value.timestamp}} </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"['actions', 'status', 'key', 'timestamp']; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: ['actions', 'status', 'key', 'timestamp']\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\" id=\"closeButton\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;min-width:800px;max-width:80vw;min-height:500px;max-height:80vh}:host .mat-column-actions{min-width:50px;max-width:50px;padding-left:0!important}:host .mat-column-status{min-width:60px;max-width:60px}\n"] }]
49
49
  }], ctorParameters: function () { return [{ type: i1.Store }]; } });
@@ -17,10 +17,10 @@ export class NgssmCachesDisplayButtonComponent extends NgSsmComponent {
17
17
  displayCaches() {
18
18
  this.dispatchActionType(RemoteDataActionType.displayCaches);
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmCachesDisplayButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgssmCachesDisplayButtonComponent, isStandalone: true, selector: "ngssm-caches-display-button", usesInheritance: true, ngImport: i0, template: "<button mat-icon-button matTooltip=\"Display caches\" (click)=\"displayCaches()\">\n <mat-icon class=\"fa-solid fa-cloud-bolt\"></mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmCachesDisplayButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: NgssmCachesDisplayButtonComponent, isStandalone: true, selector: "ngssm-caches-display-button", usesInheritance: true, ngImport: i0, template: "<button mat-icon-button matTooltip=\"Display caches\" (click)=\"displayCaches()\">\n <mat-icon class=\"fa-solid fa-cloud-bolt\"></mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmCachesDisplayButtonComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmCachesDisplayButtonComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{ selector: 'ngssm-caches-display-button', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button matTooltip=\"Display caches\" (click)=\"displayCaches()\">\n <mat-icon class=\"fa-solid fa-cloud-bolt\"></mat-icon>\n</button>\n" }]
26
26
  }], ctorParameters: function () { return [{ type: i1.Store }]; } });
@@ -34,10 +34,10 @@ export class NgssmRemoteDataOverlayDirective extends NgSsmComponent {
34
34
  });
35
35
  }
36
36
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteDataOverlayDirective, deps: [{ token: i1.Store }, { token: i2.NgssmOverlayBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
38
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgssmRemoteDataOverlayDirective, isStandalone: true, selector: "[ngssmRemoteDataOverlay]", inputs: { ngssmRemoteDataOverlay: "ngssmRemoteDataOverlay" }, providers: [NgssmOverlayBuilder], usesInheritance: true, ngImport: i0 }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteDataOverlayDirective, deps: [{ token: i1.Store }, { token: i2.NgssmOverlayBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
38
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: NgssmRemoteDataOverlayDirective, isStandalone: true, selector: "[ngssmRemoteDataOverlay]", inputs: { ngssmRemoteDataOverlay: "ngssmRemoteDataOverlay" }, providers: [NgssmOverlayBuilder], usesInheritance: true, ngImport: i0 }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteDataOverlayDirective, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteDataOverlayDirective, decorators: [{
41
41
  type: Directive,
42
42
  args: [{
43
43
  selector: '[ngssmRemoteDataOverlay]',
@@ -55,10 +55,10 @@ export class NgssmRemoteDataReloadButtonComponent extends NgSsmComponent {
55
55
  .forEach((key) => this.dispatchAction(new LoadRemoteDataAction(key, { forceReload: true, keepStoredGetterParams: true })));
56
56
  (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));
57
57
  }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
59
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgssmRemoteDataReloadButtonComponent, isStandalone: true, selector: "ngssm-remote-data-reload-button", inputs: { actionTypes: "actionTypes", remoteDataKeys: "remoteDataKeys" }, usesInheritance: true, ngImport: i0, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"disabled() === true\" id=\"reloadButton\" >\n <mat-icon class=\"fa-solid fa-rotate-right\" *ngIf=\"inLoadingStatus() === false\"></mat-icon>\n <mat-spinner [diameter]=\"24\" *ngIf=\"inLoadingStatus() === true\" id=\"loadingSpinner\"></mat-spinner>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: NgssmRemoteDataReloadButtonComponent, isStandalone: true, selector: "ngssm-remote-data-reload-button", inputs: { actionTypes: "actionTypes", remoteDataKeys: "remoteDataKeys" }, usesInheritance: true, ngImport: i0, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"disabled() === true\" id=\"reloadButton\" >\n <mat-icon class=\"fa-solid fa-rotate-right\" *ngIf=\"inLoadingStatus() === false\"></mat-icon>\n <mat-spinner [diameter]=\"24\" *ngIf=\"inLoadingStatus() === true\" id=\"loadingSpinner\"></mat-spinner>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60
60
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteDataReloadButtonComponent, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteDataReloadButtonComponent, decorators: [{
62
62
  type: Component,
63
63
  args: [{ selector: 'ngssm-remote-data-reload-button', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"disabled() === true\" id=\"reloadButton\" >\n <mat-icon class=\"fa-solid fa-rotate-right\" *ngIf=\"inLoadingStatus() === false\"></mat-icon>\n <mat-spinner [diameter]=\"24\" *ngIf=\"inLoadingStatus() === true\" id=\"loadingSpinner\"></mat-spinner>\n</button>\n" }]
64
64
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { actionTypes: [{
@@ -23,10 +23,10 @@ export class CachesDisplayEffect {
23
23
  }
24
24
  }
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CachesDisplayEffect, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CachesDisplayEffect }); }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: CachesDisplayEffect, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: CachesDisplayEffect }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CachesDisplayEffect, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: CachesDisplayEffect, decorators: [{
30
30
  type: Injectable
31
31
  }], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
32
32
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVzLWRpc3BsYXkuZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tcmVtb3RlLWRhdGEvc3JjL2xpYi9yZW1vdGUtZGF0YS9lZmZlY3RzL2NhY2hlcy1kaXNwbGF5LmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUdyRCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQW9CLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFGeEIscUJBQWdCLEdBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUVsRixDQUFDO0lBRXJDLGFBQWEsQ0FBQyxLQUFZLEVBQUUsS0FBWSxFQUFFLE1BQWM7UUFDN0QsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ25CLEtBQUssb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7b0JBQ3RELFlBQVksRUFBRSxJQUFJO2lCQUNuQixDQUFDLENBQUM7Z0JBRUgsTUFBTTthQUNQO1lBRUQsS0FBSyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztnQkFFeEIsTUFBTTthQUNQO1NBQ0Y7SUFDSCxDQUFDOzhHQXhCVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRWZmZWN0LCBTdG9yZSwgU3RhdGUsIEFjdGlvbiB9IGZyb20gJ25nc3NtLXN0b3JlJztcbmltcG9ydCB7IFJlbW90ZURhdGFBY3Rpb25UeXBlIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBOZ3NzbUNhY2hlc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2FjaGVzRGlzcGxheUVmZmVjdCBpbXBsZW1lbnRzIEVmZmVjdCB7XG4gIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2dSZWY8Tmdzc21DYWNoZXNDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtSZW1vdGVEYXRhQWN0aW9uVHlwZS5kaXNwbGF5Q2FjaGVzLCBSZW1vdGVEYXRhQWN0aW9uVHlwZS5jbG9zZUNhY2hlc0NvbXBvbmVudF07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgcHJvY2Vzc0FjdGlvbihzdG9yZTogU3RvcmUsIHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIFJlbW90ZURhdGFBY3Rpb25UeXBlLmRpc3BsYXlDYWNoZXM6IHtcbiAgICAgICAgdGhpcy5kaWFsb2cgPSB0aGlzLm1hdERpYWxvZy5vcGVuKE5nc3NtQ2FjaGVzQ29tcG9uZW50LCB7XG4gICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFJlbW90ZURhdGFBY3Rpb25UeXBlLmNsb3NlQ2FjaGVzQ29tcG9uZW50OiB7XG4gICAgICAgIHRoaXMuZGlhbG9nPy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRpYWxvZyA9IHVuZGVmaW5lZDtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -36,10 +36,10 @@ export class RemoteDataLoadingEffect {
36
36
  });
37
37
  });
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }, { token: i1.NgssmNotifierService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
40
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingEffect }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }, { token: i1.NgssmNotifierService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingEffect }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
43
43
  type: Injectable
44
44
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
45
45
  type: Inject,
@@ -14,10 +14,10 @@ export class RemoteDataLoadingGuard {
14
14
  });
15
15
  return true;
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
18
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingGuard, providedIn: 'root' }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
18
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingGuard, providedIn: 'root' }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingGuard, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingGuard, decorators: [{
21
21
  type: Injectable,
22
22
  args: [{
23
23
  providedIn: 'root'
@@ -59,10 +59,10 @@ export class RemoteDataReducer {
59
59
  }
60
60
  return state;
61
61
  }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataReducer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
63
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataReducer }); }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataReducer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
63
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataReducer }); }
64
64
  }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataReducer, decorators: [{
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataReducer, decorators: [{
66
66
  type: Injectable
67
67
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
68
68
  type: Inject,
@@ -10,10 +10,10 @@ export class RemoteDataStateInitializer {
10
10
  let tempState = state;
11
11
  return (this.remoteDataProviders ?? []).reduce((s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }), tempState);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataStateInitializer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
14
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataStateInitializer }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataStateInitializer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
14
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataStateInitializer }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataStateInitializer, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataStateInitializer, decorators: [{
17
17
  type: Injectable
18
18
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
19
19
  type: Inject,
@@ -114,10 +114,10 @@ class RemoteDataLoadingGuard {
114
114
  });
115
115
  return true;
116
116
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
118
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingGuard, providedIn: 'root' }); }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
118
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingGuard, providedIn: 'root' }); }
119
119
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingGuard, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingGuard, decorators: [{
121
121
  type: Injectable,
122
122
  args: [{
123
123
  providedIn: 'root'
@@ -169,10 +169,10 @@ class NgssmRemoteDataReloadButtonComponent extends NgSsmComponent {
169
169
  .forEach((key) => this.dispatchAction(new LoadRemoteDataAction(key, { forceReload: true, keepStoredGetterParams: true })));
170
170
  (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));
171
171
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
173
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgssmRemoteDataReloadButtonComponent, isStandalone: true, selector: "ngssm-remote-data-reload-button", inputs: { actionTypes: "actionTypes", remoteDataKeys: "remoteDataKeys" }, usesInheritance: true, ngImport: i0, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"disabled() === true\" id=\"reloadButton\" >\n <mat-icon class=\"fa-solid fa-rotate-right\" *ngIf=\"inLoadingStatus() === false\"></mat-icon>\n <mat-spinner [diameter]=\"24\" *ngIf=\"inLoadingStatus() === true\" id=\"loadingSpinner\"></mat-spinner>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
172
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: NgssmRemoteDataReloadButtonComponent, isStandalone: true, selector: "ngssm-remote-data-reload-button", inputs: { actionTypes: "actionTypes", remoteDataKeys: "remoteDataKeys" }, usesInheritance: true, ngImport: i0, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"disabled() === true\" id=\"reloadButton\" >\n <mat-icon class=\"fa-solid fa-rotate-right\" *ngIf=\"inLoadingStatus() === false\"></mat-icon>\n <mat-spinner [diameter]=\"24\" *ngIf=\"inLoadingStatus() === true\" id=\"loadingSpinner\"></mat-spinner>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
174
174
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteDataReloadButtonComponent, decorators: [{
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteDataReloadButtonComponent, decorators: [{
176
176
  type: Component,
177
177
  args: [{ selector: 'ngssm-remote-data-reload-button', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"disabled() === true\" id=\"reloadButton\" >\n <mat-icon class=\"fa-solid fa-rotate-right\" *ngIf=\"inLoadingStatus() === false\"></mat-icon>\n <mat-spinner [diameter]=\"24\" *ngIf=\"inLoadingStatus() === true\" id=\"loadingSpinner\"></mat-spinner>\n</button>\n" }]
178
178
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { actionTypes: [{
@@ -208,10 +208,10 @@ class NgssmRemoteDataOverlayDirective extends NgSsmComponent {
208
208
  });
209
209
  }
210
210
  }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteDataOverlayDirective, deps: [{ token: i1.Store }, { token: i2$1.NgssmOverlayBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
212
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgssmRemoteDataOverlayDirective, isStandalone: true, selector: "[ngssmRemoteDataOverlay]", inputs: { ngssmRemoteDataOverlay: "ngssmRemoteDataOverlay" }, providers: [NgssmOverlayBuilder], usesInheritance: true, ngImport: i0 }); }
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteDataOverlayDirective, deps: [{ token: i1.Store }, { token: i2$1.NgssmOverlayBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
212
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: NgssmRemoteDataOverlayDirective, isStandalone: true, selector: "[ngssmRemoteDataOverlay]", inputs: { ngssmRemoteDataOverlay: "ngssmRemoteDataOverlay" }, providers: [NgssmOverlayBuilder], usesInheritance: true, ngImport: i0 }); }
213
213
  }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteDataOverlayDirective, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteDataOverlayDirective, decorators: [{
215
215
  type: Directive,
216
216
  args: [{
217
217
  selector: '[ngssmRemoteDataOverlay]',
@@ -229,10 +229,10 @@ class NgssmCachesDisplayButtonComponent extends NgSsmComponent {
229
229
  displayCaches() {
230
230
  this.dispatchActionType(RemoteDataActionType.displayCaches);
231
231
  }
232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmCachesDisplayButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgssmCachesDisplayButtonComponent, isStandalone: true, selector: "ngssm-caches-display-button", usesInheritance: true, ngImport: i0, template: "<button mat-icon-button matTooltip=\"Display caches\" (click)=\"displayCaches()\">\n <mat-icon class=\"fa-solid fa-cloud-bolt\"></mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmCachesDisplayButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
233
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: NgssmCachesDisplayButtonComponent, isStandalone: true, selector: "ngssm-caches-display-button", usesInheritance: true, ngImport: i0, template: "<button mat-icon-button matTooltip=\"Display caches\" (click)=\"displayCaches()\">\n <mat-icon class=\"fa-solid fa-cloud-bolt\"></mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
234
234
  }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmCachesDisplayButtonComponent, decorators: [{
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmCachesDisplayButtonComponent, decorators: [{
236
236
  type: Component,
237
237
  args: [{ selector: 'ngssm-caches-display-button', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button matTooltip=\"Display caches\" (click)=\"displayCaches()\">\n <mat-icon class=\"fa-solid fa-cloud-bolt\"></mat-icon>\n</button>\n" }]
238
238
  }], ctorParameters: function () { return [{ type: i1.Store }]; } });
@@ -259,10 +259,10 @@ class NgssmCachesComponent extends NgSsmComponent {
259
259
  reloadCache(cache) {
260
260
  this.dispatchAction(new LoadRemoteDataAction(cache.key, { forceReload: true, keepStoredGetterParams: true }));
261
261
  }
262
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmCachesComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
263
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgssmCachesComponent, isStandalone: true, selector: "ngssm-caches", usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>List of caches</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-table [dataSource]=\"caches$\" class=\"fxFlex\">\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef> </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n <button mat-icon-button [disabled]=\"element.value.status === dataStatus.loading\" (click)=\"reloadCache(element)\" color=\"primary\" id=\"reload_{{element.key}}\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n </button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"key\">\n <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.key}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n\n <div [ngSwitch]=\"element.value.status\">\n <mat-icon *ngSwitchCase=\"dataStatus.none\" class=\"fa-solid fa-minus\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.loaded\" class=\"fa-solid fa-check\" color=\"primary\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.error\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.notFound\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-spinner [diameter]=\"20\" *ngSwitchCase=\"dataStatus.loading\"></mat-spinner>\n </div>\n\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"timestamp\">\n <mat-header-cell *matHeaderCellDef> Timestamp </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.value.timestamp}} </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"['actions', 'status', 'key', 'timestamp']; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: ['actions', 'status', 'key', 'timestamp']\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\" id=\"closeButton\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;min-width:800px;max-width:80vw;min-height:500px;max-height:80vh}:host .mat-column-actions{min-width:50px;max-width:50px;padding-left:0!important}:host .mat-column-status{min-width:60px;max-width:60px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
262
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmCachesComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
263
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: NgssmCachesComponent, isStandalone: true, selector: "ngssm-caches", usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>List of caches</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-table [dataSource]=\"caches$\" class=\"fxFlex\">\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef> </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n <button mat-icon-button [disabled]=\"element.value.status === dataStatus.loading\" (click)=\"reloadCache(element)\" color=\"primary\" id=\"reload_{{element.key}}\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n </button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"key\">\n <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.key}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n\n <div [ngSwitch]=\"element.value.status\">\n <mat-icon *ngSwitchCase=\"dataStatus.none\" class=\"fa-solid fa-minus\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.loaded\" class=\"fa-solid fa-check\" color=\"primary\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.error\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.notFound\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-spinner [diameter]=\"20\" *ngSwitchCase=\"dataStatus.loading\"></mat-spinner>\n </div>\n\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"timestamp\">\n <mat-header-cell *matHeaderCellDef> Timestamp </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.value.timestamp}} </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"['actions', 'status', 'key', 'timestamp']; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: ['actions', 'status', 'key', 'timestamp']\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\" id=\"closeButton\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;min-width:800px;max-width:80vw;min-height:500px;max-height:80vh}:host .mat-column-actions{min-width:50px;max-width:50px;padding-left:0!important}:host .mat-column-status{min-width:60px;max-width:60px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
264
264
  }
265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmCachesComponent, decorators: [{
265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmCachesComponent, decorators: [{
266
266
  type: Component,
267
267
  args: [{ selector: 'ngssm-caches', standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule, MatTableModule, MatIconModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 mat-dialog-title>List of caches</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-table [dataSource]=\"caches$\" class=\"fxFlex\">\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef> </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n <button mat-icon-button [disabled]=\"element.value.status === dataStatus.loading\" (click)=\"reloadCache(element)\" color=\"primary\" id=\"reload_{{element.key}}\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n </button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"key\">\n <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.key}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n\n <div [ngSwitch]=\"element.value.status\">\n <mat-icon *ngSwitchCase=\"dataStatus.none\" class=\"fa-solid fa-minus\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.loaded\" class=\"fa-solid fa-check\" color=\"primary\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.error\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.notFound\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-spinner [diameter]=\"20\" *ngSwitchCase=\"dataStatus.loading\"></mat-spinner>\n </div>\n\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"timestamp\">\n <mat-header-cell *matHeaderCellDef> Timestamp </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.value.timestamp}} </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"['actions', 'status', 'key', 'timestamp']; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: ['actions', 'status', 'key', 'timestamp']\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\" id=\"closeButton\">Close</button>\n</mat-dialog-actions>", styles: [":host{display:flex;flex-direction:column;min-width:800px;max-width:80vw;min-height:500px;max-height:80vh}:host .mat-column-actions{min-width:50px;max-width:50px;padding-left:0!important}:host .mat-column-status{min-width:60px;max-width:60px}\n"] }]
268
268
  }], ctorParameters: function () { return [{ type: i1.Store }]; } });
@@ -287,10 +287,10 @@ class CachesDisplayEffect {
287
287
  }
288
288
  }
289
289
  }
290
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CachesDisplayEffect, deps: [{ token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
291
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CachesDisplayEffect }); }
290
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: CachesDisplayEffect, deps: [{ token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
291
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: CachesDisplayEffect }); }
292
292
  }
293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CachesDisplayEffect, decorators: [{
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: CachesDisplayEffect, decorators: [{
294
294
  type: Injectable
295
295
  }], ctorParameters: function () { return [{ type: i3$1.MatDialog }]; } });
296
296
 
@@ -326,10 +326,10 @@ class RemoteDataLoadingEffect {
326
326
  });
327
327
  });
328
328
  }
329
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }, { token: i2$1.NgssmNotifierService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
330
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingEffect }); }
329
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingEffect, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }, { token: i2$1.NgssmNotifierService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
330
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingEffect }); }
331
331
  }
332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataLoadingEffect, decorators: [{
333
333
  type: Injectable
334
334
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
335
335
  type: Inject,
@@ -394,10 +394,10 @@ class RemoteDataReducer {
394
394
  }
395
395
  return state;
396
396
  }
397
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataReducer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
398
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataReducer }); }
397
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataReducer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
398
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataReducer }); }
399
399
  }
400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataReducer, decorators: [{
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataReducer, decorators: [{
401
401
  type: Injectable
402
402
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
403
403
  type: Inject,
@@ -414,10 +414,10 @@ class RemoteDataStateInitializer {
414
414
  let tempState = state;
415
415
  return (this.remoteDataProviders ?? []).reduce((s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }), tempState);
416
416
  }
417
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataStateInitializer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
418
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataStateInitializer }); }
417
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataStateInitializer, deps: [{ token: NGSSM_REMOTE_DATA_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
418
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataStateInitializer }); }
419
419
  }
420
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteDataStateInitializer, decorators: [{
420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteDataStateInitializer, decorators: [{
421
421
  type: Injectable
422
422
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
423
423
  type: Inject,
@@ -506,10 +506,10 @@ class NgssmRemoteCallStateInitializer {
506
506
  let tempState = state;
507
507
  return (this.remoteCallConfigs ?? []).reduce((s, config) => updateNgssmRemoteCallState(s, { remoteCalls: { [config.id]: { $set: { status: RemoteCallStatus.none } } } }), tempState);
508
508
  }
509
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallStateInitializer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
510
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallStateInitializer }); }
509
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallStateInitializer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
510
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallStateInitializer }); }
511
511
  }
512
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallStateInitializer, decorators: [{
512
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallStateInitializer, decorators: [{
513
513
  type: Injectable
514
514
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
515
515
  type: Inject,
@@ -546,10 +546,10 @@ class RemoteCallReducer {
546
546
  });
547
547
  return output;
548
548
  }
549
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallReducer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
550
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallReducer }); }
549
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallReducer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
550
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallReducer }); }
551
551
  }
552
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallReducer, decorators: [{
552
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallReducer, decorators: [{
553
553
  type: Injectable
554
554
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
555
555
  type: Inject,
@@ -575,10 +575,10 @@ class RemoteCallSetterReducer {
575
575
  }
576
576
  return state;
577
577
  }
578
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallSetterReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
579
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallSetterReducer }); }
578
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallSetterReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
579
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallSetterReducer }); }
580
580
  }
581
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: RemoteCallSetterReducer, decorators: [{
581
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: RemoteCallSetterReducer, decorators: [{
582
582
  type: Injectable
583
583
  }] });
584
584
 
@@ -606,10 +606,10 @@ class NgssmRemoteCallDirective extends NgSsmComponent {
606
606
  }
607
607
  });
608
608
  }
609
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallDirective, deps: [{ token: i1.Store }, { token: i2$1.NgssmOverlayBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
610
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgssmRemoteCallDirective, isStandalone: true, selector: "[ngssmRemoteCall]", inputs: { remoteCallId: ["ngssmRemoteCall", "remoteCallId"] }, providers: [NgssmOverlayBuilder], usesInheritance: true, ngImport: i0 }); }
609
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallDirective, deps: [{ token: i1.Store }, { token: i2$1.NgssmOverlayBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
610
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: NgssmRemoteCallDirective, isStandalone: true, selector: "[ngssmRemoteCall]", inputs: { remoteCallId: ["ngssmRemoteCall", "remoteCallId"] }, providers: [NgssmOverlayBuilder], usesInheritance: true, ngImport: i0 }); }
611
611
  }
612
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallDirective, decorators: [{
612
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallDirective, decorators: [{
613
613
  type: Directive,
614
614
  args: [{
615
615
  selector: '[ngssmRemoteCall]',
@@ -625,27 +625,33 @@ class NgssmRemoteCallErrorComponent extends NgSsmComponent {
625
625
  constructor(store) {
626
626
  super(store);
627
627
  this._remoteCallId$ = new Subject();
628
- this._remoteCallError$ = new BehaviorSubject(undefined);
628
+ this.errorContainerRendered = signal(false);
629
+ this.errorDescription = signal('');
629
630
  this.hostCssClasses = 'ngssm-remote-call-error';
630
- this._remoteCallId$
631
- .pipe(switchMap((v) => this.watch((s) => selectNgssmRemoteCallState(s).remoteCalls[v])))
632
- .subscribe((remoteCall) => this._remoteCallError$.next(remoteCall?.error));
631
+ this._remoteCallId$.pipe(switchMap((v) => this.watch((s) => selectNgssmRemoteCallState(s).remoteCalls[v]))).subscribe((remoteCall) => {
632
+ this.errorContainerRendered.set(remoteCall?.status === RemoteCallStatus.ko);
633
+ const description = remoteCall?.status !== RemoteCallStatus.ko
634
+ ? ''
635
+ : !!remoteCall.message
636
+ ? remoteCall.message
637
+ : !!remoteCall.error
638
+ ? JSON.stringify(remoteCall.error, null, 2)
639
+ : 'No error description provided!';
640
+ this.errorDescription.set(description);
641
+ });
633
642
  }
634
643
  set remoteCallId(value) {
635
644
  this._remoteCallId$.next(value);
636
645
  }
637
- get remoteCallError$() {
638
- return this._remoteCallError$.asObservable();
639
- }
640
646
  hideComponent() {
641
- this._remoteCallError$.next(undefined);
647
+ this.errorContainerRendered.set(false);
642
648
  }
643
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallErrorComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
644
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgssmRemoteCallErrorComponent, isStandalone: true, selector: "ngssm-remote-call-error", inputs: { remoteCallId: "remoteCallId" }, host: { properties: { "class": "this.hostCssClasses" } }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"(remoteCallError$ | async) !== undefined\" class=\"ngssm-remote-call-error-container\">\n {{remoteCallError$ | async | json}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.JsonPipe, name: "json" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
649
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallErrorComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
650
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.8", type: NgssmRemoteCallErrorComponent, isStandalone: true, selector: "ngssm-remote-call-error", inputs: { remoteCallId: "remoteCallId" }, host: { properties: { "class": "this.hostCssClasses" } }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"errorContainerRendered() === true\" class=\"ngssm-remote-call-error-container\">\n {{errorDescription()}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
645
651
  }
646
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgssmRemoteCallErrorComponent, decorators: [{
652
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: NgssmRemoteCallErrorComponent, decorators: [{
647
653
  type: Component,
648
- args: [{ selector: 'ngssm-remote-call-error', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"(remoteCallError$ | async) !== undefined\" class=\"ngssm-remote-call-error-container\">\n {{remoteCallError$ | async | json}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>" }]
654
+ args: [{ selector: 'ngssm-remote-call-error', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"errorContainerRendered() === true\" class=\"ngssm-remote-call-error-container\">\n {{errorDescription()}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>" }]
649
655
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { hostCssClasses: [{
650
656
  type: HostBinding,
651
657
  args: ['class']
@@ -1 +1 @@
1
- {"version":3,"file":"ngssm-remote-data.mjs","sources":["../../../projects/ngssm-remote-data/src/lib/remote-data/model/data-status.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/model/remote-data.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/model/remote-data-provider.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/state/remote-data.state.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/actions/remote-data-action-type.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/actions/load-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/actions/register-loaded-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/guards/remote-data-loading.guard.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.html","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-remote-data-overlay.directive.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-caches-display-button/ngssm-caches-display-button.component.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-caches-display-button/ngssm-caches-display-button.component.html","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-caches/ngssm-caches.component.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-caches/ngssm-caches.component.html","../../../projects/ngssm-remote-data/src/lib/remote-data/effects/caches-display.effect.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/effects/remote-data-loading.effect.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/reducers/remote-data.reducer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/remote-data-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/provide-ngssm-remote-data.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/public-api.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/model/remote-call-config.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/model/remote-call-status.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/model/remote-call.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/actions/ngssm-remote-call-action-type.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/actions/ngssm-remote-call-result.action.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/actions/set-remote-call.action.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/model/helpers.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/state/ngssm-remote-call.state.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/ngssm-remote-call-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/reducers/remote-call.reducer.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/reducers/remote-call-setter.reducer.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/provide-ngssm-remote-call.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/components/ngssm-remote-call.directive.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/components/ngssm-remote-call-error/ngssm-remote-call-error.component.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/components/ngssm-remote-call-error/ngssm-remote-call-error.component.html","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/provide-ngssm-remote-call-config.ts","../../../projects/ngssm-remote-data/src/lib/helpers/at-least-one-loading-or-in-progress.ts","../../../projects/ngssm-remote-data/src/public-api.ts","../../../projects/ngssm-remote-data/src/ngssm-remote-data.ts"],"sourcesContent":["export enum DataStatus {\n none = 'None',\n loading = 'Loading',\n loaded = 'Loaded',\n notFound = 'NotFound',\n error = 'Error'\n}\n","import { RemoteCallError } from '../../ngssm-remote-call/model';\nimport { DataStatus } from './data-status';\nimport { RemoteDataGetterParams } from './remote-data-getter-params';\n\nexport interface RemoteData<TData = any, TGetterParams = any> {\n status: DataStatus;\n data?: TData;\n timestamp?: Date;\n message?: string;\n error?: RemoteCallError;\n getterParams?: RemoteDataGetterParams<TGetterParams>;\n}\n\nexport const getDefaultRemoteData = <T>(defaultValue?: T, defaultStatus: DataStatus = DataStatus.none): RemoteData<T> => ({\n status: defaultStatus,\n data: defaultValue\n});\n","import { EnvironmentProviders, InjectionToken, Type, makeEnvironmentProviders } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RemoteDataGetterParams } from './remote-data-getter-params';\n\nexport interface RemoteDataProvider<TData = any, TValue = any> {\n readonly remoteDataKey: string;\n readonly cacheDurationInSeconds?: number;\n\n get(params?: RemoteDataGetterParams<TValue>): Observable<TData>;\n}\n\nexport const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken<RemoteDataProvider>('NGSSM_REMOTE_DATA_PROVIDER');\n\nexport const provideRemoteDataProviders = (...providers: Type<RemoteDataProvider>[]): EnvironmentProviders => {\n return makeEnvironmentProviders(providers.map((provider) => ({ provide: NGSSM_REMOTE_DATA_PROVIDER, useClass: provider, multi: true })));\n};\n\nexport interface RemoteDataLoadingFunc<TData = any, TValue = any> {\n (params?: RemoteDataGetterParams<TValue>): Observable<TData>;\n}\n\nexport const provideRemoteDataFunc = <TData = any, TValue = any>(\n remoteDataKey: string,\n remoteDataLoadingFunc: RemoteDataLoadingFunc<TData, TValue>,\n cacheDurationInSeconds?: number\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_REMOTE_DATA_PROVIDER,\n useFactory: () => {\n const provider: RemoteDataProvider<TData, TValue> = {\n remoteDataKey,\n cacheDurationInSeconds,\n get: remoteDataLoadingFunc\n };\n return provider;\n },\n multi: true\n }\n ]);\n};\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteData } from '../model';\n\nexport const selectRemoteDataState = (state: State): RemoteDataState =>\n state[RemoteDataStateSpecification.featureStateKey] as RemoteDataState;\n\nexport const updateRemoteDataState = (state: State, command: Spec<RemoteDataState, never>): State =>\n update(state, {\n [RemoteDataStateSpecification.featureStateKey]: command\n });\n\nexport interface RemoteDataState {\n [key: string]: RemoteData<any>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: RemoteDataStateSpecification.featureStateKey,\n initialState: RemoteDataStateSpecification.initialState\n})\nexport class RemoteDataStateSpecification {\n public static readonly featureStateKey = 'remote-data-state';\n public static readonly initialState: RemoteDataState = {};\n}\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteDataState } from './remote-data.state';\nimport { RemoteData } from '../model';\n\nexport const selectRemoteData = <TData = any>(state: State, remoteDataKey: string): RemoteData<TData> | undefined =>\n selectRemoteDataState(state)[remoteDataKey] as RemoteData<TData>;\n","export enum RemoteDataActionType {\n loadRemoteData = '[RemoteDataActionType] loadRemoteData',\n registerLoadedRemoteData = '[RemoteDataActionType] registerLoadedRemoteData',\n displayCaches = '[RemoteDataActionType] displayCaches',\n closeCachesComponent = '[RemoteDataActionType] closeCachesComponent'\n}\n","import { Action } from 'ngssm-store';\n\nimport { ReloadParams } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class LoadRemoteDataAction<TValue = any> implements Action {\n public readonly type: string = RemoteDataActionType.loadRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly params?: ReloadParams<TValue>\n ) {}\n}\n","import { Action } from 'ngssm-store';\n\nimport { RemoteCallError } from '../../ngssm-remote-call/model';\nimport { DataStatus } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class RegisterLoadedRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.registerLoadedRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly status: DataStatus,\n public readonly data: any,\n public readonly message?: string,\n public readonly remoteCallError?: RemoteCallError\n ) {}\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../actions';\nimport { ReloadParams } from '../model';\n\nexport interface RemoteDataLoadingGuardItem {\n remoteDataKey: string;\n forceReload?: boolean;\n}\n\nexport interface RemoteDataLoadingGuardParameters {\n remoteDataItems: RemoteDataLoadingGuardItem[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoteDataLoadingGuard {\n constructor(private store: Store) {}\n\n public canActivate(route: ActivatedRouteSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const parameters = route.data as RemoteDataLoadingGuardParameters;\n (parameters?.remoteDataItems ?? []).forEach((item) => {\n this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, { forceReload: item.forceReload === true }));\n });\n\n return true;\n }\n}\n\nexport const ngssmReloadRemoteData = <TData = any>(\n remoteDataKey: string,\n params: ReloadParams<TData> = { forceReload: true }\n): (() => boolean) => {\n return () => {\n inject(Store).dispatchAction(new LoadRemoteDataAction(remoteDataKey, params));\n return true;\n };\n};\n","import { Component, ChangeDetectionStrategy, Input, signal } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { BehaviorSubject, combineLatest, takeUntil } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../../actions';\nimport { selectRemoteDataState } from '../../state';\nimport { DataStatus } from '../../model';\n\nconst datePipe = new DatePipe('en-US');\n\n@Component({\n selector: 'ngssm-remote-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatProgressSpinnerModule],\n templateUrl: './ngssm-remote-data-reload-button.component.html',\n styleUrls: ['./ngssm-remote-data-reload-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRemoteDataReloadButtonComponent extends NgSsmComponent {\n private readonly _remoteDataKeys$ = new BehaviorSubject<string[]>([]);\n\n public readonly tooltipMessage = signal<string>('');\n public readonly disabled = signal<boolean>(true);\n public readonly inLoadingStatus = signal<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKeys$.pipe(takeUntil(this.unsubscribeAll$))])\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe((values) => {\n this.inLoadingStatus.set(values[1].findIndex((v) => values[0][v]?.status === DataStatus.loading) !== -1);\n this.disabled.set(this.inLoadingStatus() === true || values[1].findIndex((v) => !!values[0][v]) === -1);\n let timestamp: Date | undefined;\n values[1].forEach((key) => {\n const keyTimestamp = values[0][key]?.timestamp;\n if (keyTimestamp) {\n if (!timestamp || timestamp.getTime() > keyTimestamp.getTime()) {\n timestamp = keyTimestamp;\n }\n }\n });\n\n let tooltiMessage = 'Reload data.';\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n this.tooltipMessage.set(tooltiMessage);\n });\n }\n\n @Input() set remoteDataKeys(value: string[]) {\n this._remoteDataKeys$.next(value);\n }\n\n public reload(): void {\n this._remoteDataKeys$\n .getValue()\n .forEach((key) => this.dispatchAction(new LoadRemoteDataAction(key, { forceReload: true, keepStoredGetterParams: true })));\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"disabled() === true\" id=\"reloadButton\" >\n <mat-icon class=\"fa-solid fa-rotate-right\" *ngIf=\"inLoadingStatus() === false\"></mat-icon>\n <mat-spinner [diameter]=\"24\" *ngIf=\"inLoadingStatus() === true\" id=\"loadingSpinner\"></mat-spinner>\n</button>\n","import { Directive, Input } from '@angular/core';\nimport { combineLatest, Subscription } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\nimport { NgssmOverlayBuilder } from 'ngssm-toolkit';\n\nimport { DataStatus } from '../model';\nimport { selectRemoteData } from '../state';\n\n@Directive({\n selector: '[ngssmRemoteDataOverlay]',\n standalone: true,\n providers: [NgssmOverlayBuilder]\n})\nexport class NgssmRemoteDataOverlayDirective extends NgSsmComponent {\n private subscription: Subscription | undefined;\n private isDisplayed = false;\n\n constructor(\n store: Store,\n private overlyBuilder: NgssmOverlayBuilder\n ) {\n super(store);\n this.unsubscribeAll$.subscribe(() => this.overlyBuilder.hideOverlay());\n }\n\n @Input() set ngssmRemoteDataOverlay(values: string[]) {\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n if (values.length > 0) {\n this.subscription = combineLatest(values.map((v) => this.watch((s) => selectRemoteData(s, v)))).subscribe((v) => {\n if (v.map((w) => w?.status).includes(DataStatus.loading)) {\n if (!this.isDisplayed) {\n this.overlyBuilder.showOverlay();\n this.isDisplayed = true;\n }\n } else {\n if (this.isDisplayed) {\n this.overlyBuilder.hideOverlay();\n this.isDisplayed = false;\n }\n }\n });\n }\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { RemoteDataActionType } from '../../actions';\n\n@Component({\n selector: 'ngssm-caches-display-button',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule],\n templateUrl: './ngssm-caches-display-button.component.html',\n styleUrls: ['./ngssm-caches-display-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmCachesDisplayButtonComponent extends NgSsmComponent {\n constructor(store: Store) {\n super(store);\n }\n\n public displayCaches(): void {\n this.dispatchActionType(RemoteDataActionType.displayCaches);\n }\n}\n","<button mat-icon-button matTooltip=\"Display caches\" (click)=\"displayCaches()\">\n <mat-icon class=\"fa-solid fa-cloud-bolt\"></mat-icon>\n</button>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { RemoteDataActionType, LoadRemoteDataAction } from '../../actions';\nimport { DataStatus, RemoteData } from '../../model';\nimport { selectRemoteDataState } from '../../state';\n\ninterface Cache {\n key: string;\n value: RemoteData;\n}\n\n@Component({\n selector: 'ngssm-caches',\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatButtonModule, MatTableModule, MatIconModule, MatProgressSpinnerModule],\n templateUrl: './ngssm-caches.component.html',\n styleUrls: ['./ngssm-caches.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmCachesComponent extends NgSsmComponent {\n private readonly _caches$ = new BehaviorSubject<Cache[]>([]);\n\n public readonly dataStatus = DataStatus;\n\n constructor(store: Store) {\n super(store);\n\n this.watch((s) => selectRemoteDataState(s)).subscribe((state) => {\n const caches: Cache[] = Object.keys(state).map((key) => ({\n key,\n value: state[key]\n }));\n this._caches$.next(caches);\n });\n }\n\n public get caches$(): Observable<Cache[]> {\n return this._caches$.asObservable();\n }\n\n public close(): void {\n this.dispatchActionType(RemoteDataActionType.closeCachesComponent);\n }\n\n public reloadCache(cache: Cache): void {\n this.dispatchAction(new LoadRemoteDataAction(cache.key, { forceReload: true, keepStoredGetterParams: true }));\n }\n}\n","<h1 mat-dialog-title>List of caches</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-table [dataSource]=\"caches$\" class=\"fxFlex\">\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef> </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n <button mat-icon-button [disabled]=\"element.value.status === dataStatus.loading\" (click)=\"reloadCache(element)\" color=\"primary\" id=\"reload_{{element.key}}\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n </button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"key\">\n <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.key}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n\n <div [ngSwitch]=\"element.value.status\">\n <mat-icon *ngSwitchCase=\"dataStatus.none\" class=\"fa-solid fa-minus\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.loaded\" class=\"fa-solid fa-check\" color=\"primary\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.error\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.notFound\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-spinner [diameter]=\"20\" *ngSwitchCase=\"dataStatus.loading\"></mat-spinner>\n </div>\n\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"timestamp\">\n <mat-header-cell *matHeaderCellDef> Timestamp </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.value.timestamp}} </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"['actions', 'status', 'key', 'timestamp']; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: ['actions', 'status', 'key', 'timestamp']\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\" id=\"closeButton\">Close</button>\n</mat-dialog-actions>","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { Effect, Store, State, Action } from 'ngssm-store';\nimport { RemoteDataActionType } from '../actions';\nimport { NgssmCachesComponent } from '../components';\n\n@Injectable()\nexport class CachesDisplayEffect implements Effect {\n private dialog: MatDialogRef<NgssmCachesComponent> | undefined;\n\n public readonly processedActions: string[] = [RemoteDataActionType.displayCaches, RemoteDataActionType.closeCachesComponent];\n\n constructor(private matDialog: MatDialog) {}\n\n public processAction(store: Store, state: State, action: Action): void {\n switch (action.type) {\n case RemoteDataActionType.displayCaches: {\n this.dialog = this.matDialog.open(NgssmCachesComponent, {\n disableClose: true\n });\n\n break;\n }\n\n case RemoteDataActionType.closeCachesComponent: {\n this.dialog?.close();\n this.dialog = undefined;\n\n break;\n }\n }\n }\n}\n","import { EnvironmentInjector, Inject, Injectable, Optional, runInInjectionContext } from '@angular/core';\n\nimport { Effect, Store, State, Action } from 'ngssm-store';\nimport { NgssmNotifierService } from 'ngssm-toolkit';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../model';\nimport { selectRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataLoadingEffect implements Effect {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData];\n\n constructor(\n @Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[],\n private notifierService: NgssmNotifierService,\n private injector: EnvironmentInjector\n ) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public processAction(store: Store, state: State, action: Action): void {\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (!item || !provider || item.status !== DataStatus.loading) {\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n provider.get(item.getterParams).subscribe({\n next: (value) => {\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value));\n if (item.getterParams?.callbackAction) {\n store.dispatchActionType(item.getterParams.callbackAction);\n }\n },\n error: (error) => {\n console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);\n if (item.getterParams?.errorNotificationMessage) {\n this.notifierService.notifyError(item.getterParams.errorNotificationMessage(error?.error));\n }\n\n store.dispatchAction(\n new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined, error?.error)\n );\n }\n });\n });\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../model';\nimport { selectRemoteDataState, updateRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataReducer implements Reducer {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case RemoteDataActionType.loadRemoteData:\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n if (!item) {\n return state;\n }\n\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n if (!provider) {\n return state;\n }\n\n if (\n !provider.cacheDurationInSeconds ||\n loadRemoteDataAction.params?.forceReload === true ||\n item.status === DataStatus.none ||\n item.status === DataStatus.error ||\n item.status === DataStatus.notFound ||\n !item.timestamp ||\n new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds\n ) {\n return updateRemoteDataState(state, {\n [loadRemoteDataAction.remoteDataKey]: {\n status: { $set: DataStatus.loading },\n getterParams: {\n $apply: (value) => {\n if (!loadRemoteDataAction.params || loadRemoteDataAction.params.keepStoredGetterParams !== true) {\n return loadRemoteDataAction.params?.params;\n }\n\n return value;\n }\n }\n }\n });\n }\n\n break;\n\n case RemoteDataActionType.registerLoadedRemoteData:\n const registerLoadedRemoteDataAction = action as RegisterLoadedRemoteDataAction;\n if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {\n return updateRemoteDataState(state, {\n [registerLoadedRemoteDataAction.remoteDataKey]: {\n status: { $set: registerLoadedRemoteDataAction.status },\n data: { $set: registerLoadedRemoteDataAction.data },\n timestamp: { $set: new Date() },\n message: { $set: registerLoadedRemoteDataAction.message },\n error: { $set: registerLoadedRemoteDataAction.remoteCallError }\n }\n });\n }\n\n break;\n }\n\n return state;\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from './model';\nimport { updateRemoteDataState } from './state';\n\n@Injectable()\nexport class RemoteDataStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() private remoteDataProviders: RemoteDataProvider[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteDataProviders ?? []).reduce(\n (s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }),\n tempState\n );\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { NGSSM_STATE_INITIALIZER, provideEffects, provideReducer } from 'ngssm-store';\n\nimport { CachesDisplayEffect, RemoteDataLoadingEffect } from './effects';\nimport { RemoteDataReducer } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n provideReducer(RemoteDataReducer),\n provideEffects(CachesDisplayEffect, RemoteDataLoadingEffect),\n { provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }\n ]);\n};\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './model';\nexport * from './state';\nexport * from './actions';\nexport * from './guards';\nexport * from './components';\nexport * from './provide-ngssm-remote-data';\n","import { InjectionToken } from '@angular/core';\n\nexport interface RemoteCallConfig {\n id: string;\n triggeredActionTypes: string[];\n resultActionTypes: string[];\n}\n\nexport const NGSSM_REMOTE_CALL_CONFIG = new InjectionToken<RemoteCallConfig>('NGSSM_REMOTE_CALL_CONFIG');\n","export enum RemoteCallStatus {\n none = 'None',\n inProgress = 'In progress',\n done = 'Done',\n ko = 'Ko'\n}\n","import { RemoteCallError } from './remote-call-error';\nimport { RemoteCallStatus } from './remote-call-status';\n\nexport interface RemoteCall {\n status: RemoteCallStatus;\n error?: RemoteCallError;\n message?: string;\n}\n\nexport const getDefaultRemoteCall = (status: RemoteCallStatus = RemoteCallStatus.none): RemoteCall => ({ status });\n","export enum NgssmRemoteCallActionType {\n setRemoteCall = '[NgssmRemoteCallActionType] setRemoteCall'\n}\n","import { Action } from 'ngssm-store';\nimport { RemoteCall } from '../model';\n\nexport class NgssmRemoteCallResultAction implements Action {\n constructor(\n public readonly type: string,\n public readonly remoteCall: RemoteCall\n ) {}\n}\n","import { Action } from 'ngssm-store';\nimport { RemoteCall } from '../model';\nimport { NgssmRemoteCallActionType } from './ngssm-remote-call-action-type';\n\nexport class SetRemoteCallAction implements Action {\n public readonly type: string = NgssmRemoteCallActionType.setRemoteCall;\n\n constructor(\n public readonly remoteCallId: string,\n public readonly remoteCall: RemoteCall\n ) {}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nimport { Logger, Store } from 'ngssm-store';\nimport { NgssmNotifierService } from 'ngssm-toolkit';\n\nimport { RemoteCallError } from './remote-call-error';\nimport { SetRemoteCallAction } from '../actions';\nimport { RemoteCallStatus } from './remote-call-status';\n\nexport const processRemoteCallError = (\n error: HttpErrorResponse,\n errorMessage: string,\n remoteCallId: string,\n store: Store,\n logger: Logger,\n notifier: NgssmNotifierService\n): void => {\n const serviceError: RemoteCallError | undefined = error.error;\n logger.error(errorMessage, error);\n notifier.notifyError(`${errorMessage}: ${serviceError?.title}`);\n store.dispatchAction(new SetRemoteCallAction(remoteCallId, { status: RemoteCallStatus.ko, error: serviceError }));\n};\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteCall } from '../model';\n\nexport const selectNgssmRemoteCallState = (state: State): NgssmRemoteCallState =>\n state[NgssmRemoteCallStateSpecification.featureStateKey] as NgssmRemoteCallState;\n\nexport const updateNgssmRemoteCallState = (state: State, command: Spec<NgssmRemoteCallState, never>): State =>\n update(state, {\n [NgssmRemoteCallStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmRemoteCallState {\n remoteCalls: { [key: string]: RemoteCall };\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmRemoteCallStateSpecification.featureStateKey,\n initialState: NgssmRemoteCallStateSpecification.initialState\n})\nexport class NgssmRemoteCallStateSpecification {\n public static readonly featureStateKey = 'ngssm-remote-call-state';\n public static readonly initialState: NgssmRemoteCallState = {\n remoteCalls: {}\n };\n}\n","import { State } from 'ngssm-store';\nimport { getDefaultRemoteCall, RemoteCall } from '../model';\nimport { selectNgssmRemoteCallState } from './ngssm-remote-call.state';\n\nexport const selectRemoteCall = (state: State, id: string): RemoteCall =>\n selectNgssmRemoteCallState(state).remoteCalls[id] ?? getDefaultRemoteCall();\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig, RemoteCallStatus } from './model';\nimport { updateNgssmRemoteCallState } from './state';\n\n@Injectable()\nexport class NgssmRemoteCallStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_CALL_CONFIG) @Optional() private remoteCallConfigs: RemoteCallConfig[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteCallConfigs ?? []).reduce(\n (s, config) => updateNgssmRemoteCallState(s, { remoteCalls: { [config.id]: { $set: { status: RemoteCallStatus.none } } } }),\n tempState\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { NgssmRemoteCallResultAction } from '../actions';\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig, RemoteCallStatus, getDefaultRemoteCall } from '../model';\nimport { updateNgssmRemoteCallState } from '../state';\n\n@Injectable()\nexport class RemoteCallReducer implements Reducer {\n public readonly processedActions: string[] = [];\n\n constructor(@Inject(NGSSM_REMOTE_CALL_CONFIG) @Optional() private remoteCallConfigs: RemoteCallConfig[]) {\n (this.remoteCallConfigs ?? []).forEach((c) => this.processedActions.push(...[...c.triggeredActionTypes, ...c.resultActionTypes]));\n }\n\n public updateState(state: State, action: Action): State {\n const configs = (this.remoteCallConfigs ?? []).filter(\n (c) => c.triggeredActionTypes.includes(action.type) || c.resultActionTypes.includes(action.type)\n );\n let output = state;\n configs.forEach((config) => {\n if (config.triggeredActionTypes.includes(action.type)) {\n output = updateNgssmRemoteCallState(output, {\n remoteCalls: {\n [config.id]: { $set: getDefaultRemoteCall(RemoteCallStatus.inProgress) }\n }\n });\n } else {\n const ngssmRemoteCallResultAction = action as NgssmRemoteCallResultAction;\n output = updateNgssmRemoteCallState(output, {\n remoteCalls: {\n [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }\n }\n });\n }\n });\n\n return output;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { NgssmRemoteCallActionType, SetRemoteCallAction } from '../actions';\nimport { updateNgssmRemoteCallState } from '../state';\n\n@Injectable()\nexport class RemoteCallSetterReducer implements Reducer {\n public readonly processedActions: string[] = [NgssmRemoteCallActionType.setRemoteCall];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmRemoteCallActionType.setRemoteCall: {\n const setRemoteCallAction = action as SetRemoteCallAction;\n return updateNgssmRemoteCallState(state, {\n remoteCalls: {\n [setRemoteCallAction.remoteCallId]: { $set: setRemoteCallAction.remoteCall }\n }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { NGSSM_STATE_INITIALIZER, provideReducers } from 'ngssm-store';\nimport { NgssmRemoteCallStateInitializer } from './ngssm-remote-call-state-initializer';\nimport { RemoteCallReducer, RemoteCallSetterReducer } from './reducers';\n\nexport const provideNgssmRemoteCall = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n { provide: NGSSM_STATE_INITIALIZER, useClass: NgssmRemoteCallStateInitializer, multi: true },\n provideReducers(RemoteCallSetterReducer, RemoteCallReducer)\n ]);\n};\n","import { Directive, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\nimport { NgssmOverlayBuilder } from 'ngssm-toolkit';\n\nimport { RemoteCallStatus } from '../model';\nimport { selectRemoteCall } from '../state';\n\n@Directive({\n selector: '[ngssmRemoteCall]',\n standalone: true,\n providers: [NgssmOverlayBuilder]\n})\nexport class NgssmRemoteCallDirective extends NgSsmComponent {\n private subscription: Subscription | undefined;\n\n constructor(\n store: Store,\n private overlyBuilder: NgssmOverlayBuilder\n ) {\n super(store);\n this.unsubscribeAll$.subscribe(() => this.overlyBuilder.hideOverlay());\n }\n\n @Input('ngssmRemoteCall') set remoteCallId(value: string) {\n this.subscription?.unsubscribe();\n this.subscription = this.watch((s) => selectRemoteCall(s, value)).subscribe((value) => {\n if (value.status === RemoteCallStatus.inProgress) {\n this.overlyBuilder.showOverlay();\n } else {\n this.overlyBuilder.hideOverlay();\n }\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { BehaviorSubject, Observable, Subject, switchMap } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { selectNgssmRemoteCallState } from '../../state';\nimport { RemoteCallError } from '../../model';\n\n@Component({\n selector: 'ngssm-remote-call-error',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule],\n templateUrl: './ngssm-remote-call-error.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRemoteCallErrorComponent extends NgSsmComponent {\n private readonly _remoteCallId$ = new Subject<string>();\n private readonly _remoteCallError$ = new BehaviorSubject<RemoteCallError | undefined>(undefined);\n\n @HostBinding('class') public hostCssClasses = 'ngssm-remote-call-error';\n\n constructor(store: Store) {\n super(store);\n\n this._remoteCallId$\n .pipe(switchMap((v) => this.watch((s) => selectNgssmRemoteCallState(s).remoteCalls[v])))\n .subscribe((remoteCall) => this._remoteCallError$.next(remoteCall?.error));\n }\n\n @Input() public set remoteCallId(value: string) {\n this._remoteCallId$.next(value);\n }\n\n public get remoteCallError$(): Observable<RemoteCallError | undefined> {\n return this._remoteCallError$.asObservable();\n }\n\n public hideComponent(): void {\n this._remoteCallError$.next(undefined);\n }\n}\n","<div *ngIf=\"(remoteCallError$ | async) !== undefined\" class=\"ngssm-remote-call-error-container\">\n {{remoteCallError$ | async | json}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>","import { Provider } from '@angular/core';\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig } from './model';\n\nexport const provideNgssmRemoteCallConfig = (config: RemoteCallConfig): Provider => ({\n provide: NGSSM_REMOTE_CALL_CONFIG,\n useValue: config,\n multi: true\n});\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteData } from '../remote-data/state';\nimport { DataStatus } from '../remote-data/model';\nimport { selectRemoteCall } from '../ngssm-remote-call/state';\nimport { RemoteCallStatus } from '../ngssm-remote-call/model';\n\nexport const atLeastOneLoadingOrInProgress = (state: State, remoteDataKeys: string[], remoteCallIds: string[]): boolean => {\n if (remoteDataKeys.findIndex((key) => selectRemoteData(state, key)?.status === DataStatus.loading) !== -1) {\n return true;\n }\n\n if (remoteCallIds.findIndex((key) => selectRemoteCall(state, key)?.status === RemoteCallStatus.inProgress) !== -1) {\n return true;\n }\n\n return false;\n};\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './lib/remote-data/public-api';\nexport * from './lib/ngssm-remote-call/public-api';\nexport * from './lib/helpers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i3","i5","i7","i1"],"mappings":"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"}
1
+ {"version":3,"file":"ngssm-remote-data.mjs","sources":["../../../projects/ngssm-remote-data/src/lib/remote-data/model/data-status.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/model/remote-data.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/model/remote-data-provider.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/state/remote-data.state.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/actions/remote-data-action-type.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/actions/load-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/actions/register-loaded-remote-data.action.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/guards/remote-data-loading.guard.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-remote-data-reload-button/ngssm-remote-data-reload-button.component.html","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-remote-data-overlay.directive.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-caches-display-button/ngssm-caches-display-button.component.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-caches-display-button/ngssm-caches-display-button.component.html","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-caches/ngssm-caches.component.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/components/ngssm-caches/ngssm-caches.component.html","../../../projects/ngssm-remote-data/src/lib/remote-data/effects/caches-display.effect.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/effects/remote-data-loading.effect.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/reducers/remote-data.reducer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/remote-data-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/provide-ngssm-remote-data.ts","../../../projects/ngssm-remote-data/src/lib/remote-data/public-api.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/model/remote-call-config.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/model/remote-call-status.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/model/remote-call.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/actions/ngssm-remote-call-action-type.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/actions/ngssm-remote-call-result.action.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/actions/set-remote-call.action.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/model/helpers.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/state/ngssm-remote-call.state.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/state/selectors.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/ngssm-remote-call-state-initializer.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/reducers/remote-call.reducer.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/reducers/remote-call-setter.reducer.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/provide-ngssm-remote-call.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/components/ngssm-remote-call.directive.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/components/ngssm-remote-call-error/ngssm-remote-call-error.component.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/components/ngssm-remote-call-error/ngssm-remote-call-error.component.html","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/provide-ngssm-remote-call-config.ts","../../../projects/ngssm-remote-data/src/lib/helpers/at-least-one-loading-or-in-progress.ts","../../../projects/ngssm-remote-data/src/public-api.ts","../../../projects/ngssm-remote-data/src/ngssm-remote-data.ts"],"sourcesContent":["export enum DataStatus {\n none = 'None',\n loading = 'Loading',\n loaded = 'Loaded',\n notFound = 'NotFound',\n error = 'Error'\n}\n","import { RemoteCallError } from '../../ngssm-remote-call/model';\nimport { DataStatus } from './data-status';\nimport { RemoteDataGetterParams } from './remote-data-getter-params';\n\nexport interface RemoteData<TData = any, TGetterParams = any> {\n status: DataStatus;\n data?: TData;\n timestamp?: Date;\n message?: string;\n error?: RemoteCallError;\n getterParams?: RemoteDataGetterParams<TGetterParams>;\n}\n\nexport const getDefaultRemoteData = <T>(defaultValue?: T, defaultStatus: DataStatus = DataStatus.none): RemoteData<T> => ({\n status: defaultStatus,\n data: defaultValue\n});\n","import { EnvironmentProviders, InjectionToken, Type, makeEnvironmentProviders } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RemoteDataGetterParams } from './remote-data-getter-params';\n\nexport interface RemoteDataProvider<TData = any, TValue = any> {\n readonly remoteDataKey: string;\n readonly cacheDurationInSeconds?: number;\n\n get(params?: RemoteDataGetterParams<TValue>): Observable<TData>;\n}\n\nexport const NGSSM_REMOTE_DATA_PROVIDER = new InjectionToken<RemoteDataProvider>('NGSSM_REMOTE_DATA_PROVIDER');\n\nexport const provideRemoteDataProviders = (...providers: Type<RemoteDataProvider>[]): EnvironmentProviders => {\n return makeEnvironmentProviders(providers.map((provider) => ({ provide: NGSSM_REMOTE_DATA_PROVIDER, useClass: provider, multi: true })));\n};\n\nexport interface RemoteDataLoadingFunc<TData = any, TValue = any> {\n (params?: RemoteDataGetterParams<TValue>): Observable<TData>;\n}\n\nexport const provideRemoteDataFunc = <TData = any, TValue = any>(\n remoteDataKey: string,\n remoteDataLoadingFunc: RemoteDataLoadingFunc<TData, TValue>,\n cacheDurationInSeconds?: number\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_REMOTE_DATA_PROVIDER,\n useFactory: () => {\n const provider: RemoteDataProvider<TData, TValue> = {\n remoteDataKey,\n cacheDurationInSeconds,\n get: remoteDataLoadingFunc\n };\n return provider;\n },\n multi: true\n }\n ]);\n};\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteData } from '../model';\n\nexport const selectRemoteDataState = (state: State): RemoteDataState =>\n state[RemoteDataStateSpecification.featureStateKey] as RemoteDataState;\n\nexport const updateRemoteDataState = (state: State, command: Spec<RemoteDataState, never>): State =>\n update(state, {\n [RemoteDataStateSpecification.featureStateKey]: command\n });\n\nexport interface RemoteDataState {\n [key: string]: RemoteData<any>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: RemoteDataStateSpecification.featureStateKey,\n initialState: RemoteDataStateSpecification.initialState\n})\nexport class RemoteDataStateSpecification {\n public static readonly featureStateKey = 'remote-data-state';\n public static readonly initialState: RemoteDataState = {};\n}\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteDataState } from './remote-data.state';\nimport { RemoteData } from '../model';\n\nexport const selectRemoteData = <TData = any>(state: State, remoteDataKey: string): RemoteData<TData> | undefined =>\n selectRemoteDataState(state)[remoteDataKey] as RemoteData<TData>;\n","export enum RemoteDataActionType {\n loadRemoteData = '[RemoteDataActionType] loadRemoteData',\n registerLoadedRemoteData = '[RemoteDataActionType] registerLoadedRemoteData',\n displayCaches = '[RemoteDataActionType] displayCaches',\n closeCachesComponent = '[RemoteDataActionType] closeCachesComponent'\n}\n","import { Action } from 'ngssm-store';\n\nimport { ReloadParams } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class LoadRemoteDataAction<TValue = any> implements Action {\n public readonly type: string = RemoteDataActionType.loadRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly params?: ReloadParams<TValue>\n ) {}\n}\n","import { Action } from 'ngssm-store';\n\nimport { RemoteCallError } from '../../ngssm-remote-call/model';\nimport { DataStatus } from '../model';\nimport { RemoteDataActionType } from './remote-data-action-type';\n\nexport class RegisterLoadedRemoteDataAction implements Action {\n public readonly type: string = RemoteDataActionType.registerLoadedRemoteData;\n\n constructor(\n public readonly remoteDataKey: string,\n public readonly status: DataStatus,\n public readonly data: any,\n public readonly message?: string,\n public readonly remoteCallError?: RemoteCallError\n ) {}\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../actions';\nimport { ReloadParams } from '../model';\n\nexport interface RemoteDataLoadingGuardItem {\n remoteDataKey: string;\n forceReload?: boolean;\n}\n\nexport interface RemoteDataLoadingGuardParameters {\n remoteDataItems: RemoteDataLoadingGuardItem[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RemoteDataLoadingGuard {\n constructor(private store: Store) {}\n\n public canActivate(route: ActivatedRouteSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const parameters = route.data as RemoteDataLoadingGuardParameters;\n (parameters?.remoteDataItems ?? []).forEach((item) => {\n this.store.dispatchAction(new LoadRemoteDataAction(item.remoteDataKey, { forceReload: item.forceReload === true }));\n });\n\n return true;\n }\n}\n\nexport const ngssmReloadRemoteData = <TData = any>(\n remoteDataKey: string,\n params: ReloadParams<TData> = { forceReload: true }\n): (() => boolean) => {\n return () => {\n inject(Store).dispatchAction(new LoadRemoteDataAction(remoteDataKey, params));\n return true;\n };\n};\n","import { Component, ChangeDetectionStrategy, Input, signal } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { BehaviorSubject, combineLatest, takeUntil } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { LoadRemoteDataAction } from '../../actions';\nimport { selectRemoteDataState } from '../../state';\nimport { DataStatus } from '../../model';\n\nconst datePipe = new DatePipe('en-US');\n\n@Component({\n selector: 'ngssm-remote-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatProgressSpinnerModule],\n templateUrl: './ngssm-remote-data-reload-button.component.html',\n styleUrls: ['./ngssm-remote-data-reload-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRemoteDataReloadButtonComponent extends NgSsmComponent {\n private readonly _remoteDataKeys$ = new BehaviorSubject<string[]>([]);\n\n public readonly tooltipMessage = signal<string>('');\n public readonly disabled = signal<boolean>(true);\n public readonly inLoadingStatus = signal<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKeys$.pipe(takeUntil(this.unsubscribeAll$))])\n .pipe(takeUntil(this.unsubscribeAll$))\n .subscribe((values) => {\n this.inLoadingStatus.set(values[1].findIndex((v) => values[0][v]?.status === DataStatus.loading) !== -1);\n this.disabled.set(this.inLoadingStatus() === true || values[1].findIndex((v) => !!values[0][v]) === -1);\n let timestamp: Date | undefined;\n values[1].forEach((key) => {\n const keyTimestamp = values[0][key]?.timestamp;\n if (keyTimestamp) {\n if (!timestamp || timestamp.getTime() > keyTimestamp.getTime()) {\n timestamp = keyTimestamp;\n }\n }\n });\n\n let tooltiMessage = 'Reload data.';\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n this.tooltipMessage.set(tooltiMessage);\n });\n }\n\n @Input() set remoteDataKeys(value: string[]) {\n this._remoteDataKeys$.next(value);\n }\n\n public reload(): void {\n this._remoteDataKeys$\n .getValue()\n .forEach((key) => this.dispatchAction(new LoadRemoteDataAction(key, { forceReload: true, keepStoredGetterParams: true })));\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"disabled() === true\" id=\"reloadButton\" >\n <mat-icon class=\"fa-solid fa-rotate-right\" *ngIf=\"inLoadingStatus() === false\"></mat-icon>\n <mat-spinner [diameter]=\"24\" *ngIf=\"inLoadingStatus() === true\" id=\"loadingSpinner\"></mat-spinner>\n</button>\n","import { Directive, Input } from '@angular/core';\nimport { combineLatest, Subscription } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\nimport { NgssmOverlayBuilder } from 'ngssm-toolkit';\n\nimport { DataStatus } from '../model';\nimport { selectRemoteData } from '../state';\n\n@Directive({\n selector: '[ngssmRemoteDataOverlay]',\n standalone: true,\n providers: [NgssmOverlayBuilder]\n})\nexport class NgssmRemoteDataOverlayDirective extends NgSsmComponent {\n private subscription: Subscription | undefined;\n private isDisplayed = false;\n\n constructor(\n store: Store,\n private overlyBuilder: NgssmOverlayBuilder\n ) {\n super(store);\n this.unsubscribeAll$.subscribe(() => this.overlyBuilder.hideOverlay());\n }\n\n @Input() set ngssmRemoteDataOverlay(values: string[]) {\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n if (values.length > 0) {\n this.subscription = combineLatest(values.map((v) => this.watch((s) => selectRemoteData(s, v)))).subscribe((v) => {\n if (v.map((w) => w?.status).includes(DataStatus.loading)) {\n if (!this.isDisplayed) {\n this.overlyBuilder.showOverlay();\n this.isDisplayed = true;\n }\n } else {\n if (this.isDisplayed) {\n this.overlyBuilder.hideOverlay();\n this.isDisplayed = false;\n }\n }\n });\n }\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { RemoteDataActionType } from '../../actions';\n\n@Component({\n selector: 'ngssm-caches-display-button',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule],\n templateUrl: './ngssm-caches-display-button.component.html',\n styleUrls: ['./ngssm-caches-display-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmCachesDisplayButtonComponent extends NgSsmComponent {\n constructor(store: Store) {\n super(store);\n }\n\n public displayCaches(): void {\n this.dispatchActionType(RemoteDataActionType.displayCaches);\n }\n}\n","<button mat-icon-button matTooltip=\"Display caches\" (click)=\"displayCaches()\">\n <mat-icon class=\"fa-solid fa-cloud-bolt\"></mat-icon>\n</button>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { RemoteDataActionType, LoadRemoteDataAction } from '../../actions';\nimport { DataStatus, RemoteData } from '../../model';\nimport { selectRemoteDataState } from '../../state';\n\ninterface Cache {\n key: string;\n value: RemoteData;\n}\n\n@Component({\n selector: 'ngssm-caches',\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatButtonModule, MatTableModule, MatIconModule, MatProgressSpinnerModule],\n templateUrl: './ngssm-caches.component.html',\n styleUrls: ['./ngssm-caches.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmCachesComponent extends NgSsmComponent {\n private readonly _caches$ = new BehaviorSubject<Cache[]>([]);\n\n public readonly dataStatus = DataStatus;\n\n constructor(store: Store) {\n super(store);\n\n this.watch((s) => selectRemoteDataState(s)).subscribe((state) => {\n const caches: Cache[] = Object.keys(state).map((key) => ({\n key,\n value: state[key]\n }));\n this._caches$.next(caches);\n });\n }\n\n public get caches$(): Observable<Cache[]> {\n return this._caches$.asObservable();\n }\n\n public close(): void {\n this.dispatchActionType(RemoteDataActionType.closeCachesComponent);\n }\n\n public reloadCache(cache: Cache): void {\n this.dispatchAction(new LoadRemoteDataAction(cache.key, { forceReload: true, keepStoredGetterParams: true }));\n }\n}\n","<h1 mat-dialog-title>List of caches</h1>\n<mat-dialog-content class=\"flex-column-stretch fxFlex\">\n <mat-table [dataSource]=\"caches$\" class=\"fxFlex\">\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell *matHeaderCellDef> </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n <button mat-icon-button [disabled]=\"element.value.status === dataStatus.loading\" (click)=\"reloadCache(element)\" color=\"primary\" id=\"reload_{{element.key}}\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n </button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"key\">\n <mat-header-cell *matHeaderCellDef> Key </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.key}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>\n <mat-cell *matCellDef=\"let element\">\n\n <div [ngSwitch]=\"element.value.status\">\n <mat-icon *ngSwitchCase=\"dataStatus.none\" class=\"fa-solid fa-minus\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.loaded\" class=\"fa-solid fa-check\" color=\"primary\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.error\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-icon *ngSwitchCase=\"dataStatus.notFound\" class=\"fa-solid fa-xmark\" color=\"warn\"></mat-icon>\n <mat-spinner [diameter]=\"20\" *ngSwitchCase=\"dataStatus.loading\"></mat-spinner>\n </div>\n\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"timestamp\">\n <mat-header-cell *matHeaderCellDef> Timestamp </mat-header-cell>\n <mat-cell *matCellDef=\"let element\"> {{element.value.timestamp}} </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"['actions', 'status', 'key', 'timestamp']; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: ['actions', 'status', 'key', 'timestamp']\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button (click)=\"close()\" id=\"closeButton\">Close</button>\n</mat-dialog-actions>","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { Effect, Store, State, Action } from 'ngssm-store';\nimport { RemoteDataActionType } from '../actions';\nimport { NgssmCachesComponent } from '../components';\n\n@Injectable()\nexport class CachesDisplayEffect implements Effect {\n private dialog: MatDialogRef<NgssmCachesComponent> | undefined;\n\n public readonly processedActions: string[] = [RemoteDataActionType.displayCaches, RemoteDataActionType.closeCachesComponent];\n\n constructor(private matDialog: MatDialog) {}\n\n public processAction(store: Store, state: State, action: Action): void {\n switch (action.type) {\n case RemoteDataActionType.displayCaches: {\n this.dialog = this.matDialog.open(NgssmCachesComponent, {\n disableClose: true\n });\n\n break;\n }\n\n case RemoteDataActionType.closeCachesComponent: {\n this.dialog?.close();\n this.dialog = undefined;\n\n break;\n }\n }\n }\n}\n","import { EnvironmentInjector, Inject, Injectable, Optional, runInInjectionContext } from '@angular/core';\n\nimport { Effect, Store, State, Action } from 'ngssm-store';\nimport { NgssmNotifierService } from 'ngssm-toolkit';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../model';\nimport { selectRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataLoadingEffect implements Effect {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData];\n\n constructor(\n @Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[],\n private notifierService: NgssmNotifierService,\n private injector: EnvironmentInjector\n ) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public processAction(store: Store, state: State, action: Action): void {\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n\n if (!item || !provider || item.status !== DataStatus.loading) {\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n provider.get(item.getterParams).subscribe({\n next: (value) => {\n store.dispatchAction(new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.loaded, value));\n if (item.getterParams?.callbackAction) {\n store.dispatchActionType(item.getterParams.callbackAction);\n }\n },\n error: (error) => {\n console.error(`Unable to load data for '${loadRemoteDataAction.remoteDataKey}'`, error);\n if (item.getterParams?.errorNotificationMessage) {\n this.notifierService.notifyError(item.getterParams.errorNotificationMessage(error?.error));\n }\n\n store.dispatchAction(\n new RegisterLoadedRemoteDataAction(loadRemoteDataAction.remoteDataKey, DataStatus.error, undefined, error?.error)\n );\n }\n });\n });\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { LoadRemoteDataAction, RegisterLoadedRemoteDataAction, RemoteDataActionType } from '../actions';\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from '../model';\nimport { selectRemoteDataState, updateRemoteDataState } from '../state';\n\n@Injectable()\nexport class RemoteDataReducer implements Reducer {\n private readonly remoteDataProvidersPerKey: Map<string, RemoteDataProvider>;\n\n public readonly processedActions: string[] = [RemoteDataActionType.loadRemoteData, RemoteDataActionType.registerLoadedRemoteData];\n\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() remoteDataProviders: RemoteDataProvider[]) {\n this.remoteDataProvidersPerKey = new Map<string, RemoteDataProvider>((remoteDataProviders ?? []).map((r) => [r.remoteDataKey, r]));\n }\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case RemoteDataActionType.loadRemoteData:\n const loadRemoteDataAction = action as LoadRemoteDataAction;\n const item = selectRemoteDataState(state)[loadRemoteDataAction.remoteDataKey];\n if (!item) {\n return state;\n }\n\n const provider = this.remoteDataProvidersPerKey.get(loadRemoteDataAction.remoteDataKey);\n if (!provider) {\n return state;\n }\n\n if (\n !provider.cacheDurationInSeconds ||\n loadRemoteDataAction.params?.forceReload === true ||\n item.status === DataStatus.none ||\n item.status === DataStatus.error ||\n item.status === DataStatus.notFound ||\n !item.timestamp ||\n new Date().getTime() - item.timestamp.getTime() >= 1000 * provider.cacheDurationInSeconds\n ) {\n return updateRemoteDataState(state, {\n [loadRemoteDataAction.remoteDataKey]: {\n status: { $set: DataStatus.loading },\n getterParams: {\n $apply: (value) => {\n if (!loadRemoteDataAction.params || loadRemoteDataAction.params.keepStoredGetterParams !== true) {\n return loadRemoteDataAction.params?.params;\n }\n\n return value;\n }\n }\n }\n });\n }\n\n break;\n\n case RemoteDataActionType.registerLoadedRemoteData:\n const registerLoadedRemoteDataAction = action as RegisterLoadedRemoteDataAction;\n if (this.remoteDataProvidersPerKey.has(registerLoadedRemoteDataAction.remoteDataKey)) {\n return updateRemoteDataState(state, {\n [registerLoadedRemoteDataAction.remoteDataKey]: {\n status: { $set: registerLoadedRemoteDataAction.status },\n data: { $set: registerLoadedRemoteDataAction.data },\n timestamp: { $set: new Date() },\n message: { $set: registerLoadedRemoteDataAction.message },\n error: { $set: registerLoadedRemoteDataAction.remoteCallError }\n }\n });\n }\n\n break;\n }\n\n return state;\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { DataStatus, RemoteDataProvider, NGSSM_REMOTE_DATA_PROVIDER } from './model';\nimport { updateRemoteDataState } from './state';\n\n@Injectable()\nexport class RemoteDataStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_DATA_PROVIDER) @Optional() private remoteDataProviders: RemoteDataProvider[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteDataProviders ?? []).reduce(\n (s, provider) => updateRemoteDataState(s, { [provider.remoteDataKey]: { $set: { status: DataStatus.none } } }),\n tempState\n );\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { NGSSM_STATE_INITIALIZER, provideEffects, provideReducer } from 'ngssm-store';\n\nimport { CachesDisplayEffect, RemoteDataLoadingEffect } from './effects';\nimport { RemoteDataReducer } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n provideReducer(RemoteDataReducer),\n provideEffects(CachesDisplayEffect, RemoteDataLoadingEffect),\n { provide: NGSSM_STATE_INITIALIZER, useClass: RemoteDataStateInitializer, multi: true }\n ]);\n};\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './model';\nexport * from './state';\nexport * from './actions';\nexport * from './guards';\nexport * from './components';\nexport * from './provide-ngssm-remote-data';\n","import { InjectionToken } from '@angular/core';\n\nexport interface RemoteCallConfig {\n id: string;\n triggeredActionTypes: string[];\n resultActionTypes: string[];\n}\n\nexport const NGSSM_REMOTE_CALL_CONFIG = new InjectionToken<RemoteCallConfig>('NGSSM_REMOTE_CALL_CONFIG');\n","export enum RemoteCallStatus {\n none = 'None',\n inProgress = 'In progress',\n done = 'Done',\n ko = 'Ko'\n}\n","import { RemoteCallError } from './remote-call-error';\nimport { RemoteCallStatus } from './remote-call-status';\n\nexport interface RemoteCall {\n status: RemoteCallStatus;\n error?: RemoteCallError;\n message?: string;\n}\n\nexport const getDefaultRemoteCall = (status: RemoteCallStatus = RemoteCallStatus.none): RemoteCall => ({ status });\n","export enum NgssmRemoteCallActionType {\n setRemoteCall = '[NgssmRemoteCallActionType] setRemoteCall'\n}\n","import { Action } from 'ngssm-store';\nimport { RemoteCall } from '../model';\n\nexport class NgssmRemoteCallResultAction implements Action {\n constructor(\n public readonly type: string,\n public readonly remoteCall: RemoteCall\n ) {}\n}\n","import { Action } from 'ngssm-store';\nimport { RemoteCall } from '../model';\nimport { NgssmRemoteCallActionType } from './ngssm-remote-call-action-type';\n\nexport class SetRemoteCallAction implements Action {\n public readonly type: string = NgssmRemoteCallActionType.setRemoteCall;\n\n constructor(\n public readonly remoteCallId: string,\n public readonly remoteCall: RemoteCall\n ) {}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nimport { Logger, Store } from 'ngssm-store';\nimport { NgssmNotifierService } from 'ngssm-toolkit';\n\nimport { RemoteCallError } from './remote-call-error';\nimport { SetRemoteCallAction } from '../actions';\nimport { RemoteCallStatus } from './remote-call-status';\n\nexport const processRemoteCallError = (\n error: HttpErrorResponse,\n errorMessage: string,\n remoteCallId: string,\n store: Store,\n logger: Logger,\n notifier: NgssmNotifierService\n): void => {\n const serviceError: RemoteCallError | undefined = error.error;\n logger.error(errorMessage, error);\n notifier.notifyError(`${errorMessage}: ${serviceError?.title}`);\n store.dispatchAction(new SetRemoteCallAction(remoteCallId, { status: RemoteCallStatus.ko, error: serviceError }));\n};\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nimport { RemoteCall } from '../model';\n\nexport const selectNgssmRemoteCallState = (state: State): NgssmRemoteCallState =>\n state[NgssmRemoteCallStateSpecification.featureStateKey] as NgssmRemoteCallState;\n\nexport const updateNgssmRemoteCallState = (state: State, command: Spec<NgssmRemoteCallState, never>): State =>\n update(state, {\n [NgssmRemoteCallStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmRemoteCallState {\n remoteCalls: { [key: string]: RemoteCall };\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmRemoteCallStateSpecification.featureStateKey,\n initialState: NgssmRemoteCallStateSpecification.initialState\n})\nexport class NgssmRemoteCallStateSpecification {\n public static readonly featureStateKey = 'ngssm-remote-call-state';\n public static readonly initialState: NgssmRemoteCallState = {\n remoteCalls: {}\n };\n}\n","import { State } from 'ngssm-store';\nimport { getDefaultRemoteCall, RemoteCall } from '../model';\nimport { selectNgssmRemoteCallState } from './ngssm-remote-call.state';\n\nexport const selectRemoteCall = (state: State, id: string): RemoteCall =>\n selectNgssmRemoteCallState(state).remoteCalls[id] ?? getDefaultRemoteCall();\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { State, StateInitializer } from 'ngssm-store';\n\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig, RemoteCallStatus } from './model';\nimport { updateNgssmRemoteCallState } from './state';\n\n@Injectable()\nexport class NgssmRemoteCallStateInitializer implements StateInitializer {\n constructor(@Inject(NGSSM_REMOTE_CALL_CONFIG) @Optional() private remoteCallConfigs: RemoteCallConfig[]) {}\n\n public initializeState(state: State): State {\n let tempState = state;\n return (this.remoteCallConfigs ?? []).reduce(\n (s, config) => updateNgssmRemoteCallState(s, { remoteCalls: { [config.id]: { $set: { status: RemoteCallStatus.none } } } }),\n tempState\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { NgssmRemoteCallResultAction } from '../actions';\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig, RemoteCallStatus, getDefaultRemoteCall } from '../model';\nimport { updateNgssmRemoteCallState } from '../state';\n\n@Injectable()\nexport class RemoteCallReducer implements Reducer {\n public readonly processedActions: string[] = [];\n\n constructor(@Inject(NGSSM_REMOTE_CALL_CONFIG) @Optional() private remoteCallConfigs: RemoteCallConfig[]) {\n (this.remoteCallConfigs ?? []).forEach((c) => this.processedActions.push(...[...c.triggeredActionTypes, ...c.resultActionTypes]));\n }\n\n public updateState(state: State, action: Action): State {\n const configs = (this.remoteCallConfigs ?? []).filter(\n (c) => c.triggeredActionTypes.includes(action.type) || c.resultActionTypes.includes(action.type)\n );\n let output = state;\n configs.forEach((config) => {\n if (config.triggeredActionTypes.includes(action.type)) {\n output = updateNgssmRemoteCallState(output, {\n remoteCalls: {\n [config.id]: { $set: getDefaultRemoteCall(RemoteCallStatus.inProgress) }\n }\n });\n } else {\n const ngssmRemoteCallResultAction = action as NgssmRemoteCallResultAction;\n output = updateNgssmRemoteCallState(output, {\n remoteCalls: {\n [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }\n }\n });\n }\n });\n\n return output;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { NgssmRemoteCallActionType, SetRemoteCallAction } from '../actions';\nimport { updateNgssmRemoteCallState } from '../state';\n\n@Injectable()\nexport class RemoteCallSetterReducer implements Reducer {\n public readonly processedActions: string[] = [NgssmRemoteCallActionType.setRemoteCall];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmRemoteCallActionType.setRemoteCall: {\n const setRemoteCallAction = action as SetRemoteCallAction;\n return updateNgssmRemoteCallState(state, {\n remoteCalls: {\n [setRemoteCallAction.remoteCallId]: { $set: setRemoteCallAction.remoteCall }\n }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { NGSSM_STATE_INITIALIZER, provideReducers } from 'ngssm-store';\nimport { NgssmRemoteCallStateInitializer } from './ngssm-remote-call-state-initializer';\nimport { RemoteCallReducer, RemoteCallSetterReducer } from './reducers';\n\nexport const provideNgssmRemoteCall = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n { provide: NGSSM_STATE_INITIALIZER, useClass: NgssmRemoteCallStateInitializer, multi: true },\n provideReducers(RemoteCallSetterReducer, RemoteCallReducer)\n ]);\n};\n","import { Directive, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\nimport { NgssmOverlayBuilder } from 'ngssm-toolkit';\n\nimport { RemoteCallStatus } from '../model';\nimport { selectRemoteCall } from '../state';\n\n@Directive({\n selector: '[ngssmRemoteCall]',\n standalone: true,\n providers: [NgssmOverlayBuilder]\n})\nexport class NgssmRemoteCallDirective extends NgSsmComponent {\n private subscription: Subscription | undefined;\n\n constructor(\n store: Store,\n private overlyBuilder: NgssmOverlayBuilder\n ) {\n super(store);\n this.unsubscribeAll$.subscribe(() => this.overlyBuilder.hideOverlay());\n }\n\n @Input('ngssmRemoteCall') set remoteCallId(value: string) {\n this.subscription?.unsubscribe();\n this.subscription = this.watch((s) => selectRemoteCall(s, value)).subscribe((value) => {\n if (value.status === RemoteCallStatus.inProgress) {\n this.overlyBuilder.showOverlay();\n } else {\n this.overlyBuilder.hideOverlay();\n }\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, HostBinding, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subject, switchMap } from 'rxjs';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { selectNgssmRemoteCallState } from '../../state';\nimport { RemoteCallStatus } from '../../model';\n\n@Component({\n selector: 'ngssm-remote-call-error',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule],\n templateUrl: './ngssm-remote-call-error.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmRemoteCallErrorComponent extends NgSsmComponent {\n private readonly _remoteCallId$ = new Subject<string>();\n\n public readonly errorContainerRendered = signal<boolean>(false);\n public readonly errorDescription = signal<string>('');\n\n @HostBinding('class') public hostCssClasses = 'ngssm-remote-call-error';\n\n constructor(store: Store) {\n super(store);\n\n this._remoteCallId$.pipe(switchMap((v) => this.watch((s) => selectNgssmRemoteCallState(s).remoteCalls[v]))).subscribe((remoteCall) => {\n this.errorContainerRendered.set(remoteCall?.status === RemoteCallStatus.ko);\n const description: string =\n remoteCall?.status !== RemoteCallStatus.ko\n ? ''\n : !!remoteCall.message\n ? remoteCall.message\n : !!remoteCall.error\n ? JSON.stringify(remoteCall.error, null, 2)\n : 'No error description provided!';\n this.errorDescription.set(description);\n });\n }\n\n @Input() public set remoteCallId(value: string) {\n this._remoteCallId$.next(value);\n }\n\n public hideComponent(): void {\n this.errorContainerRendered.set(false);\n }\n}\n","<div *ngIf=\"errorContainerRendered() === true\" class=\"ngssm-remote-call-error-container\">\n {{errorDescription()}}\n\n <button mat-icon-button color=\"warn\" class=\"ngssm-remote-call-error-close-button\" (click)=\"hideComponent()\">\n <mat-icon class=\"fa-solid fa-square-xmark\"></mat-icon>\n </button>\n</div>","import { Provider } from '@angular/core';\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig } from './model';\n\nexport const provideNgssmRemoteCallConfig = (config: RemoteCallConfig): Provider => ({\n provide: NGSSM_REMOTE_CALL_CONFIG,\n useValue: config,\n multi: true\n});\n","import { State } from 'ngssm-store';\n\nimport { selectRemoteData } from '../remote-data/state';\nimport { DataStatus } from '../remote-data/model';\nimport { selectRemoteCall } from '../ngssm-remote-call/state';\nimport { RemoteCallStatus } from '../ngssm-remote-call/model';\n\nexport const atLeastOneLoadingOrInProgress = (state: State, remoteDataKeys: string[], remoteCallIds: string[]): boolean => {\n if (remoteDataKeys.findIndex((key) => selectRemoteData(state, key)?.status === DataStatus.loading) !== -1) {\n return true;\n }\n\n if (remoteCallIds.findIndex((key) => selectRemoteCall(state, key)?.status === RemoteCallStatus.inProgress) !== -1) {\n return true;\n }\n\n return false;\n};\n","/*\n * Public API Surface of ngssm-remote-data\n */\n\nexport * from './lib/remote-data/public-api';\nexport * from './lib/ngssm-remote-call/public-api';\nexport * from './lib/helpers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i3","i5","i7","i1"],"mappings":"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"}
@@ -1,14 +1,12 @@
1
- import { Observable } from 'rxjs';
2
1
  import { NgSsmComponent, Store } from 'ngssm-store';
3
- import { RemoteCallError } from '../../model';
4
2
  import * as i0 from "@angular/core";
5
3
  export declare class NgssmRemoteCallErrorComponent extends NgSsmComponent {
6
4
  private readonly _remoteCallId$;
7
- private readonly _remoteCallError$;
5
+ readonly errorContainerRendered: import("@angular/core").WritableSignal<boolean>;
6
+ readonly errorDescription: import("@angular/core").WritableSignal<string>;
8
7
  hostCssClasses: string;
9
8
  constructor(store: Store);
10
9
  set remoteCallId(value: string);
11
- get remoteCallError$(): Observable<RemoteCallError | undefined>;
12
10
  hideComponent(): void;
13
11
  static ɵfac: i0.ɵɵFactoryDeclaration<NgssmRemoteCallErrorComponent, never>;
14
12
  static ɵcmp: i0.ɵɵComponentDeclaration<NgssmRemoteCallErrorComponent, "ngssm-remote-call-error", never, { "remoteCallId": { "alias": "remoteCallId"; "required": false; }; }, {}, never, never, true, never>;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "ngssm-remote-data",
3
- "version": "16.2.1",
3
+ "version": "16.2.2",
4
4
  "description": "NgSsm - Utilities to manage data loaded from remote services with the store.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",
7
7
  "peerDependencies": {
8
8
  "@angular/common": ">16.0.0",
9
9
  "@angular/core": ">=16.0.0",
10
- "ngssm-store": "16.2.1"
10
+ "ngssm-store": "16.2.2"
11
11
  },
12
12
  "dependencies": {
13
13
  "tslib": "^2.3.0"
@@ -12,6 +12,8 @@
12
12
  max-height: var(--ngssm-remote-call-error-max-height);
13
13
  overflow: auto;
14
14
  white-space: pre;
15
+ min-height: 40px;
16
+ padding: 8px;
15
17
  }
16
18
 
17
19
  .ngssm-remote-call-error-close-button {