@provoly/dashboard 1.4.27 → 1.4.28

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.
@@ -3,8 +3,9 @@ export const ClassActions = {
3
3
  load: createAction('[Class] (bus) Load Classes', props()),
4
4
  loadSuccess: createAction('[Class Api] (bus) Load Classes Success', props()),
5
5
  loadFailure: createAction('[Class Api] (bus) Load Classes Failure', props()),
6
+ requestUpdate: createAction('[Class Api] (bus) Request Classes Update'),
6
7
  loadDatasetCount: createAction('[Class Api] Load DatasetCount'),
7
8
  loadDatasetCountSuccess: createAction('[Class Api] Load DatasetCount Success', props()),
8
9
  loadDatasetCountFailure: createAction('[Class Api] Load DatasetCount Failure', props())
9
10
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJbEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLElBQUksRUFBRSxZQUFZLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUF1QixDQUFDO0lBQzlFLFdBQVcsRUFBRSxZQUFZLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxFQUF3QixDQUFDO0lBQ2xHLFdBQVcsRUFBRSxZQUFZLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxFQUFxQixDQUFDO0lBQy9GLGdCQUFnQixFQUFFLFlBQVksQ0FBQywrQkFBK0IsQ0FBQztJQUMvRCx1QkFBdUIsRUFBRSxZQUFZLENBQ25DLHVDQUF1QyxFQUN2QyxLQUFLLEVBRUQsQ0FDTDtJQUNELHVCQUF1QixFQUFFLFlBQVksQ0FDbkMsdUNBQXVDLEVBQ3ZDLEtBQUssRUFFRCxDQUNMO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUFjdGlvbiwgcHJvcHMgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBDbGFzcyB9IGZyb20gJy4vY2xhc3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhdGFzZXRDb3VudCB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGFzZXQuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IENsYXNzQWN0aW9ucyA9IHtcbiAgbG9hZDogY3JlYXRlQWN0aW9uKCdbQ2xhc3NdIChidXMpIExvYWQgQ2xhc3NlcycsIHByb3BzPHsgZm9yY2U/OiBib29sZWFuIH0+KCkpLFxuICBsb2FkU3VjY2VzczogY3JlYXRlQWN0aW9uKCdbQ2xhc3MgQXBpXSAoYnVzKSBMb2FkIENsYXNzZXMgU3VjY2VzcycsIHByb3BzPHsgY2xhc3NlczogQ2xhc3NbXSB9PigpKSxcbiAgbG9hZEZhaWx1cmU6IGNyZWF0ZUFjdGlvbignW0NsYXNzIEFwaV0gKGJ1cykgTG9hZCBDbGFzc2VzIEZhaWx1cmUnLCBwcm9wczx7IGVycm9yOiBzdHJpbmcgfT4oKSksXG4gIGxvYWREYXRhc2V0Q291bnQ6IGNyZWF0ZUFjdGlvbignW0NsYXNzIEFwaV0gTG9hZCBEYXRhc2V0Q291bnQnKSxcbiAgbG9hZERhdGFzZXRDb3VudFN1Y2Nlc3M6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0NsYXNzIEFwaV0gTG9hZCBEYXRhc2V0Q291bnQgU3VjY2VzcycsXG4gICAgcHJvcHM8e1xuICAgICAgZGF0YXNldENvdW50czogRGF0YXNldENvdW50W107XG4gICAgfT4oKVxuICApLFxuICBsb2FkRGF0YXNldENvdW50RmFpbHVyZTogY3JlYXRlQWN0aW9uKFxuICAgICdbQ2xhc3MgQXBpXSBMb2FkIERhdGFzZXRDb3VudCBGYWlsdXJlJyxcbiAgICBwcm9wczx7XG4gICAgICBlcnJvcjogYW55O1xuICAgIH0+KClcbiAgKVxufTtcbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJbEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLElBQUksRUFBRSxZQUFZLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUF1QixDQUFDO0lBQzlFLFdBQVcsRUFBRSxZQUFZLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxFQUF3QixDQUFDO0lBQ2xHLFdBQVcsRUFBRSxZQUFZLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxFQUFxQixDQUFDO0lBQy9GLGFBQWEsRUFBRSxZQUFZLENBQUMsMENBQTBDLENBQUM7SUFDdkUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLCtCQUErQixDQUFDO0lBQy9ELHVCQUF1QixFQUFFLFlBQVksQ0FDbkMsdUNBQXVDLEVBQ3ZDLEtBQUssRUFFRCxDQUNMO0lBQ0QsdUJBQXVCLEVBQUUsWUFBWSxDQUNuQyx1Q0FBdUMsRUFDdkMsS0FBSyxFQUVELENBQ0w7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENsYXNzIH0gZnJvbSAnLi9jbGFzcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0YXNldENvdW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YXNldC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgQ2xhc3NBY3Rpb25zID0ge1xuICBsb2FkOiBjcmVhdGVBY3Rpb24oJ1tDbGFzc10gKGJ1cykgTG9hZCBDbGFzc2VzJywgcHJvcHM8eyBmb3JjZT86IGJvb2xlYW4gfT4oKSksXG4gIGxvYWRTdWNjZXNzOiBjcmVhdGVBY3Rpb24oJ1tDbGFzcyBBcGldIChidXMpIExvYWQgQ2xhc3NlcyBTdWNjZXNzJywgcHJvcHM8eyBjbGFzc2VzOiBDbGFzc1tdIH0+KCkpLFxuICBsb2FkRmFpbHVyZTogY3JlYXRlQWN0aW9uKCdbQ2xhc3MgQXBpXSAoYnVzKSBMb2FkIENsYXNzZXMgRmFpbHVyZScsIHByb3BzPHsgZXJyb3I6IHN0cmluZyB9PigpKSxcbiAgcmVxdWVzdFVwZGF0ZTogY3JlYXRlQWN0aW9uKCdbQ2xhc3MgQXBpXSAoYnVzKSBSZXF1ZXN0IENsYXNzZXMgVXBkYXRlJyksXG4gIGxvYWREYXRhc2V0Q291bnQ6IGNyZWF0ZUFjdGlvbignW0NsYXNzIEFwaV0gTG9hZCBEYXRhc2V0Q291bnQnKSxcbiAgbG9hZERhdGFzZXRDb3VudFN1Y2Nlc3M6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0NsYXNzIEFwaV0gTG9hZCBEYXRhc2V0Q291bnQgU3VjY2VzcycsXG4gICAgcHJvcHM8e1xuICAgICAgZGF0YXNldENvdW50czogRGF0YXNldENvdW50W107XG4gICAgfT4oKVxuICApLFxuICBsb2FkRGF0YXNldENvdW50RmFpbHVyZTogY3JlYXRlQWN0aW9uKFxuICAgICdbQ2xhc3MgQXBpXSBMb2FkIERhdGFzZXRDb3VudCBGYWlsdXJlJyxcbiAgICBwcm9wczx7XG4gICAgICBlcnJvcjogYW55O1xuICAgIH0+KClcbiAgKVxufTtcbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { createEffect, ofType } from '@ngrx/effects';
3
- import { catchError, debounceTime, filter, map, mergeMap, withLatestFrom } from 'rxjs';
3
+ import { catchError, debounceTime, filter, map, mergeMap, of, withLatestFrom } from 'rxjs';
4
4
  import { ClassActions } from './class.actions';
5
5
  import { ClassSelectors } from './class.selectors';
6
6
  import { DashboardSelectors } from '../../../dashboard/store/dashboard.selectors';
@@ -13,7 +13,15 @@ export class ClassEffects {
13
13
  this.actions$ = actions$;
14
14
  this.classService = classService;
15
15
  this.store = store;
16
- this.loadClasses$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.load), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), debounceTime(200), filter(([action, classes, rank]) => (action.force || classes.length === 0) && rank === 0), mergeMap(() => this.classService.getClasses().pipe(map((classes) => ClassActions.loadSuccess({ classes })), catchError((error) => [ClassActions.loadFailure({ error: error })])))));
16
+ this.loadClasses$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.load), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), debounceTime(200), filter(([action, classes, rank]) => action.force || classes.length === 0), mergeMap(([action, classes, rank]) => {
17
+ if (rank === 0) {
18
+ return this.classService.getClasses().pipe(map((classes) => ClassActions.loadSuccess({ classes })), catchError((error) => [ClassActions.loadFailure({ error: error })]));
19
+ }
20
+ else {
21
+ return of(ClassActions.requestUpdate());
22
+ }
23
+ })));
24
+ this.requestUpdate$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.requestUpdate), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), filter(([_, classes, rank]) => rank === 0), map(([_, classes, rank]) => ClassActions.loadSuccess({ classes }))));
17
25
  this.loadDatasetCount$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.loadDatasetCount), mergeMap((action) => this.classService.getDatasetCounts().pipe(map((datasetCounts) => {
18
26
  return ClassActions.loadDatasetCountSuccess({ datasetCounts: datasetCounts });
19
27
  }), catchError((error) => [ClassActions.loadDatasetCountFailure({ error: error })])))));
