@odx/angular 5.3.4 → 5.4.0
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.
- package/CHANGELOG.md +6 -0
- package/components/notification/README.md +3 -0
- package/components/notification/index.d.ts +7 -0
- package/components/notification/lib/components/index.d.ts +2 -0
- package/components/notification/lib/components/notification-center/notification-center.component.d.ts +19 -0
- package/components/notification/lib/components/notification-item/notification-item.component.d.ts +37 -0
- package/components/notification/lib/directives/index.d.ts +1 -0
- package/components/notification/lib/directives/notification-center.directive.d.ts +69 -0
- package/components/notification/lib/features/index.d.ts +5 -0
- package/components/notification/lib/features/with-browser-notifications.d.ts +17 -0
- package/components/notification/lib/features/with-load-notifications.d.ts +18 -0
- package/components/notification/lib/features/with-notification-transformer.d.ts +26 -0
- package/components/notification/lib/features/with-peristent-notifications.d.ts +63 -0
- package/components/notification/lib/features/with-save-notifications.d.ts +11 -0
- package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +2 -0
- package/components/notification/lib/helpers/index.d.ts +3 -0
- package/components/notification/lib/helpers/sort-notifications.d.ts +3 -0
- package/components/notification/lib/helpers/to-notification-collection.d.ts +3 -0
- package/components/notification/lib/models/index.d.ts +8 -0
- package/components/notification/lib/models/notification-action.d.ts +2 -0
- package/components/notification/lib/models/notification-collection.d.ts +6 -0
- package/components/notification/lib/models/notification-feature.d.ts +5 -0
- package/components/notification/lib/models/notification-options.d.ts +7 -0
- package/components/notification/lib/models/notification-query.d.ts +2 -0
- package/components/notification/lib/models/notification-sort-fn.d.ts +2 -0
- package/components/notification/lib/models/notification.d.ts +6 -0
- package/components/notification/lib/models/notification.ref.d.ts +9 -0
- package/components/notification/lib/notification.config.d.ts +11 -0
- package/components/notification/lib/notification.i18n.d.ts +3 -0
- package/components/notification/lib/notification.logger.d.ts +3 -0
- package/components/notification/lib/notification.service.d.ts +110 -0
- package/components/notification/lib/notification.tokens.d.ts +4 -0
- package/components/notification/lib/services/index.d.ts +1 -0
- package/components/notification/lib/services/notification-center.service.d.ts +69 -0
- package/components/notification/testing/README.md +3 -0
- package/components/notification/testing/index.d.ts +1 -0
- package/components/notification/testing/lib/test-helpers.d.ts +5 -0
- package/components/toast/lib/toast.service.d.ts +30 -2
- package/esm2022/components/notification/index.mjs +8 -0
- package/esm2022/components/notification/lib/components/index.mjs +3 -0
- package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +65 -0
- package/esm2022/components/notification/lib/components/notification-item/notification-item.component.mjs +65 -0
- package/esm2022/components/notification/lib/directives/index.mjs +2 -0
- package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +142 -0
- package/esm2022/components/notification/lib/features/index.mjs +6 -0
- package/esm2022/components/notification/lib/features/with-browser-notifications.mjs +75 -0
- package/esm2022/components/notification/lib/features/with-load-notifications.mjs +45 -0
- package/esm2022/components/notification/lib/features/with-notification-transformer.mjs +34 -0
- package/esm2022/components/notification/lib/features/with-peristent-notifications.mjs +94 -0
- package/esm2022/components/notification/lib/features/with-save-notifications.mjs +45 -0
- package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +7 -0
- package/esm2022/components/notification/lib/helpers/index.mjs +4 -0
- package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +10 -0
- package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +9 -0
- package/esm2022/components/notification/lib/models/index.mjs +9 -0
- package/esm2022/components/notification/lib/models/notification-action.mjs +2 -0
- package/esm2022/components/notification/lib/models/notification-collection.mjs +2 -0
- package/esm2022/components/notification/lib/models/notification-feature.mjs +4 -0
- package/esm2022/components/notification/lib/models/notification-options.mjs +2 -0
- package/esm2022/components/notification/lib/models/notification-query.mjs +2 -0
- package/esm2022/components/notification/lib/models/notification-sort-fn.mjs +2 -0
- package/esm2022/components/notification/lib/models/notification.mjs +2 -0
- package/esm2022/components/notification/lib/models/notification.ref.mjs +2 -0
- package/esm2022/components/notification/lib/notification.config.mjs +11 -0
- package/esm2022/components/notification/lib/notification.i18n.mjs +11 -0
- package/esm2022/components/notification/lib/notification.logger.mjs +3 -0
- package/esm2022/components/notification/lib/notification.service.mjs +168 -0
- package/esm2022/components/notification/lib/notification.tokens.mjs +7 -0
- package/esm2022/components/notification/lib/services/index.mjs +2 -0
- package/esm2022/components/notification/lib/services/notification-center.service.mjs +96 -0
- package/esm2022/components/notification/odx-angular-components-notification.mjs +5 -0
- package/esm2022/components/notification/testing/index.mjs +2 -0
- package/esm2022/components/notification/testing/lib/test-helpers.mjs +33 -0
- package/esm2022/components/notification/testing/odx-angular-components-notification-testing.mjs +5 -0
- package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +6 -6
- package/esm2022/components/toast/lib/toast.service.mjs +38 -8
- package/esm2022/utils/lib/helpers/array.mjs +24 -1
- package/fesm2022/odx-angular-components-notification-testing.mjs +39 -0
- package/fesm2022/odx-angular-components-notification-testing.mjs.map +1 -0
- package/fesm2022/odx-angular-components-notification.mjs +832 -0
- package/fesm2022/odx-angular-components-notification.mjs.map +1 -0
- package/fesm2022/odx-angular-components-toast.mjs +42 -11
- package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
- package/fesm2022/odx-angular-utils.mjs +23 -0
- package/fesm2022/odx-angular-utils.mjs.map +1 -1
- package/package.json +13 -1
- package/utils/lib/helpers/array.d.ts +23 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { deepmerge } from '@odx/angular/internal';
|
|
2
|
+
import { isFunction, isString } from '@odx/angular/utils';
|
|
3
|
+
import { firstValueFrom } from 'rxjs';
|
|
4
|
+
import { makeNotificationFeature } from '../models';
|
|
5
|
+
import { withLoadNotifications } from './with-load-notifications';
|
|
6
|
+
import { withSaveNotifications } from './with-save-notifications';
|
|
7
|
+
/**
|
|
8
|
+
* Implementation of NotificationSerializer for persistent storage.
|
|
9
|
+
* @class PersistentNotificationSerializer
|
|
10
|
+
* @implements {NotificationSerializer}
|
|
11
|
+
*/
|
|
12
|
+
export class PersistentNotificationSerializer {
|
|
13
|
+
/**
|
|
14
|
+
* Serializes an array of NotificationRef objects into a string.
|
|
15
|
+
* @function serialize
|
|
16
|
+
* @memberof NotificationSerializer
|
|
17
|
+
* @param {NotificationRef[]} value - The notification references to serialize.
|
|
18
|
+
* @returns {Promise<string>} A promise that resolves to the serialized string representation of notification references.
|
|
19
|
+
*/
|
|
20
|
+
async serialize(value) {
|
|
21
|
+
const serializedNotifications = await Promise.all(value.map(async (ref) => deepmerge(ref, {
|
|
22
|
+
item: {
|
|
23
|
+
title: await this.serializeDynamicTextContent(ref.item.title),
|
|
24
|
+
description: await this.serializeDynamicTextContent(ref.item.description),
|
|
25
|
+
},
|
|
26
|
+
})));
|
|
27
|
+
return JSON.stringify(serializedNotifications);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Deserializes a string into an array of NotificationRef objects.
|
|
31
|
+
* @function deserialize
|
|
32
|
+
* @memberof NotificationSerializer
|
|
33
|
+
* @param {string} value - The string representation of notification references to deserialize.
|
|
34
|
+
* @returns {Promise<NotificationRef[]>} A promise that resolves to the deserialized notification references.
|
|
35
|
+
*/
|
|
36
|
+
async deserialize(value) {
|
|
37
|
+
return JSON.parse(value);
|
|
38
|
+
}
|
|
39
|
+
async serializeDynamicTextContent(content) {
|
|
40
|
+
if (!content)
|
|
41
|
+
return '';
|
|
42
|
+
if (isString(content))
|
|
43
|
+
return content;
|
|
44
|
+
return firstValueFrom(content).catch(() => '');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Initializes and returns a function for loading persistent notifications.
|
|
49
|
+
* @function initPersistentNotifications
|
|
50
|
+
* @param {WithPersistentNotificationsStorageOptions} options - The storage options including serializer and storage key.
|
|
51
|
+
* @returns {LoadNotificationsFn} A function to load notifications from storage.
|
|
52
|
+
*/
|
|
53
|
+
export function initPersistentNotifications({ storage, storageKey, serializer, idTransformer, }) {
|
|
54
|
+
return async () => {
|
|
55
|
+
const storedValue = storage.getItem(storageKey);
|
|
56
|
+
if (!storedValue)
|
|
57
|
+
return [];
|
|
58
|
+
const notificationRefs = await serializer.deserialize(storedValue);
|
|
59
|
+
if (isFunction(idTransformer)) {
|
|
60
|
+
for (const notificationRef of notificationRefs) {
|
|
61
|
+
notificationRef.item.id = notificationRef.id = idTransformer(notificationRef);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return notificationRefs;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Returns a function for persisting notifications.
|
|
69
|
+
* @function persistNotifications
|
|
70
|
+
* @param {WithPersistentNotificationsStorageOptions} options - The storage options including serializer and storage key.
|
|
71
|
+
* @returns {SaveNotificationsFn} A function to save notifications to storage.
|
|
72
|
+
*/
|
|
73
|
+
export function persistNotifications({ storage, storageKey, serializer }) {
|
|
74
|
+
return async (notificationRefs) => {
|
|
75
|
+
storage.setItem(storageKey, await serializer.serialize(notificationRefs));
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Configures the application to use persistent notifications, automatically loading from and saving to the configured storage.
|
|
80
|
+
* @function withPersistentNotifications
|
|
81
|
+
* @param {Partial<WithPersistentNotificationsOptions>} [options] - Optional configuration for persistent notifications.
|
|
82
|
+
* @returns {NotificationFeature} A notification feature configured for persistence.
|
|
83
|
+
*/
|
|
84
|
+
export function withPersistentNotifications(options) {
|
|
85
|
+
const storageOptions = {
|
|
86
|
+
storageKey: options?.storageOptions?.storageKey ?? '@odx/angular/components/notification::Storage',
|
|
87
|
+
storage: options?.storageOptions?.storage ?? localStorage,
|
|
88
|
+
serializer: options?.storageOptions?.serializer ?? new PersistentNotificationSerializer(),
|
|
89
|
+
};
|
|
90
|
+
const initFn = options?.initFn ?? initPersistentNotifications(storageOptions);
|
|
91
|
+
const saveFn = options?.saveFn ?? persistNotifications(storageOptions);
|
|
92
|
+
return makeNotificationFeature([withLoadNotifications(initFn), withSaveNotifications(saveFn)]);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1wZXJpc3RlbnQtbm90aWZpY2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL3dpdGgtcGVyaXN0ZW50LW5vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQXdDLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFGLE9BQU8sRUFBdUIscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RixPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPdkY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0M7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUF3QjtRQUM3QyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDdEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksRUFBRTtnQkFDSixLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQzdELFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUMxRTtTQUNGLENBQUMsQ0FDSCxDQUNGLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8sS0FBSyxDQUFDLDJCQUEyQixDQUFDLE9BQTRCO1FBQ3BFLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDeEIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxPQUFPLENBQUM7UUFFdEMsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRjtBQWVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEVBQzFDLE9BQU8sRUFDUCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGFBQWEsR0FDNkI7SUFDMUMsT0FBTyxLQUFLLElBQUksRUFBRTtRQUNoQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbkUsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDN0IsS0FBSyxNQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDOUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsZUFBZSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDL0U7U0FDRjtRQUVELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQTZDO0lBQ2pILE9BQU8sS0FBSyxFQUFFLGdCQUFtQyxFQUFFLEVBQUU7UUFDbkQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsT0FBcUQ7SUFDL0YsTUFBTSxjQUFjLEdBQThDO1FBQ2hFLFVBQVUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsSUFBSSwrQ0FBK0M7UUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxJQUFJLFlBQVk7UUFDekQsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxJQUFJLElBQUksZ0NBQWdDLEVBQUU7S0FDMUYsQ0FBQztJQUNGLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksMkJBQTJCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUUsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV2RSxPQUFPLHVCQUF1QixDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljVGV4dENvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkZlYXR1cmUsIE5vdGlmaWNhdGlvblJlZiwgbWFrZU5vdGlmaWNhdGlvbkZlYXR1cmUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgTG9hZE5vdGlmaWNhdGlvbnNGbiwgd2l0aExvYWROb3RpZmljYXRpb25zIH0gZnJvbSAnLi93aXRoLWxvYWQtbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBTYXZlTm90aWZpY2F0aW9uc0ZuLCB3aXRoU2F2ZU5vdGlmaWNhdGlvbnMgfSBmcm9tICcuL3dpdGgtc2F2ZS1ub3RpZmljYXRpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25TZXJpYWxpemVyIHtcbiAgc2VyaWFsaXplKHZhbHVlOiBOb3RpZmljYXRpb25SZWZbXSk6IFByb21pc2U8c3RyaW5nPjtcbiAgZGVzZXJpYWxpemUodmFsdWU6IHN0cmluZyk6IFByb21pc2U8Tm90aWZpY2F0aW9uUmVmW10+O1xufVxuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIE5vdGlmaWNhdGlvblNlcmlhbGl6ZXIgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZS5cbiAqIEBjbGFzcyBQZXJzaXN0ZW50Tm90aWZpY2F0aW9uU2VyaWFsaXplclxuICogQGltcGxlbWVudHMge05vdGlmaWNhdGlvblNlcmlhbGl6ZXJ9XG4gKi9cbmV4cG9ydCBjbGFzcyBQZXJzaXN0ZW50Tm90aWZpY2F0aW9uU2VyaWFsaXplciBpbXBsZW1lbnRzIE5vdGlmaWNhdGlvblNlcmlhbGl6ZXIge1xuICAvKipcbiAgICogU2VyaWFsaXplcyBhbiBhcnJheSBvZiBOb3RpZmljYXRpb25SZWYgb2JqZWN0cyBpbnRvIGEgc3RyaW5nLlxuICAgKiBAZnVuY3Rpb24gc2VyaWFsaXplXG4gICAqIEBtZW1iZXJvZiBOb3RpZmljYXRpb25TZXJpYWxpemVyXG4gICAqIEBwYXJhbSB7Tm90aWZpY2F0aW9uUmVmW119IHZhbHVlIC0gVGhlIG5vdGlmaWNhdGlvbiByZWZlcmVuY2VzIHRvIHNlcmlhbGl6ZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHNlcmlhbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG5vdGlmaWNhdGlvbiByZWZlcmVuY2VzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlcmlhbGl6ZSh2YWx1ZTogTm90aWZpY2F0aW9uUmVmW10pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWROb3RpZmljYXRpb25zID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB2YWx1ZS5tYXAoYXN5bmMgKHJlZikgPT5cbiAgICAgICAgZGVlcG1lcmdlKHJlZiwge1xuICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnNlcmlhbGl6ZUR5bmFtaWNUZXh0Q29udGVudChyZWYuaXRlbS50aXRsZSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYXdhaXQgdGhpcy5zZXJpYWxpemVEeW5hbWljVGV4dENvbnRlbnQocmVmLml0ZW0uZGVzY3JpcHRpb24pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6ZWROb3RpZmljYXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZXMgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBOb3RpZmljYXRpb25SZWYgb2JqZWN0cy5cbiAgICogQGZ1bmN0aW9uIGRlc2VyaWFsaXplXG4gICAqIEBtZW1iZXJvZiBOb3RpZmljYXRpb25TZXJpYWxpemVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygbm90aWZpY2F0aW9uIHJlZmVyZW5jZXMgdG8gZGVzZXJpYWxpemUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE5vdGlmaWNhdGlvblJlZltdPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRlc2VyaWFsaXplZCBub3RpZmljYXRpb24gcmVmZXJlbmNlcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZXNlcmlhbGl6ZSh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxOb3RpZmljYXRpb25SZWZbXT4ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VyaWFsaXplRHluYW1pY1RleHRDb250ZW50KGNvbnRlbnQ/OiBEeW5hbWljVGV4dENvbnRlbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghY29udGVudCkgcmV0dXJuICcnO1xuICAgIGlmIChpc1N0cmluZyhjb250ZW50KSkgcmV0dXJuIGNvbnRlbnQ7XG5cbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oY29udGVudCkuY2F0Y2goKCkgPT4gJycpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFBlcnNpc3RlbnROb3RpZmljYXRpb25zU3RvcmFnZU9wdGlvbnMge1xuICBzdG9yYWdlS2V5OiBzdHJpbmc7XG4gIHN0b3JhZ2U6IFN0b3JhZ2U7XG4gIHNlcmlhbGl6ZXI6IE5vdGlmaWNhdGlvblNlcmlhbGl6ZXI7XG4gIGlkVHJhbnNmb3JtZXI/OiAobm90aWZpY2F0aW9uUmVmOiBOb3RpZmljYXRpb25SZWYpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGVyc2lzdGVudE5vdGlmaWNhdGlvbnNPcHRpb25zIHtcbiAgaW5pdEZuOiBMb2FkTm90aWZpY2F0aW9uc0ZuO1xuICBzYXZlRm46IFNhdmVOb3RpZmljYXRpb25zRm47XG4gIHN0b3JhZ2VPcHRpb25zOiBXaXRoUGVyc2lzdGVudE5vdGlmaWNhdGlvbnNTdG9yYWdlT3B0aW9ucztcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIGZvciBsb2FkaW5nIHBlcnNpc3RlbnQgbm90aWZpY2F0aW9ucy5cbiAqIEBmdW5jdGlvbiBpbml0UGVyc2lzdGVudE5vdGlmaWNhdGlvbnNcbiAqIEBwYXJhbSB7V2l0aFBlcnNpc3RlbnROb3RpZmljYXRpb25zU3RvcmFnZU9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgc3RvcmFnZSBvcHRpb25zIGluY2x1ZGluZyBzZXJpYWxpemVyIGFuZCBzdG9yYWdlIGtleS5cbiAqIEByZXR1cm5zIHtMb2FkTm90aWZpY2F0aW9uc0ZufSBBIGZ1bmN0aW9uIHRvIGxvYWQgbm90aWZpY2F0aW9ucyBmcm9tIHN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0UGVyc2lzdGVudE5vdGlmaWNhdGlvbnMoe1xuICBzdG9yYWdlLFxuICBzdG9yYWdlS2V5LFxuICBzZXJpYWxpemVyLFxuICBpZFRyYW5zZm9ybWVyLFxufTogV2l0aFBlcnNpc3RlbnROb3RpZmljYXRpb25zU3RvcmFnZU9wdGlvbnMpOiBMb2FkTm90aWZpY2F0aW9uc0ZuIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzdG9yZWRWYWx1ZSA9IHN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KTtcbiAgICBpZiAoIXN0b3JlZFZhbHVlKSByZXR1cm4gW107XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUmVmcyA9IGF3YWl0IHNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoc3RvcmVkVmFsdWUpO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oaWRUcmFuc2Zvcm1lcikpIHtcbiAgICAgIGZvciAoY29uc3Qgbm90aWZpY2F0aW9uUmVmIG9mIG5vdGlmaWNhdGlvblJlZnMpIHtcbiAgICAgICAgbm90aWZpY2F0aW9uUmVmLml0ZW0uaWQgPSBub3RpZmljYXRpb25SZWYuaWQgPSBpZFRyYW5zZm9ybWVyKG5vdGlmaWNhdGlvblJlZik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvblJlZnM7XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIGZvciBwZXJzaXN0aW5nIG5vdGlmaWNhdGlvbnMuXG4gKiBAZnVuY3Rpb24gcGVyc2lzdE5vdGlmaWNhdGlvbnNcbiAqIEBwYXJhbSB7V2l0aFBlcnNpc3RlbnROb3RpZmljYXRpb25zU3RvcmFnZU9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgc3RvcmFnZSBvcHRpb25zIGluY2x1ZGluZyBzZXJpYWxpemVyIGFuZCBzdG9yYWdlIGtleS5cbiAqIEByZXR1cm5zIHtTYXZlTm90aWZpY2F0aW9uc0ZufSBBIGZ1bmN0aW9uIHRvIHNhdmUgbm90aWZpY2F0aW9ucyB0byBzdG9yYWdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVyc2lzdE5vdGlmaWNhdGlvbnMoeyBzdG9yYWdlLCBzdG9yYWdlS2V5LCBzZXJpYWxpemVyIH06IFdpdGhQZXJzaXN0ZW50Tm90aWZpY2F0aW9uc1N0b3JhZ2VPcHRpb25zKTogU2F2ZU5vdGlmaWNhdGlvbnNGbiB7XG4gIHJldHVybiBhc3luYyAobm90aWZpY2F0aW9uUmVmczogTm90aWZpY2F0aW9uUmVmW10pID0+IHtcbiAgICBzdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgYXdhaXQgc2VyaWFsaXplci5zZXJpYWxpemUobm90aWZpY2F0aW9uUmVmcykpO1xuICB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgdGhlIGFwcGxpY2F0aW9uIHRvIHVzZSBwZXJzaXN0ZW50IG5vdGlmaWNhdGlvbnMsIGF1dG9tYXRpY2FsbHkgbG9hZGluZyBmcm9tIGFuZCBzYXZpbmcgdG8gdGhlIGNvbmZpZ3VyZWQgc3RvcmFnZS5cbiAqIEBmdW5jdGlvbiB3aXRoUGVyc2lzdGVudE5vdGlmaWNhdGlvbnNcbiAqIEBwYXJhbSB7UGFydGlhbDxXaXRoUGVyc2lzdGVudE5vdGlmaWNhdGlvbnNPcHRpb25zPn0gW29wdGlvbnNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgcGVyc2lzdGVudCBub3RpZmljYXRpb25zLlxuICogQHJldHVybnMge05vdGlmaWNhdGlvbkZlYXR1cmV9IEEgbm90aWZpY2F0aW9uIGZlYXR1cmUgY29uZmlndXJlZCBmb3IgcGVyc2lzdGVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUGVyc2lzdGVudE5vdGlmaWNhdGlvbnMob3B0aW9ucz86IFBhcnRpYWw8V2l0aFBlcnNpc3RlbnROb3RpZmljYXRpb25zT3B0aW9ucz4pOiBOb3RpZmljYXRpb25GZWF0dXJlIHtcbiAgY29uc3Qgc3RvcmFnZU9wdGlvbnM6IFdpdGhQZXJzaXN0ZW50Tm90aWZpY2F0aW9uc1N0b3JhZ2VPcHRpb25zID0ge1xuICAgIHN0b3JhZ2VLZXk6IG9wdGlvbnM/LnN0b3JhZ2VPcHRpb25zPy5zdG9yYWdlS2V5ID8/ICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb246OlN0b3JhZ2UnLFxuICAgIHN0b3JhZ2U6IG9wdGlvbnM/LnN0b3JhZ2VPcHRpb25zPy5zdG9yYWdlID8/IGxvY2FsU3RvcmFnZSxcbiAgICBzZXJpYWxpemVyOiBvcHRpb25zPy5zdG9yYWdlT3B0aW9ucz8uc2VyaWFsaXplciA/PyBuZXcgUGVyc2lzdGVudE5vdGlmaWNhdGlvblNlcmlhbGl6ZXIoKSxcbiAgfTtcbiAgY29uc3QgaW5pdEZuID0gb3B0aW9ucz8uaW5pdEZuID8/IGluaXRQZXJzaXN0ZW50Tm90aWZpY2F0aW9ucyhzdG9yYWdlT3B0aW9ucyk7XG4gIGNvbnN0IHNhdmVGbiA9IG9wdGlvbnM/LnNhdmVGbiA/PyBwZXJzaXN0Tm90aWZpY2F0aW9ucyhzdG9yYWdlT3B0aW9ucyk7XG5cbiAgcmV0dXJuIG1ha2VOb3RpZmljYXRpb25GZWF0dXJlKFt3aXRoTG9hZE5vdGlmaWNhdGlvbnMoaW5pdEZuKSwgd2l0aFNhdmVOb3RpZmljYXRpb25zKHNhdmVGbildKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ENVIRONMENT_INITIALIZER, Injector, inject, runInInjectionContext } from '@angular/core';
|
|
2
|
+
import { firstValueFrom, isObservable } from 'rxjs';
|
|
3
|
+
import { makeNotificationFeature } from '../models';
|
|
4
|
+
import { NotificationService } from '../notification.service';
|
|
5
|
+
/**
|
|
6
|
+
* Asynchronously saves notifications using the provided save function. It handles Observable and Promise results seamlessly.
|
|
7
|
+
* @async
|
|
8
|
+
* @function saveNotifications
|
|
9
|
+
* @param {NotificationRef[]} notifications - The notifications to be saved.
|
|
10
|
+
* @param {SaveNotificationsFn} [saveFn] - Optional custom save function.
|
|
11
|
+
* @returns {Promise<void>} A promise that resolves when the save operation is complete.
|
|
12
|
+
*/
|
|
13
|
+
async function saveNotifications(notifications, saveFn) {
|
|
14
|
+
const save = saveFn?.(notifications);
|
|
15
|
+
if (isObservable(save)) {
|
|
16
|
+
await firstValueFrom(save);
|
|
17
|
+
}
|
|
18
|
+
else if (save instanceof Promise) {
|
|
19
|
+
await save;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Configures the application to automatically save notifications using a specified save function.
|
|
24
|
+
* This setup integrates with Angular's environment initialization process to ensure notifications are saved as needed.
|
|
25
|
+
* @function withSaveNotifications
|
|
26
|
+
* @param {SaveNotificationsFn} saveFn - The function to save notifications.
|
|
27
|
+
* @returns {NotificationFeature} A notification feature configured to automatically save notifications.
|
|
28
|
+
*/
|
|
29
|
+
export function withSaveNotifications(saveFn) {
|
|
30
|
+
return makeNotificationFeature([
|
|
31
|
+
{
|
|
32
|
+
provide: ENVIRONMENT_INITIALIZER,
|
|
33
|
+
useFactory: () => {
|
|
34
|
+
const injector = inject(Injector);
|
|
35
|
+
const notificationService = inject(NotificationService);
|
|
36
|
+
const saveFnWithContext = (notifications) => runInInjectionContext(injector, () => saveFn(notifications));
|
|
37
|
+
return () => {
|
|
38
|
+
notificationService.notifications$.subscribe(({ values }) => saveNotifications(values, saveFnWithContext));
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
multi: true,
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zYXZlLW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9mZWF0dXJlcy93aXRoLXNhdmUtbm90aWZpY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQWMsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQXdDLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTlEOzs7Ozs7O0dBT0c7QUFDSCxLQUFLLFVBQVUsaUJBQWlCLENBQUMsYUFBZ0MsRUFBRSxNQUE0QjtJQUM3RixNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM1QjtTQUFNLElBQUksSUFBSSxZQUFZLE9BQU8sRUFBRTtRQUNsQyxNQUFNLElBQUksQ0FBQztLQUNaO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUEyQjtJQUMvRCxPQUFPLHVCQUF1QixDQUFDO1FBQzdCO1lBQ0UsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNmLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxpQkFBaUIsR0FBd0IsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFFL0gsT0FBTyxHQUFHLEVBQUU7b0JBQ1YsbUJBQW1CLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzdHLENBQUMsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLCBJbmplY3RvciwgaW5qZWN0LCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpcnN0VmFsdWVGcm9tLCBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkZlYXR1cmUsIE5vdGlmaWNhdGlvblJlZiwgbWFrZU5vdGlmaWNhdGlvbkZlYXR1cmUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgU2F2ZU5vdGlmaWNhdGlvbnNGbiA9IChub3RpZmljYXRpb25SZWZzOiBOb3RpZmljYXRpb25SZWZbXSkgPT4gT2JzZXJ2YWJsZTx2b2lkPiB8IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IHNhdmVzIG5vdGlmaWNhdGlvbnMgdXNpbmcgdGhlIHByb3ZpZGVkIHNhdmUgZnVuY3Rpb24uIEl0IGhhbmRsZXMgT2JzZXJ2YWJsZSBhbmQgUHJvbWlzZSByZXN1bHRzIHNlYW1sZXNzbHkuXG4gKiBAYXN5bmNcbiAqIEBmdW5jdGlvbiBzYXZlTm90aWZpY2F0aW9uc1xuICogQHBhcmFtIHtOb3RpZmljYXRpb25SZWZbXX0gbm90aWZpY2F0aW9ucyAtIFRoZSBub3RpZmljYXRpb25zIHRvIGJlIHNhdmVkLlxuICogQHBhcmFtIHtTYXZlTm90aWZpY2F0aW9uc0ZufSBbc2F2ZUZuXSAtIE9wdGlvbmFsIGN1c3RvbSBzYXZlIGZ1bmN0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNhdmUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5hc3luYyBmdW5jdGlvbiBzYXZlTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25SZWZbXSwgc2F2ZUZuPzogU2F2ZU5vdGlmaWNhdGlvbnNGbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzYXZlID0gc2F2ZUZuPy4obm90aWZpY2F0aW9ucyk7XG4gIGlmIChpc09ic2VydmFibGUoc2F2ZSkpIHtcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShzYXZlKTtcbiAgfSBlbHNlIGlmIChzYXZlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgIGF3YWl0IHNhdmU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBhcHBsaWNhdGlvbiB0byBhdXRvbWF0aWNhbGx5IHNhdmUgbm90aWZpY2F0aW9ucyB1c2luZyBhIHNwZWNpZmllZCBzYXZlIGZ1bmN0aW9uLlxuICogVGhpcyBzZXR1cCBpbnRlZ3JhdGVzIHdpdGggQW5ndWxhcidzIGVudmlyb25tZW50IGluaXRpYWxpemF0aW9uIHByb2Nlc3MgdG8gZW5zdXJlIG5vdGlmaWNhdGlvbnMgYXJlIHNhdmVkIGFzIG5lZWRlZC5cbiAqIEBmdW5jdGlvbiB3aXRoU2F2ZU5vdGlmaWNhdGlvbnNcbiAqIEBwYXJhbSB7U2F2ZU5vdGlmaWNhdGlvbnNGbn0gc2F2ZUZuIC0gVGhlIGZ1bmN0aW9uIHRvIHNhdmUgbm90aWZpY2F0aW9ucy5cbiAqIEByZXR1cm5zIHtOb3RpZmljYXRpb25GZWF0dXJlfSBBIG5vdGlmaWNhdGlvbiBmZWF0dXJlIGNvbmZpZ3VyZWQgdG8gYXV0b21hdGljYWxseSBzYXZlIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2F2ZU5vdGlmaWNhdGlvbnMoc2F2ZUZuOiBTYXZlTm90aWZpY2F0aW9uc0ZuKTogTm90aWZpY2F0aW9uRmVhdHVyZSB7XG4gIHJldHVybiBtYWtlTm90aWZpY2F0aW9uRmVhdHVyZShbXG4gICAge1xuICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uU2VydmljZSA9IGluamVjdChOb3RpZmljYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgY29uc3Qgc2F2ZUZuV2l0aENvbnRleHQ6IFNhdmVOb3RpZmljYXRpb25zRm4gPSAobm90aWZpY2F0aW9ucykgPT4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiBzYXZlRm4obm90aWZpY2F0aW9ucykpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25zJC5zdWJzY3JpYmUoKHsgdmFsdWVzIH0pID0+IHNhdmVOb3RpZmljYXRpb25zKHZhbHVlcywgc2F2ZUZuV2l0aENvbnRleHQpKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function getNotificationsByTags(...tags) {
|
|
2
|
+
const cachedTags = new Set(tags.filter(Boolean));
|
|
3
|
+
return ({ options }) => {
|
|
4
|
+
return cachedTags.size < 1 || options.tags.every((tag) => cachedTags.has(tag));
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW5vdGlmaWNhdGlvbnMtYnktdGFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL3NyYy9saWIvaGVscGVycy9nZXQtbm90aWZpY2F0aW9ucy1ieS10YWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEdBQUcsSUFBc0M7SUFDOUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRWpELE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7UUFDckIsT0FBTyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb3RpZmljYXRpb25RdWVyeSB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3RpZmljYXRpb25zQnlUYWdzKC4uLnRhZ3M6IEFycmF5PHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KTogTm90aWZpY2F0aW9uUXVlcnkge1xuICBjb25zdCBjYWNoZWRUYWdzID0gbmV3IFNldCh0YWdzLmZpbHRlcihCb29sZWFuKSk7XG5cbiAgcmV0dXJuICh7IG9wdGlvbnMgfSkgPT4ge1xuICAgIHJldHVybiBjYWNoZWRUYWdzLnNpemUgPCAxIHx8IG9wdGlvbnMudGFncy5ldmVyeSgodGFnKSA9PiBjYWNoZWRUYWdzLmhhcyh0YWcpKTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './get-notifications-by-tag';
|
|
2
|
+
export * from './sort-notifications';
|
|
3
|
+
export * from './to-notification-collection';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZXQtbm90aWZpY2F0aW9ucy1ieS10YWcnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0LW5vdGlmaWNhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi90by1ub3RpZmljYXRpb24tY29sbGVjdGlvbic7XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { isFunction } from '@odx/angular/utils';
|
|
2
|
+
import { tap } from 'rxjs';
|
|
3
|
+
export function sortNotifications(sortFn) {
|
|
4
|
+
return (source$) => source$.pipe(tap((values) => {
|
|
5
|
+
if (!isFunction(sortFn))
|
|
6
|
+
return;
|
|
7
|
+
values.sort(sortFn);
|
|
8
|
+
}));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ub3RpZmljYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL3NyYy9saWIvaGVscGVycy9zb3J0LW5vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBNEIsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUEyQjtJQUMzRCxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDakIsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTztRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUmVmLCBOb3RpZmljYXRpb25Tb3J0Rm4gfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc29ydE5vdGlmaWNhdGlvbnMoc29ydEZuPzogTm90aWZpY2F0aW9uU29ydEZuKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPE5vdGlmaWNhdGlvblJlZltdPiB7XG4gIHJldHVybiAoc291cmNlJCkgPT5cbiAgICBzb3VyY2UkLnBpcGUoXG4gICAgICB0YXAoKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAoIWlzRnVuY3Rpb24oc29ydEZuKSkgcmV0dXJuO1xuICAgICAgICB2YWx1ZXMuc29ydChzb3J0Rm4pO1xuICAgICAgfSksXG4gICAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { map } from 'rxjs';
|
|
2
|
+
export function toNotificationCollection() {
|
|
3
|
+
return (source$) => source$.pipe(map((notificationRefs) => ({
|
|
4
|
+
values: notificationRefs,
|
|
5
|
+
count: notificationRefs.length,
|
|
6
|
+
isEmpty: notificationRefs.length === 0,
|
|
7
|
+
})));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tbm90aWZpY2F0aW9uLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9oZWxwZXJzL3RvLW5vdGlmaWNhdGlvbi1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzdDLE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekIsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTTtRQUM5QixPQUFPLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUM7S0FDdkMsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRvckZ1bmN0aW9uLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNvbGxlY3Rpb24sIE5vdGlmaWNhdGlvblJlZiB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b05vdGlmaWNhdGlvbkNvbGxlY3Rpb24oKTogT3BlcmF0b3JGdW5jdGlvbjxOb3RpZmljYXRpb25SZWZbXSwgTm90aWZpY2F0aW9uQ29sbGVjdGlvbj4ge1xuICByZXR1cm4gKHNvdXJjZSQpID0+XG4gICAgc291cmNlJC5waXBlKFxuICAgICAgbWFwKChub3RpZmljYXRpb25SZWZzKSA9PiAoe1xuICAgICAgICB2YWx1ZXM6IG5vdGlmaWNhdGlvblJlZnMsXG4gICAgICAgIGNvdW50OiBub3RpZmljYXRpb25SZWZzLmxlbmd0aCxcbiAgICAgICAgaXNFbXB0eTogbm90aWZpY2F0aW9uUmVmcy5sZW5ndGggPT09IDAsXG4gICAgICB9KSksXG4gICAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './notification';
|
|
2
|
+
export * from './notification-action';
|
|
3
|
+
export * from './notification-collection';
|
|
4
|
+
export * from './notification-feature';
|
|
5
|
+
export * from './notification-options';
|
|
6
|
+
export * from './notification-query';
|
|
7
|
+
export * from './notification-sort-fn';
|
|
8
|
+
export * from './notification.ref';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24tYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uLWNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24tZmVhdHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbi1vcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uLXF1ZXJ5JztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uLXNvcnQtZm4nO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24ucmVmJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9zcmMvbGliL21vZGVscy9ub3RpZmljYXRpb24tYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb3RpZmljYXRpb25SZWYgfSBmcm9tICcuL25vdGlmaWNhdGlvbi5yZWYnO1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25BY3Rpb24gPSAobm90aWZpY2F0aW9uUmVmOiBOb3RpZmljYXRpb25SZWYpID0+IHZvaWQ7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9tb2RlbHMvbm90aWZpY2F0aW9uLWNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmaWNhdGlvblJlZiB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnJlZic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uQ29sbGVjdGlvbiB7XG4gIHZhbHVlczogTm90aWZpY2F0aW9uUmVmW107XG4gIGNvdW50OiBudW1iZXI7XG4gIGlzRW1wdHk6IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function makeNotificationFeature(provider) {
|
|
2
|
+
return provider;
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWZlYXR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9tb2RlbHMvbm90aWZpY2F0aW9uLWZlYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFFBQW1FO0lBQ3pHLE9BQU8sUUFBd0MsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvbkZlYXR1cmUgPSBFbnZpcm9ubWVudFByb3ZpZGVycyAmIHsgybVvZHhCcmFuZDogJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL25vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uRmVhdHVyZScgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VOb3RpZmljYXRpb25GZWF0dXJlKHByb3ZpZGVyOiAoUHJvdmlkZXIgfCBOb3RpZmljYXRpb25GZWF0dXJlKVtdIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpOiBOb3RpZmljYXRpb25GZWF0dXJlIHtcbiAgcmV0dXJuIHByb3ZpZGVyIGFzIG5ldmVyIGFzIE5vdGlmaWNhdGlvbkZlYXR1cmU7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9tb2RlbHMvbm90aWZpY2F0aW9uLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uT3B0aW9ucyB7XG4gIGljb246IHN0cmluZztcbiAgdGFnczogc3RyaW5nW107XG4gIGRpc21pc3NhYmxlOiBib29sZWFuO1xuICBhY3Rpb24/OiBzdHJpbmc7XG4gIGxhbmd1YWdlPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL3NyYy9saWIvbW9kZWxzL25vdGlmaWNhdGlvbi1xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90aWZpY2F0aW9uUmVmIH0gZnJvbSAnLi9ub3RpZmljYXRpb24ucmVmJztcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUXVlcnkgPSAobm90aWZpY2F0aW9uUmVmOiBOb3RpZmljYXRpb25SZWYpID0+IGJvb2xlYW47XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXNvcnQtZm4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9tb2RlbHMvbm90aWZpY2F0aW9uLXNvcnQtZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmaWNhdGlvblJlZiB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnJlZic7XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblNvcnRGbiA9IFBhcmFtZXRlcnM8QXJyYXk8Tm90aWZpY2F0aW9uUmVmPlsnc29ydCddPlswXTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL3NyYy9saWIvbW9kZWxzL25vdGlmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY1RleHRDb250ZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbiB7XG4gIGlkPzogc3RyaW5nO1xuICB0aXRsZTogRHluYW1pY1RleHRDb250ZW50O1xuICBkZXNjcmlwdGlvbj86IER5bmFtaWNUZXh0Q29udGVudDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9zcmMvbGliL21vZGVscy9ub3RpZmljYXRpb24ucmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuL25vdGlmaWNhdGlvbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25PcHRpb25zIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tb3B0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uUmVmIHtcbiAgaWQ6IE5vbk51bGxhYmxlPE5vdGlmaWNhdGlvblsnaWQnXT47XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICBpdGVtOiBOb3RpZmljYXRpb247XG4gIG9wdGlvbnM6IE5vdGlmaWNhdGlvbk9wdGlvbnM7XG4gIGhhc0JlZW5TZWVuOiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { createConfigTokens, orderBy } from '@odx/angular/utils';
|
|
3
|
+
export const { NotificationConfig, NotificationDefaultConfig, injectNotificationConfig, provideNotificationConfig } = createConfigTokens('Notification', '@odx/angular/components/notification', {
|
|
4
|
+
options: { icon: 'core::globe', tags: [], dismissable: true },
|
|
5
|
+
sortFn: orderBy('createdAt', 'DESC'),
|
|
6
|
+
defaultIdPrefix: 'odx-notifications',
|
|
7
|
+
});
|
|
8
|
+
export function provideNotifications(config, ...features) {
|
|
9
|
+
return makeEnvironmentProviders([provideNotificationConfig(config ?? {}), features]);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9zcmMvbGliL25vdGlmaWNhdGlvbi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFXakUsTUFBTSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxHQUFHLGtCQUFrQixDQUN0SSxjQUFjLEVBQ2Qsc0NBQXNDLEVBQ3RDO0lBQ0UsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7SUFDN0QsTUFBTSxFQUFFLE9BQU8sQ0FBa0IsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNyRCxlQUFlLEVBQUUsbUJBQW1CO0NBQ2YsQ0FDeEIsQ0FBQztBQUVGLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUFvQyxFQUFFLEdBQUcsUUFBK0I7SUFDM0csT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVDb25maWdUb2tlbnMsIG9yZGVyQnkgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQWN0aW9uLCBOb3RpZmljYXRpb25GZWF0dXJlLCBOb3RpZmljYXRpb25PcHRpb25zLCBOb3RpZmljYXRpb25SZWYsIE5vdGlmaWNhdGlvblNvcnRGbiB9IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Db25maWcge1xuICBkZWZhdWx0SWRQcmVmaXg6IHN0cmluZztcbiAgb3B0aW9uczogTm90aWZpY2F0aW9uT3B0aW9ucztcbiAgc29ydEZuOiBOb3RpZmljYXRpb25Tb3J0Rm47XG4gIHRhZ1RvSWNvbk1hcD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGFjdGlvbk1hcD86IFJlY29yZDxzdHJpbmcsIE5vdGlmaWNhdGlvbkFjdGlvbj47XG59XG5cbmV4cG9ydCBjb25zdCB7IE5vdGlmaWNhdGlvbkNvbmZpZywgTm90aWZpY2F0aW9uRGVmYXVsdENvbmZpZywgaW5qZWN0Tm90aWZpY2F0aW9uQ29uZmlnLCBwcm92aWRlTm90aWZpY2F0aW9uQ29uZmlnIH0gPSBjcmVhdGVDb25maWdUb2tlbnMoXG4gICdOb3RpZmljYXRpb24nLFxuICAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uJyxcbiAge1xuICAgIG9wdGlvbnM6IHsgaWNvbjogJ2NvcmU6Omdsb2JlJywgdGFnczogW10sIGRpc21pc3NhYmxlOiB0cnVlIH0sXG4gICAgc29ydEZuOiBvcmRlckJ5PE5vdGlmaWNhdGlvblJlZj4oJ2NyZWF0ZWRBdCcsICdERVNDJyksXG4gICAgZGVmYXVsdElkUHJlZml4OiAnb2R4LW5vdGlmaWNhdGlvbnMnLFxuICB9IGFzIE5vdGlmaWNhdGlvbkNvbmZpZyxcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTm90aWZpY2F0aW9ucyhjb25maWc/OiBQYXJ0aWFsPE5vdGlmaWNhdGlvbkNvbmZpZz4sIC4uLmZlYXR1cmVzOiBOb3RpZmljYXRpb25GZWF0dXJlW10pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3Byb3ZpZGVOb3RpZmljYXRpb25Db25maWcoY29uZmlnID8/IHt9KSwgZmVhdHVyZXNdKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
en: {
|
|
3
|
+
title: 'Notifications',
|
|
4
|
+
dismissAll: 'Dismiss all',
|
|
5
|
+
},
|
|
6
|
+
de: {
|
|
7
|
+
title: 'Benachrichtigungen',
|
|
8
|
+
dismissAll: 'Alle entfernen',
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmkxOG4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9ub3RpZmljYXRpb24uaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxlQUFlO0lBQ2IsRUFBRSxFQUFFO1FBQ0YsS0FBSyxFQUFFLGVBQWU7UUFDdEIsVUFBVSxFQUFFLGFBQWE7S0FDMUI7SUFDRCxFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFVBQVUsRUFBRSxnQkFBZ0I7S0FDN0I7Q0FDbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0aW9uT2JqZWN0IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZW46IHtcbiAgICB0aXRsZTogJ05vdGlmaWNhdGlvbnMnLFxuICAgIGRpc21pc3NBbGw6ICdEaXNtaXNzIGFsbCcsXG4gIH0sXG4gIGRlOiB7XG4gICAgdGl0bGU6ICdCZW5hY2hyaWNodGlndW5nZW4nLFxuICAgIGRpc21pc3NBbGw6ICdBbGxlIGVudGZlcm5lbicsXG4gIH0sXG59IGFzIFRyYW5zbGF0aW9uT2JqZWN0O1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Logger } from '@odx/angular/internal';
|
|
2
|
+
export default new Logger('@odx/angular/components/notification');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9zcmMvbGliL25vdGlmaWNhdGlvbi5sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9DLGVBQWUsSUFBSSxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBMb2dnZXIoJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL25vdGlmaWNhdGlvbicpO1xuIl19
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';
|
|
2
|
+
import { deepmerge } from '@odx/angular/internal';
|
|
3
|
+
import { LocalizationService } from '@odx/angular/localization';
|
|
4
|
+
import { getUniqueId, isFunction } from '@odx/angular/utils';
|
|
5
|
+
import { filter, map, shareReplay } from 'rxjs';
|
|
6
|
+
import { sortNotifications, toNotificationCollection } from './helpers';
|
|
7
|
+
import { injectNotificationConfig } from './notification.config';
|
|
8
|
+
import logger from './notification.logger';
|
|
9
|
+
import { ODX_NOTIFICATION_QUEUE } from './notification.tokens';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class NotificationService {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.config = injectNotificationConfig();
|
|
14
|
+
this.localizationService = inject(LocalizationService);
|
|
15
|
+
this.queue = inject(ODX_NOTIFICATION_QUEUE);
|
|
16
|
+
this.injector = inject(Injector);
|
|
17
|
+
this.notifications$ = this.queue.value$.pipe(sortNotifications(this.config.sortFn), toNotificationCollection(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
18
|
+
this.unseenNotifications$ = this.notifications$.pipe(map((collection) => collection.values.filter(({ hasBeenSeen }) => !hasBeenSeen)), toNotificationCollection(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
19
|
+
this.onNotificationAdd$ = this.queue.onAdd$;
|
|
20
|
+
this.onNotificationRemove$ = this.queue.onRemove$;
|
|
21
|
+
this.onNotificationUpdate$ = this.queue.onUpdate$;
|
|
22
|
+
this.onNotificationSeen$ = this.queue.onUpdate$.pipe(filter(({ hasBeenSeen }) => hasBeenSeen));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Fetches notifications filtered by a specified query and optionally sorted by a custom sort function.
|
|
26
|
+
*
|
|
27
|
+
* @param {NotificationQuery} query - A function or object to filter notifications.
|
|
28
|
+
* @param {NotificationSortFn} [sortFn] - An optional sorting function to order the filtered notifications.
|
|
29
|
+
* @returns {Observable<NotificationCollection>} An observable stream of the filtered (and optionally sorted) notification collection.
|
|
30
|
+
* @example
|
|
31
|
+
* // Fetch notifications with a specific tag, sorted by creation date
|
|
32
|
+
* const sortedNotifications$ = notificationService.getNotificationsBy$(
|
|
33
|
+
* notification => notification.tags.includes('important'),
|
|
34
|
+
* (a, b) => b.createdAt - a.createdAt
|
|
35
|
+
* );
|
|
36
|
+
*/
|
|
37
|
+
getNotificationsBy$(query, sortFn) {
|
|
38
|
+
return this.queue.value$.pipe(map((notifications) => notifications.filter(query)), sortNotifications(sortFn), toNotificationCollection(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Loads a list of notifications into the service.
|
|
42
|
+
*
|
|
43
|
+
* @param {NotificationRef[]} refs - An array of notification references to be loaded.
|
|
44
|
+
* @example
|
|
45
|
+
* // Load multiple notifications at once
|
|
46
|
+
* notificationService.load([
|
|
47
|
+
* { id: '1', item: { title: 'Notification 1' }, options: {dismissable: true, icon: 'plus', tags: ['important']}, hasBeenSeen: false, createdAt: Date.now() },
|
|
48
|
+
* { id: '2', item: { title: 'Notification 2' }, options: {dismissable: true, icon: 'plus', tags: ['important']}, hasBeenSeen: false, createdAt: Date.now() }
|
|
49
|
+
* ]);
|
|
50
|
+
*/
|
|
51
|
+
load(refs) {
|
|
52
|
+
this.queue.addMany(refs);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Creates a new notification and adds it to the notification queue.
|
|
56
|
+
*
|
|
57
|
+
* @param {Notification} item - The notification to create.
|
|
58
|
+
* @param {Partial<NotificationOptions>} [options] - Optional settings for the notification.
|
|
59
|
+
* @example
|
|
60
|
+
* // Create a new notification with custom options
|
|
61
|
+
* notificationService.create(
|
|
62
|
+
* { title: 'New Notification' },
|
|
63
|
+
* { dismissable: true, icon: 'plus', tags: ['important'] }
|
|
64
|
+
* );
|
|
65
|
+
*/
|
|
66
|
+
create(item, options) {
|
|
67
|
+
this.queue.add({
|
|
68
|
+
id: item.id ?? getUniqueId(this.config.defaultIdPrefix),
|
|
69
|
+
createdAt: Date.now(),
|
|
70
|
+
item,
|
|
71
|
+
options: this.resolveOptions(options),
|
|
72
|
+
hasBeenSeen: false,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Marks a specific notification as seen.
|
|
77
|
+
*
|
|
78
|
+
* @param {NotificationRef} notificationRef - The reference to the notification to mark as seen.
|
|
79
|
+
* @example
|
|
80
|
+
* // Mark a notification as seen by its reference
|
|
81
|
+
* notificationService.markAsSeen(notificationRef);
|
|
82
|
+
*/
|
|
83
|
+
markAsSeen(notificationRef) {
|
|
84
|
+
if (notificationRef.hasBeenSeen)
|
|
85
|
+
return;
|
|
86
|
+
this.queue.add({ ...notificationRef, hasBeenSeen: true });
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Marks all notifications that match a specific query as seen.
|
|
90
|
+
*
|
|
91
|
+
* @param {NotificationQuery} query - The query to match notifications to mark as seen.
|
|
92
|
+
* @example
|
|
93
|
+
* // Mark all notifications with a specific tag as seen
|
|
94
|
+
* notificationService.markAsSeenBy(notification => notification.tags.includes('important'));
|
|
95
|
+
*/
|
|
96
|
+
markAsSeenBy(query) {
|
|
97
|
+
for (const notificationRef of this.queue.toArray().filter(query)) {
|
|
98
|
+
this.markAsSeen(notificationRef);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Dismisses a specific notification.
|
|
103
|
+
*
|
|
104
|
+
* @param {NotificationRef} notificationRef - The reference to the notification to dismiss.
|
|
105
|
+
* @example
|
|
106
|
+
* // Dismiss a notification by its reference
|
|
107
|
+
* notificationService.dismiss(notificationRef);
|
|
108
|
+
*/
|
|
109
|
+
dismiss(notificationRef) {
|
|
110
|
+
if (!notificationRef.options.dismissable)
|
|
111
|
+
return;
|
|
112
|
+
this.queue.remove(notificationRef);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Dismisses all notifications that match a specific query.
|
|
116
|
+
*
|
|
117
|
+
* @param {NotificationQuery} query - The query to match notifications to dismiss.
|
|
118
|
+
* @example
|
|
119
|
+
* // Dismiss all notifications with a specific tag
|
|
120
|
+
* notificationService.dismissBy(notification => notification.tags.includes('expired'));
|
|
121
|
+
*/
|
|
122
|
+
dismissBy(query) {
|
|
123
|
+
for (const item of this.queue.toArray().filter(query)) {
|
|
124
|
+
this.dismiss(item);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Dismisses all notifications.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* // Dismiss all notifications
|
|
132
|
+
* notificationService.dismissAll();
|
|
133
|
+
*/
|
|
134
|
+
dismissAll() {
|
|
135
|
+
this.queue.clear();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Executes the action associated with a specific notification.
|
|
139
|
+
*
|
|
140
|
+
* @param {NotificationRef} notificationRef - The reference to the notification whose action to execute.
|
|
141
|
+
* @example
|
|
142
|
+
* // Execute action for a notification
|
|
143
|
+
* notificationService.executeAction(notificationRef);
|
|
144
|
+
*/
|
|
145
|
+
executeAction(notificationRef) {
|
|
146
|
+
if (!notificationRef.options.action)
|
|
147
|
+
return;
|
|
148
|
+
const actionFn = this.config.actionMap?.[notificationRef.options.action];
|
|
149
|
+
if (!isFunction(actionFn)) {
|
|
150
|
+
logger.warn(`Cannot find action ${notificationRef.options.action} for notification reference: ${notificationRef}`);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
runInInjectionContext(this.injector, () => actionFn(notificationRef));
|
|
154
|
+
}
|
|
155
|
+
resolveOptions(options) {
|
|
156
|
+
return deepmerge(this.config.options, options ?? {}, {
|
|
157
|
+
icon: options?.icon ?? this.config.tagToIconMap?.[options?.tags?.[0] ?? ''] ?? this.config.options.icon,
|
|
158
|
+
language: options?.language ?? this.localizationService.getActiveLanguage(),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
162
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationService, providedIn: 'root' }); }
|
|
163
|
+
}
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationService, decorators: [{
|
|
165
|
+
type: Injectable,
|
|
166
|
+
args: [{ providedIn: 'root' }]
|
|
167
|
+
}] });
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0QsT0FBTyxFQUFjLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLE1BQU0sTUFBTSx1QkFBdUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVtQixXQUFNLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztRQUNwQyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsRCxVQUFLLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QixtQkFBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDckQsaUJBQWlCLENB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WSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDdkcsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFO1NBQzVFLENBQXdCLENBQUM7SUFDNUIsQ0FBQzsrR0F4S1UsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FETixNQUFNOzs0RkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7IGdldFVuaXF1ZUlkLCBpc0Z1bmN0aW9uIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc29ydE5vdGlmaWNhdGlvbnMsIHRvTm90aWZpY2F0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb24sIE5vdGlmaWNhdGlvbkNvbGxlY3Rpb24sIE5vdGlmaWNhdGlvbk9wdGlvbnMsIE5vdGlmaWNhdGlvblF1ZXJ5LCBOb3RpZmljYXRpb25SZWYsIE5vdGlmaWNhdGlvblNvcnRGbiB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGluamVjdE5vdGlmaWNhdGlvbkNvbmZpZyB9IGZyb20gJy4vbm90aWZpY2F0aW9uLmNvbmZpZyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbm90aWZpY2F0aW9uLmxvZ2dlcic7XG5pbXBvcnQgeyBPRFhfTk9USUZJQ0FUSU9OX1FVRVVFIH0gZnJvbSAnLi9ub3RpZmljYXRpb24udG9rZW5zJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3ROb3RpZmljYXRpb25Db25maWcoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGl6YXRpb25TZXJ2aWNlID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXVlID0gaW5qZWN0KE9EWF9OT1RJRklDQVRJT05fUVVFVUUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbm90aWZpY2F0aW9ucyQgPSB0aGlzLnF1ZXVlLnZhbHVlJC5waXBlKFxuICAgIHNvcnROb3RpZmljYXRpb25zKHRoaXMuY29uZmlnLnNvcnRGbiksXG4gICAgdG9Ob3RpZmljYXRpb25Db2xsZWN0aW9uKCksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHVuc2Vlbk5vdGlmaWNhdGlvbnMkID0gdGhpcy5ub3RpZmljYXRpb25zJC5waXBlKFxuICAgIG1hcCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi52YWx1ZXMuZmlsdGVyKCh7IGhhc0JlZW5TZWVuIH0pID0+ICFoYXNCZWVuU2VlbikpLFxuICAgIHRvTm90aWZpY2F0aW9uQ29sbGVjdGlvbigpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBvbk5vdGlmaWNhdGlvbkFkZCQgPSB0aGlzLnF1ZXVlLm9uQWRkJDtcbiAgcHVibGljIHJlYWRvbmx5IG9uTm90aWZpY2F0aW9uUmVtb3ZlJCA9IHRoaXMucXVldWUub25SZW1vdmUkO1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob3RpZmljYXRpb25VcGRhdGUkID0gdGhpcy5xdWV1ZS5vblVwZGF0ZSQ7XG4gIHB1YmxpYyByZWFkb25seSBvbk5vdGlmaWNhdGlvblNlZW4kID0gdGhpcy5xdWV1ZS5vblVwZGF0ZSQucGlwZShmaWx0ZXIoKHsgaGFzQmVlblNlZW4gfSkgPT4gaGFzQmVlblNlZW4pKTtcblxuICAvKipcbiAgICogRmV0Y2hlcyBub3RpZmljYXRpb25zIGZpbHRlcmVkIGJ5IGEgc3BlY2lmaWVkIHF1ZXJ5IGFuZCBvcHRpb25hbGx5IHNvcnRlZCBieSBhIGN1c3RvbSBzb3J0IGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvblF1ZXJ5fSBxdWVyeSAtIEEgZnVuY3Rpb24gb3Igb2JqZWN0IHRvIGZpbHRlciBub3RpZmljYXRpb25zLlxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvblNvcnRGbn0gW3NvcnRGbl0gLSBBbiBvcHRpb25hbCBzb3J0aW5nIGZ1bmN0aW9uIHRvIG9yZGVyIHRoZSBmaWx0ZXJlZCBub3RpZmljYXRpb25zLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Db2xsZWN0aW9uPn0gQW4gb2JzZXJ2YWJsZSBzdHJlYW0gb2YgdGhlIGZpbHRlcmVkIChhbmQgb3B0aW9uYWxseSBzb3J0ZWQpIG5vdGlmaWNhdGlvbiBjb2xsZWN0aW9uLlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBGZXRjaCBub3RpZmljYXRpb25zIHdpdGggYSBzcGVjaWZpYyB0YWcsIHNvcnRlZCBieSBjcmVhdGlvbiBkYXRlXG4gICAqIGNvbnN0IHNvcnRlZE5vdGlmaWNhdGlvbnMkID0gbm90aWZpY2F0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb25zQnkkKFxuICAgKiAgIG5vdGlmaWNhdGlvbiA9PiBub3RpZmljYXRpb24udGFncy5pbmNsdWRlcygnaW1wb3J0YW50JyksXG4gICAqICAgKGEsIGIpID0+IGIuY3JlYXRlZEF0IC0gYS5jcmVhdGVkQXRcbiAgICogKTtcbiAgICovXG4gIHB1YmxpYyBnZXROb3RpZmljYXRpb25zQnkkKHF1ZXJ5OiBOb3RpZmljYXRpb25RdWVyeSwgc29ydEZuPzogTm90aWZpY2F0aW9uU29ydEZuKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Db2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUudmFsdWUkLnBpcGUoXG4gICAgICBtYXAoKG5vdGlmaWNhdGlvbnMpID0+IG5vdGlmaWNhdGlvbnMuZmlsdGVyKHF1ZXJ5KSksXG4gICAgICBzb3J0Tm90aWZpY2F0aW9ucyhzb3J0Rm4pLFxuICAgICAgdG9Ob3RpZmljYXRpb25Db2xsZWN0aW9uKCksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBsaXN0IG9mIG5vdGlmaWNhdGlvbnMgaW50byB0aGUgc2VydmljZS5cbiAgICpcbiAgICogQHBhcmFtIHtOb3RpZmljYXRpb25SZWZbXX0gcmVmcyAtIEFuIGFycmF5IG9mIG5vdGlmaWNhdGlvbiByZWZlcmVuY2VzIHRvIGJlIGxvYWRlZC5cbiAgICogQGV4YW1wbGVcbiAgICogLy8gTG9hZCBtdWx0aXBsZSBub3RpZmljYXRpb25zIGF0IG9uY2VcbiAgICogbm90aWZpY2F0aW9uU2VydmljZS5sb2FkKFtcbiAgICogICB7IGlkOiAnMScsIGl0ZW06IHsgdGl0bGU6ICdOb3RpZmljYXRpb24gMScgfSwgb3B0aW9uczoge2Rpc21pc3NhYmxlOiB0cnVlLCBpY29uOiAncGx1cycsIHRhZ3M6IFsnaW1wb3J0YW50J119LCBoYXNCZWVuU2VlbjogZmFsc2UsIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSB9LFxuICAgKiAgIHsgaWQ6ICcyJywgaXRlbTogeyB0aXRsZTogJ05vdGlmaWNhdGlvbiAyJyB9LCBvcHRpb25zOiB7ZGlzbWlzc2FibGU6IHRydWUsIGljb246ICdwbHVzJywgdGFnczogWydpbXBvcnRhbnQnXX0sIGhhc0JlZW5TZWVuOiBmYWxzZSwgY3JlYXRlZEF0OiBEYXRlLm5vdygpIH1cbiAgICogXSk7XG4gICAqL1xuICBwdWJsaWMgbG9hZChyZWZzOiBOb3RpZmljYXRpb25SZWZbXSk6IHZvaWQge1xuICAgIHRoaXMucXVldWUuYWRkTWFueShyZWZzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG5vdGlmaWNhdGlvbiBhbmQgYWRkcyBpdCB0byB0aGUgbm90aWZpY2F0aW9uIHF1ZXVlLlxuICAgKlxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvbn0gaXRlbSAtIFRoZSBub3RpZmljYXRpb24gdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8Tm90aWZpY2F0aW9uT3B0aW9ucz59IFtvcHRpb25zXSAtIE9wdGlvbmFsIHNldHRpbmdzIGZvciB0aGUgbm90aWZpY2F0aW9uLlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBDcmVhdGUgYSBuZXcgbm90aWZpY2F0aW9uIHdpdGggY3VzdG9tIG9wdGlvbnNcbiAgICogbm90aWZpY2F0aW9uU2VydmljZS5jcmVhdGUoXG4gICAqICAgeyB0aXRsZTogJ05ldyBOb3RpZmljYXRpb24nIH0sXG4gICAqICAgeyBkaXNtaXNzYWJsZTogdHJ1ZSwgaWNvbjogJ3BsdXMnLCB0YWdzOiBbJ2ltcG9ydGFudCddIH1cbiAgICogKTtcbiAgICovXG4gIHB1YmxpYyBjcmVhdGUoaXRlbTogTm90aWZpY2F0aW9uLCBvcHRpb25zPzogUGFydGlhbDxOb3RpZmljYXRpb25PcHRpb25zPik6IHZvaWQge1xuICAgIHRoaXMucXVldWUuYWRkKHtcbiAgICAgIGlkOiBpdGVtLmlkID8/IGdldFVuaXF1ZUlkKHRoaXMuY29uZmlnLmRlZmF1bHRJZFByZWZpeCksXG4gICAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gICAgICBpdGVtLFxuICAgICAgb3B0aW9uczogdGhpcy5yZXNvbHZlT3B0aW9ucyhvcHRpb25zKSxcbiAgICAgIGhhc0JlZW5TZWVuOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyBhIHNwZWNpZmljIG5vdGlmaWNhdGlvbiBhcyBzZWVuLlxuICAgKlxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvblJlZn0gbm90aWZpY2F0aW9uUmVmIC0gVGhlIHJlZmVyZW5jZSB0byB0aGUgbm90aWZpY2F0aW9uIHRvIG1hcmsgYXMgc2Vlbi5cbiAgICogQGV4YW1wbGVcbiAgICogLy8gTWFyayBhIG5vdGlmaWNhdGlvbiBhcyBzZWVuIGJ5IGl0cyByZWZlcmVuY2VcbiAgICogbm90aWZpY2F0aW9uU2VydmljZS5tYXJrQXNTZWVuKG5vdGlmaWNhdGlvblJlZik7XG4gICAqL1xuICBwdWJsaWMgbWFya0FzU2Vlbihub3RpZmljYXRpb25SZWY6IE5vdGlmaWNhdGlvblJlZik6IHZvaWQge1xuICAgIGlmIChub3RpZmljYXRpb25SZWYuaGFzQmVlblNlZW4pIHJldHVybjtcbiAgICB0aGlzLnF1ZXVlLmFkZCh7IC4uLm5vdGlmaWNhdGlvblJlZiwgaGFzQmVlblNlZW46IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFya3MgYWxsIG5vdGlmaWNhdGlvbnMgdGhhdCBtYXRjaCBhIHNwZWNpZmljIHF1ZXJ5IGFzIHNlZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7Tm90aWZpY2F0aW9uUXVlcnl9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIG1hdGNoIG5vdGlmaWNhdGlvbnMgdG8gbWFyayBhcyBzZWVuLlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBNYXJrIGFsbCBub3RpZmljYXRpb25zIHdpdGggYSBzcGVjaWZpYyB0YWcgYXMgc2VlblxuICAgKiBub3RpZmljYXRpb25TZXJ2aWNlLm1hcmtBc1NlZW5CeShub3RpZmljYXRpb24gPT4gbm90aWZpY2F0aW9uLnRhZ3MuaW5jbHVkZXMoJ2ltcG9ydGFudCcpKTtcbiAgICovXG4gIHB1YmxpYyBtYXJrQXNTZWVuQnkocXVlcnk6IE5vdGlmaWNhdGlvblF1ZXJ5KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBub3RpZmljYXRpb25SZWYgb2YgdGhpcy5xdWV1ZS50b0FycmF5KCkuZmlsdGVyKHF1ZXJ5KSkge1xuICAgICAgdGhpcy5tYXJrQXNTZWVuKG5vdGlmaWNhdGlvblJlZik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3NlcyBhIHNwZWNpZmljIG5vdGlmaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtOb3RpZmljYXRpb25SZWZ9IG5vdGlmaWNhdGlvblJlZiAtIFRoZSByZWZlcmVuY2UgdG8gdGhlIG5vdGlmaWNhdGlvbiB0byBkaXNtaXNzLlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBEaXNtaXNzIGEgbm90aWZpY2F0aW9uIGJ5IGl0cyByZWZlcmVuY2VcbiAgICogbm90aWZpY2F0aW9uU2VydmljZS5kaXNtaXNzKG5vdGlmaWNhdGlvblJlZik7XG4gICAqL1xuICBwdWJsaWMgZGlzbWlzcyhub3RpZmljYXRpb25SZWY6IE5vdGlmaWNhdGlvblJlZik6IHZvaWQge1xuICAgIGlmICghbm90aWZpY2F0aW9uUmVmLm9wdGlvbnMuZGlzbWlzc2FibGUpIHJldHVybjtcbiAgICB0aGlzLnF1ZXVlLnJlbW92ZShub3RpZmljYXRpb25SZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3NlcyBhbGwgbm90aWZpY2F0aW9ucyB0aGF0IG1hdGNoIGEgc3BlY2lmaWMgcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm90aWZpY2F0aW9uUXVlcnl9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIG1hdGNoIG5vdGlmaWNhdGlvbnMgdG8gZGlzbWlzcy5cbiAgICogQGV4YW1wbGVcbiAgICogLy8gRGlzbWlzcyBhbGwgbm90aWZpY2F0aW9ucyB3aXRoIGEgc3BlY2lmaWMgdGFnXG4gICAqIG5vdGlmaWNhdGlvblNlcnZpY2UuZGlzbWlzc0J5KG5vdGlmaWNhdGlvbiA9PiBub3RpZmljYXRpb24udGFncy5pbmNsdWRlcygnZXhwaXJlZCcpKTtcbiAgICovXG4gIHB1YmxpYyBkaXNtaXNzQnkocXVlcnk6IE5vdGlmaWNhdGlvblF1ZXJ5KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMucXVldWUudG9BcnJheSgpLmZpbHRlcihxdWVyeSkpIHtcbiAgICAgIHRoaXMuZGlzbWlzcyhpdGVtKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIGFsbCBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBEaXNtaXNzIGFsbCBub3RpZmljYXRpb25zXG4gICAqIG5vdGlmaWNhdGlvblNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgKi9cbiAgcHVibGljIGRpc21pc3NBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5xdWV1ZS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgbm90aWZpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvblJlZn0gbm90aWZpY2F0aW9uUmVmIC0gVGhlIHJlZmVyZW5jZSB0byB0aGUgbm90aWZpY2F0aW9uIHdob3NlIGFjdGlvbiB0byBleGVjdXRlLlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBFeGVjdXRlIGFjdGlvbiBmb3IgYSBub3RpZmljYXRpb25cbiAgICogbm90aWZpY2F0aW9uU2VydmljZS5leGVjdXRlQWN0aW9uKG5vdGlmaWNhdGlvblJlZik7XG4gICAqL1xuICBwdWJsaWMgZXhlY3V0ZUFjdGlvbihub3RpZmljYXRpb25SZWY6IE5vdGlmaWNhdGlvblJlZik6IHZvaWQge1xuICAgIGlmICghbm90aWZpY2F0aW9uUmVmLm9wdGlvbnMuYWN0aW9uKSByZXR1cm47XG4gICAgY29uc3QgYWN0aW9uRm4gPSB0aGlzLmNvbmZpZy5hY3Rpb25NYXA/Lltub3RpZmljYXRpb25SZWYub3B0aW9ucy5hY3Rpb25dO1xuICAgIGlmICghaXNGdW5jdGlvbihhY3Rpb25GbikpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBDYW5ub3QgZmluZCBhY3Rpb24gJHtub3RpZmljYXRpb25SZWYub3B0aW9ucy5hY3Rpb259IGZvciBub3RpZmljYXRpb24gcmVmZXJlbmNlOiAke25vdGlmaWNhdGlvblJlZn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IGFjdGlvbkZuKG5vdGlmaWNhdGlvblJlZikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlT3B0aW9ucyhvcHRpb25zPzogUGFydGlhbDxOb3RpZmljYXRpb25PcHRpb25zPik6IE5vdGlmaWNhdGlvbk9wdGlvbnMge1xuICAgIHJldHVybiBkZWVwbWVyZ2UodGhpcy5jb25maWcub3B0aW9ucywgb3B0aW9ucyA/PyB7fSwge1xuICAgICAgaWNvbjogb3B0aW9ucz8uaWNvbiA/PyB0aGlzLmNvbmZpZy50YWdUb0ljb25NYXA/LltvcHRpb25zPy50YWdzPy5bMF0gPz8gJyddID8/IHRoaXMuY29uZmlnLm9wdGlvbnMuaWNvbixcbiAgICAgIGxhbmd1YWdlOiBvcHRpb25zPy5sYW5ndWFnZSA/PyB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuZ2V0QWN0aXZlTGFuZ3VhZ2UoKSxcbiAgICB9KSBhcyBOb3RpZmljYXRpb25PcHRpb25zO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { Queue } from '@odx/angular/utils';
|
|
3
|
+
export const ODX_NOTIFICATION_QUEUE = new InjectionToken('@odx/angular/component/notifications::Queue', {
|
|
4
|
+
providedIn: 'root',
|
|
5
|
+
factory: () => new Queue(),
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9zcmMvbGliL25vdGlmaWNhdGlvbi50b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHM0MsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQXlCLDZDQUE2QyxFQUFFO0lBQzlILFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRTtDQUMzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVldWUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUmVmIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgT0RYX05PVElGSUNBVElPTl9RVUVVRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxRdWV1ZTxOb3RpZmljYXRpb25SZWY+PignQG9keC9hbmd1bGFyL2NvbXBvbmVudC9ub3RpZmljYXRpb25zOjpRdWV1ZScsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBuZXcgUXVldWUoKSxcbn0pO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './notification-center.service';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24tY2VudGVyLnNlcnZpY2UnO1xuIl19
|