@odx/angular 5.3.3 → 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.
Files changed (95) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/components/button/lib/models/button-size.d.ts +2 -1
  3. package/components/notification/README.md +3 -0
  4. package/components/notification/index.d.ts +7 -0
  5. package/components/notification/lib/components/index.d.ts +2 -0
  6. package/components/notification/lib/components/notification-center/notification-center.component.d.ts +19 -0
  7. package/components/notification/lib/components/notification-item/notification-item.component.d.ts +37 -0
  8. package/components/notification/lib/directives/index.d.ts +1 -0
  9. package/components/notification/lib/directives/notification-center.directive.d.ts +69 -0
  10. package/components/notification/lib/features/index.d.ts +5 -0
  11. package/components/notification/lib/features/with-browser-notifications.d.ts +17 -0
  12. package/components/notification/lib/features/with-load-notifications.d.ts +18 -0
  13. package/components/notification/lib/features/with-notification-transformer.d.ts +26 -0
  14. package/components/notification/lib/features/with-peristent-notifications.d.ts +63 -0
  15. package/components/notification/lib/features/with-save-notifications.d.ts +11 -0
  16. package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +2 -0
  17. package/components/notification/lib/helpers/index.d.ts +3 -0
  18. package/components/notification/lib/helpers/sort-notifications.d.ts +3 -0
  19. package/components/notification/lib/helpers/to-notification-collection.d.ts +3 -0
  20. package/components/notification/lib/models/index.d.ts +8 -0
  21. package/components/notification/lib/models/notification-action.d.ts +2 -0
  22. package/components/notification/lib/models/notification-collection.d.ts +6 -0
  23. package/components/notification/lib/models/notification-feature.d.ts +5 -0
  24. package/components/notification/lib/models/notification-options.d.ts +7 -0
  25. package/components/notification/lib/models/notification-query.d.ts +2 -0
  26. package/components/notification/lib/models/notification-sort-fn.d.ts +2 -0
  27. package/components/notification/lib/models/notification.d.ts +6 -0
  28. package/components/notification/lib/models/notification.ref.d.ts +9 -0
  29. package/components/notification/lib/notification.config.d.ts +11 -0
  30. package/components/notification/lib/notification.i18n.d.ts +3 -0
  31. package/components/notification/lib/notification.logger.d.ts +3 -0
  32. package/components/notification/lib/notification.service.d.ts +110 -0
  33. package/components/notification/lib/notification.tokens.d.ts +4 -0
  34. package/components/notification/lib/services/index.d.ts +1 -0
  35. package/components/notification/lib/services/notification-center.service.d.ts +69 -0
  36. package/components/notification/testing/README.md +3 -0
  37. package/components/notification/testing/index.d.ts +1 -0
  38. package/components/notification/testing/lib/test-helpers.d.ts +5 -0
  39. package/components/rich-list/lib/rich-list.component.d.ts +7 -1
  40. package/components/toast/lib/toast.service.d.ts +30 -2
  41. package/esm2022/components/button/lib/models/button-size.mjs +2 -1
  42. package/esm2022/components/notification/index.mjs +8 -0
  43. package/esm2022/components/notification/lib/components/index.mjs +3 -0
  44. package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +65 -0
  45. package/esm2022/components/notification/lib/components/notification-item/notification-item.component.mjs +65 -0
  46. package/esm2022/components/notification/lib/directives/index.mjs +2 -0
  47. package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +142 -0
  48. package/esm2022/components/notification/lib/features/index.mjs +6 -0
  49. package/esm2022/components/notification/lib/features/with-browser-notifications.mjs +75 -0
  50. package/esm2022/components/notification/lib/features/with-load-notifications.mjs +45 -0
  51. package/esm2022/components/notification/lib/features/with-notification-transformer.mjs +34 -0
  52. package/esm2022/components/notification/lib/features/with-peristent-notifications.mjs +94 -0
  53. package/esm2022/components/notification/lib/features/with-save-notifications.mjs +45 -0
  54. package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +7 -0
  55. package/esm2022/components/notification/lib/helpers/index.mjs +4 -0
  56. package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +10 -0
  57. package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +9 -0
  58. package/esm2022/components/notification/lib/models/index.mjs +9 -0
  59. package/esm2022/components/notification/lib/models/notification-action.mjs +2 -0
  60. package/esm2022/components/notification/lib/models/notification-collection.mjs +2 -0
  61. package/esm2022/components/notification/lib/models/notification-feature.mjs +4 -0
  62. package/esm2022/components/notification/lib/models/notification-options.mjs +2 -0
  63. package/esm2022/components/notification/lib/models/notification-query.mjs +2 -0
  64. package/esm2022/components/notification/lib/models/notification-sort-fn.mjs +2 -0
  65. package/esm2022/components/notification/lib/models/notification.mjs +2 -0
  66. package/esm2022/components/notification/lib/models/notification.ref.mjs +2 -0
  67. package/esm2022/components/notification/lib/notification.config.mjs +11 -0
  68. package/esm2022/components/notification/lib/notification.i18n.mjs +11 -0
  69. package/esm2022/components/notification/lib/notification.logger.mjs +3 -0
  70. package/esm2022/components/notification/lib/notification.service.mjs +168 -0
  71. package/esm2022/components/notification/lib/notification.tokens.mjs +7 -0
  72. package/esm2022/components/notification/lib/services/index.mjs +2 -0
  73. package/esm2022/components/notification/lib/services/notification-center.service.mjs +96 -0
  74. package/esm2022/components/notification/odx-angular-components-notification.mjs +5 -0
  75. package/esm2022/components/notification/testing/index.mjs +2 -0
  76. package/esm2022/components/notification/testing/lib/test-helpers.mjs +33 -0
  77. package/esm2022/components/notification/testing/odx-angular-components-notification-testing.mjs +5 -0
  78. package/esm2022/components/rich-list/lib/rich-list.component.mjs +18 -6
  79. package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +6 -6
  80. package/esm2022/components/toast/lib/toast.service.mjs +38 -8
  81. package/esm2022/utils/lib/helpers/array.mjs +24 -1
  82. package/fesm2022/odx-angular-components-button.mjs +1 -0
  83. package/fesm2022/odx-angular-components-button.mjs.map +1 -1
  84. package/fesm2022/odx-angular-components-notification-testing.mjs +39 -0
  85. package/fesm2022/odx-angular-components-notification-testing.mjs.map +1 -0
  86. package/fesm2022/odx-angular-components-notification.mjs +832 -0
  87. package/fesm2022/odx-angular-components-notification.mjs.map +1 -0
  88. package/fesm2022/odx-angular-components-rich-list.mjs +17 -5
  89. package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
  90. package/fesm2022/odx-angular-components-toast.mjs +42 -11
  91. package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
  92. package/fesm2022/odx-angular-utils.mjs +23 -0
  93. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  94. package/package.json +13 -1
  95. package/utils/lib/helpers/array.d.ts +23 -0
