ngssm-data 17.1.0 → 17.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/esm2022/lib/ngssm-data/actions/index.mjs +3 -1
  2. package/esm2022/lib/ngssm-data/actions/ngssm-data-action-type.mjs +3 -1
  3. package/esm2022/lib/ngssm-data/actions/ngssm-load-data-source-additional-property-value.action.mjs +10 -0
  4. package/esm2022/lib/ngssm-data/actions/ngssm-set-data-source-additional-property-value.action.mjs +11 -0
  5. package/esm2022/lib/ngssm-data/components/is-ngssm-data-source-value-status.pipe.mjs +3 -3
  6. package/esm2022/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.mjs +3 -3
  7. package/esm2022/lib/ngssm-data/effects/data-loading.effect.mjs +49 -25
  8. package/esm2022/lib/ngssm-data/model/ngssm-data-source-value.mjs +1 -1
  9. package/esm2022/lib/ngssm-data/model/ngssm-data-source.mjs +1 -1
  10. package/esm2022/lib/ngssm-data/provide-ngssm-data.mjs +3 -3
  11. package/esm2022/lib/ngssm-data/reducers/data-source-value.reducer.mjs +53 -7
  12. package/esm2022/lib/ngssm-data/reducers/data-sources-registration.reducer.mjs +6 -5
  13. package/esm2022/lib/ngssm-data/state/selectors.mjs +6 -1
  14. package/fesm2022/ngssm-data.mjs +138 -43
  15. package/fesm2022/ngssm-data.mjs.map +1 -1
  16. package/lib/ngssm-data/actions/index.d.ts +2 -0
  17. package/lib/ngssm-data/actions/ngssm-data-action-type.d.ts +3 -1
  18. package/lib/ngssm-data/actions/ngssm-load-data-source-additional-property-value.action.d.ts +6 -0
  19. package/lib/ngssm-data/actions/ngssm-set-data-source-additional-property-value.action.d.ts +8 -0
  20. package/lib/ngssm-data/model/ngssm-data-source-value.d.ts +8 -0
  21. package/lib/ngssm-data/model/ngssm-data-source.d.ts +1 -1
  22. package/lib/ngssm-data/state/selectors.d.ts +2 -1
  23. package/package.json +1 -1
@@ -5,4 +5,6 @@ export * from './ngssm-set-data-source-value.action';
5
5
  export * from './ngssm-register-data-sources.action';
6
6
  export * from './ngssm-clear-data-source-value.action';
7
7
  export * from './ngssm-set-data-source-parameter.action';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1kYXRhL3NyYy9saWIvbmdzc20tZGF0YS9hY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMENBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25nc3NtLWRhdGEtYWN0aW9uLXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1sb2FkLWRhdGEtc291cmNlLXZhbHVlLmFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL25nc3NtLXNldC1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1yZWdpc3Rlci1kYXRhLXNvdXJjZXMuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tY2xlYXItZGF0YS1zb3VyY2UtdmFsdWUuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tc2V0LWRhdGEtc291cmNlLXBhcmFtZXRlci5hY3Rpb24nO1xuIl19
8
+ export * from './ngssm-load-data-source-additional-property-value.action';
9
+ export * from './ngssm-set-data-source-additional-property-value.action';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1kYXRhL3NyYy9saWIvbmdzc20tZGF0YS9hY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDBEQUEwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1kYXRhLWFjdGlvbi10eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tZGF0YS1zb3VyY2UtdmFsdWUuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tbG9hZC1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1zZXQtZGF0YS1zb3VyY2UtdmFsdWUuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tcmVnaXN0ZXItZGF0YS1zb3VyY2VzLmFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL25nc3NtLWNsZWFyLWRhdGEtc291cmNlLXZhbHVlLmFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL25nc3NtLXNldC1kYXRhLXNvdXJjZS1wYXJhbWV0ZXIuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tbG9hZC1kYXRhLXNvdXJjZS1hZGRpdGlvbmFsLXByb3BlcnR5LXZhbHVlLmFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL25nc3NtLXNldC1kYXRhLXNvdXJjZS1hZGRpdGlvbmFsLXByb3BlcnR5LXZhbHVlLmFjdGlvbic7XG4iXX0=
@@ -5,5 +5,7 @@ export var NgssmDataActionType;
5
5
  NgssmDataActionType["setDataSourceParameter"] = "[NgssmDataActionType] setDataSourceParameter";
6
6
  NgssmDataActionType["clearDataSourceValue"] = "[NgssmDataActionType] clearDataSourceValue";
7
7
  NgssmDataActionType["setDataSourceValue"] = "[NgssmDataActionType] setDataSourceValue";