@@ -24,4 +32,4 @@ export class ClassEffects {
24
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ClassEffects, decorators: [{
25
33
  type: Injectable
26
34
  }], ctorParameters: () => [{ type: i1.Actions }, { type: i2.ClassService }, { type: i3.Store }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7QUFHbEYsTUFBTSxPQUFPLFlBQVk7SUE4QnZCLFlBQ1UsUUFBaUIsRUFDakIsWUFBMEIsRUFDMUIsS0FBWTtRQUZaLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQWhDdEIsaUJBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUN6QixjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3JHLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQ3pGLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDWixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUN2RCxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDcEUsQ0FDRixDQUNGLENBQ0YsQ0FBQztRQUVGLHNCQUFpQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFDckMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDcEIsT0FBTyxZQUFZLENBQUMsdUJBQXVCLENBQUMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNoRixDQUNGLENBQ0YsQ0FDRixDQUFDO0lBTUMsQ0FBQzs4R0FsQ08sWUFBWTtrSEFBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xhc3NBY3Rpb25zIH0gZnJvbSAnLi9jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IENsYXNzU2VydmljZSB9IGZyb20gJy4vY2xhc3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENsYXNzU2VsZWN0b3JzIH0gZnJvbSAnLi9jbGFzcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xhc3NFZmZlY3RzIHtcbiAgbG9hZENsYXNzZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENsYXNzQWN0aW9ucy5sb2FkKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIGNsYXNzZXMsIHJhbmtdKSA9PiAoYWN0aW9uLmZvcmNlIHx8IGNsYXNzZXMubGVuZ3RoID09PSAwKSAmJiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKCgpID0+XG4gICAgICAgIHRoaXMuY2xhc3NTZXJ2aWNlLmdldENsYXNzZXMoKS5waXBlKFxuICAgICAgICAgIG1hcCgoY2xhc3NlcykgPT4gQ2xhc3NBY3Rpb25zLmxvYWRTdWNjZXNzKHsgY2xhc3NlcyB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtDbGFzc0FjdGlvbnMubG9hZEZhaWx1cmUoeyBlcnJvcjogZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvYWREYXRhc2V0Q291bnQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENsYXNzQWN0aW9ucy5sb2FkRGF0YXNldENvdW50KSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY2xhc3NTZXJ2aWNlLmdldERhdGFzZXRDb3VudHMoKS5waXBlKFxuICAgICAgICAgIG1hcCgoZGF0YXNldENvdW50cykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENsYXNzQWN0aW9ucy5sb2FkRGF0YXNldENvdW50U3VjY2Vzcyh7IGRhdGFzZXRDb3VudHM6IGRhdGFzZXRDb3VudHMgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtDbGFzc0FjdGlvbnMubG9hZERhdGFzZXRDb3VudEZhaWx1cmUoeyBlcnJvcjogZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBjbGFzc1NlcnZpY2U6IENsYXNzU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZVxuICApIHt9XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7O0FBR2xGLE1BQU0sT0FBTyxZQUFZO0lBMkN2QixZQUNVLFFBQWlCLEVBQ2pCLFlBQTBCLEVBQzFCLEtBQVk7UUFGWixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQU87UUE3Q3RCLGlCQUFZLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDekIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNyRyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUN6RSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUN4QyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZELFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNwRSxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7UUFFRixtQkFBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDckcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDbkUsQ0FDRixDQUFDO1FBRUYsc0JBQWlCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUNyQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUN2QyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwQixPQUFPLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2hGLENBQ0YsQ0FDRixDQUNGLENBQUM7SUFNQyxDQUFDOzhHQS9DTyxZQUFZO2tIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIG9mLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xhc3NBY3Rpb25zIH0gZnJvbSAnLi9jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IENsYXNzU2VydmljZSB9IGZyb20gJy4vY2xhc3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENsYXNzU2VsZWN0b3JzIH0gZnJvbSAnLi9jbGFzcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xhc3NFZmZlY3RzIHtcbiAgbG9hZENsYXNzZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENsYXNzQWN0aW9ucy5sb2FkKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIGNsYXNzZXMsIHJhbmtdKSA9PiBhY3Rpb24uZm9yY2UgfHwgY2xhc3Nlcy5sZW5ndGggPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIGNsYXNzZXMsIHJhbmtdKSA9PiB7XG4gICAgICAgIGlmIChyYW5rID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2xhc3NTZXJ2aWNlLmdldENsYXNzZXMoKS5waXBlKFxuICAgICAgICAgICAgbWFwKChjbGFzc2VzKSA9PiBDbGFzc0FjdGlvbnMubG9hZFN1Y2Nlc3MoeyBjbGFzc2VzIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbQ2xhc3NBY3Rpb25zLmxvYWRGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBvZihDbGFzc0FjdGlvbnMucmVxdWVzdFVwZGF0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcmVxdWVzdFVwZGF0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ2xhc3NBY3Rpb25zLnJlcXVlc3RVcGRhdGUpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcyksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICBmaWx0ZXIoKFtfLCBjbGFzc2VzLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtYXAoKFtfLCBjbGFzc2VzLCByYW5rXSkgPT4gQ2xhc3NBY3Rpb25zLmxvYWRTdWNjZXNzKHsgY2xhc3NlcyB9KSlcbiAgICApXG4gICk7XG5cbiAgbG9hZERhdGFzZXRDb3VudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ2xhc3NBY3Rpb25zLmxvYWREYXRhc2V0Q291bnQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jbGFzc1NlcnZpY2UuZ2V0RGF0YXNldENvdW50cygpLnBpcGUoXG4gICAgICAgICAgbWFwKChkYXRhc2V0Q291bnRzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ2xhc3NBY3Rpb25zLmxvYWREYXRhc2V0Q291bnRTdWNjZXNzKHsgZGF0YXNldENvdW50czogZGF0YXNldENvdW50cyB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0NsYXNzQWN0aW9ucy5sb2FkRGF0YXNldENvdW50RmFpbHVyZSh7IGVycm9yOiBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGNsYXNzU2VydmljZTogQ2xhc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlXG4gICkge31cbn1cbiJdfQ==
@@ -48,13 +48,13 @@ export class PryNotificationComponent extends SubscriptionnerDirective {
48
48
  }));
