ngssm-remote-data 15.3.2 → 15.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const NGSSM_REMOTE_CALL_CONFIG = new InjectionToken('NGSSM_REMOTE_CALL_CONFIG');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNhbGwtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tcmVtb3RlLWRhdGEvc3JjL2xpYi9uZ3NzbS1yZW1vdGUtY2FsbC9tb2RlbC9yZW1vdGUtY2FsbC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEvQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsMEJBQTBCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlQ2FsbENvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIHRyaWdnZXJlZEFjdGlvblR5cGU6IHN0cmluZztcbiAgcmVzdWx0QWN0aW9uVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgTkdTU01fUkVNT1RFX0NBTExfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFJlbW90ZUNhbGxDb25maWc+KCdOR1NTTV9SRU1PVEVfQ0FMTF9DT05GSUcnKTtcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNhbGwtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tcmVtb3RlLWRhdGEvc3JjL2xpYi9uZ3NzbS1yZW1vdGUtY2FsbC9tb2RlbC9yZW1vdGUtY2FsbC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEvQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsMEJBQTBCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlQ2FsbENvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIHRyaWdnZXJlZEFjdGlvblR5cGVzOiBzdHJpbmdbXTtcbiAgcmVzdWx0QWN0aW9uVHlwZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgTkdTU01fUkVNT1RFX0NBTExfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFJlbW90ZUNhbGxDb25maWc+KCdOR1NTTV9SRU1PVEVfQ0FMTF9DT05GSUcnKTtcbiJdfQ==
@@ -7,13 +7,14 @@ export class RemoteCallReducer {
7
7
  constructor(remoteCallConfigs) {
8
8
  this.remoteCallConfigs = remoteCallConfigs;
9
9
  this.processedActions = [];
10
- (this.remoteCallConfigs ?? []).forEach((c) => this.processedActions.push(...[c.triggeredActionType, c.resultActionType]));
10
+ (this.remoteCallConfigs ?? []).forEach((c) => this.processedActions.push(...[...c.triggeredActionTypes, ...c.resultActionTypes]));
11
11
  }
12
12
  updateState(state, action) {
13
- const config = (this.remoteCallConfigs ?? []).find((c) => c.triggeredActionType === action.type || c.resultActionType === action.type);
14
- if (config) {
15
- if (action.type === config.triggeredActionType) {
16
- return updateNgssmRemoteCallState(state, {
13
+ const configs = (this.remoteCallConfigs ?? []).filter((c) => c.triggeredActionTypes.includes(action.type) || c.resultActionTypes.includes(action.type));
14
+ let output = state;
15
+ configs.forEach((config) => {
16
+ if (config.triggeredActionTypes.includes(action.type)) {
17
+ output = updateNgssmRemoteCallState(output, {
17
18
  remoteCalls: {
18
19
  [config.id]: {
19
20
  status: { $set: RemoteCallStatus.inProgress }
@@ -21,14 +22,16 @@ export class RemoteCallReducer {
21
22
  }
22
23
  });
23
24
  }
24
- const ngssmRemoteCallResultAction = action;
25
- return updateNgssmRemoteCallState(state, {
26
- remoteCalls: {
27
- [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }
28
- }
29
- });
30
- }
31
- return state;
25
+ else {
26
+ const ngssmRemoteCallResultAction = action;
27
+ output = updateNgssmRemoteCallState(output, {
28
+ remoteCalls: {
29
+ [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }
30
+ }
31
+ });
32
+ }
33
+ });
34
+ return output;
32
35
  }
33
36
  }
34
37
  RemoteCallReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: RemoteCallReducer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -46,4 +49,4 @@ export const remoteCallReducerProvider = {
46
49
  useClass: RemoteCallReducer,
47
50
  multi: true
48
51
  };
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNhbGwucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvbmdzc20tcmVtb3RlLWNhbGwvcmVkdWNlcnMvcmVtb3RlLWNhbGwucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR3RELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBa0UsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFGdkYscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBRzlDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1SCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVksRUFBRSxNQUFjO1FBQzdDLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLGdCQUFnQixLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2SSxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzlDLE9BQU8sMEJBQTBCLENBQUMsS0FBSyxFQUFFO29CQUN2QyxXQUFXLEVBQUU7d0JBQ1gsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUU7NEJBQ1gsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFVBQVUsRUFBRTt5QkFDOUM7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxNQUFNLDJCQUEyQixHQUFHLE1BQXFDLENBQUM7WUFDMUUsT0FBTywwQkFBMEIsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZDLFdBQVcsRUFBRTtvQkFDWCxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSwyQkFBMkIsQ0FBQyxVQUFVLEVBQUU7aUJBQzlEO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzhHQTdCVSxpQkFBaUIsa0JBR1Isd0JBQXdCO2tIQUhqQyxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBSUksTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUFHLFFBQVE7O0FBNkJ6RCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBYTtJQUNqRCxPQUFPLEVBQUUsYUFBYTtJQUN0QixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlZHVjZXIsIFN0YXRlLCBBY3Rpb24sIE5HU1NNX1JFRFVDRVIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5pbXBvcnQgeyBOZ3NzbVJlbW90ZUNhbGxSZXN1bHRBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zJztcblxuaW1wb3J0IHsgTkdTU01fUkVNT1RFX0NBTExfQ09ORklHLCBSZW1vdGVDYWxsQ29uZmlnLCBSZW1vdGVDYWxsU3RhdHVzIH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgdXBkYXRlTmdzc21SZW1vdGVDYWxsU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZW1vdGVDYWxsUmVkdWNlciBpbXBsZW1lbnRzIFJlZHVjZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc2VkQWN0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE5HU1NNX1JFTU9URV9DQUxMX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZW1vdGVDYWxsQ29uZmlnczogUmVtb3RlQ2FsbENvbmZpZ1tdKSB7XG4gICAgKHRoaXMucmVtb3RlQ2FsbENvbmZpZ3MgPz8gW10pLmZvckVhY2goKGMpID0+IHRoaXMucHJvY2Vzc2VkQWN0aW9ucy5wdXNoKC4uLltjLnRyaWdnZXJlZEFjdGlvblR5cGUsIGMucmVzdWx0QWN0aW9uVHlwZV0pKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZShzdGF0ZTogU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUge1xuICAgIGNvbnN0IGNvbmZpZyA9ICh0aGlzLnJlbW90ZUNhbGxDb25maWdzID8/IFtdKS5maW5kKChjKSA9PiBjLnRyaWdnZXJlZEFjdGlvblR5cGUgPT09IGFjdGlvbi50eXBlIHx8IGMucmVzdWx0QWN0aW9uVHlwZSA9PT0gYWN0aW9uLnR5cGUpO1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gY29uZmlnLnRyaWdnZXJlZEFjdGlvblR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZU5nc3NtUmVtb3RlQ2FsbFN0YXRlKHN0YXRlLCB7XG4gICAgICAgICAgcmVtb3RlQ2FsbHM6IHtcbiAgICAgICAgICAgIFtjb25maWcuaWRdOiB7XG4gICAgICAgICAgICAgIHN0YXR1czogeyAkc2V0OiBSZW1vdGVDYWxsU3RhdHVzLmluUHJvZ3Jlc3MgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5nc3NtUmVtb3RlQ2FsbFJlc3VsdEFjdGlvbiA9IGFjdGlvbiBhcyBOZ3NzbVJlbW90ZUNhbGxSZXN1bHRBY3Rpb247XG4gICAgICByZXR1cm4gdXBkYXRlTmdzc21SZW1vdGVDYWxsU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgcmVtb3RlQ2FsbHM6IHtcbiAgICAgICAgICBbY29uZmlnLmlkXTogeyAkc2V0OiBuZ3NzbVJlbW90ZUNhbGxSZXN1bHRBY3Rpb24ucmVtb3RlQ2FsbCB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcmVtb3RlQ2FsbFJlZHVjZXJQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HU1NNX1JFRFVDRVIsXG4gIHVzZUNsYXNzOiBSZW1vdGVDYWxsUmVkdWNlcixcbiAgbXVsdGk6IHRydWVcbn07XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNhbGwucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXJlbW90ZS1kYXRhL3NyYy9saWIvbmdzc20tcmVtb3RlLWNhbGwvcmVkdWNlcnMvcmVtb3RlLWNhbGwucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR3RELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBa0UsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFGdkYscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBRzlDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFZLEVBQUUsTUFBYztRQUM3QyxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ25ELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDakcsQ0FBQztRQUNGLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekIsSUFBSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDckQsTUFBTSxHQUFHLDBCQUEwQixDQUFDLE1BQU0sRUFBRTtvQkFDMUMsV0FBVyxFQUFFO3dCQUNYLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFOzRCQUNYLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7eUJBQzlDO3FCQUNGO2lCQUNGLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLE1BQU0sMkJBQTJCLEdBQUcsTUFBcUMsQ0FBQztnQkFDMUUsTUFBTSxHQUFHLDBCQUEwQixDQUFDLE1BQU0sRUFBRTtvQkFDMUMsV0FBVyxFQUFFO3dCQUNYLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLDJCQUEyQixDQUFDLFVBQVUsRUFBRTtxQkFDOUQ7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OzhHQWhDVSxpQkFBaUIsa0JBR1Isd0JBQXdCO2tIQUhqQyxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBSUksTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUFHLFFBQVE7O0FBZ0N6RCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBYTtJQUNqRCxPQUFPLEVBQUUsYUFBYTtJQUN0QixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlZHVjZXIsIFN0YXRlLCBBY3Rpb24sIE5HU1NNX1JFRFVDRVIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IE5nc3NtUmVtb3RlQ2FsbFJlc3VsdEFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgTkdTU01fUkVNT1RFX0NBTExfQ09ORklHLCBSZW1vdGVDYWxsQ29uZmlnLCBSZW1vdGVDYWxsU3RhdHVzIH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgdXBkYXRlTmdzc21SZW1vdGVDYWxsU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZW1vdGVDYWxsUmVkdWNlciBpbXBsZW1lbnRzIFJlZHVjZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc2VkQWN0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE5HU1NNX1JFTU9URV9DQUxMX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZW1vdGVDYWxsQ29uZmlnczogUmVtb3RlQ2FsbENvbmZpZ1tdKSB7XG4gICAgKHRoaXMucmVtb3RlQ2FsbENvbmZpZ3MgPz8gW10pLmZvckVhY2goKGMpID0+IHRoaXMucHJvY2Vzc2VkQWN0aW9ucy5wdXNoKC4uLlsuLi5jLnRyaWdnZXJlZEFjdGlvblR5cGVzLCAuLi5jLnJlc3VsdEFjdGlvblR5cGVzXSkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVN0YXRlKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiBTdGF0ZSB7XG4gICAgY29uc3QgY29uZmlncyA9ICh0aGlzLnJlbW90ZUNhbGxDb25maWdzID8/IFtdKS5maWx0ZXIoXG4gICAgICAoYykgPT4gYy50cmlnZ2VyZWRBY3Rpb25UeXBlcy5pbmNsdWRlcyhhY3Rpb24udHlwZSkgfHwgYy5yZXN1bHRBY3Rpb25UeXBlcy5pbmNsdWRlcyhhY3Rpb24udHlwZSlcbiAgICApO1xuICAgIGxldCBvdXRwdXQgPSBzdGF0ZTtcbiAgICBjb25maWdzLmZvckVhY2goKGNvbmZpZykgPT4ge1xuICAgICAgaWYgKGNvbmZpZy50cmlnZ2VyZWRBY3Rpb25UeXBlcy5pbmNsdWRlcyhhY3Rpb24udHlwZSkpIHtcbiAgICAgICAgb3V0cHV0ID0gdXBkYXRlTmdzc21SZW1vdGVDYWxsU3RhdGUob3V0cHV0LCB7XG4gICAgICAgICAgcmVtb3RlQ2FsbHM6IHtcbiAgICAgICAgICAgIFtjb25maWcuaWRdOiB7XG4gICAgICAgICAgICAgIHN0YXR1czogeyAkc2V0OiBSZW1vdGVDYWxsU3RhdHVzLmluUHJvZ3Jlc3MgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuZ3NzbVJlbW90ZUNhbGxSZXN1bHRBY3Rpb24gPSBhY3Rpb24gYXMgTmdzc21SZW1vdGVDYWxsUmVzdWx0QWN0aW9uO1xuICAgICAgICBvdXRwdXQgPSB1cGRhdGVOZ3NzbVJlbW90ZUNhbGxTdGF0ZShvdXRwdXQsIHtcbiAgICAgICAgICByZW1vdGVDYWxsczoge1xuICAgICAgICAgICAgW2NvbmZpZy5pZF06IHsgJHNldDogbmdzc21SZW1vdGVDYWxsUmVzdWx0QWN0aW9uLnJlbW90ZUNhbGwgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdGVDYWxsUmVkdWNlclByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdTU01fUkVEVUNFUixcbiAgdXNlQ2xhc3M6IFJlbW90ZUNhbGxSZWR1Y2VyLFxuICBtdWx0aTogdHJ1ZVxufTtcbiJdfQ==
@@ -501,14 +501,15 @@ class RemoteCallReducer {
501
501
  var _a;
502
502
  this.remoteCallConfigs = remoteCallConfigs;
503
503
  this.processedActions = [];
504
- ((_a = this.remoteCallConfigs) !== null && _a !== void 0 ? _a : []).forEach((c) => this.processedActions.push(...[c.triggeredActionType, c.resultActionType]));
504
+ ((_a = this.remoteCallConfigs) !== null && _a !== void 0 ? _a : []).forEach((c) => this.processedActions.push(...[...c.triggeredActionTypes, ...c.resultActionTypes]));
505
505
  }
506
506
  updateState(state, action) {
507
507
  var _a;
508
- const config = ((_a = this.remoteCallConfigs) !== null && _a !== void 0 ? _a : []).find((c) => c.triggeredActionType === action.type || c.resultActionType === action.type);
509
- if (config) {
510
- if (action.type === config.triggeredActionType) {
511
- return updateNgssmRemoteCallState(state, {
508
+ const configs = ((_a = this.remoteCallConfigs) !== null && _a !== void 0 ? _a : []).filter((c) => c.triggeredActionTypes.includes(action.type) || c.resultActionTypes.includes(action.type));
509
+ let output = state;
510
+ configs.forEach((config) => {
511
+ if (config.triggeredActionTypes.includes(action.type)) {
512
+ output = updateNgssmRemoteCallState(output, {
512
513
  remoteCalls: {
513
514
  [config.id]: {
514
515
  status: { $set: RemoteCallStatus.inProgress }
@@ -516,14 +517,16 @@ class RemoteCallReducer {
516
517
  }
517
518
  });
518
519
  }
519
- const ngssmRemoteCallResultAction = action;
520
- return updateNgssmRemoteCallState(state, {
521
- remoteCalls: {
522
- [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }
523
- }
524
- });
525
- }
526
- return state;
520
+ else {
521
+ const ngssmRemoteCallResultAction = action;
522
+ output = updateNgssmRemoteCallState(output, {
523
+ remoteCalls: {
524
+ [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }
525
+ }
526
+ });
527
+ }
528
+ });
529
+ return output;
527
530
  }
528
531
  }
529
532
  RemoteCallReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: RemoteCallReducer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -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/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/provide-ngssm-remote-call.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/ngssm-remote-call-routes.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/provide-ngssm-remote-call-config.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/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 { InjectionToken } 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","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';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\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(public readonly remoteDataKey: string, public readonly params?: ReloadParams<TValue>) {}\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>(remoteDataKey: string, params: ReloadParams<TData> = { forceReload: true }): boolean => {\n inject(Store).dispatchAction(new LoadRemoteDataAction(remoteDataKey, params));\n return true;\n};\n","import { Component, ChangeDetectionStrategy, Input } 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 { BehaviorSubject, combineLatest, Observable } 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],\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 _remoteDataKey$ = new BehaviorSubject<string>('');\n private readonly _tooltipMessage$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKey$]).subscribe((values) => {\n let tooltiMessage = 'Reload data.';\n let disabled = true;\n if (values[1]) {\n const timestamp = values[0][values[1]]?.timestamp;\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n\n disabled = (values[0][values[1]]?.status ?? DataStatus.loading) === DataStatus.loading;\n }\n\n this._tooltipMessage$.next(tooltiMessage);\n this._disabled$.next(disabled);\n });\n }\n\n @Input() set remoteDataKey(value: string) {\n this._remoteDataKey$.next(value);\n }\n\n public get tooltipMessage$(): Observable<string> {\n return this._tooltipMessage$.asObservable();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public reload(): void {\n this.dispatchAction(new LoadRemoteDataAction(this._remoteDataKey$.getValue(), { forceReload: true, keepStoredGetterParams: true }));\n\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"(tooltipMessage$ | async) ?? 'Reload'\"\n [disabled]=\"disabled$ | async\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n</button>","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(store: Store, private overlyBuilder: NgssmOverlayBuilder) {\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, Provider } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } 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\nexport const cachesDisplayEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: CachesDisplayEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } 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 ) {\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 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\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, 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\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\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 } from 'ngssm-store';\n\nimport { cachesDisplayEffectProvider, remoteDataLoadingEffectProvider } from './effects';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n cachesDisplayEffectProvider,\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 triggeredActionType: string;\n resultActionType: 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}\n\nexport const getDefaultRemoteCall = (status: RemoteCallStatus = RemoteCallStatus.none): RemoteCall => ({ status });\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, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\nimport { NgssmRemoteCallResultAction } from '../actions';\n\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig, RemoteCallStatus } 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.triggeredActionType, c.resultActionType]));\n }\n\n public updateState(state: State, action: Action): State {\n const config = (this.remoteCallConfigs ?? []).find((c) => c.triggeredActionType === action.type || c.resultActionType === action.type);\n if (config) {\n if (action.type === config.triggeredActionType) {\n return updateNgssmRemoteCallState(state, {\n remoteCalls: {\n [config.id]: {\n status: { $set: RemoteCallStatus.inProgress }\n }\n }\n });\n }\n\n const ngssmRemoteCallResultAction = action as NgssmRemoteCallResultAction;\n return updateNgssmRemoteCallState(state, {\n remoteCalls: {\n [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }\n }\n });\n }\n\n return state;\n }\n}\n\nexport const remoteCallReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteCallReducer,\n multi: true\n};\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\nimport { NgssmRemoteCallStateInitializer } from './ngssm-remote-call-state-initializer';\nimport { remoteCallReducerProvider } from './reducers';\n\nexport const provideNgssmRemoteCall = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n { provide: NGSSM_STATE_INITIALIZER, useClass: NgssmRemoteCallStateInitializer, multi: true },\n remoteCallReducerProvider\n ]);\n};\n","import { Routes } from '@angular/router';\n\nexport const ngssmRemoteCallRoutes: Routes = [];\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(store: Store, private overlyBuilder: NgssmOverlayBuilder) {\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 { 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","export enum NgssmRemoteCallActionType {}\n","import { Action } from 'ngssm-store';\nimport { RemoteCall } from '../model';\n\nexport class NgssmRemoteCallResultAction implements Action {\n constructor(public readonly type: string, public readonly remoteCall: RemoteCall) {}\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i3","i5","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/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/provide-ngssm-remote-call.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/ngssm-remote-call-routes.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/provide-ngssm-remote-call-config.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/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 { InjectionToken } 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","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';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\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(public readonly remoteDataKey: string, public readonly params?: ReloadParams<TValue>) {}\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>(remoteDataKey: string, params: ReloadParams<TData> = { forceReload: true }): boolean => {\n inject(Store).dispatchAction(new LoadRemoteDataAction(remoteDataKey, params));\n return true;\n};\n","import { Component, ChangeDetectionStrategy, Input } 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 { BehaviorSubject, combineLatest, Observable } 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],\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 _remoteDataKey$ = new BehaviorSubject<string>('');\n private readonly _tooltipMessage$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKey$]).subscribe((values) => {\n let tooltiMessage = 'Reload data.';\n let disabled = true;\n if (values[1]) {\n const timestamp = values[0][values[1]]?.timestamp;\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n\n disabled = (values[0][values[1]]?.status ?? DataStatus.loading) === DataStatus.loading;\n }\n\n this._tooltipMessage$.next(tooltiMessage);\n this._disabled$.next(disabled);\n });\n }\n\n @Input() set remoteDataKey(value: string) {\n this._remoteDataKey$.next(value);\n }\n\n public get tooltipMessage$(): Observable<string> {\n return this._tooltipMessage$.asObservable();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public reload(): void {\n this.dispatchAction(new LoadRemoteDataAction(this._remoteDataKey$.getValue(), { forceReload: true, keepStoredGetterParams: true }));\n\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"(tooltipMessage$ | async) ?? 'Reload'\"\n [disabled]=\"disabled$ | async\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n</button>","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(store: Store, private overlyBuilder: NgssmOverlayBuilder) {\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, Provider } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } 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\nexport const cachesDisplayEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: CachesDisplayEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } 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 ) {\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 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\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, 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\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\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 } from 'ngssm-store';\n\nimport { cachesDisplayEffectProvider, remoteDataLoadingEffectProvider } from './effects';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n cachesDisplayEffectProvider,\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}\n\nexport const getDefaultRemoteCall = (status: RemoteCallStatus = RemoteCallStatus.none): RemoteCall => ({ status });\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, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\n\nimport { NgssmRemoteCallResultAction } from '../actions';\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig, RemoteCallStatus } 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]: {\n status: { $set: RemoteCallStatus.inProgress }\n }\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\nexport const remoteCallReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteCallReducer,\n multi: true\n};\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\nimport { NgssmRemoteCallStateInitializer } from './ngssm-remote-call-state-initializer';\nimport { remoteCallReducerProvider } from './reducers';\n\nexport const provideNgssmRemoteCall = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n { provide: NGSSM_STATE_INITIALIZER, useClass: NgssmRemoteCallStateInitializer, multi: true },\n remoteCallReducerProvider\n ]);\n};\n","import { Routes } from '@angular/router';\n\nexport const ngssmRemoteCallRoutes: Routes = [];\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(store: Store, private overlyBuilder: NgssmOverlayBuilder) {\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 { 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","export enum NgssmRemoteCallActionType {}\n","import { Action } from 'ngssm-store';\nimport { RemoteCall } from '../model';\n\nexport class NgssmRemoteCallResultAction implements Action {\n constructor(public readonly type: string, public readonly remoteCall: RemoteCall) {}\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i3","i5","i1"],"mappings":"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"}
@@ -481,13 +481,14 @@ class RemoteCallReducer {
481
481
  constructor(remoteCallConfigs) {
482
482
  this.remoteCallConfigs = remoteCallConfigs;
483
483
  this.processedActions = [];
484
- (this.remoteCallConfigs ?? []).forEach((c) => this.processedActions.push(...[c.triggeredActionType, c.resultActionType]));
484
+ (this.remoteCallConfigs ?? []).forEach((c) => this.processedActions.push(...[...c.triggeredActionTypes, ...c.resultActionTypes]));
485
485
  }
486
486
  updateState(state, action) {
487
- const config = (this.remoteCallConfigs ?? []).find((c) => c.triggeredActionType === action.type || c.resultActionType === action.type);
488
- if (config) {
489
- if (action.type === config.triggeredActionType) {
490
- return updateNgssmRemoteCallState(state, {
487
+ const configs = (this.remoteCallConfigs ?? []).filter((c) => c.triggeredActionTypes.includes(action.type) || c.resultActionTypes.includes(action.type));
488
+ let output = state;
489
+ configs.forEach((config) => {
490
+ if (config.triggeredActionTypes.includes(action.type)) {
491
+ output = updateNgssmRemoteCallState(output, {
491
492
  remoteCalls: {
492
493
  [config.id]: {
493
494
  status: { $set: RemoteCallStatus.inProgress }
@@ -495,14 +496,16 @@ class RemoteCallReducer {
495
496
  }
496
497
  });
497
498
  }
498
- const ngssmRemoteCallResultAction = action;
499
- return updateNgssmRemoteCallState(state, {
500
- remoteCalls: {
501
- [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }
502
- }
503
- });
504
- }
505
- return state;
499
+ else {
500
+ const ngssmRemoteCallResultAction = action;
501
+ output = updateNgssmRemoteCallState(output, {
502
+ remoteCalls: {
503
+ [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }
504
+ }
505
+ });
506
+ }
507
+ });
508
+ return output;
506
509
  }
507
510
  }
508
511
  RemoteCallReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: RemoteCallReducer, deps: [{ token: NGSSM_REMOTE_CALL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -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/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/provide-ngssm-remote-call.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/ngssm-remote-call-routes.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/provide-ngssm-remote-call-config.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/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 { InjectionToken } 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","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';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\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(public readonly remoteDataKey: string, public readonly params?: ReloadParams<TValue>) {}\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>(remoteDataKey: string, params: ReloadParams<TData> = { forceReload: true }): boolean => {\n inject(Store).dispatchAction(new LoadRemoteDataAction(remoteDataKey, params));\n return true;\n};\n","import { Component, ChangeDetectionStrategy, Input } 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 { BehaviorSubject, combineLatest, Observable } 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],\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 _remoteDataKey$ = new BehaviorSubject<string>('');\n private readonly _tooltipMessage$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKey$]).subscribe((values) => {\n let tooltiMessage = 'Reload data.';\n let disabled = true;\n if (values[1]) {\n const timestamp = values[0][values[1]]?.timestamp;\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n\n disabled = (values[0][values[1]]?.status ?? DataStatus.loading) === DataStatus.loading;\n }\n\n this._tooltipMessage$.next(tooltiMessage);\n this._disabled$.next(disabled);\n });\n }\n\n @Input() set remoteDataKey(value: string) {\n this._remoteDataKey$.next(value);\n }\n\n public get tooltipMessage$(): Observable<string> {\n return this._tooltipMessage$.asObservable();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public reload(): void {\n this.dispatchAction(new LoadRemoteDataAction(this._remoteDataKey$.getValue(), { forceReload: true, keepStoredGetterParams: true }));\n\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"(tooltipMessage$ | async) ?? 'Reload'\"\n [disabled]=\"disabled$ | async\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n</button>","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(store: Store, private overlyBuilder: NgssmOverlayBuilder) {\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, Provider } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } 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\nexport const cachesDisplayEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: CachesDisplayEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } 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 ) {\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 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\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, 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\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\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 } from 'ngssm-store';\n\nimport { cachesDisplayEffectProvider, remoteDataLoadingEffectProvider } from './effects';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n cachesDisplayEffectProvider,\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 triggeredActionType: string;\n resultActionType: 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}\n\nexport const getDefaultRemoteCall = (status: RemoteCallStatus = RemoteCallStatus.none): RemoteCall => ({ status });\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, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\nimport { NgssmRemoteCallResultAction } from '../actions';\n\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig, RemoteCallStatus } 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.triggeredActionType, c.resultActionType]));\n }\n\n public updateState(state: State, action: Action): State {\n const config = (this.remoteCallConfigs ?? []).find((c) => c.triggeredActionType === action.type || c.resultActionType === action.type);\n if (config) {\n if (action.type === config.triggeredActionType) {\n return updateNgssmRemoteCallState(state, {\n remoteCalls: {\n [config.id]: {\n status: { $set: RemoteCallStatus.inProgress }\n }\n }\n });\n }\n\n const ngssmRemoteCallResultAction = action as NgssmRemoteCallResultAction;\n return updateNgssmRemoteCallState(state, {\n remoteCalls: {\n [config.id]: { $set: ngssmRemoteCallResultAction.remoteCall }\n }\n });\n }\n\n return state;\n }\n}\n\nexport const remoteCallReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteCallReducer,\n multi: true\n};\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\nimport { NgssmRemoteCallStateInitializer } from './ngssm-remote-call-state-initializer';\nimport { remoteCallReducerProvider } from './reducers';\n\nexport const provideNgssmRemoteCall = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n { provide: NGSSM_STATE_INITIALIZER, useClass: NgssmRemoteCallStateInitializer, multi: true },\n remoteCallReducerProvider\n ]);\n};\n","import { Routes } from '@angular/router';\n\nexport const ngssmRemoteCallRoutes: Routes = [];\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(store: Store, private overlyBuilder: NgssmOverlayBuilder) {\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 { 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","export enum NgssmRemoteCallActionType {}\n","import { Action } from 'ngssm-store';\nimport { RemoteCall } from '../model';\n\nexport class NgssmRemoteCallResultAction implements Action {\n constructor(public readonly type: string, public readonly remoteCall: RemoteCall) {}\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i3","i5","i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;IAAY,WAMX;AAND,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EANW,UAAU,KAAV,UAAU,GAMrB,EAAA,CAAA,CAAA;;ACOM,MAAM,oBAAoB,GAAG,CAAI,YAAgB,EAAE,aAA4B,GAAA,UAAU,CAAC,IAAI,MAAqB;AACxH,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,IAAI,EAAE,YAAY;AACnB,CAAA;;MCLY,0BAA0B,GAAG,IAAI,cAAc,CAAqB,4BAA4B;;;ACLtG,MAAM,qBAAqB,GAAG,CAAC,KAAY,KAChD,KAAK,CAAC,4BAA4B,CAAC,eAAe,EAAqB;AAElE,MAAM,qBAAqB,GAAG,CAAC,KAAY,EAAE,OAAqC,KACvF,MAAM,CAAC,KAAK,EAAE;AACZ,IAAA,CAAC,4BAA4B,CAAC,eAAe,GAAG,OAAO;AACxD,CAAA,EAAE;AAUQ,IAAA,4BAA4B,GAAlC,8BAAA,GAAA,MAAM,4BAA4B,CAAA;;AAChB,4BAAe,CAAA,eAAA,GAAG,mBAAmB,CAAC;AACtC,4BAAY,CAAA,YAAA,GAAoB,EAAE,CAAC;AAF/C,4BAA4B,GAAA,8BAAA,GAAA,UAAA,CAAA;AAJxC,IAAA,iBAAiB,CAAC;QACjB,eAAe,EAAE,8BAA4B,CAAC,eAAe;QAC7D,YAAY,EAAE,8BAA4B,CAAC,YAAY;KACxD,CAAC;AACW,CAAA,EAAA,4BAA4B,CAGxC;;ACrBY,MAAA,gBAAgB,GAAG,CAAC,KAAY,EAAE,aAAqB,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC,aAAa;;ICJvG,qBAKX;AALD,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,gBAAA,CAAA,GAAA,uCAAwD,CAAA;AACxD,IAAA,oBAAA,CAAA,0BAAA,CAAA,GAAA,iDAA4E,CAAA;AAC5E,IAAA,oBAAA,CAAA,eAAA,CAAA,GAAA,sCAAsD,CAAA;AACtD,IAAA,oBAAA,CAAA,sBAAA,CAAA,GAAA,6CAAoE,CAAA;AACtE,CAAC,EALW,oBAAoB,KAApB,oBAAoB,GAK/B,EAAA,CAAA,CAAA;;MCAY,oBAAoB,CAAA;IAG/B,WAA4B,CAAA,aAAqB,EAAkB,MAA6B,EAAA;QAApE,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QAAkB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAuB;AAFhF,QAAA,IAAA,CAAA,IAAI,GAAW,oBAAoB,CAAC,cAAc,CAAC;KAEiC;AACrG;;MCHY,8BAA8B,CAAA;IAGzC,WACkB,CAAA,aAAqB,EACrB,MAAkB,EAClB,IAAS,EACT,OAAgB,EAChB,eAAiC,EAAA;QAJjC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QAClB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;QACT,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAkB;AAPnC,QAAA,IAAA,CAAA,IAAI,GAAW,oBAAoB,CAAC,wBAAwB,CAAC;KAQzE;AACL;;MCKY,sBAAsB,CAAA;AACjC,IAAA,WAAA,CAAoB,KAAY,EAAA;QAAZ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;KAAI;AAE7B,IAAA,WAAW,CAAC,KAA6B,EAAA;AAC9C,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAwC,CAAC;AAClE,QAAA,CAAC,UAAU,EAAE,eAAe,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;YACnD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AACtH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC;KACb;;mHAVU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;AAcM,MAAM,qBAAqB,GAAG,CAAc,aAAqB,EAAE,MAA8B,GAAA,EAAE,WAAW,EAAE,IAAI,EAAE,KAAa;AACxI,IAAA,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9E,IAAA,OAAO,IAAI,CAAC;AACd;;ACxBA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AAUjC,MAAO,oCAAqC,SAAQ,cAAc,CAAA;AAOtE,IAAA,WAAA,CAAY,KAAY,EAAA;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;AAPE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QAEzD,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;AAIlC,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YACtG,IAAI,aAAa,GAAG,cAAc,CAAC;YACnC,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;AACb,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;AAClD,gBAAA,IAAI,SAAS,EAAE;oBACb,aAAa,GAAG,CAAC,aAAa,EAAE,aAAa,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxG,iBAAA;gBAED,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC;AACxF,aAAA;AAED,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;IAED,IAAa,aAAa,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC7C;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KACvC;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEpI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3E;;iIA1CU,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBjD,uOAGS,EDeG,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mFAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAK7D,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBARhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAC/B,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAGxD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uOAAA,EAAA,CAAA;4FAOtC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAqBO,aAAa,EAAA,CAAA;sBAAzB,KAAK;;;AEnCF,MAAO,+BAAgC,SAAQ,cAAc,CAAA;IAIjE,WAAY,CAAA,KAAY,EAAU,aAAkC,EAAA;QAClE,KAAK,CAAC,KAAK,CAAC,CAAC;QADmB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqB;QAF5D,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAI1B,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;KACxE;IAED,IAAa,sBAAsB,CAAC,MAAgB,EAAA;AAClD,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC9B,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;gBAC9G,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACxD,oBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,wBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACjC,wBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,qBAAA;AACF,iBAAA;AAAM,qBAAA;oBACL,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,wBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACjC,wBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;4HA3BU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gHAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAF/B,CAAC,mBAAmB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAErB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA,CAAA;gIAUc,sBAAsB,EAAA,CAAA;sBAAlC,KAAK;;;ACLF,MAAO,iCAAkC,SAAQ,cAAc,CAAA;AACnE,IAAA,WAAA,CAAY,KAAY,EAAA;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;KACd;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;KAC7D;;8HAPU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kHAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB9C,6JAGA,EDUY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAK7D,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAR7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAC3B,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAGxD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6JAAA,EAAA,CAAA;;;AEY3C,MAAO,oBAAqB,SAAQ,cAAc,CAAA;AAKtD,IAAA,WAAA,CAAY,KAAY,EAAA;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;AALE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,EAAE,CAAC,CAAC;QAE7C,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;AAKtC,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC9D,YAAA,MAAM,MAAM,GAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;gBACvD,GAAG;AACH,gBAAA,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;AAClB,aAAA,CAAC,CAAC,CAAC;AACJ,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;KACpE;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;QAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KAC/G;;iHA3BU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EC5BjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,m7EA4CqB,EDrBT,MAAA,EAAA,CAAA,qPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,mLAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAKtG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,wBAAwB,CAAC,EAGjG,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m7EAAA,EAAA,MAAA,EAAA,CAAA,qPAAA,CAAA,EAAA,CAAA;;;MElBpC,mBAAmB,CAAA;AAK9B,IAAA,WAAA,CAAoB,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAFxB,IAAgB,CAAA,gBAAA,GAAa,CAAC,oBAAoB,CAAC,aAAa,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;KAEjF;AAErC,IAAA,aAAa,CAAC,KAAY,EAAE,KAAY,EAAE,MAAc,EAAA;QAC7D,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,oBAAoB,CAAC,aAAa,EAAE;gBACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACtD,oBAAA,YAAY,EAAE,IAAI;AACnB,iBAAA,CAAC,CAAC;gBAEH,MAAM;AACP,aAAA;AAED,YAAA,KAAK,oBAAoB,CAAC,oBAAoB,EAAE;AAC9C,gBAAA,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;AACrB,gBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBAExB,MAAM;AACP,aAAA;AACF,SAAA;KACF;;gHAxBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;AA4BJ,MAAM,2BAA2B,GAAa;AACnD,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,mBAAmB;AAC7B,IAAA,KAAK,EAAE,IAAI;CACZ;;MC7BY,uBAAuB,CAAA;IAKlC,WACkD,CAAA,mBAAyC,EACjF,eAAqC,EAAA;QAArC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAsB;AAJ/B,QAAA,IAAA,CAAA,gBAAgB,GAAa,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAMjF,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,CAA6B,CAAC,mBAAmB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACpI;AAEM,IAAA,aAAa,CAAC,KAAY,EAAE,KAAY,EAAE,MAAc,EAAA;QAC7D,MAAM,oBAAoB,GAAG,MAA8B,CAAC;QAC5D,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC9E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAExF,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE;YAC5D,OAAO;AACR,SAAA;QAED,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;AACxC,YAAA,IAAI,EAAE,CAAC,KAAK,KAAI;AACd,gBAAA,KAAK,CAAC,cAAc,CAAC,IAAI,8BAA8B,CAAC,oBAAoB,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACvH,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE;oBACrC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AAC5D,iBAAA;aACF;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;gBACf,OAAO,CAAC,KAAK,CAAC,CAA4B,yBAAA,EAAA,oBAAoB,CAAC,aAAa,CAAG,CAAA,CAAA,EAAE,KAAK,CAAC,CAAC;AACxF,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE,wBAAwB,EAAE;AAC/C,oBAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5F,iBAAA;gBAED,KAAK,CAAC,cAAc,CAClB,IAAI,8BAA8B,CAAC,oBAAoB,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAClH,CAAC;aACH;AACF,SAAA,CAAC,CAAC;KACJ;;AAvCU,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAMxB,0BAA0B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHANzB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;0BAON,MAAM;2BAAC,0BAA0B,CAAA;;0BAAG,QAAQ;;AAoC1C,MAAM,+BAA+B,GAAa;AACvD,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,uBAAuB;AACjC,IAAA,KAAK,EAAE,IAAI;CACZ;;MC/CY,iBAAiB,CAAA;AAK5B,IAAA,WAAA,CAA4D,mBAAyC,EAAA;QAFrF,IAAgB,CAAA,gBAAA,GAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AAGhI,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,CAA6B,CAAC,mBAAmB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACpI;IAEM,WAAW,CAAC,KAAY,EAAE,MAAc,EAAA;QAC7C,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,oBAAoB,CAAC,cAAc;gBACtC,MAAM,oBAAoB,GAAG,MAA8B,CAAC;gBAC5D,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;gBAC9E,IAAI,CAAC,IAAI,EAAE;AACT,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AAED,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;gBACxF,IAAI,CAAC,QAAQ,EAAE;AACb,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;gBAED,IACE,CAAC,QAAQ,CAAC,sBAAsB;AAChC,oBAAA,oBAAoB,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI;AACjD,oBAAA,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI;AAC/B,oBAAA,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,KAAK;AAChC,oBAAA,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,QAAQ;oBACnC,CAAC,IAAI,CAAC,SAAS;AACf,oBAAA,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EACzF;oBACA,OAAO,qBAAqB,CAAC,KAAK,EAAE;AAClC,wBAAA,CAAC,oBAAoB,CAAC,aAAa,GAAG;AACpC,4BAAA,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE;AACpC,4BAAA,YAAY,EAAE;AACZ,gCAAA,MAAM,EAAE,CAAC,KAAK,KAAI;AAChB,oCAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAAE;AAC/F,wCAAA,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5C,qCAAA;AAED,oCAAA,OAAO,KAAK,CAAC;iCACd;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAC,CAAC;AACJ,iBAAA;gBAED,MAAM;YAER,KAAK,oBAAoB,CAAC,wBAAwB;gBAChD,MAAM,8BAA8B,GAAG,MAAwC,CAAC;gBAChF,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,8BAA8B,CAAC,aAAa,CAAC,EAAE;oBACpF,OAAO,qBAAqB,CAAC,KAAK,EAAE;AAClC,wBAAA,CAAC,8BAA8B,CAAC,aAAa,GAAG;AAC9C,4BAAA,MAAM,EAAE,EAAE,IAAI,EAAE,8BAA8B,CAAC,MAAM,EAAE;AACvD,4BAAA,IAAI,EAAE,EAAE,IAAI,EAAE,8BAA8B,CAAC,IAAI,EAAE;AACnD,4BAAA,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE;AAC/B,4BAAA,OAAO,EAAE,EAAE,IAAI,EAAE,8BAA8B,CAAC,OAAO,EAAE;AACzD,4BAAA,KAAK,EAAE,EAAE,IAAI,EAAE,8BAA8B,CAAC,eAAe,EAAE;AAChE,yBAAA;AACF,qBAAA,CAAC,CAAC;AACJ,iBAAA;gBAED,MAAM;AACT,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;;AApEU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAKR,0BAA0B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHALnC,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;0BAMI,MAAM;2BAAC,0BAA0B,CAAA;;0BAAG,QAAQ;;AAkEpD,MAAM,yBAAyB,GAAa;AACjD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,KAAK,EAAE,IAAI;CACZ;;MC5EY,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAoE,mBAAyC,EAAA;QAAzC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAsB;KAAI;AAE1G,IAAA,eAAe,CAAC,KAAY,EAAA;QACjC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,EAAE,MAAM,CAC5C,CAAC,CAAC,EAAE,QAAQ,KAAK,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAC9G,SAAS,CACV,CAAC;KACH;;AATU,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBACjB,0BAA0B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2HADnC,0BAA0B,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;0BAEI,MAAM;2BAAC,0BAA0B,CAAA;;0BAAG,QAAQ;;;ACDpD,MAAM,sBAAsB,GAAG,MAA2B;AAC/D,IAAA,OAAO,wBAAwB,CAAC;QAC9B,yBAAyB;QACzB,+BAA+B;QAC/B,2BAA2B;QAC3B,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,0BAA0B,EAAE,KAAK,EAAE,IAAI,EAAE;AACxF,KAAA,CAAC,CAAC;AACL;;ACfA;;AAEG;;MCMU,wBAAwB,GAAG,IAAI,cAAc,CAAmB,0BAA0B;;ICR3F,iBAKX;AALD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACX,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAK3B,EAAA,CAAA,CAAA;;ACGY,MAAA,oBAAoB,GAAG,CAAC,SAA2B,gBAAgB,CAAC,IAAI,MAAkB,EAAE,MAAM,EAAE;;;ACF1G,MAAM,0BAA0B,GAAG,CAAC,KAAY,KACrD,KAAK,CAAC,iCAAiC,CAAC,eAAe,EAA0B;AAE5E,MAAM,0BAA0B,GAAG,CAAC,KAAY,EAAE,OAA0C,KACjG,MAAM,CAAC,KAAK,EAAE;AACZ,IAAA,CAAC,iCAAiC,CAAC,eAAe,GAAG,OAAO;AAC7D,CAAA,EAAE;AAUQ,IAAA,iCAAiC,GAAvC,mCAAA,GAAA,MAAM,iCAAiC,CAAA;;AACrB,iCAAe,CAAA,eAAA,GAAG,yBAAyB,CAAC;AAC5C,iCAAA,CAAA,YAAY,GAAyB;AAC1D,IAAA,WAAW,EAAE,EAAE;CAChB,CAAC;AAJS,iCAAiC,GAAA,mCAAA,GAAA,UAAA,CAAA;AAJ7C,IAAA,iBAAiB,CAAC;QACjB,eAAe,EAAE,mCAAiC,CAAC,eAAe;QAClE,YAAY,EAAE,mCAAiC,CAAC,YAAY;KAC7D,CAAC;AACW,CAAA,EAAA,iCAAiC,CAK7C;;MCvBY,gBAAgB,GAAG,CAAC,KAAY,EAAE,EAAU,KACvD,0BAA0B,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,oBAAoB;;MCG9D,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CAAkE,iBAAqC,EAAA;QAArC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;KAAI;AAEpG,IAAA,eAAe,CAAC,KAAY,EAAA;QACjC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,MAAM,CAC1C,CAAC,CAAC,EAAE,MAAM,KAAK,0BAA0B,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3H,SAAS,CACV,CAAC;KACH;;AATU,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,kBACtB,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gIADjC,+BAA+B,EAAA,CAAA,CAAA;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;;0BAEI,MAAM;2BAAC,wBAAwB,CAAA;;0BAAG,QAAQ;;;MCA5C,iBAAiB,CAAA;AAG5B,IAAA,WAAA,CAAkE,iBAAqC,EAAA;QAArC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;QAFvF,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;AAG9C,QAAA,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;KAC3H;IAEM,WAAW,CAAC,KAAY,EAAE,MAAc,EAAA;AAC7C,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,gBAAgB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AACvI,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,mBAAmB,EAAE;gBAC9C,OAAO,0BAA0B,CAAC,KAAK,EAAE;AACvC,oBAAA,WAAW,EAAE;AACX,wBAAA,CAAC,MAAM,CAAC,EAAE,GAAG;AACX,4BAAA,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,CAAC,UAAU,EAAE;AAC9C,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CAAC;AACJ,aAAA;YAED,MAAM,2BAA2B,GAAG,MAAqC,CAAC;YAC1E,OAAO,0BAA0B,CAAC,KAAK,EAAE;AACvC,gBAAA,WAAW,EAAE;oBACX,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,2BAA2B,CAAC,UAAU,EAAE;AAC9D,iBAAA;AACF,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;;AA7BU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAGR,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAHjC,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;0BAII,MAAM;2BAAC,wBAAwB,CAAA;;0BAAG,QAAQ;;AA6BlD,MAAM,yBAAyB,GAAa;AACjD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,KAAK,EAAE,IAAI;CACZ;;ACxCM,MAAM,sBAAsB,GAAG,MAA2B;AAC/D,IAAA,OAAO,wBAAwB,CAAC;QAC9B,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,+BAA+B,EAAE,KAAK,EAAE,IAAI,EAAE;QAC5F,yBAAyB;AAC1B,KAAA,CAAC,CAAC;AACL;;ACRO,MAAM,qBAAqB,GAAW;;ACYvC,MAAO,wBAAyB,SAAQ,cAAc,CAAA;IAG1D,WAAY,CAAA,KAAY,EAAU,aAAkC,EAAA;QAClE,KAAK,CAAC,KAAK,CAAC,CAAC;QADmB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqB;AAElE,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;KACxE;IAED,IAA8B,YAAY,CAAC,KAAa,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACpF,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,UAAU,EAAE;AAChD,gBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AAClC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AAClC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;qHAjBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,SAAA,EAFxB,CAAC,mBAAmB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAErB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA,CAAA;gIAS+B,YAAY,EAAA,CAAA;sBAAzC,KAAK;uBAAC,iBAAiB,CAAA;;;MCnBb,4BAA4B,GAAG,CAAC,MAAwB,MAAgB;AACnF,IAAA,OAAO,EAAE,wBAAwB;AACjC,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,KAAK,EAAE,IAAI;AACZ,CAAA;;ICPW,0BAA4B;AAAxC,CAAA,UAAY,yBAAyB,EAAA;AAAE,CAAC,EAA5B,yBAAyB,KAAzB,yBAAyB,GAAG,EAAA,CAAA,CAAA;;MCG3B,2BAA2B,CAAA;IACtC,WAA4B,CAAA,IAAY,EAAkB,UAAsB,EAAA;QAApD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAkB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;AACrF;;ACLD;;AAEG;;ACFH;;AAEG;;;;"}
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/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/provide-ngssm-remote-call.ts","../../../projects/ngssm-remote-data/src/lib/ngssm-remote-call/ngssm-remote-call-routes.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/provide-ngssm-remote-call-config.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/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 { InjectionToken } 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","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';\n\nexport const selectRemoteData = (state: State, remoteDataKey: string) => selectRemoteDataState(state)[remoteDataKey];\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(public readonly remoteDataKey: string, public readonly params?: ReloadParams<TValue>) {}\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>(remoteDataKey: string, params: ReloadParams<TData> = { forceReload: true }): boolean => {\n inject(Store).dispatchAction(new LoadRemoteDataAction(remoteDataKey, params));\n return true;\n};\n","import { Component, ChangeDetectionStrategy, Input } 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 { BehaviorSubject, combineLatest, Observable } 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],\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 _remoteDataKey$ = new BehaviorSubject<string>('');\n private readonly _tooltipMessage$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n\n @Input() actionTypes: string[] = [];\n\n constructor(store: Store) {\n super(store);\n combineLatest([this.watch((s) => selectRemoteDataState(s)), this._remoteDataKey$]).subscribe((values) => {\n let tooltiMessage = 'Reload data.';\n let disabled = true;\n if (values[1]) {\n const timestamp = values[0][values[1]]?.timestamp;\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${datePipe.transform(timestamp, 'mediumTime')}`].join('\\n');\n }\n\n disabled = (values[0][values[1]]?.status ?? DataStatus.loading) === DataStatus.loading;\n }\n\n this._tooltipMessage$.next(tooltiMessage);\n this._disabled$.next(disabled);\n });\n }\n\n @Input() set remoteDataKey(value: string) {\n this._remoteDataKey$.next(value);\n }\n\n public get tooltipMessage$(): Observable<string> {\n return this._tooltipMessage$.asObservable();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public reload(): void {\n this.dispatchAction(new LoadRemoteDataAction(this._remoteDataKey$.getValue(), { forceReload: true, keepStoredGetterParams: true }));\n\n (this.actionTypes ?? []).forEach((type) => this.dispatchActionType(type));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"(tooltipMessage$ | async) ?? 'Reload'\"\n [disabled]=\"disabled$ | async\">\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n</button>","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(store: Store, private overlyBuilder: NgssmOverlayBuilder) {\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, Provider } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } 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\nexport const cachesDisplayEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: CachesDisplayEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Effect, Store, State, Action, NGSSM_EFFECT } 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 ) {\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 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\nexport const remoteDataLoadingEffectProvider: Provider = {\n provide: NGSSM_EFFECT,\n useClass: RemoteDataLoadingEffect,\n multi: true\n};\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, NGSSM_REDUCER, 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\nexport const remoteDataReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteDataReducer,\n multi: true\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 } from 'ngssm-store';\n\nimport { cachesDisplayEffectProvider, remoteDataLoadingEffectProvider } from './effects';\nimport { remoteDataReducerProvider } from './reducers/remote-data.reducer';\nimport { RemoteDataStateInitializer } from './remote-data-state-initializer';\n\nexport const provideNgssmRemoteData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n remoteDataReducerProvider,\n remoteDataLoadingEffectProvider,\n cachesDisplayEffectProvider,\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}\n\nexport const getDefaultRemoteCall = (status: RemoteCallStatus = RemoteCallStatus.none): RemoteCall => ({ status });\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, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\n\nimport { NgssmRemoteCallResultAction } from '../actions';\nimport { NGSSM_REMOTE_CALL_CONFIG, RemoteCallConfig, RemoteCallStatus } 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]: {\n status: { $set: RemoteCallStatus.inProgress }\n }\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\nexport const remoteCallReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: RemoteCallReducer,\n multi: true\n};\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { NGSSM_STATE_INITIALIZER } from 'ngssm-store';\nimport { NgssmRemoteCallStateInitializer } from './ngssm-remote-call-state-initializer';\nimport { remoteCallReducerProvider } from './reducers';\n\nexport const provideNgssmRemoteCall = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n { provide: NGSSM_STATE_INITIALIZER, useClass: NgssmRemoteCallStateInitializer, multi: true },\n remoteCallReducerProvider\n ]);\n};\n","import { Routes } from '@angular/router';\n\nexport const ngssmRemoteCallRoutes: Routes = [];\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(store: Store, private overlyBuilder: NgssmOverlayBuilder) {\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 { 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","export enum NgssmRemoteCallActionType {}\n","import { Action } from 'ngssm-store';\nimport { RemoteCall } from '../model';\n\nexport class NgssmRemoteCallResultAction implements Action {\n constructor(public readonly type: string, public readonly remoteCall: RemoteCall) {}\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i3","i5","i1"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export interface RemoteCallConfig {
3
3
  id: string;
4
- triggeredActionType: string;
5
- resultActionType: string;
4
+ triggeredActionTypes: string[];
5
+ resultActionTypes: string[];
6
6
  }
7
7
  export declare const NGSSM_REMOTE_CALL_CONFIG: InjectionToken<RemoteCallConfig>;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "ngssm-remote-data",
3
- "version": "15.3.2",
3
+ "version": "15.3.3",
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": ">15.0.0",
9
9
  "@angular/core": ">=15.0.0",
10
- "ngssm-store": "15.3.2"
10
+ "ngssm-store": "15.3.3"
11
11
  },
12
12
  "dependencies": {
13
13
  "tslib": "^2.3.0"