8
+ NgssmDataActionType["loadDataSourceAdditionalPropertyValue"] = "[NgssmDataActionType] loadDataSourceAdditionalPropertyValue";
9
+ NgssmDataActionType["setDataSourceAdditionalPropertyValue"] = "[NgssmDataActionType] setDataSourceAdditionalPropertyValue";
8
10
  })(NgssmDataActionType || (NgssmDataActionType = {}));
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZGF0YS1hY3Rpb24tdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWRhdGEvc3JjL2xpYi9uZ3NzbS1kYXRhL2FjdGlvbnMvbmdzc20tZGF0YS1hY3Rpb24tdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxtQkFNWDtBQU5ELFdBQVksbUJBQW1CO0lBQzdCLHdGQUFpRSxDQUFBO0lBQ2pFLHdGQUFpRSxDQUFBO0lBQ2pFLDhGQUF1RSxDQUFBO0lBQ3ZFLDBGQUFtRSxDQUFBO0lBQ25FLHNGQUErRCxDQUFBO0FBQ2pFLENBQUMsRUFOVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBTTlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTmdzc21EYXRhQWN0aW9uVHlwZSB7XG4gIHJlZ2lzdGVyRGF0YVNvdXJjZXMgPSAnW05nc3NtRGF0YUFjdGlvblR5cGVdIHJlZ2lzdGVyRGF0YVNvdXJjZXMnLFxuICBsb2FkRGF0YVNvdXJjZVZhbHVlID0gJ1tOZ3NzbURhdGFBY3Rpb25UeXBlXSBsb2FkRGF0YVNvdXJjZVZhbHVlJyxcbiAgc2V0RGF0YVNvdXJjZVBhcmFtZXRlciA9ICdbTmdzc21EYXRhQWN0aW9uVHlwZV0gc2V0RGF0YVNvdXJjZVBhcmFtZXRlcicsXG4gIGNsZWFyRGF0YVNvdXJjZVZhbHVlID0gJ1tOZ3NzbURhdGFBY3Rpb25UeXBlXSBjbGVhckRhdGFTb3VyY2VWYWx1ZScsXG4gIHNldERhdGFTb3VyY2VWYWx1ZSA9ICdbTmdzc21EYXRhQWN0aW9uVHlwZV0gc2V0RGF0YVNvdXJjZVZhbHVlJ1xufVxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZGF0YS1hY3Rpb24tdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWRhdGEvc3JjL2xpYi9uZ3NzbS1kYXRhL2FjdGlvbnMvbmdzc20tZGF0YS1hY3Rpb24tdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxtQkFRWDtBQVJELFdBQVksbUJBQW1CO0lBQzdCLHdGQUFpRSxDQUFBO0lBQ2pFLHdGQUFpRSxDQUFBO0lBQ2pFLDhGQUF1RSxDQUFBO0lBQ3ZFLDBGQUFtRSxDQUFBO0lBQ25FLHNGQUErRCxDQUFBO0lBQy9ELDRIQUFxRyxDQUFBO0lBQ3JHLDBIQUFtRyxDQUFBO0FBQ3JHLENBQUMsRUFSVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBUTlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTmdzc21EYXRhQWN0aW9uVHlwZSB7XG4gIHJlZ2lzdGVyRGF0YVNvdXJjZXMgPSAnW05nc3NtRGF0YUFjdGlvblR5cGVdIHJlZ2lzdGVyRGF0YVNvdXJjZXMnLFxuICBsb2FkRGF0YVNvdXJjZVZhbHVlID0gJ1tOZ3NzbURhdGFBY3Rpb25UeXBlXSBsb2FkRGF0YVNvdXJjZVZhbHVlJyxcbiAgc2V0RGF0YVNvdXJjZVBhcmFtZXRlciA9ICdbTmdzc21EYXRhQWN0aW9uVHlwZV0gc2V0RGF0YVNvdXJjZVBhcmFtZXRlcicsXG4gIGNsZWFyRGF0YVNvdXJjZVZhbHVlID0gJ1tOZ3NzbURhdGFBY3Rpb25UeXBlXSBjbGVhckRhdGFTb3VyY2VWYWx1ZScsXG4gIHNldERhdGFTb3VyY2VWYWx1ZSA9ICdbTmdzc21EYXRhQWN0aW9uVHlwZV0gc2V0RGF0YVNvdXJjZVZhbHVlJyxcbiAgbG9hZERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZSA9ICdbTmdzc21EYXRhQWN0aW9uVHlwZV0gbG9hZERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZScsXG4gIHNldERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZSA9ICdbTmdzc21EYXRhQWN0aW9uVHlwZV0gc2V0RGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlJ1xufVxuIl19
@@ -0,0 +1,10 @@
1
+ import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';
2
+ import { NgssmDataActionType } from './ngssm-data-action-type';
3
+ export class NgssmLoadDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {
4
+ constructor(key, property, forceReload) {
5
+ super(NgssmDataActionType.loadDataSourceAdditionalPropertyValue, key);
6
+ this.property = property;
7
+ this.forceReload = forceReload;
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tbG9hZC1kYXRhLXNvdXJjZS1hZGRpdGlvbmFsLXByb3BlcnR5LXZhbHVlLmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWRhdGEvc3JjL2xpYi9uZ3NzbS1kYXRhL2FjdGlvbnMvbmdzc20tbG9hZC1kYXRhLXNvdXJjZS1hZGRpdGlvbmFsLXByb3BlcnR5LXZhbHVlLmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRCxNQUFNLE9BQU8sZ0RBQWlELFNBQVEsMEJBQTBCO0lBQzlGLFlBQ0UsR0FBVyxFQUNLLFFBQWdCLEVBQ2hCLFdBQXFCO1FBRXJDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUh0RCxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFVO0lBR3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nc3NtRGF0YVNvdXJjZVZhbHVlQWN0aW9uIH0gZnJvbSAnLi9uZ3NzbS1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24nO1xuaW1wb3J0IHsgTmdzc21EYXRhQWN0aW9uVHlwZSB9IGZyb20gJy4vbmdzc20tZGF0YS1hY3Rpb24tdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBOZ3NzbUxvYWREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24gZXh0ZW5kcyBOZ3NzbURhdGFTb3VyY2VWYWx1ZUFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGtleTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBwcm9wZXJ0eTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBmb3JjZVJlbG9hZD86IGJvb2xlYW5cbiAgKSB7XG4gICAgc3VwZXIoTmdzc21EYXRhQWN0aW9uVHlwZS5sb2FkRGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlLCBrZXkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';
2
+ import { NgssmDataActionType } from './ngssm-data-action-type';
3
+ export class NgssmSetDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {
4
+ constructor(key, property, status, value) {
5
+ super(NgssmDataActionType.setDataSourceAdditionalPropertyValue, key);
6
+ this.property = property;
7
+ this.status = status;
8
+ this.value = value;
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tc2V0LWRhdGEtc291cmNlLWFkZGl0aW9uYWwtcHJvcGVydHktdmFsdWUuYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tZGF0YS9zcmMvbGliL25nc3NtLWRhdGEvYWN0aW9ucy9uZ3NzbS1zZXQtZGF0YS1zb3VyY2UtYWRkaXRpb25hbC1wcm9wZXJ0eS12YWx1ZS5hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsTUFBTSxPQUFPLCtDQUFpRSxTQUFRLDBCQUEwQjtJQUM5RyxZQUNFLEdBQVcsRUFDSyxRQUFnQixFQUNoQixNQUFrQyxFQUNsQyxLQUFpQjtRQUVqQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFKckQsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFZO0lBR25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nc3NtRGF0YVNvdXJjZVZhbHVlQWN0aW9uIH0gZnJvbSAnLi9uZ3NzbS1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24nO1xuaW1wb3J0IHsgTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyBOZ3NzbURhdGFBY3Rpb25UeXBlIH0gZnJvbSAnLi9uZ3NzbS1kYXRhLWFjdGlvbi10eXBlJztcblxuZXhwb3J0IGNsYXNzIE5nc3NtU2V0RGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlQWN0aW9uPFRQcm9wZXJ0eSA9IGFueT4gZXh0ZW5kcyBOZ3NzbURhdGFTb3VyY2VWYWx1ZUFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGtleTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBwcm9wZXJ0eTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXM6IE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzLFxuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZT86IFRQcm9wZXJ0eVxuICApIHtcbiAgICBzdXBlcihOZ3NzbURhdGFBY3Rpb25UeXBlLnNldERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZSwga2V5KTtcbiAgfVxufVxuIl19
@@ -8,10 +8,10 @@ export class IsNgssmDataSourceValueStatusPipe {
8
8
  const itemStatus = selectNgssmDataSourceValue(value, key).status;
9
9
  return expectedStatuses.includes(itemStatus);
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, isStandalone: true, name: "isNgssmDataSourceValueStatus" }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, isStandalone: true, name: "isNgssmDataSourceValueStatus" }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, decorators: [{
15
15
  type: Pipe,
16
16
  args: [{
17
17
  name: 'isNgssmDataSourceValueStatus',
@@ -51,10 +51,10 @@ export class NgssmDataReloadButtonComponent extends NgSsmComponent {
51
51
  reload() {
52
52
  this._dataSourceKeys.forEach((key) => this.dispatchAction(new NgssmLoadDataSourceValueAction(key, true)));
53
53
  }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: NgssmDataReloadButtonComponent, isStandalone: true, selector: "ngssm-data-reload-button", inputs: { dataSourceKeys: "dataSourceKeys" }, usesInheritance: true, ngImport: i0, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n }\n\n</button>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: NgssmDataReloadButtonComponent, isStandalone: true, selector: "ngssm-data-reload-button", inputs: { dataSourceKeys: "dataSourceKeys" }, usesInheritance: true, ngImport: i0, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n }\n\n</button>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
56
56
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataReloadButtonComponent, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataReloadButtonComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'ngssm-data-reload-button', standalone: true, imports: [CommonModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n }\n\n</button>" }]
60
60
  }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { dataSourceKeys: [{
@@ -1,5 +1,5 @@
1
1
  import { Injectable, runInInjectionContext } from '@angular/core';
2
- import { NgssmDataActionType, NgssmSetDataSourceValueAction } from '../actions';
2
+ import { NgssmDataActionType, NgssmSetDataSourceAdditionalPropertyValueAction, NgssmSetDataSourceValueAction } from '../actions';
3
3
  import { selectNgssmDataState } from '../state';
4
4
  import { NgssmDataSourceValueStatus } from '../model';
5
5
  import * as i0 from "@angular/core";
@@ -8,36 +8,60 @@ export class DataLoadingEffect {
8
8
  constructor(logger, injector) {
9
9
  this.logger = logger;
10
10
  this.injector = injector;
11
- this.processedActions = [NgssmDataActionType.loadDataSourceValue];
11
+ this.processedActions = [
12
+ NgssmDataActionType.loadDataSourceValue,
13
+ NgssmDataActionType.loadDataSourceAdditionalPropertyValue
14
+ ];
12
15
  }
13
16
  processAction(store, state, action) {
14
- if (action.type === NgssmDataActionType.loadDataSourceValue) {
15
- const key = action.key;
16
- const dataSource = selectNgssmDataState(state).dataSources[key];
17
- if (!dataSource) {
18
- this.logger.error(`No data source setup for key '${key}'`);
19
- return;
20
- }
21
- const dataSourceValue = selectNgssmDataState(state).dataSourceValues[key];
22
- if (dataSourceValue?.status !== NgssmDataSourceValueStatus.loading) {
23
- this.logger.information(`Data source value for '${key}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`);
24
- return;
17
+ const key = action.key;
18
+ const dataSource = selectNgssmDataState(state).dataSources[key];
19
+ if (!dataSource) {
20
+ this.logger.error(`No data source setup for key '${key}'`);
21
+ return;
22
+ }
23
+ const dataSourceValue = selectNgssmDataState(state).dataSourceValues[key];
24
+ switch (action.type) {
25
+ case NgssmDataActionType.loadDataSourceValue: {
26
+ if (dataSourceValue?.status !== NgssmDataSourceValueStatus.loading) {
27
+ this.logger.information(`Data source value for '${key}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`);
28
+ return;
29
+ }
30
+ runInInjectionContext(this.injector, () => {
31
+ dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({
32
+ next: (value) => store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),
33
+ error: (error) => {
34
+ this.logger.error(`Unable to load data for '${key}'`, error);
35
+ store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.error));
36
+ }
37
+ });
38
+ });
39
+ break;
25
40
  }
26
- runInInjectionContext(this.injector, () => {
27
- dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({
28
- next: (value) => store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),
29
- error: (error) => {
30
- this.logger.error(`Unable to load data for '${key}'`, error);
31
- store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.error));
32
- }
41
+ case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {
42
+ const ngssmLoadDataSourceAdditionalPropertyValueAction = action;
43
+ const property = ngssmLoadDataSourceAdditionalPropertyValueAction.property;
44
+ if (dataSourceValue.additionalProperties[property]?.status !== NgssmDataSourceValueStatus.loading) {
45
+ this.logger.information(`Data source additional property value for '${key}' and property '${property}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`);
46
+ return;
47
+ }
48
+ runInInjectionContext(this.injector, () => {
49
+ dataSource.dataLoadingFunc(state, dataSourceValue.parameter, property).subscribe({
50
+ next: (value) => store.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.loaded, value)),
51
+ error: (error) => {
52
+ this.logger.error(`Unable to load data for '${key}' and property '${property}'`, error);
53
+ store.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.error));
54
+ }
55
+ });
33
56
  });
34
- });
57
+ break;
58
+ }
35
59
  }
36
60
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataLoadingEffect, deps: [{ token: i1.Logger }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataLoadingEffect }); }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataLoadingEffect, deps: [{ token: i1.Logger }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
62
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataLoadingEffect }); }
39
63
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataLoadingEffect, decorators: [{
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataLoadingEffect, decorators: [{
41
65
  type: Injectable
42
66
  }], ctorParameters: () => [{ type: i1.Logger }, { type: i0.EnvironmentInjector }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2FkaW5nLmVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWRhdGEvc3JjL2xpYi9uZ3NzbS1kYXRhL2VmZmVjdHMvZGF0YS1sb2FkaW5nLmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl2RixPQUFPLEVBQUUsbUJBQW1CLEVBQThCLDZCQUE2QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUd0RCxNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBQ1UsTUFBYyxFQUNkLFFBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUp2QixxQkFBZ0IsR0FBYSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFLcEYsQ0FBQztJQUVHLGFBQWEsQ0FBQyxLQUFZLEVBQUUsS0FBWSxFQUFFLE1BQWM7UUFDN0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDNUQsTUFBTSxHQUFHLEdBQUksTUFBcUMsQ0FBQyxHQUFHLENBQUM7WUFDdkQsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQzNELE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUUsSUFBSSxlQUFlLEVBQUUsTUFBTSxLQUFLLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDckIsMEJBQTBCLEdBQUcsZ0JBQWdCLDBCQUEwQixDQUFDLE9BQU8sY0FBYyxlQUFlLEVBQUUsTUFBTSxHQUFHLENBQ3hILENBQUM7Z0JBQ0YsT0FBTztZQUNULENBQUM7WUFFRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDeEMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDckUsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksNkJBQTZCLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDdkgsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUM3RCxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksNkJBQTZCLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ2pHLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs4R0FuQ1UsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RhYmxlLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRWZmZWN0LCBTdG9yZSwgU3RhdGUsIEFjdGlvbiwgTG9nZ2VyIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBOZ3NzbURhdGFBY3Rpb25UeXBlLCBOZ3NzbURhdGFTb3VyY2VWYWx1ZUFjdGlvbiwgTmdzc21TZXREYXRhU291cmNlVmFsdWVBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IHNlbGVjdE5nc3NtRGF0YVN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMgfSBmcm9tICcuLi9tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhTG9hZGluZ0VmZmVjdCBpbXBsZW1lbnRzIEVmZmVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtOZ3NzbURhdGFBY3Rpb25UeXBlLmxvYWREYXRhU291cmNlVmFsdWVdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvclxuICApIHt9XG5cbiAgcHVibGljIHByb2Nlc3NBY3Rpb24oc3RvcmU6IFN0b3JlLCBzdGF0ZTogU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKGFjdGlvbi50eXBlID09PSBOZ3NzbURhdGFBY3Rpb25UeXBlLmxvYWREYXRhU291cmNlVmFsdWUpIHtcbiAgICAgIGNvbnN0IGtleSA9IChhY3Rpb24gYXMgTmdzc21EYXRhU291cmNlVmFsdWVBY3Rpb24pLmtleTtcbiAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZXNba2V5XTtcbiAgICAgIGlmICghZGF0YVNvdXJjZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgTm8gZGF0YSBzb3VyY2Ugc2V0dXAgZm9yIGtleSAnJHtrZXl9J2ApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFTb3VyY2VWYWx1ZSA9IHNlbGVjdE5nc3NtRGF0YVN0YXRlKHN0YXRlKS5kYXRhU291cmNlVmFsdWVzW2tleV07XG4gICAgICBpZiAoZGF0YVNvdXJjZVZhbHVlPy5zdGF0dXMgIT09IE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzLmxvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mb3JtYXRpb24oXG4gICAgICAgICAgYERhdGEgc291cmNlIHZhbHVlIGZvciAnJHtrZXl9JyBpcyBub3QgaW4gJyR7Tmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMubG9hZGluZ30nIHN0YXR1czogJyR7ZGF0YVNvdXJjZVZhbHVlPy5zdGF0dXN9J2BcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICBkYXRhU291cmNlLmRhdGFMb2FkaW5nRnVuYyhzdGF0ZSwgZGF0YVNvdXJjZVZhbHVlLnBhcmFtZXRlcikuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAodmFsdWUpID0+IHN0b3JlLmRpc3BhdGNoQWN0aW9uKG5ldyBOZ3NzbVNldERhdGFTb3VyY2VWYWx1ZUFjdGlvbihrZXksIE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzLmxvYWRlZCwgdmFsdWUpKSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgVW5hYmxlIHRvIGxvYWQgZGF0YSBmb3IgJyR7a2V5fSdgLCBlcnJvcik7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaEFjdGlvbihuZXcgTmdzc21TZXREYXRhU291cmNlVmFsdWVBY3Rpb24oa2V5LCBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5lcnJvcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2FkaW5nLmVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWRhdGEvc3JjL2xpYi9uZ3NzbS1kYXRhL2VmZmVjdHMvZGF0YS1sb2FkaW5nLmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl2RixPQUFPLEVBQ0wsbUJBQW1CLEVBR25CLCtDQUErQyxFQUMvQyw2QkFBNkIsRUFDOUIsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBR3RELE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFDVSxNQUFjLEVBQ2QsUUFBNkI7UUFEN0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBUHZCLHFCQUFnQixHQUFhO1lBQzNDLG1CQUFtQixDQUFDLG1CQUFtQjtZQUN2QyxtQkFBbUIsQ0FBQyxxQ0FBcUM7U0FDMUQsQ0FBQztJQUtDLENBQUM7SUFFRyxhQUFhLENBQUMsS0FBWSxFQUFFLEtBQVksRUFBRSxNQUFjO1FBQzdELE1BQU0sR0FBRyxHQUFJLE1BQXFDLENBQUMsR0FBRyxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDM0QsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMs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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdGFibGUsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFZmZlY3QsIFN0b3JlLCBTdGF0ZSwgQWN0aW9uLCBMb2dnZXIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7XG4gIE5nc3NtRGF0YUFjdGlvblR5cGUsXG4gIE5nc3NtRGF0YVNvdXJjZVZhbHVlQWN0aW9uLFxuICBOZ3NzbUxvYWREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24sXG4gIE5nc3NtU2V0RGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlQWN0aW9uLFxuICBOZ3NzbVNldERhdGFTb3VyY2VWYWx1ZUFjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IHNlbGVjdE5nc3NtRGF0YVN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMgfSBmcm9tICcuLi9tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhTG9hZGluZ0VmZmVjdCBpbXBsZW1lbnRzIEVmZmVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtcbiAgICBOZ3NzbURhdGFBY3Rpb25UeXBlLmxvYWREYXRhU291cmNlVmFsdWUsXG4gICAgTmdzc21EYXRhQWN0aW9uVHlwZS5sb2FkRGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlXG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICBwcml2YXRlIGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yXG4gICkge31cblxuICBwdWJsaWMgcHJvY2Vzc0FjdGlvbihzdG9yZTogU3RvcmUsIHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSAoYWN0aW9uIGFzIE5nc3NtRGF0YVNvdXJjZVZhbHVlQWN0aW9uKS5rZXk7XG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IHNlbGVjdE5nc3NtRGF0YVN0YXRlKHN0YXRlKS5kYXRhU291cmNlc1trZXldO1xuICAgIGlmICghZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYE5vIGRhdGEgc291cmNlIHNldHVwIGZvciBrZXkgJyR7a2V5fSdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhU291cmNlVmFsdWUgPSBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZVZhbHVlc1trZXldO1xuXG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBOZ3NzbURhdGFBY3Rpb25UeXBlLmxvYWREYXRhU291cmNlVmFsdWU6IHtcbiAgICAgICAgaWYgKGRhdGFTb3VyY2VWYWx1ZT8uc3RhdHVzICE9PSBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5sb2FkaW5nKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mb3JtYXRpb24oXG4gICAgICAgICAgICBgRGF0YSBzb3VyY2UgdmFsdWUgZm9yICcke2tleX0nIGlzIG5vdCBpbiAnJHtOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5sb2FkaW5nfScgc3RhdHVzOiAnJHtkYXRhU291cmNlVmFsdWU/LnN0YXR1c30nYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICBkYXRhU291cmNlLmRhdGFMb2FkaW5nRnVuYyhzdGF0ZSwgZGF0YVNvdXJjZVZhbHVlLnBhcmFtZXRlcikuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6ICh2YWx1ZSkgPT4gc3RvcmUuZGlzcGF0Y2hBY3Rpb24obmV3IE5nc3NtU2V0RGF0YVNvdXJjZVZhbHVlQWN0aW9uKGtleSwgTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMubG9hZGVkLCB2YWx1ZSkpLFxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgVW5hYmxlIHRvIGxvYWQgZGF0YSBmb3IgJyR7a2V5fSdgLCBlcnJvcik7XG4gICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoQWN0aW9uKG5ldyBOZ3NzbVNldERhdGFTb3VyY2VWYWx1ZUFjdGlvbihrZXksIE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzLmVycm9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIE5nc3NtRGF0YUFjdGlvblR5cGUubG9hZERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZToge1xuICAgICAgICBjb25zdCBuZ3NzbUxvYWREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24gPSBhY3Rpb24gYXMgTmdzc21Mb2FkRGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlQWN0aW9uO1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IG5nc3NtTG9hZERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZUFjdGlvbi5wcm9wZXJ0eTtcbiAgICAgICAgaWYgKGRhdGFTb3VyY2VWYWx1ZS5hZGRpdGlvbmFsUHJvcGVydGllc1twcm9wZXJ0eV0/LnN0YXR1cyAhPT0gTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMubG9hZGluZykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKFxuICAgICAgICAgICAgYERhdGEgc291cmNlIGFkZGl0aW9uYWwgcHJvcGVydHkgdmFsdWUgZm9yICcke2tleX0nIGFuZCBwcm9wZXJ0eSAnJHtwcm9wZXJ0eX0nIGlzIG5vdCBpbiAnJHtOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5sb2FkaW5nfScgc3RhdHVzOiAnJHtkYXRhU291cmNlVmFsdWU/LnN0YXR1c30nYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICBkYXRhU291cmNlLmRhdGFMb2FkaW5nRnVuYyhzdGF0ZSwgZGF0YVNvdXJjZVZhbHVlLnBhcmFtZXRlciwgcHJvcGVydHkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAodmFsdWUpID0+XG4gICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoQWN0aW9uKFxuICAgICAgICAgICAgICAgIG5ldyBOZ3NzbVNldERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZUFjdGlvbihrZXksIHByb3BlcnR5LCBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5sb2FkZWQsIHZhbHVlKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgVW5hYmxlIHRvIGxvYWQgZGF0YSBmb3IgJyR7a2V5fScgYW5kIHByb3BlcnR5ICcke3Byb3BlcnR5fSdgLCBlcnJvcik7XG4gICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoQWN0aW9uKG5ldyBOZ3NzbVNldERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZUFjdGlvbihrZXksIHByb3BlcnR5LCBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5lcnJvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -6,4 +6,4 @@ export var NgssmDataSourceValueStatus;
6
6
  NgssmDataSourceValueStatus["loaded"] = "loaded";
7
7
  NgssmDataSourceValueStatus["error"] = "error";
8
8
  })(NgssmDataSourceValueStatus || (NgssmDataSourceValueStatus = {}));
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZGF0YS1zb3VyY2UtdmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1kYXRhL3NyYy9saWIvbmdzc20tZGF0YS9tb2RlbC9uZ3NzbS1kYXRhLXNvdXJjZS12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSwwQkFNWDtBQU5ELFdBQVksMEJBQTBCO0lBQ3BDLDJDQUFhLENBQUE7SUFDYiw2REFBK0IsQ0FBQTtJQUMvQixpREFBbUIsQ0FBQTtJQUNuQiwrQ0FBaUIsQ0FBQTtJQUNqQiw2Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBTXJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5cbmV4cG9ydCBlbnVtIE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzIHtcbiAgbm9uZSA9ICdub25lJyxcbiAgbm90UmVnaXN0ZXJlZCA9ICdub3RSZWdpc3RlcmVkJyxcbiAgbG9hZGluZyA9ICdsb2FkaW5nJyxcbiAgbG9hZGVkID0gJ2xvYWRlZCcsXG4gIGVycm9yID0gJ2Vycm9yJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5nc3NtRGF0YVNvdXJjZVZhbHVlPFREYXRhID0gYW55LCBUUGFyYW1ldGVyID0gYW55PiB7XG4gIHN0YXR1czogTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXM7XG4gIHZhbHVlPzogVERhdGE7XG4gIHBhcmFtZXRlcj86IFRQYXJhbWV0ZXI7XG4gIGxhc3RMb2FkaW5nRGF0ZT86IERhdGVUaW1lO1xuICBkYXRhTGlmZXRpbWVJblNlY29uZHM/OiBudW1iZXI7XG59XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZGF0YS1zb3VyY2UtdmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1kYXRhL3NyYy9saWIvbmdzc20tZGF0YS9tb2RlbC9uZ3NzbS1kYXRhLXNvdXJjZS12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSwwQkFNWDtBQU5ELFdBQVksMEJBQTBCO0lBQ3BDLDJDQUFhLENBQUE7SUFDYiw2REFBK0IsQ0FBQTtJQUMvQixpREFBbUIsQ0FBQTtJQUNuQiwrQ0FBaUIsQ0FBQTtJQUNqQiw2Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBTXJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5cbmV4cG9ydCBlbnVtIE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzIHtcbiAgbm9uZSA9ICdub25lJyxcbiAgbm90UmVnaXN0ZXJlZCA9ICdub3RSZWdpc3RlcmVkJyxcbiAgbG9hZGluZyA9ICdsb2FkaW5nJyxcbiAgbG9hZGVkID0gJ2xvYWRlZCcsXG4gIGVycm9yID0gJ2Vycm9yJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5nc3NtRGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlPFRQcm9wZXJ0eSA9IGFueT4ge1xuICBzdGF0dXM6IE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzO1xuICB2YWx1ZT86IFRQcm9wZXJ0eTtcbiAgbGFzdExvYWRpbmdEYXRlPzogRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdzc21EYXRhU291cmNlVmFsdWU8VERhdGEgPSBhbnksIFRQYXJhbWV0ZXIgPSBhbnk+IHtcbiAgc3RhdHVzOiBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cztcbiAgdmFsdWU/OiBURGF0YTtcbiAgcGFyYW1ldGVyPzogVFBhcmFtZXRlcjtcbiAgbGFzdExvYWRpbmdEYXRlPzogRGF0ZVRpbWU7XG4gIGRhdGFMaWZldGltZUluU2Vjb25kcz86IG51bWJlcjtcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogTmdzc21EYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWUgfTtcbn1cbiJdfQ==
@@ -24,4 +24,4 @@ export const ngssmLoadDataSourceValue = (key, forceReload = false) => {
24
24
  return true;
25
25
  };
26
26
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1kYXRhL3NyYy9saWIvbmdzc20tZGF0YS9tb2RlbC9uZ3NzbS1kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLGNBQWMsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkcsT0FBTyxFQUFTLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFZNUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWtCLG1CQUFtQixDQUFDLENBQUM7QUFFMUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FDcEMsR0FBVyxFQUNYLFdBQWdELEVBQ2hELHFCQUE4QixFQUNSLEVBQUU7SUFDeEIsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QjtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDZixNQUFNLFVBQVUsR0FBdUM7b0JBQ3JELEdBQUc7b0JBQ0gscUJBQXFCO29CQUNyQixlQUFlLEVBQUUsV0FBVztpQkFDN0IsQ0FBQztnQkFDRixPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsR0FBVyxFQUFFLGNBQXVCLEtBQUssRUFBbUIsRUFBRTtJQUNyRyxPQUFPLEdBQUcsRUFBRTtRQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNuRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3RhdGUsIFN0b3JlIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuaW1wb3J0IHsgTmdzc21Mb2FkRGF0YVNvdXJjZVZhbHVlQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdzc21EYXRhTG9hZGluZzxURGF0YSA9IGFueSwgVFBhcmFtZXRlciA9IGFueT4ge1xuICAoc3RhdGU6IFN0YXRlLCBwYXJhbWV0ZXI/OiBUUGFyYW1ldGVyKTogT2JzZXJ2YWJsZTxURGF0YT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdzc21EYXRhU291cmNlPFREYXRhID0gYW55LCBUUGFyYW1ldGVyID0gYW55PiB7XG4gIGtleTogc3RyaW5nO1xuICBkYXRhTGlmZXRpbWVJblNlY29uZHM/OiBudW1iZXI7XG4gIGRhdGFMb2FkaW5nRnVuYzogTmdzc21EYXRhTG9hZGluZzxURGF0YSwgVFBhcmFtZXRlcj47XG59XG5cbmV4cG9ydCBjb25zdCBOR1NTTV9EQVRBX1NPVVJDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3NzbURhdGFTb3VyY2U+KCdOR1NTTV9EQVRBX1NPVVJDRScpO1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZU5nc3NtRGF0YVNvdXJjZSA9IDxURGF0YSA9IGFueSwgVFBhcmFtZXRlciA9IGFueT4oXG4gIGtleTogc3RyaW5nLFxuICBsb2FkaW5nRnVuYzogTmdzc21EYXRhTG9hZGluZzxURGF0YSwgVFBhcmFtZXRlcj4sXG4gIGRhdGFMaWZldGltZUluU2Vjb25kcz86IG51bWJlclxuKTogRW52aXJvbm1lbnRQcm92aWRlcnMgPT4ge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR1NTTV9EQVRBX1NPVVJDRSxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZTogTmdzc21EYXRhU291cmNlPFREYXRhLCBUUGFyYW1ldGVyPiA9IHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgZGF0YUxpZmV0aW1lSW5TZWNvbmRzLFxuICAgICAgICAgIGRhdGFMb2FkaW5nRnVuYzogbG9hZGluZ0Z1bmNcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2U7XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0pO1xufTtcblxuZXhwb3J0IGNvbnN0IG5nc3NtTG9hZERhdGFTb3VyY2VWYWx1ZSA9IChrZXk6IHN0cmluZywgZm9yY2VSZWxvYWQ6IGJvb2xlYW4gPSBmYWxzZSk6ICgoKSA9PiBib29sZWFuKSA9PiB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaW5qZWN0KFN0b3JlKS5kaXNwYXRjaEFjdGlvbihuZXcgTmdzc21Mb2FkRGF0YVNvdXJjZVZhbHVlQWN0aW9uKGtleSwgZm9yY2VSZWxvYWQpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn07XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1kYXRhL3NyYy9saWIvbmdzc20tZGF0YS9tb2RlbC9uZ3NzbS1kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLGNBQWMsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkcsT0FBTyxFQUFTLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFZNUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWtCLG1CQUFtQixDQUFDLENBQUM7QUFFMUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FDcEMsR0FBVyxFQUNYLFdBQWdELEVBQ2hELHFCQUE4QixFQUNSLEVBQUU7SUFDeEIsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QjtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDZixNQUFNLFVBQVUsR0FBdUM7b0JBQ3JELEdBQUc7b0JBQ0gscUJBQXFCO29CQUNyQixlQUFlLEVBQUUsV0FBVztpQkFDN0IsQ0FBQztnQkFDRixPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsR0FBVyxFQUFFLGNBQXVCLEtBQUssRUFBbUIsRUFBRTtJQUNyRyxPQUFPLEdBQUcsRUFBRTtRQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNuRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3RhdGUsIFN0b3JlIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuaW1wb3J0IHsgTmdzc21Mb2FkRGF0YVNvdXJjZVZhbHVlQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdzc21EYXRhTG9hZGluZzxURGF0YSA9IGFueSwgVFBhcmFtZXRlciA9IGFueT4ge1xuICAoc3RhdGU6IFN0YXRlLCBwYXJhbWV0ZXI/OiBUUGFyYW1ldGVyLCBhZGRpdGlvbmFsUHJvcGVydHk/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFREYXRhPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3NzbURhdGFTb3VyY2U8VERhdGEgPSBhbnksIFRQYXJhbWV0ZXIgPSBhbnk+IHtcbiAga2V5OiBzdHJpbmc7XG4gIGRhdGFMaWZldGltZUluU2Vjb25kcz86IG51bWJlcjtcbiAgZGF0YUxvYWRpbmdGdW5jOiBOZ3NzbURhdGFMb2FkaW5nPFREYXRhLCBUUGFyYW1ldGVyPjtcbn1cblxuZXhwb3J0IGNvbnN0IE5HU1NNX0RBVEFfU09VUkNFID0gbmV3IEluamVjdGlvblRva2VuPE5nc3NtRGF0YVNvdXJjZT4oJ05HU1NNX0RBVEFfU09VUkNFJyk7XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlTmdzc21EYXRhU291cmNlID0gPFREYXRhID0gYW55LCBUUGFyYW1ldGVyID0gYW55PihcbiAga2V5OiBzdHJpbmcsXG4gIGxvYWRpbmdGdW5jOiBOZ3NzbURhdGFMb2FkaW5nPFREYXRhLCBUUGFyYW1ldGVyPixcbiAgZGF0YUxpZmV0aW1lSW5TZWNvbmRzPzogbnVtYmVyXG4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyA9PiB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HU1NNX0RBVEFfU09VUkNFLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlOiBOZ3NzbURhdGFTb3VyY2U8VERhdGEsIFRQYXJhbWV0ZXI+ID0ge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBkYXRhTGlmZXRpbWVJblNlY29uZHMsXG4gICAgICAgICAgZGF0YUxvYWRpbmdGdW5jOiBsb2FkaW5nRnVuY1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZTtcbiAgICAgIH0sXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSk7XG59O1xuXG5leHBvcnQgY29uc3Qgbmdzc21Mb2FkRGF0YVNvdXJjZVZhbHVlID0gKGtleTogc3RyaW5nLCBmb3JjZVJlbG9hZDogYm9vbGVhbiA9IGZhbHNlKTogKCgpID0+IGJvb2xlYW4pID0+IHtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBpbmplY3QoU3RvcmUpLmRpc3BhdGNoQWN0aW9uKG5ldyBOZ3NzbUxvYWREYXRhU291cmNlVmFsdWVBY3Rpb24oa2V5LCBmb3JjZVJlbG9hZCkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufTtcbiJdfQ==
@@ -9,10 +9,10 @@ export class NgssmDataSourceCollection {
9
9
  constructor(dataSources) {
10
10
  this.dataSources = dataSources;
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataSourceCollection, deps: [{ token: NGSSM_DATA_SOURCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
13
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataSourceCollection, providedIn: 'root' }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataSourceCollection, deps: [{ token: NGSSM_DATA_SOURCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
13
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataSourceCollection, providedIn: 'root' }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataSourceCollection, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataSourceCollection, decorators: [{
16
16
  type: Injectable,
17
17
  args: [{
18
18
  providedIn: 'root'
@@ -10,7 +10,9 @@ export class DataSourceValueReducer {
10
10
  NgssmDataActionType.loadDataSourceValue,
11
11
  NgssmDataActionType.setDataSourceValue,
12
12
  NgssmDataActionType.clearDataSourceValue,
13
- NgssmDataActionType.setDataSourceParameter
13
+ NgssmDataActionType.setDataSourceParameter,
14
+ NgssmDataActionType.loadDataSourceAdditionalPropertyValue,
15
+ NgssmDataActionType.setDataSourceAdditionalPropertyValue
14
16
  ];
15
17
  }
16
18
  updateState(state, action) {
@@ -51,7 +53,8 @@ export class DataSourceValueReducer {
51
53
  return updateNgssmDataState(currentState, {
52
54
  dataSourceValues: {
53
55
  [loadDataSourceValue.key]: {
54
- status: { $set: NgssmDataSourceValueStatus.loading }
56
+ status: { $set: NgssmDataSourceValueStatus.loading },
57
+ additionalProperties: { $set: {} }
55
58
  }
56
59
  }
57
60
  });
@@ -91,7 +94,8 @@ export class DataSourceValueReducer {
91
94
  [ngssmClearDataSourceValueAction.key]: {
92
95
  status: { $set: NgssmDataSourceValueStatus.none },
93
96
  value: { $set: undefined },
94
- lastLoadingDate: { $set: undefined }
97
+ lastLoadingDate: { $set: undefined },
98
+ additionalProperties: { $set: {} }
95
99
  }
96
100
  }
97
101
  });
@@ -106,13 +110,55 @@ export class DataSourceValueReducer {
106
110
  }
107
111
  });
108
112
  }
113
+ case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {
114
+ const ngssmLoadDataSourceAdditionalPropertyValueAction = action;
115
+ const dataSourcePropertyValue = selectNgssmDataState(state).dataSourceValues[ngssmLoadDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[ngssmLoadDataSourceAdditionalPropertyValueAction.property];
116
+ if (dataSourcePropertyValue?.status === NgssmDataSourceValueStatus.loaded) {
117
+ break;
118
+ }
119
+ return updateNgssmDataState(state, {
120
+ dataSourceValues: {
121
+ [ngssmLoadDataSourceAdditionalPropertyValueAction.key]: {
122
+ additionalProperties: {
123
+ [ngssmLoadDataSourceAdditionalPropertyValueAction.property]: {
124
+ $set: {
125
+ status: NgssmDataSourceValueStatus.loading,
126
+ value: undefined
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ });
133
+ }
134
+ case NgssmDataActionType.setDataSourceAdditionalPropertyValue: {
135
+ const ngssmSetDataSourceAdditionalPropertyValueAction = action;
136
+ const dataSourcePropertyValue = selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[ngssmSetDataSourceAdditionalPropertyValueAction.property];
137
+ if (!dataSourcePropertyValue) {
138
+ break;
139
+ }
140
+ return updateNgssmDataState(state, {
141
+ dataSourceValues: {
142
+ [ngssmSetDataSourceAdditionalPropertyValueAction.key]: {
143
+ additionalProperties: {
144
+ [ngssmSetDataSourceAdditionalPropertyValueAction.property]: {
145
+ $set: {
146
+ status: ngssmSetDataSourceAdditionalPropertyValueAction.status,
147
+ value: ngssmSetDataSourceAdditionalPropertyValueAction.value
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ });
154
+ }
109
155
  }
110
156
  return state;
111
157
  }
112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourceValueReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
113
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourceValueReducer }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourceValueReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
159
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourceValueReducer }); }
114
160
  }
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourceValueReducer, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourceValueReducer, decorators: [{
116
162
  type: Injectable
117
163
  }] });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtdmFsdWUucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWRhdGEvc3JjL2xpYi9uZ3NzbS1kYXRhL3JlZHVjZXJzL2RhdGEtc291cmNlLXZhbHVlLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBSWpDLE9BQU8sRUFFTCxtQkFBbUIsRUFJcEIsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHdEQsTUFBTSxPQUFPLHNCQUFzQjtJQURuQztRQUVrQixxQkFBZ0IsR0FBYTtZQUMzQyxtQkFBbUIsQ0FBQyxtQkFBbUI7WUFDdkMsbUJBQW1CLENBQUMsa0JBQWtCO1lBQ3RDLG1CQUFtQixDQUFDLG9CQUFvQjtZQUN4QyxtQkFBbUIsQ0FBQyxzQkFBc0I7U0FDM0MsQ0FBQztLQTJHSDtJQXpHUSxXQUFXLENBQUMsS0FBWSxFQUFFLE1BQWM7UUFDN0MsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsS0FBSyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sbUJBQW1CLEdBQUcsTUFBd0MsQ0FBQztnQkFDckUsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDckIsTUFBTTtnQkFDUixDQUFDO2dCQUVELElBQUksWUFBWSxHQUFHLEtB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QUMsRUFBRTtnQ0FDckMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTs2QkFDL0I7eUJBQ0Y7cUJBQ0YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsT0FBTyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUU7b0JBQ3hDLGdCQUFnQixFQUFFO3dCQUNoQixDQUFDLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUNyQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLENBQUMsSUFBSSxFQUFFOzRCQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFOzRCQUMxQixlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3lCQUNyQztxQkFDRjtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsS0FBSyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELE1BQU0saUNBQWlDLEdBQUcsTUFBMkMsQ0FBQztnQkFDdEYsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUU7b0JBQ2pDLGdCQUFnQixFQUFFO3dCQUNoQixDQUFDLGlDQUFpQyxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUN2QyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUNBQWlDLENBQUMsU0FBUyxFQUFFO3lCQUNqRTtxQkFDRjtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0FoSFUsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuXG5pbXBvcnQgeyBSZWR1Y2VyLCBTdGF0ZSwgQWN0aW9uIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQge1xuICBOZ3NzbUNsZWFyRGF0YVNvdXJjZVZhbHVlQWN0aW9uLFxuICBOZ3NzbURhdGFBY3Rpb25UeXBlLFxuICBOZ3NzbUxvYWREYXRhU291cmNlVmFsdWVBY3Rpb24sXG4gIE5nc3NtU2V0RGF0YVNvdXJjZVBhcmFtZXRlckFjdGlvbixcbiAgTmdzc21TZXREYXRhU291cmNlVmFsdWVBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBzZWxlY3ROZ3NzbURhdGFTdGF0ZSwgdXBkYXRlTmdzc21EYXRhU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5pbXBvcnQgeyBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cyB9IGZyb20gJy4uL21vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VWYWx1ZVJlZHVjZXIgaW1wbGVtZW50cyBSZWR1Y2VyIHtcbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NlZEFjdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgIE5nc3NtRGF0YUFjdGlvblR5cGUubG9hZERhdGFTb3VyY2VWYWx1ZSxcbiAgICBOZ3NzbURhdGFBY3Rpb25UeXBlLnNldERhdGFTb3VyY2VWYWx1ZSxcbiAgICBOZ3NzbURhdGFBY3Rpb25UeXBlLmNsZWFyRGF0YVNvdXJjZVZhbHVlLFxuICAgIE5nc3NtRGF0YUFjdGlvblR5cGUuc2V0RGF0YVNvdXJjZVBhcmFtZXRlclxuICBdO1xuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZShzdGF0ZTogU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgTmdzc21EYXRhQWN0aW9uVHlwZS5sb2FkRGF0YVNvdXJjZVZhbHVlOiB7XG4gICAgICAgIGNvbnN0IGxvYWREYXRhU291cmNlVmFsdWUgPSBhY3Rpb24gYXMgTmdzc21Mb2FkRGF0YVNvdXJjZVZhbHVlQWN0aW9uO1xuICAgICAgICBjb25zdCBkYXRhU291cmNlVmFsdWUgPSBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZVZhbHVlc1tsb2FkRGF0YVNvdXJjZVZhbHVlLmtleV07XG4gICAgICAgIGlmICghZGF0YVNvdXJjZVZhbHVlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2hvdWxkUmVsb2FkID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHN0YXRlO1xuICAgICAgICBpZiAobG9hZERhdGFTb3VyY2VWYWx1ZS5wYXJhbWV0ZXIpIHtcbiAgICAgICAgICBzaG91bGRSZWxvYWQgPSB0cnVlO1xuICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IHVwZGF0ZU5nc3NtRGF0YVN0YXRlKHN0YXRlLCB7XG4gICAgICAgICAgICBkYXRhU291cmNlVmFsdWVzOiB7XG4gICAgICAgICAgICAgIFtsb2FkRGF0YVNvdXJjZVZhbHVlLmtleV06IHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXI6IHsgJHNldDogbG9hZERhdGFTb3VyY2VWYWx1ZS5wYXJhbWV0ZXIudmFsdWUgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YVNvdXJjZVZhbHVlLnN0YXR1cyA9PT0gTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMubG9hZGVkKSB7XG4gICAgICAgICAgaWYgKGxvYWREYXRhU291cmNlVmFsdWUuZm9yY2VSZWxvYWQgPT09IHRydWUgfHwgIWRhdGFTb3VyY2VWYWx1ZS5kYXRhTGlmZXRpbWVJblNlY29uZHMgfHwgIWRhdGFTb3VyY2VWYWx1ZS5sYXN0TG9hZGluZ0RhdGUpIHtcbiAgICAgICAgICAgIHNob3VsZFJlbG9hZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFMaWZldGltZSA9IERhdGVUaW1lLm5vdygpLmRpZmYoZGF0YVNvdXJjZVZhbHVlLmxhc3RMb2FkaW5nRGF0ZSwgJ3NlY29uZCcpO1xuICAgICAgICAgICAgaWYgKChkYXRhTGlmZXRpbWUudG9PYmplY3QoKS5zZWNvbmRzID8/IDApID4gZGF0YVNvdXJjZVZhbHVlLmRhdGFMaWZldGltZUluU2Vjb25kcykge1xuICAgICAgICAgICAgICBzaG91bGRSZWxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzaG91bGRSZWxvYWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNob3VsZFJlbG9hZCkge1xuICAgICAgICAgIHJldHVybiB1cGRhdGVOZ3NzbURhdGFTdGF0ZShjdXJyZW50U3RhdGUsIHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2VWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgW2xvYWREYXRhU291cmNlVmFsdWUua2V5XToge1xuICAgICAgICAgICAgICAgIHN0YXR1czogeyAkc2V0OiBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5sb2FkaW5nIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgTmdzc21EYXRhQWN0aW9uVHlwZS5zZXREYXRhU291cmNlVmFsdWU6IHtcbiAgICAgICAgY29uc3Qgbmdzc21TZXREYXRhU291cmNlVmFsdWVBY3Rpb24gPSBhY3Rpb24gYXMgTmdzc21TZXREYXRhU291cmNlVmFsdWVBY3Rpb247XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2VWYWx1ZSA9IHNlbGVjdE5nc3NtRGF0YVN0YXRlKHN0YXRlKS5kYXRhU291cmNlVmFsdWVzW25nc3NtU2V0RGF0YVNvdXJjZVZhbHVlQWN0aW9uLmtleV07XG4gICAgICAgIGlmICghZGF0YVNvdXJjZVZhbHVlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXBkYXRlTmdzc21EYXRhU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgICBkYXRhU291cmNlVmFsdWVzOiB7XG4gICAgICAgICAgICBbbmdzc21TZXREYXRhU291cmNlVmFsdWVBY3Rpb24ua2V5XToge1xuICAgICAgICAgICAgICBzdGF0dXM6IHsgJHNldDogbmdzc21TZXREYXRhU291cmNlVmFsdWVBY3Rpb24uc3RhdHVzIH0sXG4gICAgICAgICAgICAgIHZhbHVlOiB7ICRzZXQ6IG5nc3NtU2V0RGF0YVNvdXJjZVZhbHVlQWN0aW9uLnZhbHVlIH0sXG4gICAgICAgICAgICAgIGxhc3RMb2FkaW5nRGF0ZTogeyAkc2V0OiBEYXRlVGltZS5ub3coKSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBOZ3NzbURhdGFBY3Rpb25UeXBlLmNsZWFyRGF0YVNvdXJjZVZhbHVlOiB7XG4gICAgICAgIGNvbnN0IG5nc3NtQ2xlYXJEYXRhU291cmNlVmFsdWVBY3Rpb24gPSBhY3Rpb24gYXMgTmdzc21DbGVhckRhdGFTb3VyY2VWYWx1ZUFjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHN0YXRlO1xuICAgICAgICBpZiAobmdzc21DbGVhckRhdGFTb3VyY2VWYWx1ZUFjdGlvbi5jbGVhclBhcmFtZXRlcikge1xuICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IHVwZGF0ZU5nc3NtRGF0YVN0YXRlKHN0YXRlLCB7XG4gICAgICAgICAgICBkYXRhU291cmNlVmFsdWVzOiB7XG4gICAgICAgICAgICAgIFtuZ3NzbUNsZWFyRGF0YVNvdXJjZVZhbHVlQWN0aW9uLmtleV06IHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXI6IHsgJHNldDogdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVwZGF0ZU5nc3NtRGF0YVN0YXRlKGN1cnJlbnRTdGF0ZSwge1xuICAgICAgICAgIGRhdGFTb3VyY2VWYWx1ZXM6IHtcbiAgICAgICAgICAgIFtuZ3NzbUNsZWFyRGF0YVNvdXJjZVZhbHVlQWN0aW9uLmtleV06IHtcbiAgICAgICAgICAgICAgc3RhdHVzOiB7ICRzZXQ6IE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzLm5vbmUgfSxcbiAgICAgICAgICAgICAgdmFsdWU6IHsgJHNldDogdW5kZWZpbmVkIH0sXG4gICAgICAgICAgICAgIGxhc3RMb2FkaW5nRGF0ZTogeyAkc2V0OiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgTmdzc21EYXRhQWN0aW9uVHlwZS5zZXREYXRhU291cmNlUGFyYW1ldGVyOiB7XG4gICAgICAgIGNvbnN0IG5nc3NtU2V0RGF0YVNvdXJjZVBhcmFtZXRlckFjdGlvbiA9IGFjdGlvbiBhcyBOZ3NzbVNldERhdGFTb3VyY2VQYXJhbWV0ZXJBY3Rpb247XG4gICAgICAgIHJldHVybiB1cGRhdGVOZ3NzbURhdGFTdGF0ZShzdGF0ZSwge1xuICAgICAgICAgIGRhdGFTb3VyY2VWYWx1ZXM6IHtcbiAgICAgICAgICAgIFtuZ3NzbVNldERhdGFTb3VyY2VQYXJhbWV0ZXJBY3Rpb24ua2V5XToge1xuICAgICAgICAgICAgICBwYXJhbWV0ZXI6IHsgJHNldDogbmdzc21TZXREYXRhU291cmNlUGFyYW1ldGVyQWN0aW9uLnBhcmFtZXRlciB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdfQ==
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtdmFsdWUucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLWRhdGEvc3JjL2xpYi9uZ3NzbS1kYXRhL3JlZHVjZXJzL2RhdGEtc291cmNlLXZhbHVlLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBSWpDLE9BQU8sRUFFTCxtQkFBbUIsRUFNcEIsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHdEQsTUFBTSxPQUFPLHNCQUFzQjtJQURuQztRQUVrQixxQkFBZ0IsR0FBYTtZQUMzQyxtQkFBbUIsQ0FBQyxtQkFBbUI7WUFDdkMsbUJBQW1CLENBQUMsa0JBQWtCO1lBQ3RDLG1CQUFtQixDQUFDLG9CQUFvQjtZQUN4QyxtQkFBbUIsQ0FBQyxzQkFBc0I7WUFDMUMsbUJBQW1CLENBQUMscUNBQXFDO1lBQ3pELG1CQUFtQixDQUFDLG9DQUFvQztTQUN6RCxDQUFDO0tBbUtIO0lBaktRLFdBQVcsQ0FBQyxLQUFZLEVBQUUsTUFBYztRQUM3QyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixLQUFLLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDN0MsTUFBTSxtQkFBbUIsR0FBRyxNQUF3QyxDQUFDO2dCQUNyRSxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLGVBQWUsRUFBRSxD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QUM5RCxLQUFLLEVBQUUsK0NBQStDLENBQUMsS0FBSztxQ0FDN0Q7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBMUtVLHNCQUFzQjtrSEFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcblxuaW1wb3J0IHsgUmVkdWNlciwgU3RhdGUsIEFjdGlvbiB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuaW1wb3J0IHtcbiAgTmdzc21DbGVhckRhdGFTb3VyY2VWYWx1ZUFjdGlvbixcbiAgTmdzc21EYXRhQWN0aW9uVHlwZSxcbiAgTmdzc21Mb2FkRGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlQWN0aW9uLFxuICBOZ3NzbUxvYWREYXRhU291cmNlVmFsdWVBY3Rpb24sXG4gIE5nc3NtU2V0RGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlQWN0aW9uLFxuICBOZ3NzbVNldERhdGFTb3VyY2VQYXJhbWV0ZXJBY3Rpb24sXG4gIE5nc3NtU2V0RGF0YVNvdXJjZVZhbHVlQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgc2VsZWN0Tmdzc21EYXRhU3RhdGUsIHVwZGF0ZU5nc3NtRGF0YVN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMgfSBmcm9tICcuLi9tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlVmFsdWVSZWR1Y2VyIGltcGxlbWVudHMgUmVkdWNlciB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtcbiAgICBOZ3NzbURhdGFBY3Rpb25UeXBlLmxvYWREYXRhU291cmNlVmFsdWUsXG4gICAgTmdzc21EYXRhQWN0aW9uVHlwZS5zZXREYXRhU291cmNlVmFsdWUsXG4gICAgTmdzc21EYXRhQWN0aW9uVHlwZS5jbGVhckRhdGFTb3VyY2VWYWx1ZSxcbiAgICBOZ3NzbURhdGFBY3Rpb25UeXBlLnNldERhdGFTb3VyY2VQYXJhbWV0ZXIsXG4gICAgTmdzc21EYXRhQWN0aW9uVHlwZS5sb2FkRGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlLFxuICAgIE5nc3NtRGF0YUFjdGlvblR5cGUuc2V0RGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlXG4gIF07XG5cbiAgcHVibGljIHVwZGF0ZVN0YXRlKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiBTdGF0ZSB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBOZ3NzbURhdGFBY3Rpb25UeXBlLmxvYWREYXRhU291cmNlVmFsdWU6IHtcbiAgICAgICAgY29uc3QgbG9hZERhdGFTb3VyY2VWYWx1ZSA9IGFjdGlvbiBhcyBOZ3NzbUxvYWREYXRhU291cmNlVmFsdWVBY3Rpb247XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2VWYWx1ZSA9IHNlbGVjdE5nc3NtRGF0YVN0YXRlKHN0YXRlKS5kYXRhU291cmNlVmFsdWVzW2xvYWREYXRhU291cmNlVmFsdWUua2V5XTtcbiAgICAgICAgaWYgKCFkYXRhU291cmNlVmFsdWUpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzaG91bGRSZWxvYWQgPSBmYWxzZTtcblxuICAgICAgICBsZXQgY3VycmVudFN0YXRlID0gc3RhdGU7XG4gICAgICAgIGlmIChsb2FkRGF0YVNvdXJjZVZhbHVlLnBhcmFtZXRlcikge1xuICAgICAgICAgIHNob3VsZFJlbG9hZCA9IHRydWU7XG4gICAgICAgICAgY3VycmVudFN0YXRlID0gdXBkYXRlTmdzc21EYXRhU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2VWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgW2xvYWREYXRhU291cmNlVmFsdWUua2V5XToge1xuICAgICAgICAgICAgICAgIHBhcmFtZXRlcjogeyAkc2V0OiBsb2FkRGF0YVNvdXJjZVZhbHVlLnBhcmFtZXRlci52YWx1ZSB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhU291cmNlVmFsdWUuc3RhdHVzID09PSBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5sb2FkZWQpIHtcbiAgICAgICAgICBpZiAobG9hZERhdGFTb3VyY2VWYWx1ZS5mb3JjZVJlbG9hZCA9PT0gdHJ1ZSB8fCAhZGF0YVNvdXJjZVZhbHVlLmRhdGFMaWZldGltZUluU2Vjb25kcyB8fCAhZGF0YVNvdXJjZVZhbHVlLmxhc3RMb2FkaW5nRGF0ZSkge1xuICAgICAgICAgICAgc2hvdWxkUmVsb2FkID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGF0YUxpZmV0aW1lID0gRGF0ZVRpbWUubm93KCkuZGlmZihkYXRhU291cmNlVmFsdWUubGFzdExvYWRpbmdEYXRlLCAnc2Vjb25kJyk7XG4gICAgICAgICAgICBpZiAoKGRhdGFMaWZldGltZS50b09iamVjdCgpLnNlY29uZHMgPz8gMCkgPiBkYXRhU291cmNlVmFsdWUuZGF0YUxpZmV0aW1lSW5TZWNvbmRzKSB7XG4gICAgICAgICAgICAgIHNob3VsZFJlbG9hZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNob3VsZFJlbG9hZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2hvdWxkUmVsb2FkKSB7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZU5nc3NtRGF0YVN0YXRlKGN1cnJlbnRTdGF0ZSwge1xuICAgICAgICAgICAgZGF0YVNvdXJjZVZhbHVlczoge1xuICAgICAgICAgICAgICBbbG9hZERhdGFTb3VyY2VWYWx1ZS5rZXldOiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiB7ICRzZXQ6IE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzLmxvYWRpbmcgfSxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogeyAkc2V0OiB7fSB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIE5nc3NtRGF0YUFjdGlvblR5cGUuc2V0RGF0YVNvdXJjZVZhbHVlOiB7XG4gICAgICAgIGNvbnN0IG5nc3NtU2V0RGF0YVNvdXJjZVZhbHVlQWN0aW9uID0gYWN0aW9uIGFzIE5nc3NtU2V0RGF0YVNvdXJjZVZhbHVlQWN0aW9uO1xuICAgICAgICBjb25zdCBkYXRhU291cmNlVmFsdWUgPSBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZVZhbHVlc1tuZ3NzbVNldERhdGFTb3VyY2VWYWx1ZUFjdGlvbi5rZXldO1xuICAgICAgICBpZiAoIWRhdGFTb3VyY2VWYWx1ZSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVwZGF0ZU5nc3NtRGF0YVN0YXRlKHN0YXRlLCB7XG4gICAgICAgICAgZGF0YVNvdXJjZVZhbHVlczoge1xuICAgICAgICAgICAgW25nc3NtU2V0RGF0YVNvdXJjZVZhbHVlQWN0aW9uLmtleV06IHtcbiAgICAgICAgICAgICAgc3RhdHVzOiB7ICRzZXQ6IG5nc3NtU2V0RGF0YVNvdXJjZVZhbHVlQWN0aW9uLnN0YXR1cyB9LFxuICAgICAgICAgICAgICB2YWx1ZTogeyAkc2V0OiBuZ3NzbVNldERhdGFTb3VyY2VWYWx1ZUFjdGlvbi52YWx1ZSB9LFxuICAgICAgICAgICAgICBsYXN0TG9hZGluZ0RhdGU6IHsgJHNldDogRGF0ZVRpbWUubm93KCkgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgTmdzc21EYXRhQWN0aW9uVHlwZS5jbGVhckRhdGFTb3VyY2VWYWx1ZToge1xuICAgICAgICBjb25zdCBuZ3NzbUNsZWFyRGF0YVNvdXJjZVZhbHVlQWN0aW9uID0gYWN0aW9uIGFzIE5nc3NtQ2xlYXJEYXRhU291cmNlVmFsdWVBY3Rpb247XG4gICAgICAgIGxldCBjdXJyZW50U3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgaWYgKG5nc3NtQ2xlYXJEYXRhU291cmNlVmFsdWVBY3Rpb24uY2xlYXJQYXJhbWV0ZXIpIHtcbiAgICAgICAgICBjdXJyZW50U3RhdGUgPSB1cGRhdGVOZ3NzbURhdGFTdGF0ZShzdGF0ZSwge1xuICAgICAgICAgICAgZGF0YVNvdXJjZVZhbHVlczoge1xuICAgICAgICAgICAgICBbbmdzc21DbGVhckRhdGFTb3VyY2VWYWx1ZUFjdGlvbi5rZXldOiB7XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyOiB7ICRzZXQ6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cGRhdGVOZ3NzbURhdGFTdGF0ZShjdXJyZW50U3RhdGUsIHtcbiAgICAgICAgICBkYXRhU291cmNlVmFsdWVzOiB7XG4gICAgICAgICAgICBbbmdzc21DbGVhckRhdGFTb3VyY2VWYWx1ZUFjdGlvbi5rZXldOiB7XG4gICAgICAgICAgICAgIHN0YXR1czogeyAkc2V0OiBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5ub25lIH0sXG4gICAgICAgICAgICAgIHZhbHVlOiB7ICRzZXQ6IHVuZGVmaW5lZCB9LFxuICAgICAgICAgICAgICBsYXN0TG9hZGluZ0RhdGU6IHsgJHNldDogdW5kZWZpbmVkIH0sXG4gICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7ICRzZXQ6IHt9IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjYXNlIE5nc3NtRGF0YUFjdGlvblR5cGUuc2V0RGF0YVNvdXJjZVBhcmFtZXRlcjoge1xuICAgICAgICBjb25zdCBuZ3NzbVNldERhdGFTb3VyY2VQYXJhbWV0ZXJBY3Rpb24gPSBhY3Rpb24gYXMgTmdzc21TZXREYXRhU291cmNlUGFyYW1ldGVyQWN0aW9uO1xuICAgICAgICByZXR1cm4gdXBkYXRlTmdzc21EYXRhU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgICBkYXRhU291cmNlVmFsdWVzOiB7XG4gICAgICAgICAgICBbbmdzc21TZXREYXRhU291cmNlUGFyYW1ldGVyQWN0aW9uLmtleV06IHtcbiAgICAgICAgICAgICAgcGFyYW1ldGVyOiB7ICRzZXQ6IG5nc3NtU2V0RGF0YVNvdXJjZVBhcmFtZXRlckFjdGlvbi5wYXJhbWV0ZXIgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgTmdzc21EYXRhQWN0aW9uVHlwZS5sb2FkRGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlOiB7XG4gICAgICAgIGNvbnN0IG5nc3NtTG9hZERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZUFjdGlvbiA9IGFjdGlvbiBhcyBOZ3NzbUxvYWREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb247XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2VQcm9wZXJ0eVZhbHVlID1cbiAgICAgICAgICBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZVZhbHVlc1tuZ3NzbUxvYWREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24ua2V5XT8uYWRkaXRpb25hbFByb3BlcnRpZXNbXG4gICAgICAgICAgICBuZ3NzbUxvYWREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24ucHJvcGVydHlcbiAgICAgICAgICBdO1xuXG4gICAgICAgIGlmIChkYXRhU291cmNlUHJvcGVydHlWYWx1ZT8uc3RhdHVzID09PSBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5sb2FkZWQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cGRhdGVOZ3NzbURhdGFTdGF0ZShzdGF0ZSwge1xuICAgICAgICAgIGRhdGFTb3VyY2VWYWx1ZXM6IHtcbiAgICAgICAgICAgIFtuZ3NzbUxvYWREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24ua2V5XToge1xuICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIFtuZ3NzbUxvYWREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24ucHJvcGVydHldOiB7XG4gICAgICAgICAgICAgICAgICAkc2V0OiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMubG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgTmdzc21EYXRhQWN0aW9uVHlwZS5zZXREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWU6IHtcbiAgICAgICAgY29uc3Qgbmdzc21TZXREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24gPSBhY3Rpb24gYXMgTmdzc21TZXREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb247XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2VQcm9wZXJ0eVZhbHVlID1cbiAgICAgICAgICBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZVZhbHVlc1tuZ3NzbVNldERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZUFjdGlvbi5rZXldPy5hZGRpdGlvbmFsUHJvcGVydGllc1tcbiAgICAgICAgICAgIG5nc3NtU2V0RGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlQWN0aW9uLnByb3BlcnR5XG4gICAgICAgICAgXTtcblxuICAgICAgICBpZiAoIWRhdGFTb3VyY2VQcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXBkYXRlTmdzc21EYXRhU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgICBkYXRhU291cmNlVmFsdWVzOiB7XG4gICAgICAgICAgICBbbmdzc21TZXREYXRhU291cmNlQWRkaXRpb25hbFByb3BlcnR5VmFsdWVBY3Rpb24ua2V5XToge1xuICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIFtuZ3NzbVNldERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZUFjdGlvbi5wcm9wZXJ0eV06IHtcbiAgICAgICAgICAgICAgICAgICRzZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBuZ3NzbVNldERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZUFjdGlvbi5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZ3NzbVNldERhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZUFjdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG4iXX0=
@@ -17,7 +17,8 @@ export class DataSourcesRegistrationReducer {
17
17
  return;
18
18
  }
19
19
  dataSourceValues[dataSource.key] = {
20
- status: NgssmDataSourceValueStatus.none
20
+ status: NgssmDataSourceValueStatus.none,
21
+ additionalProperties: {}
21
22
  };
22
23
  if (dataSource.dataLifetimeInSeconds) {
23
24
  dataSourceValues[dataSource.key].dataLifetimeInSeconds = dataSource.dataLifetimeInSeconds;
@@ -31,10 +32,10 @@ export class DataSourcesRegistrationReducer {
31
32
  }
32
33
  return state;
33
34
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourcesRegistrationReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourcesRegistrationReducer }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourcesRegistrationReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourcesRegistrationReducer }); }
36
37
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourcesRegistrationReducer, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourcesRegistrationReducer, decorators: [{
38
39
  type: Injectable
39
40
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2VzLXJlZ2lzdHJhdGlvbi5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tZGF0YS9zcmMvbGliL25nc3NtLWRhdGEvcmVkdWNlcnMvZGF0YS1zb3VyY2VzLXJlZ2lzdHJhdGlvbi5yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFrQyxNQUFNLFlBQVksQ0FBQztBQUNqRixPQUFPLEVBQXlDLDBCQUEwQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHdEUsTUFBTSxPQUFPLDhCQUE4QjtJQUQzQztRQUVrQixxQkFBZ0IsR0FBYSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7S0ErQnhGO0lBN0JRLFdBQVcsQ0FBQyxLQUFZLEVBQUUsTUFBYztRQUM3QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM1RCxNQUFNLHlCQUF5QixHQUFHLE1BQXdDLENBQUM7WUFDM0UsTUFBTSxnQkFBZ0IsR0FBNEMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sV0FBVyxHQUF1QyxFQUFFLENBQUM7WUFDM0QseUJBQXlCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUMzRCxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUQsT0FBTztnQkFDVCxDQUFDO2dCQUVELGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRztvQkFDakMsTUFBTSxFQUFFLDBCQUEwQixDQUFDLElBQUk7aUJBQ3hDLENBQUM7Z0JBRUYsSUFBSSxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDckMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDNUYsQ0FBQztnQkFFRCxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sb0JBQW9CLENBQUMsS0FBSyxFQUFFO2dCQUNqQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRTtnQkFDOUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTthQUNyQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQS9CVSw4QkFBOEI7a0hBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFEMUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUmVkdWNlciwgU3RhdGUsIEFjdGlvbiB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuaW1wb3J0IHsgTmdzc21EYXRhQWN0aW9uVHlwZSwgTmdzc21SZWdpc3RlckRhdGFTb3VyY2VzQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBOZ3NzbURhdGFTb3VyY2UsIE5nc3NtRGF0YVNvdXJjZVZhbHVlLCBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cyB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IHNlbGVjdE5nc3NtRGF0YVN0YXRlLCB1cGRhdGVOZ3NzbURhdGFTdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VzUmVnaXN0cmF0aW9uUmVkdWNlciBpbXBsZW1lbnRzIFJlZHVjZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc2VkQWN0aW9uczogc3RyaW5nW10gPSBbTmdzc21EYXRhQWN0aW9uVHlwZS5yZWdpc3RlckRhdGFTb3VyY2VzXTtcblxuICBwdWJsaWMgdXBkYXRlU3RhdGUoc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbik6IFN0YXRlIHtcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09IE5nc3NtRGF0YUFjdGlvblR5cGUucmVnaXN0ZXJEYXRhU291cmNlcykge1xuICAgICAgY29uc3QgcmVnaXN0ZXJEYXRhU291cmNlc0FjdGlvbiA9IGFjdGlvbiBhcyBOZ3NzbVJlZ2lzdGVyRGF0YVNvdXJjZXNBY3Rpb247XG4gICAgICBjb25zdCBkYXRhU291cmNlVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IE5nc3NtRGF0YVNvdXJjZVZhbHVlIH0gPSB7fTtcbiAgICAgIGNvbnN0IGRhdGFTb3VyY2VzOiB7IFtrZXk6IHN0cmluZ106IE5nc3NtRGF0YVNvdXJjZSB9ID0ge307XG4gICAgICByZWdpc3RlckRhdGFTb3VyY2VzQWN0aW9uLmRhdGFTb3VyY2VzLmZvckVhY2goKGRhdGFTb3VyY2UpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdE5nc3NtRGF0YVN0YXRlKHN0YXRlKS5kYXRhU291cmNlc1tkYXRhU291cmNlLmtleV0pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlVmFsdWVzW2RhdGFTb3VyY2Uua2V5XSA9IHtcbiAgICAgICAgICBzdGF0dXM6IE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzLm5vbmVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZGF0YVNvdXJjZS5kYXRhTGlmZXRpbWVJblNlY29uZHMpIHtcbiAgICAgICAgICBkYXRhU291cmNlVmFsdWVzW2RhdGFTb3VyY2Uua2V5XS5kYXRhTGlmZXRpbWVJblNlY29uZHMgPSBkYXRhU291cmNlLmRhdGFMaWZldGltZUluU2Vjb25kcztcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFTb3VyY2VzW2RhdGFTb3VyY2Uua2V5XSA9IGRhdGFTb3VyY2U7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHVwZGF0ZU5nc3NtRGF0YVN0YXRlKHN0YXRlLCB7XG4gICAgICAgIGRhdGFTb3VyY2VWYWx1ZXM6IHsgJG1lcmdlOiBkYXRhU291cmNlVmFsdWVzIH0sXG4gICAgICAgIGRhdGFTb3VyY2VzOiB7ICRtZXJnZTogZGF0YVNvdXJjZXMgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2VzLXJlZ2lzdHJhdGlvbi5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tZGF0YS9zcmMvbGliL25nc3NtLWRhdGEvcmVkdWNlcnMvZGF0YS1zb3VyY2VzLXJlZ2lzdHJhdGlvbi5yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFrQyxNQUFNLFlBQVksQ0FBQztBQUNqRixPQUFPLEVBQXlDLDBCQUEwQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHdEUsTUFBTSxPQUFPLDhCQUE4QjtJQUQzQztRQUVrQixxQkFBZ0IsR0FBYSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FnQ3hGO0lBOUJRLFdBQVcsQ0FBQyxLQUFZLEVBQUUsTUFBYztRQUM3QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM1RCxNQUFNLHlCQUF5QixHQUFHLE1BQXdDLENBQUM7WUFDM0UsTUFBTSxnQkFBZ0IsR0FBNEMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sV0FBVyxHQUF1QyxFQUFFLENBQUM7WUFDM0QseUJBQXlCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUMzRCxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUQsT0FBTztnQkFDVCxDQUFDO2dCQUVELGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRztvQkFDakMsTUFBTSxFQUFFLDBCQUEwQixDQUFDLElBQUk7b0JBQ3ZDLG9CQUFvQixFQUFFLEVBQUU7aUJBQ3pCLENBQUM7Z0JBRUYsSUFBSSxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDckMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDNUYsQ0FBQztnQkFFRCxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sb0JBQW9CLENBQUMsS0FBSyxFQUFFO2dCQUNqQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRTtnQkFDOUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTthQUNyQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWhDVSw4QkFBOEI7a0hBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFEMUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUmVkdWNlciwgU3RhdGUsIEFjdGlvbiB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuaW1wb3J0IHsgTmdzc21EYXRhQWN0aW9uVHlwZSwgTmdzc21SZWdpc3RlckRhdGFTb3VyY2VzQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBOZ3NzbURhdGFTb3VyY2UsIE5nc3NtRGF0YVNvdXJjZVZhbHVlLCBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cyB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IHNlbGVjdE5nc3NtRGF0YVN0YXRlLCB1cGRhdGVOZ3NzbURhdGFTdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VzUmVnaXN0cmF0aW9uUmVkdWNlciBpbXBsZW1lbnRzIFJlZHVjZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc2VkQWN0aW9uczogc3RyaW5nW10gPSBbTmdzc21EYXRhQWN0aW9uVHlwZS5yZWdpc3RlckRhdGFTb3VyY2VzXTtcblxuICBwdWJsaWMgdXBkYXRlU3RhdGUoc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbik6IFN0YXRlIHtcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09IE5nc3NtRGF0YUFjdGlvblR5cGUucmVnaXN0ZXJEYXRhU291cmNlcykge1xuICAgICAgY29uc3QgcmVnaXN0ZXJEYXRhU291cmNlc0FjdGlvbiA9IGFjdGlvbiBhcyBOZ3NzbVJlZ2lzdGVyRGF0YVNvdXJjZXNBY3Rpb247XG4gICAgICBjb25zdCBkYXRhU291cmNlVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IE5nc3NtRGF0YVNvdXJjZVZhbHVlIH0gPSB7fTtcbiAgICAgIGNvbnN0IGRhdGFTb3VyY2VzOiB7IFtrZXk6IHN0cmluZ106IE5nc3NtRGF0YVNvdXJjZSB9ID0ge307XG4gICAgICByZWdpc3RlckRhdGFTb3VyY2VzQWN0aW9uLmRhdGFTb3VyY2VzLmZvckVhY2goKGRhdGFTb3VyY2UpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdE5nc3NtRGF0YVN0YXRlKHN0YXRlKS5kYXRhU291cmNlc1tkYXRhU291cmNlLmtleV0pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlVmFsdWVzW2RhdGFTb3VyY2Uua2V5XSA9IHtcbiAgICAgICAgICBzdGF0dXM6IE5nc3NtRGF0YVNvdXJjZVZhbHVlU3RhdHVzLm5vbmUsXG4gICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGRhdGFTb3VyY2UuZGF0YUxpZmV0aW1lSW5TZWNvbmRzKSB7XG4gICAgICAgICAgZGF0YVNvdXJjZVZhbHVlc1tkYXRhU291cmNlLmtleV0uZGF0YUxpZmV0aW1lSW5TZWNvbmRzID0gZGF0YVNvdXJjZS5kYXRhTGlmZXRpbWVJblNlY29uZHM7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlc1tkYXRhU291cmNlLmtleV0gPSBkYXRhU291cmNlO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB1cGRhdGVOZ3NzbURhdGFTdGF0ZShzdGF0ZSwge1xuICAgICAgICBkYXRhU291cmNlVmFsdWVzOiB7ICRtZXJnZTogZGF0YVNvdXJjZVZhbHVlcyB9LFxuICAgICAgICBkYXRhU291cmNlczogeyAkbWVyZ2U6IGRhdGFTb3VyY2VzIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuIl19
@@ -5,4 +5,9 @@ export const selectNgssmDataSourceValue = (state, key) => {
5
5
  status: NgssmDataSourceValueStatus.notRegistered
6
6
  });
7
7
  };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tZGF0YS9zcmMvbGliL25nc3NtLWRhdGEvc3RhdGUvc2VsZWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBd0IsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FDeEMsS0FBWSxFQUNaLEdBQVcsRUFDa0MsRUFBRTtJQUMvQyxPQUFPLENBQ0wsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUk7UUFDbkQsTUFBTSxFQUFFLDBCQUEwQixDQUFDLGFBQWE7S0FDakQsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGUgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5pbXBvcnQgeyBOZ3NzbURhdGFTb3VyY2VWYWx1ZSwgTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyBzZWxlY3ROZ3NzbURhdGFTdGF0ZSB9IGZyb20gJy4vbmdzc20tZGF0YS5zdGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBzZWxlY3ROZ3NzbURhdGFTb3VyY2VWYWx1ZSA9IDxURGF0YVR5cGUgPSBhbnksIFRQYXJhbWV0ZXIgPSBhbnk+KFxuICBzdGF0ZTogU3RhdGUsXG4gIGtleTogc3RyaW5nXG4pOiBOZ3NzbURhdGFTb3VyY2VWYWx1ZTxURGF0YVR5cGUsIFRQYXJhbWV0ZXI+ID0+IHtcbiAgcmV0dXJuIChcbiAgICBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZVZhbHVlc1trZXldID8/IHtcbiAgICAgIHN0YXR1czogTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMubm90UmVnaXN0ZXJlZFxuICAgIH1cbiAgKTtcbn07XG4iXX0=
8
+ export const selectNgssmDataSourceAdditionalPropertyValue = (state, key, property) => {
9
+ return (selectNgssmDataState(state).dataSourceValues[key]?.additionalProperties[property] ?? {
10
+ status: NgssmDataSourceValueStatus.notRegistered
11
+ });
12
+ };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tZGF0YS9zcmMvbGliL25nc3NtLWRhdGEvc3RhdGUvc2VsZWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZ0UsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FDeEMsS0FBWSxFQUNaLEdBQVcsRUFDa0MsRUFBRTtJQUMvQyxPQUFPLENBQ0wsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUk7UUFDbkQsTUFBTSxFQUFFLDBCQUEwQixDQUFDLGFBQWE7S0FDakQsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNENBQTRDLEdBQUcsQ0FDMUQsS0FBWSxFQUNaLEdBQVcsRUFDWCxRQUFnQixFQUNtQyxFQUFFO0lBQ3JELE9BQU8sQ0FDTCxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSTtRQUNuRixNQUFNLEVBQUUsMEJBQTBCLENBQUMsYUFBYTtLQUNqRCxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0ZSB9IGZyb20gJ25nc3NtLXN0b3JlJztcbmltcG9ydCB7IE5nc3NtRGF0YVNvdXJjZUFkZGl0aW9uYWxQcm9wZXJ0eVZhbHVlLCBOZ3NzbURhdGFTb3VyY2VWYWx1ZSwgTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyBzZWxlY3ROZ3NzbURhdGFTdGF0ZSB9IGZyb20gJy4vbmdzc20tZGF0YS5zdGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBzZWxlY3ROZ3NzbURhdGFTb3VyY2VWYWx1ZSA9IDxURGF0YVR5cGUgPSBhbnksIFRQYXJhbWV0ZXIgPSBhbnk+KFxuICBzdGF0ZTogU3RhdGUsXG4gIGtleTogc3RyaW5nXG4pOiBOZ3NzbURhdGFTb3VyY2VWYWx1ZTxURGF0YVR5cGUsIFRQYXJhbWV0ZXI+ID0+IHtcbiAgcmV0dXJuIChcbiAgICBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZVZhbHVlc1trZXldID8/IHtcbiAgICAgIHN0YXR1czogTmdzc21EYXRhU291cmNlVmFsdWVTdGF0dXMubm90UmVnaXN0ZXJlZFxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZWxlY3ROZ3NzbURhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZSA9IDxUUHJvcGVydHkgPSBhbnk+KFxuICBzdGF0ZTogU3RhdGUsXG4gIGtleTogc3RyaW5nLFxuICBwcm9wZXJ0eTogc3RyaW5nXG4pOiBOZ3NzbURhdGFTb3VyY2VBZGRpdGlvbmFsUHJvcGVydHlWYWx1ZTxUUHJvcGVydHk+ID0+IHtcbiAgcmV0dXJuIChcbiAgICBzZWxlY3ROZ3NzbURhdGFTdGF0ZShzdGF0ZSkuZGF0YVNvdXJjZVZhbHVlc1trZXldPy5hZGRpdGlvbmFsUHJvcGVydGllc1twcm9wZXJ0eV0gPz8ge1xuICAgICAgc3RhdHVzOiBOZ3NzbURhdGFTb3VyY2VWYWx1ZVN0YXR1cy5ub3RSZWdpc3RlcmVkXG4gICAgfVxuICApO1xufTtcbiJdfQ==
@@ -23,6 +23,8 @@ var NgssmDataActionType;
23
23
  NgssmDataActionType["setDataSourceParameter"] = "[NgssmDataActionType] setDataSourceParameter";
24
24
  NgssmDataActionType["clearDataSourceValue"] = "[NgssmDataActionType] clearDataSourceValue";
25
25
  NgssmDataActionType["setDataSourceValue"] = "[NgssmDataActionType] setDataSourceValue";
26
+ NgssmDataActionType["loadDataSourceAdditionalPropertyValue"] = "[NgssmDataActionType] loadDataSourceAdditionalPropertyValue";
27
+ NgssmDataActionType["setDataSourceAdditionalPropertyValue"] = "[NgssmDataActionType] setDataSourceAdditionalPropertyValue";
26
28
  })(NgssmDataActionType || (NgssmDataActionType = {}));
27
29
 
28
30
  class NgssmDataSourceValueAction {
@@ -69,6 +71,23 @@ class NgssmSetDataSourceParameterAction extends NgssmDataSourceValueAction {
69
71
  }
70
72
  }
71
73
 
74
+ class NgssmLoadDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {
75
+ constructor(key, property, forceReload) {
76
+ super(NgssmDataActionType.loadDataSourceAdditionalPropertyValue, key);
77
+ this.property = property;
78
+ this.forceReload = forceReload;
79
+ }
80
+ }
81
+
82
+ class NgssmSetDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {
83
+ constructor(key, property, status, value) {
84
+ super(NgssmDataActionType.setDataSourceAdditionalPropertyValue, key);
85
+ this.property = property;
86
+ this.status = status;
87
+ this.value = value;
88
+ }
89
+ }
90
+
72
91
  const NGSSM_DATA_SOURCE = new InjectionToken('NGSSM_DATA_SOURCE');
73
92
  const provideNgssmDataSource = (key, loadingFunc, dataLifetimeInSeconds) => {
74
93
  return makeEnvironmentProviders([
@@ -125,6 +144,11 @@ const selectNgssmDataSourceValue = (state, key) => {
125
144
  status: NgssmDataSourceValueStatus.notRegistered
126
145
  });
127
146
  };
147
+ const selectNgssmDataSourceAdditionalPropertyValue = (state, key, property) => {
148
+ return (selectNgssmDataState(state).dataSourceValues[key]?.additionalProperties[property] ?? {
149
+ status: NgssmDataSourceValueStatus.notRegistered
150
+ });
151
+ };
128
152
 
129
153
  class DataSourcesRegistrationReducer {
130
154
  constructor() {
@@ -140,7 +164,8 @@ class DataSourcesRegistrationReducer {
140
164
  return;
141
165
  }
142
166
  dataSourceValues[dataSource.key] = {
143
- status: NgssmDataSourceValueStatus.none
167
+ status: NgssmDataSourceValueStatus.none,
168
+ additionalProperties: {}
144
169
  };
145
170
  if (dataSource.dataLifetimeInSeconds) {
146
171
  dataSourceValues[dataSource.key].dataLifetimeInSeconds = dataSource.dataLifetimeInSeconds;
@@ -154,10 +179,10 @@ class DataSourcesRegistrationReducer {
154
179
  }
155
180
  return state;
156
181
  }
157
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourcesRegistrationReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
158
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourcesRegistrationReducer }); }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourcesRegistrationReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
183
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourcesRegistrationReducer }); }
159
184
  }
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourcesRegistrationReducer, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourcesRegistrationReducer, decorators: [{
161
186
  type: Injectable
162
187
  }] });