49
49
  }
50
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryNotificationComponent, deps: [{ token: i1.PryDialogService }, { token: i2.Overlay }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryNotificationComponent, selector: "pry-notification", viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PryNotificationCssComponent, selector: "pry-notification-css" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryNotificationComponent, selector: "pry-notification", viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\">\n @if(notifications.length < 100 ) {\n {{ notifications.length }}\n } @else {\n 99<sup>+</sup>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PryNotificationCssComponent, selector: "pry-notification-css" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryNotificationComponent, decorators: [{
54
54
  type: Component,
55
- args: [{ selector: 'pry-notification', template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n" }]
55
+ args: [{ selector: 'pry-notification', template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\">\n @if(notifications.length < 100 ) {\n {{ notifications.length }}\n } @else {\n 99<sup>+</sup>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n" }]
56
56
  }], ctorParameters: () => [{ type: i1.PryDialogService }, { type: i2.Overlay }, { type: i3.Store }], propDecorators: { ref: [{
57
57
  type: ViewChild,
58
58
  args: ['ref']
59
59
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL25vdGlmaWNhdGlvbi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbm90aWZpY2F0aW9uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFtRCx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7O0FBTTNGLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUFNcEUsWUFBb0IsTUFBd0IsRUFBVSxPQUFnQixFQUFZLEtBQWlCO1FBQ2pHLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVksVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUhuRyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBS3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMvQiwrQkFBK0IsRUFDL0I7WUFDRSxhQUFhLEVBQUUsSUFBSSxhQUFhLENBQUM7Z0JBQy9CLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixhQUFhLEVBQUUsa0NBQWtDO2dCQUNqRCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3BELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPO3FCQUMzQixRQUFRLEVBQUU7cUJBQ1YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztxQkFDN0IsYUFBYSxDQUFDO29CQUNiO3dCQUNFLE9BQU8sRUFBRSxPQUFPO3dCQUNoQixPQUFPLEVBQUUsUUFBUTt3QkFDakIsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3FCQUNoQjtpQkFDRixDQUFDO2FBQ0wsQ0FBQztTQUNILEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3ZELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQTdDVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwyS0NackMsODhCQTBCQTs7MkZEZGEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLGtCQUFrQjsrSEFJVixHQUFHO3NCQUFwQixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUHJ5RGlhbG9nUmVmLCBQcnlEaWFsb2dTZXJ2aWNlLCBQcnlOb3RpZmljYXRpb24sIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9ub3RpZmljYXRpb24uc2VsZWN0b3JzJztcbmltcG9ydCB7IFByeU5vdGlmaWNhdGlvbkNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRlbnQvbm90aWZpY2F0aW9uLWNvbnRlbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LW5vdGlmaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeU5vdGlmaWNhdGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIEBWaWV3Q2hpbGQoJ3JlZicpIHJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxQcnlOb3RpZmljYXRpb25bXT47XG4gIGlzT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIGRpYWxvZ1JlZj86IFByeURpYWxvZ1JlZjxQcnlOb3RpZmljYXRpb25Db250ZW50Q29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogUHJ5RGlhbG9nU2VydmljZSwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPGFueT4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnNlbGVjdChOb3RpZmljYXRpb25TZWxlY3RvcnMubGlzdCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5pc09wZW5lZCA9IHRydWU7XG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFxuICAgICAgUHJ5Tm90aWZpY2F0aW9uQ29udGVudENvbXBvbmVudCxcbiAgICAgIHtcbiAgICAgICAgb3ZlcmxheUNvbmZpZzogbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKSxcbiAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnJlZilcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmlzT3BlbmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudD8uY2xvc2VkLnN1YnNjcmliZSgoaXNDbG9zZWQpID0+IHtcbiAgICAgICAgaWYgKGlzQ2xvc2VkKSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5yZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxwcnktbm90aWZpY2F0aW9uLWNzcz48L3ByeS1ub3RpZmljYXRpb24tY3NzPlxuQGlmIChub3RpZmljYXRpb25zJCB8IGFzeW5jOyBhcyBub3RpZmljYXRpb25zKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cIm0tbm90aWZpY2F0aW9uc1wiXG4gICAgW2NsYXNzLmhhcy11bnJlYWRdPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPiAwXCJcbiAgICA+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgYXJpYS1jb250cm9scz1cIm5vdGlmaWNhdGlvbnNfbGlzdFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlbmVkXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIGlkPVwicmVhZF9ub3RpZmljYXRpb25zXCJcbiAgICAgICNyZWZcbiAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICBbdGl0bGVdPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPD0gMSA/ICgnQHByeS5ub3RpZi5ub3RpZmljYXRpb24nIHwgaTE4bjoge2NvdW50IDogbm90aWZpY2F0aW9ucy5sZW5ndGh9ICkgOiAoJ0Bwcnkubm90aWYubm90aWZpY2F0aW9ucycgfCBpMThuIDoge2NvdW50IDogbm90aWZpY2F0aW9ucy5sZW5ndGh9KVwiXG4gICAgICA+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cIm5vdGlmaWNhdGlvbnNcIj48L3ByeS1pY29uPlxuICAgICAgQGlmIChub3RpZmljYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhLXBhc3RpbGxlIC11bnJlYWRcIlxuICAgICAgICAgID57eyBub3RpZmljYXRpb25zLmxlbmd0aCB9fSA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Bwcnkubm90aWYubGFiZWwnIHwgaTE4biB8IGxvd2VyY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbn1cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL25vdGlmaWNhdGlvbi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbm90aWZpY2F0aW9uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFtRCx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7O0FBTTNGLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUFNcEUsWUFBb0IsTUFBd0IsRUFBVSxPQUFnQixFQUFZLEtBQWlCO1FBQ2pHLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVksVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUhuRyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBS3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMvQiwrQkFBK0IsRUFDL0I7WUFDRSxhQUFhLEVBQUUsSUFBSSxhQUFhLENBQUM7Z0JBQy9CLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixhQUFhLEVBQUUsa0NBQWtDO2dCQUNqRCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3BELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPO3FCQUMzQixRQUFRLEVBQUU7cUJBQ1YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztxQkFDN0IsYUFBYSxDQUFDO29CQUNiO3dCQUNFLE9BQU8sRUFBRSxPQUFPO3dCQUNoQixPQUFPLEVBQUUsUUFBUTt3QkFDakIsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3FCQUNoQjtpQkFDRixDQUFDO2FBQ0wsQ0FBQztTQUNILEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3ZELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQTdDVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwyS0NackMsdWtDQStCQTs7MkZEbkJhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxrQkFBa0I7K0hBSVYsR0FBRztzQkFBcEIsU0FBUzt1QkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFByeURpYWxvZ1JlZiwgUHJ5RGlhbG9nU2VydmljZSwgUHJ5Tm90aWZpY2F0aW9uLCBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vc3RvcmUvbm90aWZpY2F0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBQcnlOb3RpZmljYXRpb25Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb250ZW50L25vdGlmaWNhdGlvbi1jb250ZW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1ub3RpZmljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlOb3RpZmljYXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBAVmlld0NoaWxkKCdyZWYnKSByZWYhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgbm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8UHJ5Tm90aWZpY2F0aW9uW10+O1xuICBpc09wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBkaWFsb2dSZWY/OiBQcnlEaWFsb2dSZWY8UHJ5Tm90aWZpY2F0aW9uQ29udGVudENvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IFByeURpYWxvZ1NlcnZpY2UsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTxhbnk+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5zZWxlY3QoTm90aWZpY2F0aW9uU2VsZWN0b3JzLmxpc3QpO1xuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMuaXNPcGVuZWQgPSB0cnVlO1xuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihcbiAgICAgIFByeU5vdGlmaWNhdGlvbkNvbnRlbnRDb21wb25lbnQsXG4gICAgICB7XG4gICAgICAgIG92ZXJsYXlDb25maWc6IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ub29wKCksXG4gICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5yZWYpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdKVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5pc09wZW5lZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZGlhbG9nUmVmPy5jb21wb25lbnQ/LmNsb3NlZC5zdWJzY3JpYmUoKGlzQ2xvc2VkKSA9PiB7XG4gICAgICAgIGlmIChpc0Nsb3NlZCkge1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8cHJ5LW5vdGlmaWNhdGlvbi1jc3M+PC9wcnktbm90aWZpY2F0aW9uLWNzcz5cbkBpZiAobm90aWZpY2F0aW9ucyQgfCBhc3luYzsgYXMgbm90aWZpY2F0aW9ucykge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJtLW5vdGlmaWNhdGlvbnNcIlxuICAgIFtjbGFzcy5oYXMtdW5yZWFkXT1cIm5vdGlmaWNhdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgIGFyaWEtY29udHJvbHM9XCJub3RpZmljYXRpb25zX2xpc3RcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5lZFwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICBpZD1cInJlYWRfbm90aWZpY2F0aW9uc1wiXG4gICAgICAjcmVmXG4gICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgW3RpdGxlXT1cIm5vdGlmaWNhdGlvbnMubGVuZ3RoIDw9IDEgPyAoJ0Bwcnkubm90aWYubm90aWZpY2F0aW9uJyB8IGkxOG46IHtjb3VudCA6IG5vdGlmaWNhdGlvbnMubGVuZ3RofSApIDogKCdAcHJ5Lm5vdGlmLm5vdGlmaWNhdGlvbnMnIHwgaTE4biA6IHtjb3VudCA6IG5vdGlmaWNhdGlvbnMubGVuZ3RofSlcIlxuICAgICAgPlxuICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJub3RpZmljYXRpb25zXCI+PC9wcnktaWNvbj5cbiAgICAgIEBpZiAobm90aWZpY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYS1wYXN0aWxsZSAtdW5yZWFkXCI+XG4gICAgICAgICAgQGlmKG5vdGlmaWNhdGlvbnMubGVuZ3RoIDwgMTAwICkge1xuICAgICAgICAgICAge3sgbm90aWZpY2F0aW9ucy5sZW5ndGggfX1cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDk5PHN1cD4rPC9zdXA+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5ub3RpZi5sYWJlbCcgfCBpMThuIHwgbG93ZXJjYXNlIH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxufVxuIl19
@@ -142,11 +142,11 @@ class PryNotificationComponent extends SubscriptionnerDirective {
142
142
  }));
143
143
  }
144
144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryNotificationComponent, deps: [{ token: i1.PryDialogService }, { token: i2$1.Overlay }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryNotificationComponent, selector: "pry-notification", viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: PryNotificationCssComponent, selector: "pry-notification-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryNotificationComponent, selector: "pry-notification", viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\">\n @if(notifications.length < 100 ) {\n {{ notifications.length }}\n } @else {\n 99<sup>+</sup>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: PryNotificationCssComponent, selector: "pry-notification-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
146
146
  }
147
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryNotificationComponent, decorators: [{
148
148
  type: Component,
149
- args: [{ selector: 'pry-notification', template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n" }]
149
+ args: [{ selector: 'pry-notification', template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\">\n @if(notifications.length < 100 ) {\n {{ notifications.length }}\n } @else {\n 99<sup>+</sup>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n" }]
150
150
  }], ctorParameters: () => [{ type: i1.PryDialogService }, { type: i2$1.Overlay }, { type: i3.Store }], propDecorators: { ref: [{
151
151
  type: ViewChild,
152
152
  args: ['ref']
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-notification.mjs","sources":["../../../../projects/provoly/dashboard/notification/store/notification.actions.ts","../../../../projects/provoly/dashboard/notification/store/notification.selectors.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.html","../../../../projects/provoly/dashboard/notification/style/css.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.html","../../../../projects/provoly/dashboard/notification/i18n/en.translations.ts","../../../../projects/provoly/dashboard/notification/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/notification/store/notification.service.ts","../../../../projects/provoly/dashboard/notification/store/notification.effects.ts","../../../../projects/provoly/dashboard/notification/store/notification.reducer.ts","../../../../projects/provoly/dashboard/notification/notification.module.ts","../../../../projects/provoly/dashboard/notification/provoly-dashboard-notification.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\n\nexport const NotificationActions = {\n add: createAction('[Notification] received', props<{ notification: PryNotification }>()),\n delete: createAction('[Notification] delete', props<{ id: string }>()),\n deleteSuccess: createAction('[Notification] delete success', props<{ id: string }>()),\n deleteAll: createAction('[Notification] delete all'),\n deleteAllSuccess: createAction('[Notification] delete all success')\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { notificationFeatureKey } from '@provoly/dashboard';\nimport * as fromNotification from './notification.reducer';\n\nconst feature = createFeatureSelector<fromNotification.NotificationState>(notificationFeatureKey);\n\nconst list = createSelector(feature, (state) => state.list);\n\nexport const NotificationSelectors = {\n feature,\n list\n};\n","import {\n AfterViewInit,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { PryI18nService, PryNotification } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs';\nimport { NotificationActions } from '../../../store/notification.actions';\nimport { NotificationSelectors } from '../../../store/notification.selectors';\n\n@Component({\n selector: 'pry-notification-content',\n templateUrl: './notification-content.component.html'\n})\nexport class PryNotificationContentComponent implements DoCheck, AfterViewInit {\n open: boolean = false;\n notifications$: Observable<PryNotification[]>;\n @Output() closed = new EventEmitter<boolean>();\n @ViewChild('caret') caret!: ElementRef;\n @ViewChild('button') button!: ElementRef<HTMLButtonElement>;\n left: number = 0;\n\n constructor(\n protected store: Store,\n private router: Router,\n private i18nService: PryI18nService\n ) {\n this.notifications$ = this.store\n .select(NotificationSelectors.list)\n .pipe(\n map((notifications: PryNotification[]) =>\n [...notifications].sort((a, b) => (a.creationDate < b.creationDate ? 1 : -1))\n )\n );\n }\n\n ngAfterViewInit() {\n if (!this.open) {\n this.button?.nativeElement.focus();\n }\n }\n\n @HostListener('window:resize')\n ngDoCheck() {\n if (this.caret) {\n this.left = this.caret.nativeElement.offsetWidth - 48;\n }\n }\n\n delete(notification: PryNotification) {\n this.store.dispatch(NotificationActions.delete({ id: notification.id }));\n }\n\n deleteAll() {\n this.store.dispatch(NotificationActions.deleteAll());\n }\n\n goTo(notification: PryNotification) {\n const link = notification.link ?? '';\n if (link.startsWith('http')) {\n window.location.href = link;\n } else {\n this.router.navigateByUrl(notification.link ?? '');\n }\n this.closed.next(true);\n }\n\n closeToEscape() {\n this.closed.next(true);\n }\n\n hasTranslation(title: string, translationBase: string) {\n return this.i18nService.instant(translationBase + title) !== translationBase + title;\n }\n}\n","<div\n class=\"m-notifications-list\"\n id=\"notifications_list\"\n aria-labelledby=\"read_notifications\"\n aria-hidden=\"false\"\n #caret\n (keydown.escape)=\"closeToEscape()\"\n >\n <span class=\"caret-top\" [style.left.px]=\"left\"></span>\n <div class=\"m-notifications-list__header\">\n <h2 class=\"a-h2\">{{ '@pry.notif.label' | i18n }}</h2>\n @if ((notifications$ | async)?.length === 0) {\n <p class=\"a-p none\">\n {{ '@pry.notif.noNotifications' | i18n }}\n </p>\n } @else {\n <div class=\"m-btn-group\">\n <button type=\"button\" #button class=\"a-btn a-btn--primary\" (click)=\"deleteAll()\">\n {{ '@pry.notif.deleteAll' | i18n: { count: (notifications$ | async)?.length } }}\n </button>\n </div>\n }\n <ng-template #notification>\n <div class=\"m-btn-group\">\n <button type=\"button\" #button class=\"a-btn a-btn--primary\" (click)=\"deleteAll()\">\n {{ '@pry.notif.deleteAll' | i18n: { count: (notifications$ | async)?.length } }}\n </button>\n </div>\n </ng-template>\n </div>\n <div class=\"m-notifications-list__content\">\n <ul class=\"m-notifications-list__items\">\n @for (notification of notifications$ | async; track notification; let last = $last) {\n <li class=\"m-notifications-list__items__li\">\n <div class=\"m-notifications-list__items__li__txt\">\n <h3 class=\"a-h3\">\n {{\n hasTranslation(notification.text.code, '@pry.notif.title.')\n ? ('@pry.notif.title.' + notification.text.code | i18n: notification.text.param)\n : notification.text.title\n }}\n <span>{{ notification.creationDate | date: \"dd/MM'&nbsp;&nbsp;&nbsp;'H':'mm\" }}</span>\n </h3>\n <p class=\"a-p desc\">\n {{\n hasTranslation(notification.text.code, '@pry.notif.title.')\n ? ('@pry.notif.message.' + notification.text.code | i18n: notification.text.param)\n : notification.text.code\n }}\n </p>\n @if (!!notification.link) {\n <a (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n }\n </div>\n <button\n class=\"a-btn a-btn--delete\"\n (click)=\"delete(notification)\"\n (keydown.tab)=\"last ? closeToEscape() : null\"\n title=\"{{ '@pry.notif.delete' | i18n }}\"\n >\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.notif.delete' | i18n }}</span>\n </button>\n </li>\n }\n </ul>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-notification-css',\n template: '',\n styleUrls: ['./_m-notifications.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryNotificationCssComponent {}\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { PryDialogRef, PryDialogService, PryNotification, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { NotificationSelectors } from '../../store/notification.selectors';\nimport { PryNotificationContentComponent } from './content/notification-content.component';\n\n@Component({\n selector: 'pry-notification',\n templateUrl: './notification.component.html'\n})\nexport class PryNotificationComponent extends SubscriptionnerDirective {\n @ViewChild('ref') ref!: ElementRef<HTMLButtonElement>;\n notifications$: Observable<PryNotification[]>;\n isOpened: boolean = false;\n dialogRef?: PryDialogRef<PryNotificationContentComponent>;\n\n constructor(private dialog: PryDialogService, private overlay: Overlay, protected store: Store<any>) {\n super();\n this.notifications$ = this.store.select(NotificationSelectors.list);\n }\n\n toggle() {\n this.isOpened = true;\n this.dialogRef = this.dialog.open(\n PryNotificationContentComponent,\n {\n overlayConfig: new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.ref)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n })\n },\n () => {\n this.isOpened = false;\n }\n );\n this.subscriptions.add(\n this.dialogRef?.component?.closed.subscribe((isClosed) => {\n if (isClosed) {\n this.dialogRef?.close();\n this.ref.nativeElement.focus();\n }\n })\n );\n }\n}\n","<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n","export const enTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'See',\n notifications: 'You have {{count}} notifications',\n notification: 'You have {{count}} notification',\n deleteAll: 'Delete all ({{count}})',\n delete: 'Delete notification',\n noNotifications: 'No notification',\n title: {\n DASHBOARD_PRIVATE: 'Presentation',\n DASHBOARD_PUBLIC: 'Presentation',\n DASHBOARD_DELETED: 'Presentation'\n },\n message: {\n DASHBOARD_PRIVATE: 'Access to presentation <{{name}}> has been restrained',\n DASHBOARD_PUBLIC: 'Presentation <{{name}}> is available',\n DASHBOARD_DELETED: 'Presentation <{{name}}> has been removed'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'Voir',\n notifications: 'Vous avez {{count}} notifications',\n notification:'Vous avez {{count}} notification',\n deleteAll: 'Tout supprimer ({{count}})',\n delete: 'Supprimer la notification',\n noNotifications: 'Aucune notification actuellement',\n title: {\n DASHBOARD_PRIVATE: 'Présentation',\n DASHBOARD_PUBLIC: 'Présentation',\n DASHBOARD_DELETED: 'Présentation'\n },\n message: {\n DASHBOARD_PRIVATE: \"L'accès à la présentation <{{name}}> a été restreint\",\n DASHBOARD_PUBLIC: 'La présentation <{{name}}> est disponible',\n DASHBOARD_DELETED: 'La présentation <{{name}}> a été supprimée'\n }\n }\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '@provoly/dashboard';\nimport { mergeMap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n constructor(private httpClient: HttpClient, private store: Store<any>) {}\n\n deleteNotification(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me/id/${id}`))));\n }\n\n deleteAllNotifications() {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me`))));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { WebsocketService, wsMessage } from '@provoly/dashboard';\nimport { map, mergeMap } from 'rxjs';\nimport { NotificationActions } from './notification.actions';\nimport { NotificationService } from './notification.service';\n\n@Injectable()\nexport class NotificationEffects {\n constructor(\n private actions$: Actions,\n private wsService: WebsocketService,\n private store: Store,\n private notificationService: NotificationService\n ) {\n wsService.messages$('notification').subscribe((msg: wsMessage) => {\n setTimeout(\n () =>\n this.store.dispatch(\n NotificationActions.add({\n notification: {\n text: msg.payload.text,\n link: msg.payload.link,\n creationDate: msg.payload.creationDate,\n id: msg.id\n }\n })\n ),\n 1\n );\n });\n }\n\n deleteNotification$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.delete),\n mergeMap((action) =>\n this.notificationService\n .deleteNotification(action.id)\n .pipe(map(() => NotificationActions.deleteSuccess({ id: action.id })))\n )\n )\n );\n\n deleteAllNotifications$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.deleteAll),\n mergeMap((action) =>\n this.notificationService.deleteAllNotifications().pipe(map(() => NotificationActions.deleteAllSuccess()))\n )\n )\n );\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { NotificationActions } from './notification.actions';\n\nexport interface NotificationState {\n list: PryNotification[];\n}\n\nexport const initialNotificationState: NotificationState = {\n list: []\n};\n\nexport const notificationReducer = createReducer(\n initialNotificationState,\n on(NotificationActions.add, (state, action) => {\n const allNotifications = [...state.list, { ...action.notification }];\n const uniqueIds = [...new Set(allNotifications.map((notif) => notif.id))];\n return {\n ...state,\n list: uniqueIds.map((id) => allNotifications.find((notif) => notif.id === id)) as PryNotification[]\n };\n }),\n on(NotificationActions.deleteSuccess, (state, action) => ({\n ...state,\n list: state.list.filter((notification: PryNotification) => notification.id !== action.id)\n })),\n on(NotificationActions.deleteAllSuccess, (state, action) => ({\n ...state,\n list: []\n }))\n);\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n notificationFeatureKey,\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule\n} from '@provoly/dashboard';\nimport { PrySearchModule } from '@provoly/dashboard/search';\nimport { PryNotificationContentComponent } from './components/notification/content/notification-content.component';\nimport { PryNotificationComponent } from './components/notification/notification.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { NotificationEffects } from './store/notification.effects';\nimport { notificationReducer } from './store/notification.reducer';\nimport { PryNotificationCssComponent } from './style/css.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(notificationFeatureKey, notificationReducer),\n EffectsModule.forFeature([NotificationEffects]),\n PryIconModule,\n PrySearchModule,\n PryI18nModule\n ],\n declarations: [PryNotificationComponent, PryNotificationContentComponent, PryNotificationCssComponent],\n exports: [PryNotificationComponent, PryNotificationContentComponent]\n})\nexport class PryNotificationModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'notification', frTranslations);\n this.pryTranslateService.addLangObject('en', 'notification', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i4.PryNotificationCssComponent","i5","i4.NotificationService"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-notification.mjs","sources":["../../../../projects/provoly/dashboard/notification/store/notification.actions.ts","../../../../projects/provoly/dashboard/notification/store/notification.selectors.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.html","../../../../projects/provoly/dashboard/notification/style/css.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.html","../../../../projects/provoly/dashboard/notification/i18n/en.translations.ts","../../../../projects/provoly/dashboard/notification/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/notification/store/notification.service.ts","../../../../projects/provoly/dashboard/notification/store/notification.effects.ts","../../../../projects/provoly/dashboard/notification/store/notification.reducer.ts","../../../../projects/provoly/dashboard/notification/notification.module.ts","../../../../projects/provoly/dashboard/notification/provoly-dashboard-notification.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\n\nexport const NotificationActions = {\n add: createAction('[Notification] received', props<{ notification: PryNotification }>()),\n delete: createAction('[Notification] delete', props<{ id: string }>()),\n deleteSuccess: createAction('[Notification] delete success', props<{ id: string }>()),\n deleteAll: createAction('[Notification] delete all'),\n deleteAllSuccess: createAction('[Notification] delete all success')\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { notificationFeatureKey } from '@provoly/dashboard';\nimport * as fromNotification from './notification.reducer';\n\nconst feature = createFeatureSelector<fromNotification.NotificationState>(notificationFeatureKey);\n\nconst list = createSelector(feature, (state) => state.list);\n\nexport const NotificationSelectors = {\n feature,\n list\n};\n","import {\n AfterViewInit,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { PryI18nService, PryNotification } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs';\nimport { NotificationActions } from '../../../store/notification.actions';\nimport { NotificationSelectors } from '../../../store/notification.selectors';\n\n@Component({\n selector: 'pry-notification-content',\n templateUrl: './notification-content.component.html'\n})\nexport class PryNotificationContentComponent implements DoCheck, AfterViewInit {\n open: boolean = false;\n notifications$: Observable<PryNotification[]>;\n @Output() closed = new EventEmitter<boolean>();\n @ViewChild('caret') caret!: ElementRef;\n @ViewChild('button') button!: ElementRef<HTMLButtonElement>;\n left: number = 0;\n\n constructor(\n protected store: Store,\n private router: Router,\n private i18nService: PryI18nService\n ) {\n this.notifications$ = this.store\n .select(NotificationSelectors.list)\n .pipe(\n map((notifications: PryNotification[]) =>\n [...notifications].sort((a, b) => (a.creationDate < b.creationDate ? 1 : -1))\n )\n );\n }\n\n ngAfterViewInit() {\n if (!this.open) {\n this.button?.nativeElement.focus();\n }\n }\n\n @HostListener('window:resize')\n ngDoCheck() {\n if (this.caret) {\n this.left = this.caret.nativeElement.offsetWidth - 48;\n }\n }\n\n delete(notification: PryNotification) {\n this.store.dispatch(NotificationActions.delete({ id: notification.id }));\n }\n\n deleteAll() {\n this.store.dispatch(NotificationActions.deleteAll());\n }\n\n goTo(notification: PryNotification) {\n const link = notification.link ?? '';\n if (link.startsWith('http')) {\n window.location.href = link;\n } else {\n this.router.navigateByUrl(notification.link ?? '');\n }\n this.closed.next(true);\n }\n\n closeToEscape() {\n this.closed.next(true);\n }\n\n hasTranslation(title: string, translationBase: string) {\n return this.i18nService.instant(translationBase + title) !== translationBase + title;\n }\n}\n","<div\n class=\"m-notifications-list\"\n id=\"notifications_list\"\n aria-labelledby=\"read_notifications\"\n aria-hidden=\"false\"\n #caret\n (keydown.escape)=\"closeToEscape()\"\n >\n <span class=\"caret-top\" [style.left.px]=\"left\"></span>\n <div class=\"m-notifications-list__header\">\n <h2 class=\"a-h2\">{{ '@pry.notif.label' | i18n }}</h2>\n @if ((notifications$ | async)?.length === 0) {\n <p class=\"a-p none\">\n {{ '@pry.notif.noNotifications' | i18n }}\n </p>\n } @else {\n <div class=\"m-btn-group\">\n <button type=\"button\" #button class=\"a-btn a-btn--primary\" (click)=\"deleteAll()\">\n {{ '@pry.notif.deleteAll' | i18n: { count: (notifications$ | async)?.length } }}\n </button>\n </div>\n }\n <ng-template #notification>\n <div class=\"m-btn-group\">\n <button type=\"button\" #button class=\"a-btn a-btn--primary\" (click)=\"deleteAll()\">\n {{ '@pry.notif.deleteAll' | i18n: { count: (notifications$ | async)?.length } }}\n </button>\n </div>\n </ng-template>\n </div>\n <div class=\"m-notifications-list__content\">\n <ul class=\"m-notifications-list__items\">\n @for (notification of notifications$ | async; track notification; let last = $last) {\n <li class=\"m-notifications-list__items__li\">\n <div class=\"m-notifications-list__items__li__txt\">\n <h3 class=\"a-h3\">\n {{\n hasTranslation(notification.text.code, '@pry.notif.title.')\n ? ('@pry.notif.title.' + notification.text.code | i18n: notification.text.param)\n : notification.text.title\n }}\n <span>{{ notification.creationDate | date: \"dd/MM'&nbsp;&nbsp;&nbsp;'H':'mm\" }}</span>\n </h3>\n <p class=\"a-p desc\">\n {{\n hasTranslation(notification.text.code, '@pry.notif.title.')\n ? ('@pry.notif.message.' + notification.text.code | i18n: notification.text.param)\n : notification.text.code\n }}\n </p>\n @if (!!notification.link) {\n <a (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n }\n </div>\n <button\n class=\"a-btn a-btn--delete\"\n (click)=\"delete(notification)\"\n (keydown.tab)=\"last ? closeToEscape() : null\"\n title=\"{{ '@pry.notif.delete' | i18n }}\"\n >\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.notif.delete' | i18n }}</span>\n </button>\n </li>\n }\n </ul>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-notification-css',\n template: '',\n styleUrls: ['./_m-notifications.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryNotificationCssComponent {}\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { PryDialogRef, PryDialogService, PryNotification, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { NotificationSelectors } from '../../store/notification.selectors';\nimport { PryNotificationContentComponent } from './content/notification-content.component';\n\n@Component({\n selector: 'pry-notification',\n templateUrl: './notification.component.html'\n})\nexport class PryNotificationComponent extends SubscriptionnerDirective {\n @ViewChild('ref') ref!: ElementRef<HTMLButtonElement>;\n notifications$: Observable<PryNotification[]>;\n isOpened: boolean = false;\n dialogRef?: PryDialogRef<PryNotificationContentComponent>;\n\n constructor(private dialog: PryDialogService, private overlay: Overlay, protected store: Store<any>) {\n super();\n this.notifications$ = this.store.select(NotificationSelectors.list);\n }\n\n toggle() {\n this.isOpened = true;\n this.dialogRef = this.dialog.open(\n PryNotificationContentComponent,\n {\n overlayConfig: new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.ref)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n })\n },\n () => {\n this.isOpened = false;\n }\n );\n this.subscriptions.add(\n this.dialogRef?.component?.closed.subscribe((isClosed) => {\n if (isClosed) {\n this.dialogRef?.close();\n this.ref.nativeElement.focus();\n }\n })\n );\n }\n}\n","<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\">\n @if(notifications.length < 100 ) {\n {{ notifications.length }}\n } @else {\n 99<sup>+</sup>\n }\n <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n","export const enTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'See',\n notifications: 'You have {{count}} notifications',\n notification: 'You have {{count}} notification',\n deleteAll: 'Delete all ({{count}})',\n delete: 'Delete notification',\n noNotifications: 'No notification',\n title: {\n DASHBOARD_PRIVATE: 'Presentation',\n DASHBOARD_PUBLIC: 'Presentation',\n DASHBOARD_DELETED: 'Presentation'\n },\n message: {\n DASHBOARD_PRIVATE: 'Access to presentation <{{name}}> has been restrained',\n DASHBOARD_PUBLIC: 'Presentation <{{name}}> is available',\n DASHBOARD_DELETED: 'Presentation <{{name}}> has been removed'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'Voir',\n notifications: 'Vous avez {{count}} notifications',\n notification:'Vous avez {{count}} notification',\n deleteAll: 'Tout supprimer ({{count}})',\n delete: 'Supprimer la notification',\n noNotifications: 'Aucune notification actuellement',\n title: {\n DASHBOARD_PRIVATE: 'Présentation',\n DASHBOARD_PUBLIC: 'Présentation',\n DASHBOARD_DELETED: 'Présentation'\n },\n message: {\n DASHBOARD_PRIVATE: \"L'accès à la présentation <{{name}}> a été restreint\",\n DASHBOARD_PUBLIC: 'La présentation <{{name}}> est disponible',\n DASHBOARD_DELETED: 'La présentation <{{name}}> a été supprimée'\n }\n }\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '@provoly/dashboard';\nimport { mergeMap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n constructor(private httpClient: HttpClient, private store: Store<any>) {}\n\n deleteNotification(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me/id/${id}`))));\n }\n\n deleteAllNotifications() {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me`))));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { WebsocketService, wsMessage } from '@provoly/dashboard';\nimport { map, mergeMap } from 'rxjs';\nimport { NotificationActions } from './notification.actions';\nimport { NotificationService } from './notification.service';\n\n@Injectable()\nexport class NotificationEffects {\n constructor(\n private actions$: Actions,\n private wsService: WebsocketService,\n private store: Store,\n private notificationService: NotificationService\n ) {\n wsService.messages$('notification').subscribe((msg: wsMessage) => {\n setTimeout(\n () =>\n this.store.dispatch(\n NotificationActions.add({\n notification: {\n text: msg.payload.text,\n link: msg.payload.link,\n creationDate: msg.payload.creationDate,\n id: msg.id\n }\n })\n ),\n 1\n );\n });\n }\n\n deleteNotification$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.delete),\n mergeMap((action) =>\n this.notificationService\n .deleteNotification(action.id)\n .pipe(map(() => NotificationActions.deleteSuccess({ id: action.id })))\n )\n )\n );\n\n deleteAllNotifications$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.deleteAll),\n mergeMap((action) =>\n this.notificationService.deleteAllNotifications().pipe(map(() => NotificationActions.deleteAllSuccess()))\n )\n )\n );\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { NotificationActions } from './notification.actions';\n\nexport interface NotificationState {\n list: PryNotification[];\n}\n\nexport const initialNotificationState: NotificationState = {\n list: []\n};\n\nexport const notificationReducer = createReducer(\n initialNotificationState,\n on(NotificationActions.add, (state, action) => {\n const allNotifications = [...state.list, { ...action.notification }];\n const uniqueIds = [...new Set(allNotifications.map((notif) => notif.id))];\n return {\n ...state,\n list: uniqueIds.map((id) => allNotifications.find((notif) => notif.id === id)) as PryNotification[]\n };\n }),\n on(NotificationActions.deleteSuccess, (state, action) => ({\n ...state,\n list: state.list.filter((notification: PryNotification) => notification.id !== action.id)\n })),\n on(NotificationActions.deleteAllSuccess, (state, action) => ({\n ...state,\n list: []\n }))\n);\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n notificationFeatureKey,\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule\n} from '@provoly/dashboard';\nimport { PrySearchModule } from '@provoly/dashboard/search';\nimport { PryNotificationContentComponent } from './components/notification/content/notification-content.component';\nimport { PryNotificationComponent } from './components/notification/notification.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { NotificationEffects } from './store/notification.effects';\nimport { notificationReducer } from './store/notification.reducer';\nimport { PryNotificationCssComponent } from './style/css.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(notificationFeatureKey, notificationReducer),\n EffectsModule.forFeature([NotificationEffects]),\n PryIconModule,\n PrySearchModule,\n PryI18nModule\n ],\n declarations: [PryNotificationComponent, PryNotificationContentComponent, PryNotificationCssComponent],\n exports: [PryNotificationComponent, PryNotificationContentComponent]\n})\nexport class PryNotificationModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'notification', frTranslations);\n this.pryTranslateService.addLangObject('en', 'notification', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i4.PryNotificationCssComponent","i5","i4.NotificationService"],"mappings":"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"}
@@ -3006,6 +3006,7 @@ const ClassActions = {
3006
3006
  load: createAction('[Class] (bus) Load Classes', props()),
3007
3007
  loadSuccess: createAction('[Class Api] (bus) Load Classes Success', props()),
3008
3008
  loadFailure: createAction('[Class Api] (bus) Load Classes Failure', props()),
3009
+ requestUpdate: createAction('[Class Api] (bus) Request Classes Update'),
3009
3010
  loadDatasetCount: createAction('[Class Api] Load DatasetCount'),
3010
3011
  loadDatasetCountSuccess: createAction('[Class Api] Load DatasetCount Success', props()),
3011
3012
  loadDatasetCountFailure: createAction('[Class Api] Load DatasetCount Failure', props())
@@ -3790,7 +3791,15 @@ class ClassEffects {
3790
3791
  this.actions$ = actions$;
3791
3792
  this.classService = classService;
3792
3793
  this.store = store;
3793
- this.loadClasses$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.load), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), debounceTime(200), filter(([action, classes, rank]) => (action.force || classes.length === 0) && rank === 0), mergeMap(() => this.classService.getClasses().pipe(map((classes) => ClassActions.loadSuccess({ classes })), catchError((error) => [ClassActions.loadFailure({ error: error })])))));
3794
+ this.loadClasses$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.load), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), debounceTime(200), filter(([action, classes, rank]) => action.force || classes.length === 0), mergeMap(([action, classes, rank]) => {
3795
+ if (rank === 0) {
3796
+ return this.classService.getClasses().pipe(map((classes) => ClassActions.loadSuccess({ classes })), catchError((error) => [ClassActions.loadFailure({ error: error })]));
3797
+ }
3798
+ else {
3799
+ return of(ClassActions.requestUpdate());
3800
+ }
3801
+ })));
3802
+ this.requestUpdate$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.requestUpdate), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(DashboardSelectors.rank)), filter(([_, classes, rank]) => rank === 0), map(([_, classes, rank]) => ClassActions.loadSuccess({ classes }))));
3794
3803
  this.loadDatasetCount$ = createEffect(() => this.actions$.pipe(ofType(ClassActions.loadDatasetCount), mergeMap((action) => this.classService.getDatasetCounts().pipe(map((datasetCounts) => {
3795
3804
  return ClassActions.loadDatasetCountSuccess({ datasetCounts: datasetCounts });
3796
3805
  }), catchError((error) => [ClassActions.loadDatasetCountFailure({ error: error })])))));