@@ -0,0 +1,34 @@
1
+ import { InjectionToken, inject } from '@angular/core';
2
+ import { makeNotificationFeature } from '../models';
3
+ /**
4
+ * An InjectionToken for the NotificationTransformFn. This token can be used to inject
5
+ * a custom notification transformation function into the Angular DI system.
6
+ * @type {InjectionToken<NotificationTransformFn>}
7
+ */
8
+ export const ODX_NOTIFICATION_TRANSFORMER = new InjectionToken('@odx/angular/components/notification::NotificationTransformer');
9
+ /**
10
+ * Attempts to inject a NotificationTransformFn from the Angular DI system.
11
+ * If no provider is found, it returns null.
12
+ * @function injectNotificationTransform
13
+ * @returns {NotificationTransformFn | null} The injected NotificationTransformFn, or null if not provided.
14
+ */
15
+ export function injectNotificationTransform() {
16
+ return inject(ODX_NOTIFICATION_TRANSFORMER, { optional: true });
17
+ }
18
+ /**
19
+ * Configures a notification transformation function to be used within the application.
20
+ * This function provides a mechanism to globally apply transformations to notifications
21
+ * before they are processed or displayed.
22
+ * @function withNotificationTransform
23
+ * @param {NotificationTransformFn} transformFn - The function to transform notifications.
24
+ * @returns {NotificationFeature} A NotificationFeature configured with the provided transformation function.
25
+ */
26
+ export function withNotificationTransform(transformFn) {
27
+ return makeNotificationFeature([
28
+ {
29
+ provide: ODX_NOTIFICATION_TRANSFORMER,
30
+ useValue: transformFn,
31
+ },
32
+ ]);
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ub3RpZmljYXRpb24tdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9mZWF0dXJlcy93aXRoLW5vdGlmaWNhdGlvbi10cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQXdDLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTFGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBMEIsK0RBQStELENBQUMsQ0FBQztBQUV6Sjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSwyQkFBMkI7SUFDekMsT0FBTyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxXQUFvQztJQUM1RSxPQUFPLHVCQUF1QixDQUFDO1FBQzdCO1lBQ0UsT0FBTyxFQUFFLDRCQUE0QjtZQUNyQyxRQUFRLEVBQUUsV0FBVztTQUN0QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25GZWF0dXJlLCBOb3RpZmljYXRpb25SZWYsIG1ha2VOb3RpZmljYXRpb25GZWF0dXJlIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uVHJhbnNmb3JtRm4gPSAocmVmOiBOb3RpZmljYXRpb25SZWYpID0+IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uUmVmPjtcblxuLyoqXG4gKiBBbiBJbmplY3Rpb25Ub2tlbiBmb3IgdGhlIE5vdGlmaWNhdGlvblRyYW5zZm9ybUZuLiBUaGlzIHRva2VuIGNhbiBiZSB1c2VkIHRvIGluamVjdFxuICogYSBjdXN0b20gbm90aWZpY2F0aW9uIHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uIGludG8gdGhlIEFuZ3VsYXIgREkgc3lzdGVtLlxuICogQHR5cGUge0luamVjdGlvblRva2VuPE5vdGlmaWNhdGlvblRyYW5zZm9ybUZuPn1cbiAqL1xuZXhwb3J0IGNvbnN0IE9EWF9OT1RJRklDQVRJT05fVFJBTlNGT1JNRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48Tm90aWZpY2F0aW9uVHJhbnNmb3JtRm4+KCdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb246Ok5vdGlmaWNhdGlvblRyYW5zZm9ybWVyJyk7XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gaW5qZWN0IGEgTm90aWZpY2F0aW9uVHJhbnNmb3JtRm4gZnJvbSB0aGUgQW5ndWxhciBESSBzeXN0ZW0uXG4gKiBJZiBubyBwcm92aWRlciBpcyBmb3VuZCwgaXQgcmV0dXJucyBudWxsLlxuICogQGZ1bmN0aW9uIGluamVjdE5vdGlmaWNhdGlvblRyYW5zZm9ybVxuICogQHJldHVybnMge05vdGlmaWNhdGlvblRyYW5zZm9ybUZuIHwgbnVsbH0gVGhlIGluamVjdGVkIE5vdGlmaWNhdGlvblRyYW5zZm9ybUZuLCBvciBudWxsIGlmIG5vdCBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5vdGlmaWNhdGlvblRyYW5zZm9ybSgpOiBOb3RpZmljYXRpb25UcmFuc2Zvcm1GbiB8IG51bGwge1xuICByZXR1cm4gaW5qZWN0KE9EWF9OT1RJRklDQVRJT05fVFJBTlNGT1JNRVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyBhIG5vdGlmaWNhdGlvbiB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvbiB0byBiZSB1c2VkIHdpdGhpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgbWVjaGFuaXNtIHRvIGdsb2JhbGx5IGFwcGx5IHRyYW5zZm9ybWF0aW9ucyB0byBub3RpZmljYXRpb25zXG4gKiBiZWZvcmUgdGhleSBhcmUgcHJvY2Vzc2VkIG9yIGRpc3BsYXllZC5cbiAqIEBmdW5jdGlvbiB3aXRoTm90aWZpY2F0aW9uVHJhbnNmb3JtXG4gKiBAcGFyYW0ge05vdGlmaWNhdGlvblRyYW5zZm9ybUZufSB0cmFuc2Zvcm1GbiAtIFRoZSBmdW5jdGlvbiB0byB0cmFuc2Zvcm0gbm90aWZpY2F0aW9ucy5cbiAqIEByZXR1cm5zIHtOb3RpZmljYXRpb25GZWF0dXJlfSBBIE5vdGlmaWNhdGlvbkZlYXR1cmUgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOb3RpZmljYXRpb25UcmFuc2Zvcm0odHJhbnNmb3JtRm46IE5vdGlmaWNhdGlvblRyYW5zZm9ybUZuKTogTm90aWZpY2F0aW9uRmVhdHVyZSB7XG4gIHJldHVybiBtYWtlTm90aWZpY2F0aW9uRmVhdHVyZShbXG4gICAge1xuICAgICAgcHJvdmlkZTogT0RYX05PVElGSUNBVElPTl9UUkFOU0ZPUk1FUixcbiAgICAgIHVzZVZhbHVlOiB0cmFuc2Zvcm1GbixcbiAgICB9LFxuICBdKTtcbn1cbiJdfQ==
@@ -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