163
188
 
@@ -167,7 +192,9 @@ class DataSourceValueReducer {
167
192
  NgssmDataActionType.loadDataSourceValue,
168
193
  NgssmDataActionType.setDataSourceValue,
169
194
  NgssmDataActionType.clearDataSourceValue,
170
- NgssmDataActionType.setDataSourceParameter
195
+ NgssmDataActionType.setDataSourceParameter,
196
+ NgssmDataActionType.loadDataSourceAdditionalPropertyValue,
197
+ NgssmDataActionType.setDataSourceAdditionalPropertyValue
171
198
  ];
172
199
  }
173
200
  updateState(state, action) {
@@ -208,7 +235,8 @@ class DataSourceValueReducer {
208
235
  return updateNgssmDataState(currentState, {
209
236
  dataSourceValues: {
210
237
  [loadDataSourceValue.key]: {
211
- status: { $set: NgssmDataSourceValueStatus.loading }
238
+ status: { $set: NgssmDataSourceValueStatus.loading },
239
+ additionalProperties: { $set: {} }
212
240
  }
213
241
  }
214
242
  });
@@ -248,7 +276,8 @@ class DataSourceValueReducer {
248
276
  [ngssmClearDataSourceValueAction.key]: {
249
277
  status: { $set: NgssmDataSourceValueStatus.none },
250
278
  value: { $set: undefined },
251
- lastLoadingDate: { $set: undefined }
279
+ lastLoadingDate: { $set: undefined },
280
+ additionalProperties: { $set: {} }
252
281
  }
253
282
  }
254
283
  });
@@ -263,13 +292,55 @@ class DataSourceValueReducer {
263
292
  }
264
293
  });
265
294
  }
295
+ case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {
296
+ const ngssmLoadDataSourceAdditionalPropertyValueAction = action;
297
+ const dataSourcePropertyValue = selectNgssmDataState(state).dataSourceValues[ngssmLoadDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[ngssmLoadDataSourceAdditionalPropertyValueAction.property];
298
+ if (dataSourcePropertyValue?.status === NgssmDataSourceValueStatus.loaded) {
299
+ break;
300
+ }
301
+ return updateNgssmDataState(state, {
302
+ dataSourceValues: {
303
+ [ngssmLoadDataSourceAdditionalPropertyValueAction.key]: {
304
+ additionalProperties: {
305
+ [ngssmLoadDataSourceAdditionalPropertyValueAction.property]: {
306
+ $set: {
307
+ status: NgssmDataSourceValueStatus.loading,
308
+ value: undefined
309
+ }
310
+ }
311
+ }
312
+ }
313
+ }
314
+ });
315
+ }
316
+ case NgssmDataActionType.setDataSourceAdditionalPropertyValue: {
317
+ const ngssmSetDataSourceAdditionalPropertyValueAction = action;
318
+ const dataSourcePropertyValue = selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[ngssmSetDataSourceAdditionalPropertyValueAction.property];
319
+ if (!dataSourcePropertyValue) {
320
+ break;
321
+ }
322
+ return updateNgssmDataState(state, {
323
+ dataSourceValues: {
324
+ [ngssmSetDataSourceAdditionalPropertyValueAction.key]: {
325
+ additionalProperties: {
326
+ [ngssmSetDataSourceAdditionalPropertyValueAction.property]: {
327
+ $set: {
328
+ status: ngssmSetDataSourceAdditionalPropertyValueAction.status,
329
+ value: ngssmSetDataSourceAdditionalPropertyValueAction.value
330
+ }
331
+ }
332
+ }
333
+ }
334
+ }
335
+ });
336
+ }
266
337
  }
267
338
  return state;
268
339
  }
269
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourceValueReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
270
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourceValueReducer }); }
340
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourceValueReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
341
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourceValueReducer }); }
271
342
  }
272
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataSourceValueReducer, decorators: [{
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataSourceValueReducer, decorators: [{
273
344
  type: Injectable
274
345
  }] });
275
346
 
@@ -277,36 +348,60 @@ class DataLoadingEffect {
277
348
  constructor(logger, injector) {
278
349
  this.logger = logger;
279
350
  this.injector = injector;
280
- this.processedActions = [NgssmDataActionType.loadDataSourceValue];
351
+ this.processedActions = [
352
+ NgssmDataActionType.loadDataSourceValue,
353
+ NgssmDataActionType.loadDataSourceAdditionalPropertyValue
354
+ ];
281
355
  }
282
356
  processAction(store, state, action) {
283
- if (action.type === NgssmDataActionType.loadDataSourceValue) {
284
- const key = action.key;
285
- const dataSource = selectNgssmDataState(state).dataSources[key];
286
- if (!dataSource) {
287
- this.logger.error(`No data source setup for key '${key}'`);
288
- return;
289
- }
290
- const dataSourceValue = selectNgssmDataState(state).dataSourceValues[key];
291
- if (dataSourceValue?.status !== NgssmDataSourceValueStatus.loading) {
292
- this.logger.information(`Data source value for '${key}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`);
293
- return;
357
+ const key = action.key;
358
+ const dataSource = selectNgssmDataState(state).dataSources[key];
359
+ if (!dataSource) {
360
+ this.logger.error(`No data source setup for key '${key}'`);
361
+ return;
362
+ }
363
+ const dataSourceValue = selectNgssmDataState(state).dataSourceValues[key];
364
+ switch (action.type) {
365
+ case NgssmDataActionType.loadDataSourceValue: {
366
+ if (dataSourceValue?.status !== NgssmDataSourceValueStatus.loading) {
367
+ this.logger.information(`Data source value for '${key}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`);
368
+ return;
369
+ }
370
+ runInInjectionContext(this.injector, () => {
371
+ dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({
372
+ next: (value) => store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),
373
+ error: (error) => {
374
+ this.logger.error(`Unable to load data for '${key}'`, error);
375
+ store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.error));
376
+ }
377
+ });
378
+ });
379
+ break;
294
380
  }
295
- runInInjectionContext(this.injector, () => {
296
- dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({
297
- next: (value) => store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),
298
- error: (error) => {
299
- this.logger.error(`Unable to load data for '${key}'`, error);
300
- store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.error));
301
- }
381
+ case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {
382
+ const ngssmLoadDataSourceAdditionalPropertyValueAction = action;
383
+ const property = ngssmLoadDataSourceAdditionalPropertyValueAction.property;
384
+ if (dataSourceValue.additionalProperties[property]?.status !== NgssmDataSourceValueStatus.loading) {
385
+ this.logger.information(`Data source additional property value for '${key}' and property '${property}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`);
386
+ return;
387
+ }
388
+ runInInjectionContext(this.injector, () => {
389
+ dataSource.dataLoadingFunc(state, dataSourceValue.parameter, property).subscribe({
390
+ next: (value) => store.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.loaded, value)),
391
+ error: (error) => {
392
+ this.logger.error(`Unable to load data for '${key}' and property '${property}'`, error);
393
+ store.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.error));
394
+ }
395
+ });
302
396
  });
303
- });
397
+ break;
398
+ }
304
399
  }
305
400
  }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataLoadingEffect, deps: [{ token: i1.Logger }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
307
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataLoadingEffect }); }
401
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataLoadingEffect, deps: [{ token: i1.Logger }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
402
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataLoadingEffect }); }
308
403
  }
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DataLoadingEffect, decorators: [{
404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DataLoadingEffect, decorators: [{
310
405
  type: Injectable
311
406
  }], ctorParameters: () => [{ type: i1.Logger }, { type: i0.EnvironmentInjector }] });
312
407
 
@@ -314,10 +409,10 @@ class NgssmDataSourceCollection {
314
409
  constructor(dataSources) {
315
410
  this.dataSources = dataSources;
316
411
  }
317
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataSourceCollection, deps: [{ token: NGSSM_DATA_SOURCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
318
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataSourceCollection, providedIn: 'root' }); }
412
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataSourceCollection, deps: [{ token: NGSSM_DATA_SOURCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
413
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataSourceCollection, providedIn: 'root' }); }
319
414
  }
320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataSourceCollection, decorators: [{
415
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataSourceCollection, decorators: [{
321
416
  type: Injectable,
322
417
  args: [{
323
418
  providedIn: 'root'
@@ -356,10 +451,10 @@ class IsNgssmDataSourceValueStatusPipe {
356
451
  const itemStatus = selectNgssmDataSourceValue(value, key).status;
357
452
  return expectedStatuses.includes(itemStatus);
358
453
  }
359
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
360
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, isStandalone: true, name: "isNgssmDataSourceValueStatus" }); }
454
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
455
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, isStandalone: true, name: "isNgssmDataSourceValueStatus" }); }
361
456
  }
362
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, decorators: [{
457
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, decorators: [{
363
458
  type: Pipe,
364
459
  args: [{
365
460
  name: 'isNgssmDataSourceValueStatus',
@@ -403,10 +498,10 @@ class NgssmDataReloadButtonComponent extends NgSsmComponent {
403
498
  reload() {
404
499
  this._dataSourceKeys.forEach((key) => this.dispatchAction(new NgssmLoadDataSourceValueAction(key, true)));
405
500
  }
406
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
407
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: NgssmDataReloadButtonComponent, isStandalone: true, selector: "ngssm-data-reload-button", inputs: { dataSourceKeys: "dataSourceKeys" }, usesInheritance: true, ngImport: i0, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n }\n\n</button>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
501
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
502
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: NgssmDataReloadButtonComponent, isStandalone: true, selector: "ngssm-data-reload-button", inputs: { dataSourceKeys: "dataSourceKeys" }, usesInheritance: true, ngImport: i0, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n }\n\n</button>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
408
503
  }
409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgssmDataReloadButtonComponent, decorators: [{
504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgssmDataReloadButtonComponent, decorators: [{
410
505
  type: Component,
411
506
  args: [{ selector: 'ngssm-data-reload-button', standalone: true, imports: [CommonModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n }\n\n</button>" }]
412
507
  }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { dataSourceKeys: [{
@@ -421,5 +516,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
421
516
  * Generated bundle index. Do not edit.
422
517
  */
423
518
 
424
- export { IsNgssmDataSourceValueStatusPipe, NGSSM_DATA_SOURCE, NgssmClearDataSourceValueAction, NgssmDataActionType, NgssmDataReloadButtonComponent, NgssmDataSourceCollection, NgssmDataSourceValueAction, NgssmDataSourceValueStatus, NgssmDataStateSpecification, NgssmLoadDataSourceValueAction, NgssmRegisterDataSourcesAction, NgssmSetDataSourceParameterAction, NgssmSetDataSourceValueAction, ngssmLoadDataSourceValue, provideNgssmData, provideNgssmDataSource, selectNgssmDataSourceValue, selectNgssmDataState, updateNgssmDataState };
519
+ export { IsNgssmDataSourceValueStatusPipe, NGSSM_DATA_SOURCE, NgssmClearDataSourceValueAction, NgssmDataActionType, NgssmDataReloadButtonComponent, NgssmDataSourceCollection, NgssmDataSourceValueAction, NgssmDataSourceValueStatus, NgssmDataStateSpecification, NgssmLoadDataSourceAdditionalPropertyValueAction, NgssmLoadDataSourceValueAction, NgssmRegisterDataSourcesAction, NgssmSetDataSourceAdditionalPropertyValueAction, NgssmSetDataSourceParameterAction, NgssmSetDataSourceValueAction, ngssmLoadDataSourceValue, provideNgssmData, provideNgssmDataSource, selectNgssmDataSourceAdditionalPropertyValue, selectNgssmDataSourceValue, selectNgssmDataState, updateNgssmDataState };
425
520
  //# sourceMappingURL=ngssm-data.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngssm-data.mjs","sources":["../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-data-action-type.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-load-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-register-data-sources.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-clear-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-parameter.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/model/ngssm-data-source.ts","../../../projects/ngssm-data/src/lib/ngssm-data/model/ngssm-data-source-value.ts","../../../projects/ngssm-data/src/lib/ngssm-data/state/ngssm-data.state.ts","../../../projects/ngssm-data/src/lib/ngssm-data/state/selectors.ts","../../../projects/ngssm-data/src/lib/ngssm-data/reducers/data-sources-registration.reducer.ts","../../../projects/ngssm-data/src/lib/ngssm-data/reducers/data-source-value.reducer.ts","../../../projects/ngssm-data/src/lib/ngssm-data/effects/data-loading.effect.ts","../../../projects/ngssm-data/src/lib/ngssm-data/provide-ngssm-data.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/is-ngssm-data-source-value-status.pipe.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.html","../../../projects/ngssm-data/src/public-api.ts","../../../projects/ngssm-data/src/ngssm-data.ts"],"sourcesContent":["export enum NgssmDataActionType {\n registerDataSources = '[NgssmDataActionType] registerDataSources',\n loadDataSourceValue = '[NgssmDataActionType] loadDataSourceValue',\n setDataSourceParameter = '[NgssmDataActionType] setDataSourceParameter',\n clearDataSourceValue = '[NgssmDataActionType] clearDataSourceValue',\n setDataSourceValue = '[NgssmDataActionType] setDataSourceValue'\n}\n","import { Action } from 'ngssm-store';\n\nexport class NgssmDataSourceValueAction implements Action {\n constructor(\n public readonly type: string,\n public readonly key: string\n ) {}\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmLoadDataSourceValueAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly forceReload?: boolean,\n public readonly parameter?: { value?: TParameter }\n ) {\n super(NgssmDataActionType.loadDataSourceValue, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueStatus } from '../model';\n\nexport class NgssmSetDataSourceValueAction<TData = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly status: NgssmDataSourceValueStatus,\n public readonly value?: TData\n ) {\n super(NgssmDataActionType.setDataSourceValue, key);\n }\n}\n","import { Action } from 'ngssm-store';\n\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSource } from '../model';\n\nexport class NgssmRegisterDataSourcesAction implements Action {\n public readonly type: string = NgssmDataActionType.registerDataSources;\n\n constructor(public readonly dataSources: NgssmDataSource[]) {}\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmClearDataSourceValueAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly clearParameter: boolean = false\n ) {\n super(NgssmDataActionType.clearDataSourceValue, key);\n }\n}\n","import { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\n\nexport class NgssmSetDataSourceParameterAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly parameter?: TParameter\n ) {\n super(NgssmDataActionType.setDataSourceParameter, key);\n }\n}\n","import { EnvironmentProviders, InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { State, Store } from 'ngssm-store';\nimport { NgssmLoadDataSourceValueAction } from '../actions';\n\nexport interface NgssmDataLoading<TData = any, TParameter = any> {\n (state: State, parameter?: TParameter): Observable<TData>;\n}\n\nexport interface NgssmDataSource<TData = any, TParameter = any> {\n key: string;\n dataLifetimeInSeconds?: number;\n dataLoadingFunc: NgssmDataLoading<TData, TParameter>;\n}\n\nexport const NGSSM_DATA_SOURCE = new InjectionToken<NgssmDataSource>('NGSSM_DATA_SOURCE');\n\nexport const provideNgssmDataSource = <TData = any, TParameter = any>(\n key: string,\n loadingFunc: NgssmDataLoading<TData, TParameter>,\n dataLifetimeInSeconds?: number\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_DATA_SOURCE,\n useFactory: () => {\n const dataSource: NgssmDataSource<TData, TParameter> = {\n key,\n dataLifetimeInSeconds,\n dataLoadingFunc: loadingFunc\n };\n return dataSource;\n },\n multi: true\n }\n ]);\n};\n\nexport const ngssmLoadDataSourceValue = (key: string, forceReload: boolean = false): (() => boolean) => {\n return () => {\n inject(Store).dispatchAction(new NgssmLoadDataSourceValueAction(key, forceReload));\n return true;\n };\n};\n","import { DateTime } from 'luxon';\n\nexport enum NgssmDataSourceValueStatus {\n none = 'none',\n notRegistered = 'notRegistered',\n loading = 'loading',\n loaded = 'loaded',\n error = 'error'\n}\n\nexport interface NgssmDataSourceValue<TData = any, TParameter = any> {\n status: NgssmDataSourceValueStatus;\n value?: TData;\n parameter?: TParameter;\n lastLoadingDate?: DateTime;\n dataLifetimeInSeconds?: number;\n}\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\nimport { NgssmDataSource, NgssmDataSourceValue } from '../model';\n\nexport const selectNgssmDataState = (state: State): NgssmDataState => state[NgssmDataStateSpecification.featureStateKey] as NgssmDataState;\n\nexport const updateNgssmDataState = (state: State, command: Spec<NgssmDataState, never>): State =>\n update(state, {\n [NgssmDataStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmDataState {\n dataSourceValues: { [key: string]: NgssmDataSourceValue };\n dataSources: { [key: string]: NgssmDataSource };\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmDataStateSpecification.featureStateKey,\n initialState: NgssmDataStateSpecification.initialState\n})\nexport class NgssmDataStateSpecification {\n public static readonly featureStateKey = 'ngssm-data-state';\n public static readonly initialState: NgssmDataState = {\n dataSourceValues: {},\n dataSources: {}\n };\n}\n","import { State } from 'ngssm-store';\nimport { NgssmDataSourceValue, NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataState } from './ngssm-data.state';\n\nexport const selectNgssmDataSourceValue = <TDataType = any, TParameter = any>(\n state: State,\n key: string\n): NgssmDataSourceValue<TDataType, TParameter> => {\n return (\n selectNgssmDataState(state).dataSourceValues[key] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }\n );\n};\n","import { Injectable } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { NgssmDataActionType, NgssmRegisterDataSourcesAction } from '../actions';\nimport { NgssmDataSource, NgssmDataSourceValue, NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataState, updateNgssmDataState } from '../state';\n\n@Injectable()\nexport class DataSourcesRegistrationReducer implements Reducer {\n public readonly processedActions: string[] = [NgssmDataActionType.registerDataSources];\n\n public updateState(state: State, action: Action): State {\n if (action.type === NgssmDataActionType.registerDataSources) {\n const registerDataSourcesAction = action as NgssmRegisterDataSourcesAction;\n const dataSourceValues: { [key: string]: NgssmDataSourceValue } = {};\n const dataSources: { [key: string]: NgssmDataSource } = {};\n registerDataSourcesAction.dataSources.forEach((dataSource) => {\n if (selectNgssmDataState(state).dataSources[dataSource.key]) {\n return;\n }\n\n dataSourceValues[dataSource.key] = {\n status: NgssmDataSourceValueStatus.none\n };\n\n if (dataSource.dataLifetimeInSeconds) {\n dataSourceValues[dataSource.key].dataLifetimeInSeconds = dataSource.dataLifetimeInSeconds;\n }\n\n dataSources[dataSource.key] = dataSource;\n });\n\n return updateNgssmDataState(state, {\n dataSourceValues: { $merge: dataSourceValues },\n dataSources: { $merge: dataSources }\n });\n }\n\n return state;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DateTime } from 'luxon';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport {\n NgssmClearDataSourceValueAction,\n NgssmDataActionType,\n NgssmLoadDataSourceValueAction,\n NgssmSetDataSourceParameterAction,\n NgssmSetDataSourceValueAction\n} from '../actions';\nimport { selectNgssmDataState, updateNgssmDataState } from '../state';\nimport { NgssmDataSourceValueStatus } from '../model';\n\n@Injectable()\nexport class DataSourceValueReducer implements Reducer {\n public readonly processedActions: string[] = [\n NgssmDataActionType.loadDataSourceValue,\n NgssmDataActionType.setDataSourceValue,\n NgssmDataActionType.clearDataSourceValue,\n NgssmDataActionType.setDataSourceParameter\n ];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmDataActionType.loadDataSourceValue: {\n const loadDataSourceValue = action as NgssmLoadDataSourceValueAction;\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[loadDataSourceValue.key];\n if (!dataSourceValue) {\n break;\n }\n\n let shouldReload = false;\n\n let currentState = state;\n if (loadDataSourceValue.parameter) {\n shouldReload = true;\n currentState = updateNgssmDataState(state, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n parameter: { $set: loadDataSourceValue.parameter.value }\n }\n }\n });\n }\n\n if (dataSourceValue.status === NgssmDataSourceValueStatus.loaded) {\n if (loadDataSourceValue.forceReload === true || !dataSourceValue.dataLifetimeInSeconds || !dataSourceValue.lastLoadingDate) {\n shouldReload = true;\n } else {\n const dataLifetime = DateTime.now().diff(dataSourceValue.lastLoadingDate, 'second');\n if ((dataLifetime.toObject().seconds ?? 0) > dataSourceValue.dataLifetimeInSeconds) {\n shouldReload = true;\n }\n }\n } else {\n shouldReload = true;\n }\n\n if (shouldReload) {\n return updateNgssmDataState(currentState, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n status: { $set: NgssmDataSourceValueStatus.loading }\n }\n }\n });\n }\n\n break;\n }\n\n case NgssmDataActionType.setDataSourceValue: {\n const ngssmSetDataSourceValueAction = action as NgssmSetDataSourceValueAction;\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceValueAction.key];\n if (!dataSourceValue) {\n break;\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceValueAction.key]: {\n status: { $set: ngssmSetDataSourceValueAction.status },\n value: { $set: ngssmSetDataSourceValueAction.value },\n lastLoadingDate: { $set: DateTime.now() }\n }\n }\n });\n }\n\n case NgssmDataActionType.clearDataSourceValue: {\n const ngssmClearDataSourceValueAction = action as NgssmClearDataSourceValueAction;\n let currentState = state;\n if (ngssmClearDataSourceValueAction.clearParameter) {\n currentState = updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmClearDataSourceValueAction.key]: {\n parameter: { $set: undefined }\n }\n }\n });\n }\n\n return updateNgssmDataState(currentState, {\n dataSourceValues: {\n [ngssmClearDataSourceValueAction.key]: {\n status: { $set: NgssmDataSourceValueStatus.none },\n value: { $set: undefined },\n lastLoadingDate: { $set: undefined }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceParameter: {\n const ngssmSetDataSourceParameterAction = action as NgssmSetDataSourceParameterAction;\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceParameterAction.key]: {\n parameter: { $set: ngssmSetDataSourceParameterAction.parameter }\n }\n }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentInjector, Injectable, runInInjectionContext } from '@angular/core';\n\nimport { Effect, Store, State, Action, Logger } from 'ngssm-store';\n\nimport { NgssmDataActionType, NgssmDataSourceValueAction, NgssmSetDataSourceValueAction } from '../actions';\nimport { selectNgssmDataState } from '../state';\nimport { NgssmDataSourceValueStatus } from '../model';\n\n@Injectable()\nexport class DataLoadingEffect implements Effect {\n public readonly processedActions: string[] = [NgssmDataActionType.loadDataSourceValue];\n\n constructor(\n private logger: Logger,\n private injector: EnvironmentInjector\n ) {}\n\n public processAction(store: Store, state: State, action: Action): void {\n if (action.type === NgssmDataActionType.loadDataSourceValue) {\n const key = (action as NgssmDataSourceValueAction).key;\n const dataSource = selectNgssmDataState(state).dataSources[key];\n if (!dataSource) {\n this.logger.error(`No data source setup for key '${key}'`);\n return;\n }\n\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[key];\n if (dataSourceValue?.status !== NgssmDataSourceValueStatus.loading) {\n this.logger.information(\n `Data source value for '${key}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`\n );\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({\n next: (value) => store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}'`, error);\n store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.error));\n }\n });\n });\n }\n }\n}\n","import { APP_INITIALIZER, EnvironmentProviders, Inject, Injectable, Optional, makeEnvironmentProviders } from '@angular/core';\n\nimport { Store, provideEffects, provideReducers } from 'ngssm-store';\n\nimport { NGSSM_DATA_SOURCE, NgssmDataSource } from './model';\nimport { DataSourceValueReducer, DataSourcesRegistrationReducer } from './reducers';\nimport { DataLoadingEffect } from './effects';\nimport { NgssmRegisterDataSourcesAction } from './actions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgssmDataSourceCollection {\n constructor(@Inject(NGSSM_DATA_SOURCE) @Optional() public dataSources: NgssmDataSource[]) {}\n}\n\nconst initDataSourceValues = (store: Store, dataSourceCollection: NgssmDataSourceCollection): (() => void) => {\n return () => {\n const dataSources = dataSourceCollection.dataSources ?? [];\n if (dataSources.length > 0) {\n store.dispatchAction(new NgssmRegisterDataSourcesAction(dataSources));\n }\n };\n};\n\nexport const provideNgssmData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: APP_INITIALIZER,\n useFactory: initDataSourceValues,\n deps: [Store, NgssmDataSourceCollection],\n multi: true\n },\n provideReducers(DataSourcesRegistrationReducer, DataSourceValueReducer),\n provideEffects(DataLoadingEffect)\n ]);\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { State } from 'ngssm-store';\n\nimport { NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataSourceValue } from '../state';\n\n@Pipe({\n name: 'isNgssmDataSourceValueStatus',\n standalone: true\n})\nexport class IsNgssmDataSourceValueStatusPipe implements PipeTransform {\n public transform(value: State, ...args: string[]): boolean {\n const key = args[0];\n const expectedStatuses = args.slice(1).map((a) => a as NgssmDataSourceValueStatus);\n const itemStatus = selectNgssmDataSourceValue(value, key).status;\n return expectedStatuses.includes(itemStatus);\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { DateTime } from 'luxon';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { selectNgssmDataState } from '../../state';\nimport { NgssmDataSourceValueStatus } from '../../model';\nimport { NgssmLoadDataSourceValueAction } from '../../actions';\n\n@Component({\n selector: 'ngssm-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressSpinnerModule],\n templateUrl: './ngssm-data-reload-button.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmDataReloadButtonComponent extends NgSsmComponent {\n private readonly toUnsubscribe$ = new Subject<void>();\n private _dataSourceKeys: string[] = [];\n\n public readonly loadInProgress = signal<boolean>(false);\n public readonly buttonDisabled = signal<boolean>(true);\n public readonly tooltipMessage = signal<string>('');\n\n constructor(store: Store) {\n super(store);\n }\n\n @Input() public set dataSourceKeys(value: string[]) {\n this.toUnsubscribe$.next();\n this._dataSourceKeys = value ?? [];\n this.watch((s) => selectNgssmDataState(s).dataSourceValues)\n .pipe(takeUntil(this.toUnsubscribe$))\n .subscribe((values) => {\n this.loadInProgress.set(this._dataSourceKeys.findIndex((v) => values[v]?.status === NgssmDataSourceValueStatus.loading) !== -1);\n this.buttonDisabled.set(this.loadInProgress() === true || this._dataSourceKeys.findIndex((v) => !!values[v]) === -1);\n let timestamp: DateTime | undefined;\n this._dataSourceKeys.forEach((key) => {\n const keyTimestamp = values[key]?.lastLoadingDate;\n if (keyTimestamp) {\n if (!timestamp || timestamp > keyTimestamp) {\n timestamp = keyTimestamp;\n }\n }\n });\n\n let tooltiMessage = 'Reload data.';\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${timestamp.toHTTP()}`].join('\\n');\n }\n this.tooltipMessage.set(tooltiMessage);\n });\n }\n\n public reload(): void {\n this._dataSourceKeys.forEach((key) => this.dispatchAction(new NgssmLoadDataSourceValueAction(key, true)));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n }\n\n</button>","/*\n * Public API Surface of ngssm-data\n */\n\nexport * from './lib/ngssm-data/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngssm-data.mjs","sources":["../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-data-action-type.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-load-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-register-data-sources.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-clear-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-parameter.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-load-data-source-additional-property-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-additional-property-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/model/ngssm-data-source.ts","../../../projects/ngssm-data/src/lib/ngssm-data/model/ngssm-data-source-value.ts","../../../projects/ngssm-data/src/lib/ngssm-data/state/ngssm-data.state.ts","../../../projects/ngssm-data/src/lib/ngssm-data/state/selectors.ts","../../../projects/ngssm-data/src/lib/ngssm-data/reducers/data-sources-registration.reducer.ts","../../../projects/ngssm-data/src/lib/ngssm-data/reducers/data-source-value.reducer.ts","../../../projects/ngssm-data/src/lib/ngssm-data/effects/data-loading.effect.ts","../../../projects/ngssm-data/src/lib/ngssm-data/provide-ngssm-data.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/is-ngssm-data-source-value-status.pipe.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.html","../../../projects/ngssm-data/src/public-api.ts","../../../projects/ngssm-data/src/ngssm-data.ts"],"sourcesContent":["export enum NgssmDataActionType {\n registerDataSources = '[NgssmDataActionType] registerDataSources',\n loadDataSourceValue = '[NgssmDataActionType] loadDataSourceValue',\n setDataSourceParameter = '[NgssmDataActionType] setDataSourceParameter',\n clearDataSourceValue = '[NgssmDataActionType] clearDataSourceValue',\n setDataSourceValue = '[NgssmDataActionType] setDataSourceValue',\n loadDataSourceAdditionalPropertyValue = '[NgssmDataActionType] loadDataSourceAdditionalPropertyValue',\n setDataSourceAdditionalPropertyValue = '[NgssmDataActionType] setDataSourceAdditionalPropertyValue'\n}\n","import { Action } from 'ngssm-store';\n\nexport class NgssmDataSourceValueAction implements Action {\n constructor(\n public readonly type: string,\n public readonly key: string\n ) {}\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmLoadDataSourceValueAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly forceReload?: boolean,\n public readonly parameter?: { value?: TParameter }\n ) {\n super(NgssmDataActionType.loadDataSourceValue, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueStatus } from '../model';\n\nexport class NgssmSetDataSourceValueAction<TData = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly status: NgssmDataSourceValueStatus,\n public readonly value?: TData\n ) {\n super(NgssmDataActionType.setDataSourceValue, key);\n }\n}\n","import { Action } from 'ngssm-store';\n\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSource } from '../model';\n\nexport class NgssmRegisterDataSourcesAction implements Action {\n public readonly type: string = NgssmDataActionType.registerDataSources;\n\n constructor(public readonly dataSources: NgssmDataSource[]) {}\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmClearDataSourceValueAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly clearParameter: boolean = false\n ) {\n super(NgssmDataActionType.clearDataSourceValue, key);\n }\n}\n","import { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\n\nexport class NgssmSetDataSourceParameterAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly parameter?: TParameter\n ) {\n super(NgssmDataActionType.setDataSourceParameter, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmLoadDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly property: string,\n public readonly forceReload?: boolean\n ) {\n super(NgssmDataActionType.loadDataSourceAdditionalPropertyValue, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataSourceValueStatus } from '../model';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmSetDataSourceAdditionalPropertyValueAction<TProperty = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly property: string,\n public readonly status: NgssmDataSourceValueStatus,\n public readonly value?: TProperty\n ) {\n super(NgssmDataActionType.setDataSourceAdditionalPropertyValue, key);\n }\n}\n","import { EnvironmentProviders, InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { State, Store } from 'ngssm-store';\nimport { NgssmLoadDataSourceValueAction } from '../actions';\n\nexport interface NgssmDataLoading<TData = any, TParameter = any> {\n (state: State, parameter?: TParameter, additionalProperty?: string): Observable<TData>;\n}\n\nexport interface NgssmDataSource<TData = any, TParameter = any> {\n key: string;\n dataLifetimeInSeconds?: number;\n dataLoadingFunc: NgssmDataLoading<TData, TParameter>;\n}\n\nexport const NGSSM_DATA_SOURCE = new InjectionToken<NgssmDataSource>('NGSSM_DATA_SOURCE');\n\nexport const provideNgssmDataSource = <TData = any, TParameter = any>(\n key: string,\n loadingFunc: NgssmDataLoading<TData, TParameter>,\n dataLifetimeInSeconds?: number\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_DATA_SOURCE,\n useFactory: () => {\n const dataSource: NgssmDataSource<TData, TParameter> = {\n key,\n dataLifetimeInSeconds,\n dataLoadingFunc: loadingFunc\n };\n return dataSource;\n },\n multi: true\n }\n ]);\n};\n\nexport const ngssmLoadDataSourceValue = (key: string, forceReload: boolean = false): (() => boolean) => {\n return () => {\n inject(Store).dispatchAction(new NgssmLoadDataSourceValueAction(key, forceReload));\n return true;\n };\n};\n","import { DateTime } from 'luxon';\n\nexport enum NgssmDataSourceValueStatus {\n none = 'none',\n notRegistered = 'notRegistered',\n loading = 'loading',\n loaded = 'loaded',\n error = 'error'\n}\n\nexport interface NgssmDataSourceAdditionalPropertyValue<TProperty = any> {\n status: NgssmDataSourceValueStatus;\n value?: TProperty;\n lastLoadingDate?: DateTime;\n}\n\nexport interface NgssmDataSourceValue<TData = any, TParameter = any> {\n status: NgssmDataSourceValueStatus;\n value?: TData;\n parameter?: TParameter;\n lastLoadingDate?: DateTime;\n dataLifetimeInSeconds?: number;\n additionalProperties: { [key: string]: NgssmDataSourceAdditionalPropertyValue };\n}\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\nimport { NgssmDataSource, NgssmDataSourceValue } from '../model';\n\nexport const selectNgssmDataState = (state: State): NgssmDataState => state[NgssmDataStateSpecification.featureStateKey] as NgssmDataState;\n\nexport const updateNgssmDataState = (state: State, command: Spec<NgssmDataState, never>): State =>\n update(state, {\n [NgssmDataStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmDataState {\n dataSourceValues: { [key: string]: NgssmDataSourceValue };\n dataSources: { [key: string]: NgssmDataSource };\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmDataStateSpecification.featureStateKey,\n initialState: NgssmDataStateSpecification.initialState\n})\nexport class NgssmDataStateSpecification {\n public static readonly featureStateKey = 'ngssm-data-state';\n public static readonly initialState: NgssmDataState = {\n dataSourceValues: {},\n dataSources: {}\n };\n}\n","import { State } from 'ngssm-store';\nimport { NgssmDataSourceAdditionalPropertyValue, NgssmDataSourceValue, NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataState } from './ngssm-data.state';\n\nexport const selectNgssmDataSourceValue = <TDataType = any, TParameter = any>(\n state: State,\n key: string\n): NgssmDataSourceValue<TDataType, TParameter> => {\n return (\n selectNgssmDataState(state).dataSourceValues[key] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }\n );\n};\n\nexport const selectNgssmDataSourceAdditionalPropertyValue = <TProperty = any>(\n state: State,\n key: string,\n property: string\n): NgssmDataSourceAdditionalPropertyValue<TProperty> => {\n return (\n selectNgssmDataState(state).dataSourceValues[key]?.additionalProperties[property] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }\n );\n};\n","import { Injectable } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { NgssmDataActionType, NgssmRegisterDataSourcesAction } from '../actions';\nimport { NgssmDataSource, NgssmDataSourceValue, NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataState, updateNgssmDataState } from '../state';\n\n@Injectable()\nexport class DataSourcesRegistrationReducer implements Reducer {\n public readonly processedActions: string[] = [NgssmDataActionType.registerDataSources];\n\n public updateState(state: State, action: Action): State {\n if (action.type === NgssmDataActionType.registerDataSources) {\n const registerDataSourcesAction = action as NgssmRegisterDataSourcesAction;\n const dataSourceValues: { [key: string]: NgssmDataSourceValue } = {};\n const dataSources: { [key: string]: NgssmDataSource } = {};\n registerDataSourcesAction.dataSources.forEach((dataSource) => {\n if (selectNgssmDataState(state).dataSources[dataSource.key]) {\n return;\n }\n\n dataSourceValues[dataSource.key] = {\n status: NgssmDataSourceValueStatus.none,\n additionalProperties: {}\n };\n\n if (dataSource.dataLifetimeInSeconds) {\n dataSourceValues[dataSource.key].dataLifetimeInSeconds = dataSource.dataLifetimeInSeconds;\n }\n\n dataSources[dataSource.key] = dataSource;\n });\n\n return updateNgssmDataState(state, {\n dataSourceValues: { $merge: dataSourceValues },\n dataSources: { $merge: dataSources }\n });\n }\n\n return state;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DateTime } from 'luxon';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport {\n NgssmClearDataSourceValueAction,\n NgssmDataActionType,\n NgssmLoadDataSourceAdditionalPropertyValueAction,\n NgssmLoadDataSourceValueAction,\n NgssmSetDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceParameterAction,\n NgssmSetDataSourceValueAction\n} from '../actions';\nimport { selectNgssmDataState, updateNgssmDataState } from '../state';\nimport { NgssmDataSourceValueStatus } from '../model';\n\n@Injectable()\nexport class DataSourceValueReducer implements Reducer {\n public readonly processedActions: string[] = [\n NgssmDataActionType.loadDataSourceValue,\n NgssmDataActionType.setDataSourceValue,\n NgssmDataActionType.clearDataSourceValue,\n NgssmDataActionType.setDataSourceParameter,\n NgssmDataActionType.loadDataSourceAdditionalPropertyValue,\n NgssmDataActionType.setDataSourceAdditionalPropertyValue\n ];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmDataActionType.loadDataSourceValue: {\n const loadDataSourceValue = action as NgssmLoadDataSourceValueAction;\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[loadDataSourceValue.key];\n if (!dataSourceValue) {\n break;\n }\n\n let shouldReload = false;\n\n let currentState = state;\n if (loadDataSourceValue.parameter) {\n shouldReload = true;\n currentState = updateNgssmDataState(state, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n parameter: { $set: loadDataSourceValue.parameter.value }\n }\n }\n });\n }\n\n if (dataSourceValue.status === NgssmDataSourceValueStatus.loaded) {\n if (loadDataSourceValue.forceReload === true || !dataSourceValue.dataLifetimeInSeconds || !dataSourceValue.lastLoadingDate) {\n shouldReload = true;\n } else {\n const dataLifetime = DateTime.now().diff(dataSourceValue.lastLoadingDate, 'second');\n if ((dataLifetime.toObject().seconds ?? 0) > dataSourceValue.dataLifetimeInSeconds) {\n shouldReload = true;\n }\n }\n } else {\n shouldReload = true;\n }\n\n if (shouldReload) {\n return updateNgssmDataState(currentState, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n status: { $set: NgssmDataSourceValueStatus.loading },\n additionalProperties: { $set: {} }\n }\n }\n });\n }\n\n break;\n }\n\n case NgssmDataActionType.setDataSourceValue: {\n const ngssmSetDataSourceValueAction = action as NgssmSetDataSourceValueAction;\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceValueAction.key];\n if (!dataSourceValue) {\n break;\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceValueAction.key]: {\n status: { $set: ngssmSetDataSourceValueAction.status },\n value: { $set: ngssmSetDataSourceValueAction.value },\n lastLoadingDate: { $set: DateTime.now() }\n }\n }\n });\n }\n\n case NgssmDataActionType.clearDataSourceValue: {\n const ngssmClearDataSourceValueAction = action as NgssmClearDataSourceValueAction;\n let currentState = state;\n if (ngssmClearDataSourceValueAction.clearParameter) {\n currentState = updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmClearDataSourceValueAction.key]: {\n parameter: { $set: undefined }\n }\n }\n });\n }\n\n return updateNgssmDataState(currentState, {\n dataSourceValues: {\n [ngssmClearDataSourceValueAction.key]: {\n status: { $set: NgssmDataSourceValueStatus.none },\n value: { $set: undefined },\n lastLoadingDate: { $set: undefined },\n additionalProperties: { $set: {} }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceParameter: {\n const ngssmSetDataSourceParameterAction = action as NgssmSetDataSourceParameterAction;\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceParameterAction.key]: {\n parameter: { $set: ngssmSetDataSourceParameterAction.parameter }\n }\n }\n });\n }\n\n case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {\n const ngssmLoadDataSourceAdditionalPropertyValueAction = action as NgssmLoadDataSourceAdditionalPropertyValueAction;\n const dataSourcePropertyValue =\n selectNgssmDataState(state).dataSourceValues[ngssmLoadDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[\n ngssmLoadDataSourceAdditionalPropertyValueAction.property\n ];\n\n if (dataSourcePropertyValue?.status === NgssmDataSourceValueStatus.loaded) {\n break;\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.property]: {\n $set: {\n status: NgssmDataSourceValueStatus.loading,\n value: undefined\n }\n }\n }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceAdditionalPropertyValue: {\n const ngssmSetDataSourceAdditionalPropertyValueAction = action as NgssmSetDataSourceAdditionalPropertyValueAction;\n const dataSourcePropertyValue =\n selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[\n ngssmSetDataSourceAdditionalPropertyValueAction.property\n ];\n\n if (!dataSourcePropertyValue) {\n break;\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.property]: {\n $set: {\n status: ngssmSetDataSourceAdditionalPropertyValueAction.status,\n value: ngssmSetDataSourceAdditionalPropertyValueAction.value\n }\n }\n }\n }\n }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentInjector, Injectable, runInInjectionContext } from '@angular/core';\n\nimport { Effect, Store, State, Action, Logger } from 'ngssm-store';\n\nimport {\n NgssmDataActionType,\n NgssmDataSourceValueAction,\n NgssmLoadDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceValueAction\n} from '../actions';\nimport { selectNgssmDataState } from '../state';\nimport { NgssmDataSourceValueStatus } from '../model';\n\n@Injectable()\nexport class DataLoadingEffect implements Effect {\n public readonly processedActions: string[] = [\n NgssmDataActionType.loadDataSourceValue,\n NgssmDataActionType.loadDataSourceAdditionalPropertyValue\n ];\n\n constructor(\n private logger: Logger,\n private injector: EnvironmentInjector\n ) {}\n\n public processAction(store: Store, state: State, action: Action): void {\n const key = (action as NgssmDataSourceValueAction).key;\n const dataSource = selectNgssmDataState(state).dataSources[key];\n if (!dataSource) {\n this.logger.error(`No data source setup for key '${key}'`);\n return;\n }\n\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[key];\n\n switch (action.type) {\n case NgssmDataActionType.loadDataSourceValue: {\n if (dataSourceValue?.status !== NgssmDataSourceValueStatus.loading) {\n this.logger.information(\n `Data source value for '${key}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`\n );\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({\n next: (value) => store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}'`, error);\n store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.error));\n }\n });\n });\n\n break;\n }\n\n case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {\n const ngssmLoadDataSourceAdditionalPropertyValueAction = action as NgssmLoadDataSourceAdditionalPropertyValueAction;\n const property = ngssmLoadDataSourceAdditionalPropertyValueAction.property;\n if (dataSourceValue.additionalProperties[property]?.status !== NgssmDataSourceValueStatus.loading) {\n this.logger.information(\n `Data source additional property value for '${key}' and property '${property}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`\n );\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n dataSource.dataLoadingFunc(state, dataSourceValue.parameter, property).subscribe({\n next: (value) =>\n store.dispatchAction(\n new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.loaded, value)\n ),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}' and property '${property}'`, error);\n store.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.error));\n }\n });\n });\n\n break;\n }\n }\n }\n}\n","import { APP_INITIALIZER, EnvironmentProviders, Inject, Injectable, Optional, makeEnvironmentProviders } from '@angular/core';\n\nimport { Store, provideEffects, provideReducers } from 'ngssm-store';\n\nimport { NGSSM_DATA_SOURCE, NgssmDataSource } from './model';\nimport { DataSourceValueReducer, DataSourcesRegistrationReducer } from './reducers';\nimport { DataLoadingEffect } from './effects';\nimport { NgssmRegisterDataSourcesAction } from './actions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgssmDataSourceCollection {\n constructor(@Inject(NGSSM_DATA_SOURCE) @Optional() public dataSources: NgssmDataSource[]) {}\n}\n\nconst initDataSourceValues = (store: Store, dataSourceCollection: NgssmDataSourceCollection): (() => void) => {\n return () => {\n const dataSources = dataSourceCollection.dataSources ?? [];\n if (dataSources.length > 0) {\n store.dispatchAction(new NgssmRegisterDataSourcesAction(dataSources));\n }\n };\n};\n\nexport const provideNgssmData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: APP_INITIALIZER,\n useFactory: initDataSourceValues,\n deps: [Store, NgssmDataSourceCollection],\n multi: true\n },\n provideReducers(DataSourcesRegistrationReducer, DataSourceValueReducer),\n provideEffects(DataLoadingEffect)\n ]);\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { State } from 'ngssm-store';\n\nimport { NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataSourceValue } from '../state';\n\n@Pipe({\n name: 'isNgssmDataSourceValueStatus',\n standalone: true\n})\nexport class IsNgssmDataSourceValueStatusPipe implements PipeTransform {\n public transform(value: State, ...args: string[]): boolean {\n const key = args[0];\n const expectedStatuses = args.slice(1).map((a) => a as NgssmDataSourceValueStatus);\n const itemStatus = selectNgssmDataSourceValue(value, key).status;\n return expectedStatuses.includes(itemStatus);\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { DateTime } from 'luxon';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { selectNgssmDataState } from '../../state';\nimport { NgssmDataSourceValueStatus } from '../../model';\nimport { NgssmLoadDataSourceValueAction } from '../../actions';\n\n@Component({\n selector: 'ngssm-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressSpinnerModule],\n templateUrl: './ngssm-data-reload-button.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmDataReloadButtonComponent extends NgSsmComponent {\n private readonly toUnsubscribe$ = new Subject<void>();\n private _dataSourceKeys: string[] = [];\n\n public readonly loadInProgress = signal<boolean>(false);\n public readonly buttonDisabled = signal<boolean>(true);\n public readonly tooltipMessage = signal<string>('');\n\n constructor(store: Store) {\n super(store);\n }\n\n @Input() public set dataSourceKeys(value: string[]) {\n this.toUnsubscribe$.next();\n this._dataSourceKeys = value ?? [];\n this.watch((s) => selectNgssmDataState(s).dataSourceValues)\n .pipe(takeUntil(this.toUnsubscribe$))\n .subscribe((values) => {\n this.loadInProgress.set(this._dataSourceKeys.findIndex((v) => values[v]?.status === NgssmDataSourceValueStatus.loading) !== -1);\n this.buttonDisabled.set(this.loadInProgress() === true || this._dataSourceKeys.findIndex((v) => !!values[v]) === -1);\n let timestamp: DateTime | undefined;\n this._dataSourceKeys.forEach((key) => {\n const keyTimestamp = values[key]?.lastLoadingDate;\n if (keyTimestamp) {\n if (!timestamp || timestamp > keyTimestamp) {\n timestamp = keyTimestamp;\n }\n }\n });\n\n let tooltiMessage = 'Reload data.';\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${timestamp.toHTTP()}`].join('\\n');\n }\n this.tooltipMessage.set(tooltiMessage);\n });\n }\n\n public reload(): void {\n this._dataSourceKeys.forEach((key) => this.dispatchAction(new NgssmLoadDataSourceValueAction(key, true)));\n }\n}\n","<button mat-icon-button color=\"primary\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon class=\"fa-solid fa-rotate-right\"></mat-icon>\n }\n\n</button>","/*\n * Public API Surface of ngssm-data\n */\n\nexport * from './lib/ngssm-data/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;IAAY,oBAQX;AARD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,qBAAA,CAAA,GAAA,2CAAiE,CAAA;AACjE,IAAA,mBAAA,CAAA,qBAAA,CAAA,GAAA,2CAAiE,CAAA;AACjE,IAAA,mBAAA,CAAA,wBAAA,CAAA,GAAA,8CAAuE,CAAA;AACvE,IAAA,mBAAA,CAAA,sBAAA,CAAA,GAAA,4CAAmE,CAAA;AACnE,IAAA,mBAAA,CAAA,oBAAA,CAAA,GAAA,0CAA+D,CAAA;AAC/D,IAAA,mBAAA,CAAA,uCAAA,CAAA,GAAA,6DAAqG,CAAA;AACrG,IAAA,mBAAA,CAAA,sCAAA,CAAA,GAAA,4DAAmG,CAAA;AACrG,CAAC,EARW,mBAAmB,KAAnB,mBAAmB,GAQ9B,EAAA,CAAA,CAAA;;MCNY,0BAA0B,CAAA;IACrC,WACkB,CAAA,IAAY,EACZ,GAAW,EAAA;QADX,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;KACzB;AACL;;ACJK,MAAO,8BAAiD,SAAQ,0BAA0B,CAAA;AAC9F,IAAA,WAAA,CACE,GAAW,EACK,WAAqB,EACrB,SAAkC,EAAA;AAElD,QAAA,KAAK,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAHpC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAU;QACrB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyB;KAGnD;AACF;;ACPK,MAAO,6BAA2C,SAAQ,0BAA0B,CAAA;AACxF,IAAA,WAAA,CACE,GAAW,EACK,MAAkC,EAClC,KAAa,EAAA;AAE7B,QAAA,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAHnC,IAAM,CAAA,MAAA,GAAN,MAAM,CAA4B;QAClC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;KAG9B;AACF;;MCPY,8BAA8B,CAAA;AAGzC,IAAA,WAAA,CAA4B,WAA8B,EAAA;QAA9B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmB;AAF1C,QAAA,IAAA,CAAA,IAAI,GAAW,mBAAmB,CAAC,mBAAmB,CAAC;KAET;AAC/D;;ACNK,MAAO,+BAAgC,SAAQ,0BAA0B,CAAA;IAC7E,WACE,CAAA,GAAW,EACK,cAAA,GAA0B,KAAK,EAAA;AAE/C,QAAA,KAAK,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAFrC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiB;KAGhD;AACF;;ACPK,MAAO,iCAAoD,SAAQ,0BAA0B,CAAA;IACjG,WACE,CAAA,GAAW,EACK,SAAsB,EAAA;AAEtC,QAAA,KAAK,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAFvC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAa;KAGvC;AACF;;ACPK,MAAO,gDAAiD,SAAQ,0BAA0B,CAAA;AAC9F,IAAA,WAAA,CACE,GAAW,EACK,QAAgB,EAChB,WAAqB,EAAA;AAErC,QAAA,KAAK,CAAC,mBAAmB,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;QAHtD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAU;KAGtC;AACF;;ACPK,MAAO,+CAAiE,SAAQ,0BAA0B,CAAA;AAC9G,IAAA,WAAA,CACE,GAAW,EACK,QAAgB,EAChB,MAAkC,EAClC,KAAiB,EAAA;AAEjC,QAAA,KAAK,CAAC,mBAAmB,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QAJrD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;QAChB,IAAM,CAAA,MAAA,GAAN,MAAM,CAA4B;QAClC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAGlC;AACF;;MCGY,iBAAiB,GAAG,IAAI,cAAc,CAAkB,mBAAmB,EAAE;AAE7E,MAAA,sBAAsB,GAAG,CACpC,GAAW,EACX,WAAgD,EAChD,qBAA8B,KACN;AACxB,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,MAAK;AACf,gBAAA,MAAM,UAAU,GAAuC;oBACrD,GAAG;oBACH,qBAAqB;AACrB,oBAAA,eAAe,EAAE,WAAW;iBAC7B,CAAC;AACF,gBAAA,OAAO,UAAU,CAAC;aACnB;AACD,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,CAAC,CAAC;AACL,EAAE;AAEW,MAAA,wBAAwB,GAAG,CAAC,GAAW,EAAE,WAAA,GAAuB,KAAK,KAAqB;AACrG,IAAA,OAAO,MAAK;AACV,QAAA,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,8BAA8B,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AACnF,QAAA,OAAO,IAAI,CAAC;AACd,KAAC,CAAC;AACJ;;IC1CY,2BAMX;AAND,CAAA,UAAY,0BAA0B,EAAA;AACpC,IAAA,0BAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,0BAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,0BAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,0BAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,0BAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EANW,0BAA0B,KAA1B,0BAA0B,GAMrC,EAAA,CAAA,CAAA;;ACHM,MAAM,oBAAoB,GAAG,CAAC,KAAY,KAAqB,KAAK,CAAC,2BAA2B,CAAC,eAAe,EAAoB;AAEpI,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAAE,OAAoC,KACrF,MAAM,CAAC,KAAK,EAAE;AACZ,IAAA,CAAC,2BAA2B,CAAC,eAAe,GAAG,OAAO;AACvD,CAAA,EAAE;AAWQ,IAAA,2BAA2B,GAAjC,MAAM,2BAA2B,CAAA;aACf,IAAe,CAAA,eAAA,GAAG,kBAAH,CAAsB,EAAA;AACrC,IAAA,SAAA,IAAA,CAAA,YAAY,GAAmB;AACpD,QAAA,gBAAgB,EAAE,EAAE;AACpB,QAAA,WAAW,EAAE,EAAE;AAChB,KAHkC,CAGjC,EAAA;;AALS,2BAA2B,GAAA,UAAA,CAAA;AAJvC,IAAA,iBAAiB,CAAC;QACjB,eAAe,EAAE,2BAA2B,CAAC,eAAe;QAC5D,YAAY,EAAE,2BAA2B,CAAC,YAAY;KACvD,CAAC;AACW,CAAA,EAAA,2BAA2B,CAMvC;;MCvBY,0BAA0B,GAAG,CACxC,KAAY,EACZ,GAAW,KACoC;IAC/C,QACE,oBAAoB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI;QACnD,MAAM,EAAE,0BAA0B,CAAC,aAAa;AACjD,KAAA,EACD;AACJ,EAAE;AAEW,MAAA,4CAA4C,GAAG,CAC1D,KAAY,EACZ,GAAW,EACX,QAAgB,KACqC;AACrD,IAAA,QACE,oBAAoB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,IAAI;QACnF,MAAM,EAAE,0BAA0B,CAAC,aAAa;AACjD,KAAA,EACD;AACJ;;MChBa,8BAA8B,CAAA;AAD3C,IAAA,WAAA,GAAA;AAEkB,QAAA,IAAA,CAAA,gBAAgB,GAAa,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AAgCxF,KAAA;IA9BQ,WAAW,CAAC,KAAY,EAAE,MAAc,EAAA;QAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,mBAAmB,EAAE;YAC3D,MAAM,yBAAyB,GAAG,MAAwC,CAAC;YAC3E,MAAM,gBAAgB,GAA4C,EAAE,CAAC;YACrE,MAAM,WAAW,GAAuC,EAAE,CAAC;YAC3D,yBAAyB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AAC3D,gBAAA,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC3D,OAAO;iBACR;AAED,gBAAA,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG;oBACjC,MAAM,EAAE,0BAA0B,CAAC,IAAI;AACvC,oBAAA,oBAAoB,EAAE,EAAE;iBACzB,CAAC;AAEF,gBAAA,IAAI,UAAU,CAAC,qBAAqB,EAAE;oBACpC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,qBAAqB,GAAG,UAAU,CAAC,qBAAqB,CAAC;iBAC3F;AAED,gBAAA,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAC3C,aAAC,CAAC,CAAC;YAEH,OAAO,oBAAoB,CAAC,KAAK,EAAE;AACjC,gBAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;AAC9C,gBAAA,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;AACrC,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,OAAO,KAAK,CAAC;KACd;8GAhCU,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA9B,8BAA8B,EAAA,CAAA,CAAA,EAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;;;MCWE,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAEkB,QAAA,IAAA,CAAA,gBAAgB,GAAa;AAC3C,YAAA,mBAAmB,CAAC,mBAAmB;AACvC,YAAA,mBAAmB,CAAC,kBAAkB;AACtC,YAAA,mBAAmB,CAAC,oBAAoB;AACxC,YAAA,mBAAmB,CAAC,sBAAsB;AAC1C,YAAA,mBAAmB,CAAC,qCAAqC;AACzD,YAAA,mBAAmB,CAAC,oCAAoC;SACzD,CAAC;AAmKH,KAAA;IAjKQ,WAAW,CAAC,KAAY,EAAE,MAAc,EAAA;AAC7C,QAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,mBAAmB,CAAC,mBAAmB,EAAE;gBAC5C,MAAM,mBAAmB,GAAG,MAAwC,CAAC;AACrE,gBAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBAC9F,IAAI,CAAC,eAAe,EAAE;oBACpB,MAAM;iBACP;gBAED,IAAI,YAAY,GAAG,KAAK,CAAC;gBAEzB,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,gBAAA,IAAI,mBAAmB,CAAC,SAAS,EAAE;oBACjC,YAAY,GAAG,IAAI,CAAC;AACpB,oBAAA,YAAY,GAAG,oBAAoB,CAAC,KAAK,EAAE;AACzC,wBAAA,gBAAgB,EAAE;AAChB,4BAAA,CAAC,mBAAmB,CAAC,GAAG,GAAG;gCACzB,SAAS,EAAE,EAAE,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,KAAK,EAAE;AACzD,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAC,CAAC;iBACJ;gBAED,IAAI,eAAe,CAAC,MAAM,KAAK,0BAA0B,CAAC,MAAM,EAAE;AAChE,oBAAA,IAAI,mBAAmB,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,qBAAqB,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;wBAC1H,YAAY,GAAG,IAAI,CAAC;qBACrB;yBAAM;AACL,wBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACpF,wBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,eAAe,CAAC,qBAAqB,EAAE;4BAClF,YAAY,GAAG,IAAI,CAAC;yBACrB;qBACF;iBACF;qBAAM;oBACL,YAAY,GAAG,IAAI,CAAC;iBACrB;gBAED,IAAI,YAAY,EAAE;oBAChB,OAAO,oBAAoB,CAAC,YAAY,EAAE;AACxC,wBAAA,gBAAgB,EAAE;AAChB,4BAAA,CAAC,mBAAmB,CAAC,GAAG,GAAG;AACzB,gCAAA,MAAM,EAAE,EAAE,IAAI,EAAE,0BAA0B,CAAC,OAAO,EAAE;AACpD,gCAAA,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACnC,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAC,CAAC;iBACJ;gBAED,MAAM;aACP;AAED,YAAA,KAAK,mBAAmB,CAAC,kBAAkB,EAAE;gBAC3C,MAAM,6BAA6B,GAAG,MAAuC,CAAC;AAC9E,gBAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC;gBACxG,IAAI,CAAC,eAAe,EAAE;oBACpB,MAAM;iBACP;gBAED,OAAO,oBAAoB,CAAC,KAAK,EAAE;AACjC,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,CAAC,6BAA6B,CAAC,GAAG,GAAG;AACnC,4BAAA,MAAM,EAAE,EAAE,IAAI,EAAE,6BAA6B,CAAC,MAAM,EAAE;AACtD,4BAAA,KAAK,EAAE,EAAE,IAAI,EAAE,6BAA6B,CAAC,KAAK,EAAE;4BACpD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE;AAC1C,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CAAC;aACJ;AAED,YAAA,KAAK,mBAAmB,CAAC,oBAAoB,EAAE;gBAC7C,MAAM,+BAA+B,GAAG,MAAyC,CAAC;gBAClF,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,gBAAA,IAAI,+BAA+B,CAAC,cAAc,EAAE;AAClD,oBAAA,YAAY,GAAG,oBAAoB,CAAC,KAAK,EAAE;AACzC,wBAAA,gBAAgB,EAAE;AAChB,4BAAA,CAAC,+BAA+B,CAAC,GAAG,GAAG;AACrC,gCAAA,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AAC/B,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAC,CAAC;iBACJ;gBAED,OAAO,oBAAoB,CAAC,YAAY,EAAE;AACxC,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,CAAC,+BAA+B,CAAC,GAAG,GAAG;AACrC,4BAAA,MAAM,EAAE,EAAE,IAAI,EAAE,0BAA0B,CAAC,IAAI,EAAE;AACjD,4BAAA,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AAC1B,4BAAA,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AACpC,4BAAA,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACnC,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CAAC;aACJ;AAED,YAAA,KAAK,mBAAmB,CAAC,sBAAsB,EAAE;gBAC/C,MAAM,iCAAiC,GAAG,MAA2C,CAAC;gBACtF,OAAO,oBAAoB,CAAC,KAAK,EAAE;AACjC,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,CAAC,iCAAiC,CAAC,GAAG,GAAG;AACvC,4BAAA,SAAS,EAAE,EAAE,IAAI,EAAE,iCAAiC,CAAC,SAAS,EAAE;AACjE,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CAAC;aACJ;AAED,YAAA,KAAK,mBAAmB,CAAC,qCAAqC,EAAE;gBAC9D,MAAM,gDAAgD,GAAG,MAA0D,CAAC;gBACpH,MAAM,uBAAuB,GAC3B,oBAAoB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,gDAAgD,CAAC,GAAG,CAAC,EAAE,oBAAoB,CACtH,gDAAgD,CAAC,QAAQ,CAC1D,CAAC;gBAEJ,IAAI,uBAAuB,EAAE,MAAM,KAAK,0BAA0B,CAAC,MAAM,EAAE;oBACzE,MAAM;iBACP;gBAED,OAAO,oBAAoB,CAAC,KAAK,EAAE;AACjC,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,CAAC,gDAAgD,CAAC,GAAG,GAAG;AACtD,4BAAA,oBAAoB,EAAE;AACpB,gCAAA,CAAC,gDAAgD,CAAC,QAAQ,GAAG;AAC3D,oCAAA,IAAI,EAAE;wCACJ,MAAM,EAAE,0BAA0B,CAAC,OAAO;AAC1C,wCAAA,KAAK,EAAE,SAAS;AACjB,qCAAA;AACF,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CAAC;aACJ;AAED,YAAA,KAAK,mBAAmB,CAAC,oCAAoC,EAAE;gBAC7D,MAAM,+CAA+C,GAAG,MAAyD,CAAC;gBAClH,MAAM,uBAAuB,GAC3B,oBAAoB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,+CAA+C,CAAC,GAAG,CAAC,EAAE,oBAAoB,CACrH,+CAA+C,CAAC,QAAQ,CACzD,CAAC;gBAEJ,IAAI,CAAC,uBAAuB,EAAE;oBAC5B,MAAM;iBACP;gBAED,OAAO,oBAAoB,CAAC,KAAK,EAAE;AACjC,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,CAAC,+CAA+C,CAAC,GAAG,GAAG;AACrD,4BAAA,oBAAoB,EAAE;AACpB,gCAAA,CAAC,+CAA+C,CAAC,QAAQ,GAAG;AAC1D,oCAAA,IAAI,EAAE;wCACJ,MAAM,EAAE,+CAA+C,CAAC,MAAM;wCAC9D,KAAK,EAAE,+CAA+C,CAAC,KAAK;AAC7D,qCAAA;AACF,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CAAC;aACJ;SACF;AAED,QAAA,OAAO,KAAK,CAAC;KACd;8GA1KU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;MCHE,iBAAiB,CAAA;IAM5B,WACU,CAAA,MAAc,EACd,QAA6B,EAAA;QAD7B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;AAPvB,QAAA,IAAA,CAAA,gBAAgB,GAAa;AAC3C,YAAA,mBAAmB,CAAC,mBAAmB;AACvC,YAAA,mBAAmB,CAAC,qCAAqC;SAC1D,CAAC;KAKE;AAEG,IAAA,aAAa,CAAC,KAAY,EAAE,KAAY,EAAE,MAAc,EAAA;AAC7D,QAAA,MAAM,GAAG,GAAI,MAAqC,CAAC,GAAG,CAAC;QACvD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAiC,8BAAA,EAAA,GAAG,CAAG,CAAA,CAAA,CAAC,CAAC;YAC3D,OAAO;SACR;QAED,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1E,QAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,mBAAmB,CAAC,mBAAmB,EAAE;gBAC5C,IAAI,eAAe,EAAE,MAAM,KAAK,0BAA0B,CAAC,OAAO,EAAE;AAClE,oBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CACrB,0BAA0B,GAAG,CAAA,aAAA,EAAgB,0BAA0B,CAAC,OAAO,CAAc,WAAA,EAAA,eAAe,EAAE,MAAM,CAAA,CAAA,CAAG,CACxH,CAAC;oBACF,OAAO;iBACR;AAED,gBAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;oBACxC,UAAU,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;wBACrE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,CAAC,IAAI,6BAA6B,CAAC,GAAG,EAAE,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACvH,wBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;4BACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA4B,yBAAA,EAAA,GAAG,CAAG,CAAA,CAAA,EAAE,KAAK,CAAC,CAAC;AAC7D,4BAAA,KAAK,CAAC,cAAc,CAAC,IAAI,6BAA6B,CAAC,GAAG,EAAE,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;yBAChG;AACF,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;gBAEH,MAAM;aACP;AAED,YAAA,KAAK,mBAAmB,CAAC,qCAAqC,EAAE;gBAC9D,MAAM,gDAAgD,GAAG,MAA0D,CAAC;AACpH,gBAAA,MAAM,QAAQ,GAAG,gDAAgD,CAAC,QAAQ,CAAC;AAC3E,gBAAA,IAAI,eAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,0BAA0B,CAAC,OAAO,EAAE;AACjG,oBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CACrB,CAAA,2CAAA,EAA8C,GAAG,CAAmB,gBAAA,EAAA,QAAQ,gBAAgB,0BAA0B,CAAC,OAAO,CAAc,WAAA,EAAA,eAAe,EAAE,MAAM,CAAA,CAAA,CAAG,CACvK,CAAC;oBACF,OAAO;iBACR;AAED,gBAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;AACxC,oBAAA,UAAU,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC;wBAC/E,IAAI,EAAE,CAAC,KAAK,KACV,KAAK,CAAC,cAAc,CAClB,IAAI,+CAA+C,CAAC,GAAG,EAAE,QAAQ,EAAE,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAC7G;AACH,wBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,4BAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,yBAAA,EAA4B,GAAG,CAAA,gBAAA,EAAmB,QAAQ,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,CAAC;AACxF,4BAAA,KAAK,CAAC,cAAc,CAAC,IAAI,+CAA+C,CAAC,GAAG,EAAE,QAAQ,EAAE,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;yBAC5H;AACF,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;gBAEH,MAAM;aACP;SACF;KACF;8GArEU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;MCFE,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAA0D,WAA8B,EAAA;QAA9B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmB;KAAI;AADjF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAChB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAD1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAEc,MAAM;2BAAC,iBAAiB,CAAA;;0BAAG,QAAQ;;AAGlD,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAAE,oBAA+C,KAAkB;AAC3G,IAAA,OAAO,MAAK;AACV,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,IAAI,EAAE,CAAC;AAC3D,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,KAAK,CAAC,cAAc,CAAC,IAAI,8BAA8B,CAAC,WAAW,CAAC,CAAC,CAAC;SACvE;AACH,KAAC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,MAA2B;AACzD,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,IAAI,EAAE,CAAC,KAAK,EAAE,yBAAyB,CAAC;AACxC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA,eAAe,CAAC,8BAA8B,EAAE,sBAAsB,CAAC;QACvE,cAAc,CAAC,iBAAiB,CAAC;AAClC,KAAA,CAAC,CAAC;AACL;;MCzBa,gCAAgC,CAAA;AACpC,IAAA,SAAS,CAAC,KAAY,EAAE,GAAG,IAAc,EAAA;AAC9C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAA+B,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;AACjE,QAAA,OAAO,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAC9C;8GANU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,8BAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,8BAA8B;AACpC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACcK,MAAO,8BAA+B,SAAQ,cAAc,CAAA;AAQhE,IAAA,WAAA,CAAY,KAAY,EAAA;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;AARE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;QAC9C,IAAe,CAAA,eAAA,GAAa,EAAE,CAAC;AAEvB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAU,IAAI,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;KAInD;IAED,IAAoB,cAAc,CAAC,KAAe,EAAA;AAChD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,IAAI,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACxD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChI,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrH,YAAA,IAAI,SAA+B,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBACnC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC;gBAClD,IAAI,YAAY,EAAE;AAChB,oBAAA,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,YAAY,EAAE;wBAC1C,SAAS,GAAG,YAAY,CAAC;qBAC1B;iBACF;AACH,aAAC,CAAC,CAAC;YAEH,IAAI,aAAa,GAAG,cAAc,CAAC;YACnC,IAAI,SAAS,EAAE;AACb,gBAAA,aAAa,GAAG,CAAC,aAAa,EAAE,CAAA,UAAA,EAAa,SAAS,CAAC,MAAM,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC/E;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,8BAA8B,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3G;8GAxCU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB3C,+WASS,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDUG,YAAY,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,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,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,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,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,EAAA;;2FAKvF,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAR1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cACxB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,wBAAwB,CAAC,EAGlF,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+WAAA,EAAA,CAAA;0EAc3B,cAAc,EAAA,CAAA;sBAAjC,KAAK;;;AEpCR;;AAEG;;ACFH;;AAEG;;;;"}
@@ -5,3 +5,5 @@ export * from './ngssm-set-data-source-value.action';
5
5
  export * from './ngssm-register-data-sources.action';
6
6
  export * from './ngssm-clear-data-source-value.action';
7
7
  export * from './ngssm-set-data-source-parameter.action';
8
+ export * from './ngssm-load-data-source-additional-property-value.action';
9
+ export * from './ngssm-set-data-source-additional-property-value.action';
@@ -3,5 +3,7 @@ export declare enum NgssmDataActionType {
3
3
  loadDataSourceValue = "[NgssmDataActionType] loadDataSourceValue",
4
4
  setDataSourceParameter = "[NgssmDataActionType] setDataSourceParameter",
5
5
  clearDataSourceValue = "[NgssmDataActionType] clearDataSourceValue",
6
- setDataSourceValue = "[NgssmDataActionType] setDataSourceValue"
6
+ setDataSourceValue = "[NgssmDataActionType] setDataSourceValue",
7
+ loadDataSourceAdditionalPropertyValue = "[NgssmDataActionType] loadDataSourceAdditionalPropertyValue",
8
+ setDataSourceAdditionalPropertyValue = "[NgssmDataActionType] setDataSourceAdditionalPropertyValue"
7
9
  }
@@ -0,0 +1,6 @@
1
+ import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';
2
+ export declare class NgssmLoadDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {
3
+ readonly property: string;
4
+ readonly forceReload?: boolean | undefined;
5
+ constructor(key: string, property: string, forceReload?: boolean | undefined);
6
+ }
@@ -0,0 +1,8 @@
1
+ import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';
2
+ import { NgssmDataSourceValueStatus } from '../model';
3
+ export declare class NgssmSetDataSourceAdditionalPropertyValueAction<TProperty = any> extends NgssmDataSourceValueAction {
4
+ readonly property: string;
5
+ readonly status: NgssmDataSourceValueStatus;
6
+ readonly value?: TProperty | undefined;
7
+ constructor(key: string, property: string, status: NgssmDataSourceValueStatus, value?: TProperty | undefined);
8
+ }
@@ -6,10 +6,18 @@ export declare enum NgssmDataSourceValueStatus {
6
6
  loaded = "loaded",
7
7
  error = "error"
8
8
  }
9
+ export interface NgssmDataSourceAdditionalPropertyValue<TProperty = any> {
10
+ status: NgssmDataSourceValueStatus;
11
+ value?: TProperty;
12
+ lastLoadingDate?: DateTime;
13
+ }
9
14
  export interface NgssmDataSourceValue<TData = any, TParameter = any> {
10
15
  status: NgssmDataSourceValueStatus;
11
16
  value?: TData;
12
17
  parameter?: TParameter;
13
18
  lastLoadingDate?: DateTime;
14
19
  dataLifetimeInSeconds?: number;
20
+ additionalProperties: {
21
+ [key: string]: NgssmDataSourceAdditionalPropertyValue;
22
+ };
15
23
  }
@@ -2,7 +2,7 @@ import { EnvironmentProviders, InjectionToken } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { State } from 'ngssm-store';
4
4
  export interface NgssmDataLoading<TData = any, TParameter = any> {
5
- (state: State, parameter?: TParameter): Observable<TData>;
5
+ (state: State, parameter?: TParameter, additionalProperty?: string): Observable<TData>;
6
6
  }
7
7
  export interface NgssmDataSource<TData = any, TParameter = any> {
8
8
  key: string;
@@ -1,3 +1,4 @@
1
1
  import { State } from 'ngssm-store';
2
- import { NgssmDataSourceValue } from '../model';
2
+ import { NgssmDataSourceAdditionalPropertyValue, NgssmDataSourceValue } from '../model';
3
3
  export declare const selectNgssmDataSourceValue: <TDataType = any, TParameter = any>(state: State, key: string) => NgssmDataSourceValue<TDataType, TParameter>;
4
+ export declare const selectNgssmDataSourceAdditionalPropertyValue: <TProperty = any>(state: State, key: string, property: string) => NgssmDataSourceAdditionalPropertyValue<TProperty>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngssm-data",
3
- "version": "17.1.0",
3
+ "version": "17.1.2",
4
4
  "description": "NgSsm - Library used to facilitate the management of data get from remote service or computed locally.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",