@sinequa/atomic-angular 0.0.140 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +145 -0
  2. package/components/no-result/i18n/en.json +5 -0
  3. package/components/no-result/i18n/fr.json +5 -0
  4. package/components/sort-selector/i18n/en.json +3 -0
  5. package/components/sort-selector/i18n/fr.json +3 -0
  6. package/components/source/i18n/en.json +3 -0
  7. package/components/source/i18n/fr.json +3 -0
  8. package/features/alerts/i18n/en.json +33 -0
  9. package/features/alerts/i18n/fr.json +33 -0
  10. package/features/bookmarks/i18n/en.json +11 -0
  11. package/features/bookmarks/i18n/fr.json +11 -0
  12. package/features/collections/i18n/en.json +17 -0
  13. package/features/collections/i18n/fr.json +16 -0
  14. package/features/dialogs/i18n/en.json +15 -0
  15. package/features/dialogs/i18n/fr.json +15 -0
  16. package/features/did-you-mean/i18n/en.json +5 -0
  17. package/features/did-you-mean/i18n/fr.json +5 -0
  18. package/features/drawer/i18n/en.json +22 -0
  19. package/features/drawer/i18n/fr.json +22 -0
  20. package/features/export/i18n/en.json +7 -0
  21. package/features/export/i18n/fr.json +7 -0
  22. package/features/feedback/i18n/en.json +26 -0
  23. package/features/feedback/i18n/fr.json +26 -0
  24. package/features/filters/i18n/en.json +14 -0
  25. package/features/filters/i18n/fr.json +14 -0
  26. package/features/labels/i18n/en.json +8 -0
  27. package/features/labels/i18n/fr.json +8 -0
  28. package/features/recent-searches/i18n/en.json +6 -0
  29. package/features/recent-searches/i18n/fr.json +6 -0
  30. package/features/saved-searches/i18n/en.json +8 -0
  31. package/features/saved-searches/i18n/fr.json +8 -0
  32. package/features/sign-in/i18n/en.json +12 -0
  33. package/features/sign-in/i18n/fr.json +14 -0
  34. package/fesm2022/sinequa-atomic-angular.mjs +7948 -2383
  35. package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
  36. package/index.d.ts +6036 -3
  37. package/package.json +68 -10
  38. package/assets/tailwind.css +0 -248
  39. package/esm2022/lib/assistant/index.mjs +0 -2
  40. package/esm2022/lib/assistant/signalR.web.service.mjs +0 -81
  41. package/esm2022/lib/components/dropdown.mjs +0 -127
  42. package/esm2022/lib/components/index.mjs +0 -5
  43. package/esm2022/lib/components/menu/index.mjs +0 -3
  44. package/esm2022/lib/components/menu/menu-item.mjs +0 -22
  45. package/esm2022/lib/components/menu/menu.mjs +0 -99
  46. package/esm2022/lib/components/metadata/index.mjs +0 -2
  47. package/esm2022/lib/components/metadata/metadata.component.mjs +0 -65
  48. package/esm2022/lib/components/theme/index.mjs +0 -3
  49. package/esm2022/lib/components/theme/theme-selector.component.mjs +0 -67
  50. package/esm2022/lib/components/theme/theme-toggle.component.mjs +0 -67
  51. package/esm2022/lib/directives/index.mjs +0 -5
  52. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -47
  53. package/esm2022/lib/directives/select-article-on-click.directive.mjs +0 -39
  54. package/esm2022/lib/directives/show-bookmark.directive.mjs +0 -55
  55. package/esm2022/lib/directives/theme-provider.directive.mjs +0 -31
  56. package/esm2022/lib/guards/auth.guard.mjs +0 -27
  57. package/esm2022/lib/guards/index.mjs +0 -3
  58. package/esm2022/lib/guards/initialization.guard.mjs +0 -41
  59. package/esm2022/lib/interceptors/audit.interceptor.mjs +0 -23
  60. package/esm2022/lib/interceptors/auth.interceptor.mjs +0 -49
  61. package/esm2022/lib/interceptors/body.interceptor.mjs +0 -24
  62. package/esm2022/lib/interceptors/error.interceptor.mjs +0 -35
  63. package/esm2022/lib/interceptors/index.mjs +0 -7
  64. package/esm2022/lib/interceptors/toast.interceptor.mjs +0 -27
  65. package/esm2022/lib/models/aggregation.mjs +0 -2
  66. package/esm2022/lib/models/article-metadata.mjs +0 -2
  67. package/esm2022/lib/models/autocomplete.mjs +0 -2
  68. package/esm2022/lib/models/custom-json.mjs +0 -2
  69. package/esm2022/lib/models/filter-dropdown.mjs +0 -2
  70. package/esm2022/lib/models/index.mjs +0 -7
  71. package/esm2022/lib/models/user-settings.mjs +0 -2
  72. package/esm2022/lib/pipes/highlight-word.pipe.mjs +0 -33
  73. package/esm2022/lib/pipes/index.mjs +0 -3
  74. package/esm2022/lib/pipes/source-icon.pipe.mjs +0 -43
  75. package/esm2022/lib/providers/eager-provider.mjs +0 -24
  76. package/esm2022/lib/providers/index.mjs +0 -2
  77. package/esm2022/lib/public-api.mjs +0 -19
  78. package/esm2022/lib/resolvers/index.mjs +0 -2
  79. package/esm2022/lib/resolvers/query-name-resolver.mjs +0 -14
  80. package/esm2022/lib/resources/index.mjs +0 -2
  81. package/esm2022/lib/resources/themes.mjs +0 -53
  82. package/esm2022/lib/services/application.service.mjs +0 -245
  83. package/esm2022/lib/services/autocomplete.service.mjs +0 -85
  84. package/esm2022/lib/services/drawer/backdrop.service.mjs +0 -23
  85. package/esm2022/lib/services/drawer/drawer-stack.service.mjs +0 -152
  86. package/esm2022/lib/services/drawer/drawer.service.mjs +0 -38
  87. package/esm2022/lib/services/index.mjs +0 -12
  88. package/esm2022/lib/services/label.service.mjs +0 -161
  89. package/esm2022/lib/services/navigation.service.mjs +0 -59
  90. package/esm2022/lib/services/saved-searches.service.mjs +0 -75
  91. package/esm2022/lib/services/search.service.mjs +0 -89
  92. package/esm2022/lib/services/selection-history.service.mjs +0 -92
  93. package/esm2022/lib/services/selection.service.mjs +0 -87
  94. package/esm2022/lib/stores/aggregations.store.mjs +0 -62
  95. package/esm2022/lib/stores/app.store.mjs +0 -265
  96. package/esm2022/lib/stores/application.store.mjs +0 -93
  97. package/esm2022/lib/stores/index.mjs +0 -9
  98. package/esm2022/lib/stores/principal.store.mjs +0 -47
  99. package/esm2022/lib/stores/query-params.store.mjs +0 -208
  100. package/esm2022/lib/stores/selection.store.mjs +0 -46
  101. package/esm2022/lib/stores/theme.store.mjs +0 -116
  102. package/esm2022/lib/stores/user-settings.store.mjs +0 -272
  103. package/esm2022/lib/tokens/highlights.mjs +0 -32
  104. package/esm2022/lib/tokens/index.mjs +0 -2
  105. package/esm2022/lib/utils/debounced-signal.mjs +0 -38
  106. package/esm2022/lib/utils/index.mjs +0 -8
  107. package/esm2022/lib/utils/inline-worker.mjs +0 -40
  108. package/esm2022/lib/utils/query.mjs +0 -58
  109. package/esm2022/lib/utils/routes.mjs +0 -28
  110. package/esm2022/lib/utils/tailwind-utils.mjs +0 -6
  111. package/esm2022/lib/utils/theme-body-hook.mjs +0 -18
  112. package/esm2022/lib/utils/theme-registry.mjs +0 -6
  113. package/esm2022/lib/web-services/aggregations.service.mjs +0 -104
  114. package/esm2022/lib/web-services/app.service.mjs +0 -48
  115. package/esm2022/lib/web-services/audit.service.mjs +0 -122
  116. package/esm2022/lib/web-services/index.mjs +0 -10
  117. package/esm2022/lib/web-services/json-method-plugin.service.mjs +0 -54
  118. package/esm2022/lib/web-services/preview.service.mjs +0 -327
  119. package/esm2022/lib/web-services/principal.service.mjs +0 -46
  120. package/esm2022/lib/web-services/query.service.mjs +0 -123
  121. package/esm2022/lib/web-services/text-chunck.service.mjs +0 -46
  122. package/esm2022/public-api.mjs +0 -5
  123. package/esm2022/sinequa-atomic-angular.mjs +0 -5
  124. package/lib/assistant/index.d.ts +0 -1
  125. package/lib/assistant/signalR.web.service.d.ts +0 -46
  126. package/lib/components/dropdown.d.ts +0 -50
  127. package/lib/components/index.d.ts +0 -4
  128. package/lib/components/menu/index.d.ts +0 -2
  129. package/lib/components/menu/menu-item.d.ts +0 -8
  130. package/lib/components/menu/menu.d.ts +0 -24
  131. package/lib/components/metadata/index.d.ts +0 -1
  132. package/lib/components/metadata/metadata.component.d.ts +0 -24
  133. package/lib/components/theme/index.d.ts +0 -2
  134. package/lib/components/theme/theme-selector.component.d.ts +0 -70
  135. package/lib/components/theme/theme-toggle.component.d.ts +0 -10
  136. package/lib/directives/index.d.ts +0 -4
  137. package/lib/directives/infinite-scroll.directive.d.ts +0 -30
  138. package/lib/directives/select-article-on-click.directive.d.ts +0 -14
  139. package/lib/directives/show-bookmark.directive.d.ts +0 -52
  140. package/lib/directives/theme-provider.directive.d.ts +0 -20
  141. package/lib/guards/auth.guard.d.ts +0 -7
  142. package/lib/guards/index.d.ts +0 -2
  143. package/lib/guards/initialization.guard.d.ts +0 -20
  144. package/lib/interceptors/audit.interceptor.d.ts +0 -13
  145. package/lib/interceptors/auth.interceptor.d.ts +0 -14
  146. package/lib/interceptors/body.interceptor.d.ts +0 -11
  147. package/lib/interceptors/error.interceptor.d.ts +0 -9
  148. package/lib/interceptors/index.d.ts +0 -5
  149. package/lib/interceptors/toast.interceptor.d.ts +0 -13
  150. package/lib/models/aggregation.d.ts +0 -12
  151. package/lib/models/article-metadata.d.ts +0 -5
  152. package/lib/models/autocomplete.d.ts +0 -5
  153. package/lib/models/custom-json.d.ts +0 -58
  154. package/lib/models/filter-dropdown.d.ts +0 -10
  155. package/lib/models/index.d.ts +0 -6
  156. package/lib/models/user-settings.d.ts +0 -32
  157. package/lib/pipes/highlight-word.pipe.d.ts +0 -22
  158. package/lib/pipes/index.d.ts +0 -2
  159. package/lib/pipes/source-icon.pipe.d.ts +0 -54
  160. package/lib/providers/eager-provider.d.ts +0 -11
  161. package/lib/providers/index.d.ts +0 -1
  162. package/lib/public-api.d.ts +0 -15
  163. package/lib/resolvers/index.d.ts +0 -1
  164. package/lib/resolvers/query-name-resolver.d.ts +0 -9
  165. package/lib/resources/index.d.ts +0 -1
  166. package/lib/resources/themes.d.ts +0 -51
  167. package/lib/services/application.service.d.ts +0 -178
  168. package/lib/services/autocomplete.service.d.ts +0 -91
  169. package/lib/services/drawer/backdrop.service.d.ts +0 -9
  170. package/lib/services/drawer/drawer-stack.service.d.ts +0 -70
  171. package/lib/services/drawer/drawer.service.d.ts +0 -15
  172. package/lib/services/index.d.ts +0 -11
  173. package/lib/services/label.service.d.ts +0 -117
  174. package/lib/services/navigation.service.d.ts +0 -33
  175. package/lib/services/saved-searches.service.d.ts +0 -145
  176. package/lib/services/search.service.d.ts +0 -155
  177. package/lib/services/selection-history.service.d.ts +0 -50
  178. package/lib/services/selection.service.d.ts +0 -127
  179. package/lib/stores/aggregations.store.d.ts +0 -50
  180. package/lib/stores/app.store.d.ts +0 -208
  181. package/lib/stores/application.store.d.ts +0 -106
  182. package/lib/stores/index.d.ts +0 -8
  183. package/lib/stores/principal.store.d.ts +0 -53
  184. package/lib/stores/query-params.store.d.ts +0 -187
  185. package/lib/stores/selection.store.d.ts +0 -62
  186. package/lib/stores/theme.store.d.ts +0 -55
  187. package/lib/stores/user-settings.store.d.ts +0 -161
  188. package/lib/tokens/highlights.d.ts +0 -8
  189. package/lib/tokens/index.d.ts +0 -1
  190. package/lib/utils/debounced-signal.d.ts +0 -25
  191. package/lib/utils/index.d.ts +0 -7
  192. package/lib/utils/inline-worker.d.ts +0 -11
  193. package/lib/utils/query.d.ts +0 -26
  194. package/lib/utils/routes.d.ts +0 -16
  195. package/lib/utils/tailwind-utils.d.ts +0 -2
  196. package/lib/utils/theme-body-hook.d.ts +0 -6
  197. package/lib/utils/theme-registry.d.ts +0 -3
  198. package/lib/web-services/aggregations.service.d.ts +0 -60
  199. package/lib/web-services/app.service.d.ts +0 -30
  200. package/lib/web-services/audit.service.d.ts +0 -75
  201. package/lib/web-services/index.d.ts +0 -9
  202. package/lib/web-services/json-method-plugin.service.d.ts +0 -41
  203. package/lib/web-services/preview.service.d.ts +0 -295
  204. package/lib/web-services/principal.service.d.ts +0 -28
  205. package/lib/web-services/query.service.d.ts +0 -29
  206. package/lib/web-services/text-chunck.service.d.ts +0 -22
  207. package/public-api.d.ts +0 -1
@@ -1,87 +0,0 @@
1
- import { Location } from '@angular/common';
2
- import { Injectable, inject } from '@angular/core';
3
- import { ActivatedRoute, Router } from '@angular/router';
4
- import { getState } from '@ngrx/signals';
5
- import { SelectionStore } from '../stores/selection.store';
6
- import { QueryParamsStore } from '../stores/query-params.store';
7
- import * as i0 from "@angular/core";
8
- export class SelectionService {
9
- constructor() {
10
- this.route = inject(ActivatedRoute);
11
- this.router = inject(Router);
12
- this.location = inject(Location);
13
- this.selectionStore = inject(SelectionStore);
14
- this.queryParamsStore = inject(QueryParamsStore);
15
- }
16
- /**
17
- * Sets the current article in the selection store and optionally updates the query text.
18
- * If the provided article is undefined, it clears the current article.
19
- *
20
- * @param article - The article to set as the current article. If undefined, the current article is cleared.
21
- * @param withQueryText - A boolean indicating whether to update the query text in the selection store. Defaults to true.
22
- *
23
- * @returns void
24
- */
25
- setCurrentArticle(article, withQueryText = true) {
26
- if (!article) {
27
- this.clearCurrentArticle();
28
- return;
29
- }
30
- // update selection store with article and query text
31
- const { text } = getState(this.queryParamsStore);
32
- this.selectionStore.update({ article, id: article.id, queryText: withQueryText ? text : undefined });
33
- if (article?.id)
34
- this.updateArticleIdInQueryParams(article.id);
35
- }
36
- /**
37
- * Clears the current article selection from the selection store and
38
- * removes the article ID from the query parameters.
39
- *
40
- * @remarks
41
- * This method performs two main actions:
42
- * 1. Clears the current selection from the `selectionStore`.
43
- * 2. Removes the article ID from the query parameters to ensure
44
- * the URL does not reference the cleared article.
45
- *
46
- * @public
47
- */
48
- clearCurrentArticle() {
49
- this.selectionStore.clear();
50
- this.clearArticleIdFromQueryParams();
51
- }
52
- /**
53
- * Updates the article ID in the query parameters of the current route.
54
- * If the provided ID is undefined, it will remove the ID from the query parameters.
55
- *
56
- * @param id - The article ID to be set in the query parameters. If undefined, the ID will be removed.
57
- */
58
- updateArticleIdInQueryParams(id) {
59
- const url = this.router
60
- .createUrlTree([], { relativeTo: this.route, queryParams: { id }, queryParamsHandling: 'merge' })
61
- .toString();
62
- this.location.replaceState(url);
63
- }
64
- /**
65
- * Clears the 'id' parameter from the current route's query parameters.
66
- *
67
- * This method creates a copy of the current query parameters, removes the 'id' parameter,
68
- * and then updates the browser's URL to reflect the change without reloading the page.
69
- *
70
- * @private
71
- */
72
- clearArticleIdFromQueryParams() {
73
- const queryParams = Object.assign({}, this.route.snapshot.queryParams);
74
- delete queryParams['id'];
75
- const url = this.router.createUrlTree([], { relativeTo: this.route, queryParams }).toString();
76
- this.location.replaceState(url);
77
- }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
79
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SelectionService, providedIn: 'root' }); }
80
- }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SelectionService, decorators: [{
82
- type: Injectable,
83
- args: [{
84
- providedIn: 'root'
85
- }]
86
- }] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQU1oRSxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSW1CLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBeUU3QztJQXZFQzs7Ozs7Ozs7T0FRRztJQUNJLGlCQUFpQixDQUFDLE9BQWlCLEVBQUUsZ0JBQXlCLElBQUk7UUFDdkUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsT0FBTztRQUNULENBQUM7UUFFRCxxREFBcUQ7UUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFcEcsSUFBSSxPQUFPLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssNEJBQTRCLENBQUMsRUFBVztRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTTthQUNwQixhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLENBQUM7YUFDaEcsUUFBUSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLDZCQUE2QjtRQUNuQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2RSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTlGLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBN0VVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBnZXRTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuXG5pbXBvcnQgeyBBcnRpY2xlIH0gZnJvbSAnQHNpbmVxdWEvYXRvbWljJztcblxuaW1wb3J0IHsgU2VsZWN0aW9uU3RvcmUgfSBmcm9tICcuLi9zdG9yZXMvc2VsZWN0aW9uLnN0b3JlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zU3RvcmUgfSBmcm9tICcuLi9zdG9yZXMvcXVlcnktcGFyYW1zLnN0b3JlJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvblN0b3JlID0gaW5qZWN0KFNlbGVjdGlvblN0b3JlKTtcbiAgcXVlcnlQYXJhbXNTdG9yZSA9IGluamVjdChRdWVyeVBhcmFtc1N0b3JlKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY3VycmVudCBhcnRpY2xlIGluIHRoZSBzZWxlY3Rpb24gc3RvcmUgYW5kIG9wdGlvbmFsbHkgdXBkYXRlcyB0aGUgcXVlcnkgdGV4dC5cbiAgICogSWYgdGhlIHByb3ZpZGVkIGFydGljbGUgaXMgdW5kZWZpbmVkLCBpdCBjbGVhcnMgdGhlIGN1cnJlbnQgYXJ0aWNsZS5cbiAgICpcbiAgICogQHBhcmFtIGFydGljbGUgLSBUaGUgYXJ0aWNsZSB0byBzZXQgYXMgdGhlIGN1cnJlbnQgYXJ0aWNsZS4gSWYgdW5kZWZpbmVkLCB0aGUgY3VycmVudCBhcnRpY2xlIGlzIGNsZWFyZWQuXG4gICAqIEBwYXJhbSB3aXRoUXVlcnlUZXh0IC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0byB1cGRhdGUgdGhlIHF1ZXJ5IHRleHQgaW4gdGhlIHNlbGVjdGlvbiBzdG9yZS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgcHVibGljIHNldEN1cnJlbnRBcnRpY2xlKGFydGljbGU/OiBBcnRpY2xlLCB3aXRoUXVlcnlUZXh0OiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICghYXJ0aWNsZSkge1xuICAgICAgdGhpcy5jbGVhckN1cnJlbnRBcnRpY2xlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHNlbGVjdGlvbiBzdG9yZSB3aXRoIGFydGljbGUgYW5kIHF1ZXJ5IHRleHRcbiAgICBjb25zdCB7IHRleHQgfSA9IGdldFN0YXRlKHRoaXMucXVlcnlQYXJhbXNTdG9yZSk7XG4gICAgdGhpcy5zZWxlY3Rpb25TdG9yZS51cGRhdGUoe2FydGljbGUsIGlkOiBhcnRpY2xlLmlkLCBxdWVyeVRleHQ6IHdpdGhRdWVyeVRleHQgPyB0ZXh0IDogdW5kZWZpbmVkIH0pO1xuXG4gICAgaWYgKGFydGljbGU/LmlkKVxuICAgICAgdGhpcy51cGRhdGVBcnRpY2xlSWRJblF1ZXJ5UGFyYW1zKGFydGljbGUuaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgY3VycmVudCBhcnRpY2xlIHNlbGVjdGlvbiBmcm9tIHRoZSBzZWxlY3Rpb24gc3RvcmUgYW5kXG4gICAqIHJlbW92ZXMgdGhlIGFydGljbGUgSUQgZnJvbSB0aGUgcXVlcnkgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBtZXRob2QgcGVyZm9ybXMgdHdvIG1haW4gYWN0aW9uczpcbiAgICogMS4gQ2xlYXJzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBmcm9tIHRoZSBgc2VsZWN0aW9uU3RvcmVgLlxuICAgKiAyLiBSZW1vdmVzIHRoZSBhcnRpY2xlIElEIGZyb20gdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gZW5zdXJlXG4gICAqICAgIHRoZSBVUkwgZG9lcyBub3QgcmVmZXJlbmNlIHRoZSBjbGVhcmVkIGFydGljbGUuXG4gICAqXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIHB1YmxpYyBjbGVhckN1cnJlbnRBcnRpY2xlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RvcmUuY2xlYXIoKTtcblxuICAgIHRoaXMuY2xlYXJBcnRpY2xlSWRGcm9tUXVlcnlQYXJhbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBhcnRpY2xlIElEIGluIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIG9mIHRoZSBjdXJyZW50IHJvdXRlLlxuICAgKiBJZiB0aGUgcHJvdmlkZWQgSUQgaXMgdW5kZWZpbmVkLCBpdCB3aWxsIHJlbW92ZSB0aGUgSUQgZnJvbSB0aGUgcXVlcnkgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHBhcmFtIGlkIC0gVGhlIGFydGljbGUgSUQgdG8gYmUgc2V0IGluIHRoZSBxdWVyeSBwYXJhbWV0ZXJzLiBJZiB1bmRlZmluZWQsIHRoZSBJRCB3aWxsIGJlIHJlbW92ZWQuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUFydGljbGVJZEluUXVlcnlQYXJhbXMoaWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlclxuICAgICAgLmNyZWF0ZVVybFRyZWUoW10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgcXVlcnlQYXJhbXM6IHsgaWQgfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyB9KVxuICAgICAgLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlICdpZCcgcGFyYW1ldGVyIGZyb20gdGhlIGN1cnJlbnQgcm91dGUncyBxdWVyeSBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGEgY29weSBvZiB0aGUgY3VycmVudCBxdWVyeSBwYXJhbWV0ZXJzLCByZW1vdmVzIHRoZSAnaWQnIHBhcmFtZXRlcixcbiAgICogYW5kIHRoZW4gdXBkYXRlcyB0aGUgYnJvd3NlcidzIFVSTCB0byByZWZsZWN0IHRoZSBjaGFuZ2Ugd2l0aG91dCByZWxvYWRpbmcgdGhlIHBhZ2UuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNsZWFyQXJ0aWNsZUlkRnJvbVF1ZXJ5UGFyYW1zKCk6IHZvaWQge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyk7XG5cbiAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ2lkJ107XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHF1ZXJ5UGFyYW1zIH0pLnRvU3RyaW5nKCk7XG5cbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmwpO1xuICB9XG59XG4iXX0=
@@ -1,62 +0,0 @@
1
- import { withDevtools } from "@angular-architects/ngrx-toolkit";
2
- import { getState, patchState, signalStore, signalStoreFeature, withMethods, withState } from "@ngrx/signals";
3
- const intialState = {
4
- aggregations: []
5
- };
6
- export const AggregationsStore = signalStore(
7
- // providing store at the root level
8
- { providedIn: 'root' }, withState(intialState), withDevtools('Aggregations'), WithAggregationsFeatures());
9
- export function WithAggregationsFeatures() {
10
- return signalStoreFeature(withState(intialState), withMethods((store) => ({
11
- /**
12
- * Updates the state with the provided aggregations.
13
- *
14
- * @param {Aggregation[]} aggregations - The new aggregations to update the state with.
15
- */
16
- update(aggregations) {
17
- patchState(store, (state) => {
18
- return { ...state, aggregations };
19
- });
20
- },
21
- /**
22
- * Updates an existing aggregation in the store.
23
- *
24
- * @param aggregation - The aggregation object to update.
25
- * @returns void
26
- */
27
- updateAggregation(aggregation) {
28
- patchState(store, (state) => {
29
- const index = state.aggregations.findIndex((a) => a.name === aggregation.name);
30
- if (index !== -1) {
31
- state.aggregations[index] = aggregation;
32
- }
33
- return { ...state };
34
- });
35
- },
36
- /**
37
- * Clears the aggregations in the store by setting the `aggregations` property to an empty array.
38
- *
39
- * @remarks
40
- * This method uses the `patchState` function to update the state of the store.
41
- */
42
- clear() {
43
- patchState(store, (state) => {
44
- return { ...state, aggregations: [] };
45
- });
46
- },
47
- /**
48
- * Retrieves an aggregation by name or column.
49
- *
50
- * @param name - The name or column of the aggregation to retrieve.
51
- * @param kind - The kind of aggregation to retrieve. Defaults to "name".
52
- * @returns The matching aggregation, or undefined if not found.
53
- */
54
- getAggregation(name, kind = "name") {
55
- if (kind === "column") {
56
- return getState(store).aggregations.find((aggregation) => aggregation.column === name);
57
- }
58
- return getState(store).aggregations.find((aggregation) => aggregation.name === name);
59
- }
60
- })));
61
- }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb25zLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi9zdG9yZXMvYWdncmVnYXRpb25zLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVE5RyxNQUFNLFdBQVcsR0FBc0I7SUFDckMsWUFBWSxFQUFFLEVBQUU7Q0FDakIsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFdBQVc7QUFDMUMsb0NBQW9DO0FBQ3BDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUN0QixTQUFTLENBQUMsV0FBVyxDQUFDLEVBQ3RCLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFDNUIsd0JBQXdCLEVBQUUsQ0FDM0IsQ0FBQztBQUVGLE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUN0QixXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEI7Ozs7V0FJRztRQUNILE1BQU0sQ0FBQyxZQUEyQjtZQUNoQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQTtZQUNuQyxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRDs7Ozs7V0FLRztRQUNILGlCQUFpQixDQUFDLFdBQXdCO1lBQ3hDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNqQixLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLFdBQVcsQ0FBQztnQkFDMUMsQ0FBQztnQkFDRCxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQTtZQUNyQixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRDs7Ozs7V0FLRztRQUNILEtBQUs7WUFDSCxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUE7WUFDdkMsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0Q7Ozs7OztXQU1HO1FBQ0gsY0FBYyxDQUFDLElBQVksRUFBRSxPQUEwQixNQUFNO1lBQzNELElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3pGLENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7S0FDRixDQUFDLENBQUMsQ0FDSixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdpdGhEZXZ0b29scyB9IGZyb20gXCJAYW5ndWxhci1hcmNoaXRlY3RzL25ncngtdG9vbGtpdFwiO1xyXG5pbXBvcnQgeyBnZXRTdGF0ZSwgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHNpZ25hbFN0b3JlRmVhdHVyZSwgd2l0aE1ldGhvZHMsIHdpdGhTdGF0ZSB9IGZyb20gXCJAbmdyeC9zaWduYWxzXCI7XHJcblxyXG5pbXBvcnQgeyBBZ2dyZWdhdGlvbiB9IGZyb20gXCJAc2luZXF1YS9hdG9taWNcIjtcclxuXHJcbnR5cGUgQWdncmVnYXRpb25zU3RhdGUgPSB7XHJcbiAgYWdncmVnYXRpb25zOiBBZ2dyZWdhdGlvbltdXHJcbn1cclxuXHJcbmNvbnN0IGludGlhbFN0YXRlOiBBZ2dyZWdhdGlvbnNTdGF0ZSA9IHtcclxuICBhZ2dyZWdhdGlvbnM6IFtdXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBZ2dyZWdhdGlvbnNTdG9yZSA9IHNpZ25hbFN0b3JlKFxyXG4gIC8vIHByb3ZpZGluZyBzdG9yZSBhdCB0aGUgcm9vdCBsZXZlbFxyXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXHJcbiAgd2l0aFN0YXRlKGludGlhbFN0YXRlKSxcclxuICB3aXRoRGV2dG9vbHMoJ0FnZ3JlZ2F0aW9ucycpLFxyXG4gIFdpdGhBZ2dyZWdhdGlvbnNGZWF0dXJlcygpXHJcbik7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gV2l0aEFnZ3JlZ2F0aW9uc0ZlYXR1cmVzKCkge1xyXG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXHJcbiAgICB3aXRoU3RhdGUoaW50aWFsU3RhdGUpLFxyXG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKSA9PiAoe1xyXG4gICAgICAvKipcclxuICAgICAgICogVXBkYXRlcyB0aGUgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgYWdncmVnYXRpb25zLlxyXG4gICAgICAgKlxyXG4gICAgICAgKiBAcGFyYW0ge0FnZ3JlZ2F0aW9uW119IGFnZ3JlZ2F0aW9ucyAtIFRoZSBuZXcgYWdncmVnYXRpb25zIHRvIHVwZGF0ZSB0aGUgc3RhdGUgd2l0aC5cclxuICAgICAgICovXHJcbiAgICAgIHVwZGF0ZShhZ2dyZWdhdGlvbnM6IEFnZ3JlZ2F0aW9uW10pIHtcclxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAoc3RhdGUpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhZ2dyZWdhdGlvbnMgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0sXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGFnZ3JlZ2F0aW9uIGluIHRoZSBzdG9yZS5cclxuICAgICAgICpcclxuICAgICAgICogQHBhcmFtIGFnZ3JlZ2F0aW9uIC0gVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdCB0byB1cGRhdGUuXHJcbiAgICAgICAqIEByZXR1cm5zIHZvaWRcclxuICAgICAgICovXHJcbiAgICAgIHVwZGF0ZUFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvbikge1xyXG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5hZ2dyZWdhdGlvbnMuZmluZEluZGV4KChhKSA9PiBhLm5hbWUgPT09IGFnZ3JlZ2F0aW9uLm5hbWUpO1xyXG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICBzdGF0ZS5hZ2dyZWdhdGlvbnNbaW5kZXhdID0gYWdncmVnYXRpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSxcclxuICAgICAgLyoqXHJcbiAgICAgICAqIENsZWFycyB0aGUgYWdncmVnYXRpb25zIGluIHRoZSBzdG9yZSBieSBzZXR0aW5nIHRoZSBgYWdncmVnYXRpb25zYCBwcm9wZXJ0eSB0byBhbiBlbXB0eSBhcnJheS5cclxuICAgICAgICpcclxuICAgICAgICogQHJlbWFya3NcclxuICAgICAgICogVGhpcyBtZXRob2QgdXNlcyB0aGUgYHBhdGNoU3RhdGVgIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHN0b3JlLlxyXG4gICAgICAgKi9cclxuICAgICAgY2xlYXIoKSB7XHJcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYWdncmVnYXRpb25zOiBbXSB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSxcclxuICAgICAgLyoqXHJcbiAgICAgICAqIFJldHJpZXZlcyBhbiBhZ2dyZWdhdGlvbiBieSBuYW1lIG9yIGNvbHVtbi5cclxuICAgICAgICogXHJcbiAgICAgICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb3IgY29sdW1uIG9mIHRoZSBhZ2dyZWdhdGlvbiB0byByZXRyaWV2ZS5cclxuICAgICAgICogQHBhcmFtIGtpbmQgLSBUaGUga2luZCBvZiBhZ2dyZWdhdGlvbiB0byByZXRyaWV2ZS4gRGVmYXVsdHMgdG8gXCJuYW1lXCIuXHJcbiAgICAgICAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBhZ2dyZWdhdGlvbiwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cclxuICAgICAgICovXHJcbiAgICAgIGdldEFnZ3JlZ2F0aW9uKG5hbWU6IHN0cmluZywga2luZDogXCJjb2x1bW5cIiB8IFwibmFtZVwiID0gXCJuYW1lXCIpIHtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJjb2x1bW5cIikge1xyXG4gICAgICAgICAgcmV0dXJuIGdldFN0YXRlKHN0b3JlKS5hZ2dyZWdhdGlvbnMuZmluZCgoYWdncmVnYXRpb24pID0+IGFnZ3JlZ2F0aW9uLmNvbHVtbiA9PT0gbmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBnZXRTdGF0ZShzdG9yZSkuYWdncmVnYXRpb25zLmZpbmQoKGFnZ3JlZ2F0aW9uKSA9PiBhZ2dyZWdhdGlvbi5uYW1lID09PSBuYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSkpXHJcbiAgKVxyXG59Il19
@@ -1,265 +0,0 @@
1
- import { withDevtools } from '@angular-architects/ngrx-toolkit';
2
- import { computed, inject, InjectionToken } from '@angular/core';
3
- import { getState, patchState, signalStore, signalStoreFeature, withComputed, withMethods, withState } from '@ngrx/signals';
4
- import { firstValueFrom, map } from 'rxjs';
5
- import { AppService } from '../web-services/app.service';
6
- import { AggregationsStore } from './aggregations.store';
7
- /**
8
- * Injection token for a list of facet names to display in the application.
9
- *
10
- * This token provides a default list of facet names including:
11
- * - Geo
12
- * - Company
13
- * - Person
14
- * - DocFormat
15
- * - Modified
16
- * - Size
17
- * - DocumentLanguages
18
- * - Concepts
19
- *
20
- * @constant
21
- * @type {InjectionToken<string[]>}
22
- */
23
- export const AGGREGATIONS_NAMES_PRESET_DEFAULT = [
24
- "Places", "Sources", "Company", "People", "Formats", "Modified", "Sizes", "Languages", "Concepts",
25
- "DocFormat", "Geo", "Person", "Treepath", "DocumentLanguages", "Size"
26
- ];
27
- export const AGGREGATIONS_NAMES = new InjectionToken('Facets list to display', { factory: () => AGGREGATIONS_NAMES_PRESET_DEFAULT });
28
- const initialData = {
29
- webServices: {},
30
- data: {},
31
- queries: {},
32
- customJSONs: []
33
- };
34
- export const AppStore = signalStore({ providedIn: 'root' }, withDevtools('App'), withState(initialData), withAppFeatures());
35
- /**
36
- * Enhances the application store with various features and methods.
37
- *
38
- * This function integrates state management, computed properties, and methods
39
- * to interact with the CCApp state, including initialization, updates,
40
- * and retrieval of specific data such as web services, queries, and customization JSONs.
41
- *
42
- * Features:
43
- * - State management with initial data.
44
- * - Computed properties for customization JSON, sources, and filters.
45
- * - Methods for initializing and updating the application state.
46
- * - Methods for retrieving web services, labels, queries, and customization JSONs.
47
- * - Methods for retrieving aggregation icons and customization items.
48
- *
49
- * @returns The enhanced application store with additional features and methods.
50
- */
51
- export function withAppFeatures() {
52
- return signalStoreFeature(withState(initialData), withComputed(({ customJSONs, data: custom }) => ({
53
- customizationJson: computed(() => custom()),
54
- sources: computed(() => {
55
- if (customJSONs() === undefined || typeof customJSONs() !== 'object') {
56
- return custom().sources || {};
57
- }
58
- const { data } = customJSONs()?.find(data => data.name === "sources") || {};
59
- return data || custom().sources || {};
60
- }),
61
- filters: computed(() => {
62
- if (customJSONs() === undefined || Array.isArray(customJSONs()) == false) {
63
- return custom().filters ?? [];
64
- }
65
- const { data } = customJSONs()?.find(data => data.name === "filters") || {};
66
- return data ?? custom().filters ?? [];
67
- })
68
- })), withMethods((store, appService = inject(AppService)) => ({
69
- /**
70
- * Initializes the application state by fetching the app data from the appService
71
- * and updating the store with the retrieved data.
72
- *
73
- * @returns A promise that resolves when the app data has been fetched and the store has been updated.
74
- */
75
- initialize() {
76
- return firstValueFrom(appService.getApp().pipe(map(app => patchState(store, app))));
77
- },
78
- /**
79
- * Initializes the application state with the provided app name.
80
- *
81
- * @param appName - The name of the application to fetch the configuration for.
82
- *
83
- * @returns A promise that resolves when the app data has been fetched and the store has been updated.
84
- */
85
- initializeWithAppName(appName) {
86
- return firstValueFrom(appService.getApp(appName).pipe(map(app => patchState(store, app))));
87
- },
88
- /**
89
- * Updates the application state with the provided CCApp object.
90
- *
91
- * @param {CCApp} app - The application object containing the new state values.
92
- */
93
- update(app) {
94
- patchState(store, (state) => {
95
- return { ...state, ...app };
96
- });
97
- },
98
- /**
99
- * Returns the web service by type name
100
- *
101
- * @param type Web service type name
102
- * @returns A {@link CCWebService} object or undefined if not found
103
- */
104
- getWebServiceByType(type) {
105
- let webService = undefined;
106
- Object.keys(store.webServices())
107
- .forEach((key) => {
108
- const w = store.webServices();
109
- const ws = w[key];
110
- // Check if the web service type matches the specified type in lowercase
111
- if (ws.webServiceType.toLowerCase() === type.toLocaleLowerCase())
112
- webService = ws;
113
- });
114
- return webService;
115
- },
116
- /**
117
- * Retrieves the labels from the web service of type 'Labels'.
118
- *
119
- * @returns An object containing the private and public labels.
120
- * If the labels are not found, returns an object with empty strings for both fields.
121
- */
122
- getLabels() {
123
- const labels = this.getWebServiceByType('labels');
124
- if (!labels)
125
- return { private: '', public: '' };
126
- const { publicLabelsField, privateLabelsField } = labels;
127
- return ({ private: privateLabelsField, public: publicLabelsField });
128
- },
129
- /**
130
- * Retrieves a query by its name from the store.
131
- *
132
- * @param name - The name of the query to retrieve.
133
- * @returns The query object if found, otherwise `undefined`.
134
- */
135
- getQueryByName(name) {
136
- const queries = store.queries();
137
- return queries[name.toLowerCase()];
138
- },
139
- /**
140
- * Retrieves a query by its index from the store.
141
- *
142
- * @param index - The index of the query to retrieve.
143
- * @returns The query at the specified index, or `undefined` if the index is out of bounds.
144
- */
145
- getQueryByIndex(index) {
146
- const queries = store.queries();
147
- const keys = Object.keys(queries);
148
- return queries[keys[index]];
149
- },
150
- /**
151
- * Retrieves the default query.
152
- * The default query is always the first query in the list of queries.
153
- *
154
- * @returns {CCQuery | undefined} The default query if it exists, otherwise undefined.
155
- */
156
- getDefaultQuery() {
157
- return this.getQueryByIndex(0);
158
- },
159
- /**
160
- * Retrieves the allowEmptySearch property for a specific query.
161
- * @param queryName - The name of the query for which to retrieve allow empty serach property.
162
- * @returns The allowEmptySearch property for the specified query, or false if not found.
163
- */
164
- allowEmptySearch(queryName) {
165
- const queries = store.queries();
166
- const keys = Object.keys(queries);
167
- if (keys.length === 0)
168
- return false;
169
- const query = (queryName && queries[queryName.toLocaleLowerCase()]) || queries[keys[0]];
170
- return query?.allowEmptySearch || false;
171
- },
172
- /**
173
- * Retrieves the customization json by name
174
- * @param name - The name of the customization json
175
- * @returns The customization json object or undefined if not found
176
- */
177
- getNamedCustomizationJson(name) {
178
- return store.customJSONs().find(data => data.name === name);
179
- },
180
- /**
181
- * Retrieves the alias for a given column name from the application's state.
182
- * If the column has aliases defined, the first alias is returned. Otherwise,
183
- * the original column name is returned.
184
- *
185
- * @param column - The name of the column for which to retrieve the alias.
186
- * @returns The alias of the column if it exists, otherwise the original column name.
187
- */
188
- getColumnAlias(column) {
189
- const state = getState(store);
190
- const schema = state.indexes?.['_']?.columns;
191
- const col = schema[column];
192
- if (col) {
193
- return col.aliases?.[0] || column;
194
- }
195
- return column;
196
- }
197
- })), withMethods((store, aggregationsStore = inject(AggregationsStore), aggregationsNames = inject(AGGREGATIONS_NAMES)) => ({
198
- /**
199
- * Retrieves the icon associated with a given column's aggregation.
200
- *
201
- * This method searches through the store's filters to find an aggregation
202
- * that matches the specified column. If a matching aggregation is found,
203
- * its associated icon is returned. If no matching aggregation is found in
204
- * the store's filters, the method falls back to searching in the
205
- * customizationJson's filters.
206
- *
207
- * @param column - The name of the column for which to retrieve the aggregation icon.
208
- * @returns The icon associated with the specified column's aggregation, or undefined if no matching aggregation is found.
209
- */
210
- getAggregationIcon(column) {
211
- const predicate = (aggregation) => aggregation.column === column;
212
- if (store.filters().length > 0) {
213
- return store.filters().find(predicate)?.icon;
214
- }
215
- // fallback to customizationJson
216
- return store.customizationJson().filters?.find(predicate)?.icon;
217
- },
218
- /**
219
- * Retrieves the customization items for a given column from the store's filters.
220
- * If no items are found in the store's filters, it falls back to the customization JSON.
221
- *
222
- * @param column - The name of the column for which to retrieve customization items.
223
- * @returns An array of `CFilterItem` objects if found, otherwise `undefined`.
224
- */
225
- getAggregationItemsCustomization(column) {
226
- const predicate = (aggregation) => aggregation.column === column;
227
- if (store.filters().length > 0) {
228
- return store.filters().find(predicate)?.items || [];
229
- }
230
- // fallback to customizationJson
231
- return store.customizationJson().filters?.find(predicate)?.items || [];
232
- },
233
- /**
234
- * Retrieves the customization for a specific aggregation column.
235
- * @param column - The column name for which to retrieve the customization.
236
- * @returns The customization object for the specified column, or undefined if not found.
237
- */
238
- getAggregationCustomization(column) {
239
- const predicate = (aggregation) => aggregation.column === column;
240
- if (store.filters().length > 0) {
241
- return store.filters().find(predicate);
242
- }
243
- // fallback to customizationJson
244
- return store.customizationJson().filters?.find(predicate);
245
- },
246
- /**
247
- * Retrieves the sorted aggregations based on the provided query name.
248
- * @param queryName - The name of the query.
249
- * @returns An array of sorted aggregations.
250
- */
251
- getAuthorizedFilters(route) {
252
- const { queryName } = route.snapshot.data;
253
- const { aggregations = [] } = store.getQueryByName(queryName.toLowerCase()) || {};
254
- const agg = [...aggregationsStore.aggregations().filter(aggregation => aggregationsNames.includes(aggregation.name.trim()))];
255
- // sort the aggregations based on the query order
256
- if (Array.isArray(aggregations)) {
257
- const queryAggregationsOrder = aggregations.map(aggregation => aggregation.name.trim()) || [];
258
- return agg.toSorted((a, b) => queryAggregationsOrder.indexOf(a.name) - queryAggregationsOrder.indexOf(b.name));
259
- }
260
- // return the default order
261
- return agg;
262
- }
263
- })));
264
- }
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi9zdG9yZXMvYXBwLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRztJQUMvQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVU7SUFDakcsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU07Q0FDdEUsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLENBQUMsQ0FBQztBQWNySSxNQUFNLFdBQVcsR0FBZTtJQUM5QixXQUFXLEVBQUUsRUFBRTtJQUNmLElBQUksRUFBRSxFQUFFO0lBQ1Is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QUMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM5RixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFjLEVBQUUsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMzSSxDQUFDO1lBQ0QsMkJBQTJCO1lBQzNCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztLQUNGLENBQUMsQ0FBQyxDQUVKLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2l0aERldnRvb2xzIH0gZnJvbSAnQGFuZ3VsYXItYXJjaGl0ZWN0cy9uZ3J4LXRvb2xraXQnO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGdldFN0YXRlLCBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgc2lnbmFsU3RvcmVGZWF0dXJlLCB3aXRoQ29tcHV0ZWQsIHdpdGhNZXRob2RzLCB3aXRoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQWdncmVnYXRpb24sIENDQXBwLCBDQ0NvbHVtbiwgQ0NRdWVyeSwgQ0NXZWJTZXJ2aWNlIH0gZnJvbSAnQHNpbmVxdWEvYXRvbWljJztcblxuaW1wb3J0IHsgQ0ZpbHRlciwgQ0ZpbHRlckl0ZW0sIENKLCBDSnNvbiB9IGZyb20gJy4uL21vZGVscy9jdXN0b20tanNvbic7XG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vd2ViLXNlcnZpY2VzL2FwcC5zZXJ2aWNlJztcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uc1N0b3JlIH0gZnJvbSAnLi9hZ2dyZWdhdGlvbnMuc3RvcmUnO1xuXG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBhIGxpc3Qgb2YgZmFjZXQgbmFtZXMgdG8gZGlzcGxheSBpbiB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogVGhpcyB0b2tlbiBwcm92aWRlcyBhIGRlZmF1bHQgbGlzdCBvZiBmYWNldCBuYW1lcyBpbmNsdWRpbmc6XG4gKiAtIEdlb1xuICogLSBDb21wYW55XG4gKiAtIFBlcnNvblxuICogLSBEb2NGb3JtYXRcbiAqIC0gTW9kaWZpZWRcbiAqIC0gU2l6ZVxuICogLSBEb2N1bWVudExhbmd1YWdlc1xuICogLSBDb25jZXB0c1xuICpcbiAqIEBjb25zdGFudFxuICogQHR5cGUge0luamVjdGlvblRva2VuPHN0cmluZ1tdPn1cbiAqL1xuZXhwb3J0IGNvbnN0IEFHR1JFR0FUSU9OU19OQU1FU19QUkVTRVRfREVGQVVMVCA9IFtcbiAgXCJQbGFjZXNcIiwgXCJTb3VyY2VzXCIsIFwiQ29tcGFueVwiLCBcIlBlb3BsZVwiLCBcIkZvcm1hdHNcIiwgXCJNb2RpZmllZFwiLCBcIlNpemVzXCIsIFwiTGFuZ3VhZ2VzXCIsIFwiQ29uY2VwdHNcIixcbiAgXCJEb2NGb3JtYXRcIiwgXCJHZW9cIiwgXCJQZXJzb25cIiwgXCJUcmVlcGF0aFwiLCBcIkRvY3VtZW50TGFuZ3VhZ2VzXCIsIFwiU2l6ZVwiXG5dO1xuXG5leHBvcnQgY29uc3QgQUdHUkVHQVRJT05TX05BTUVTID0gbmV3IEluamVjdGlvblRva2VuKCdGYWNldHMgbGlzdCB0byBkaXNwbGF5JywgeyBmYWN0b3J5OiAoKSA9PiBBR0dSRUdBVElPTlNfTkFNRVNfUFJFU0VUX0RFRkFVTFQgfSk7XG5cbnR5cGUgQ0NXZWJTZXJ2aWNlTGFiZWxzID0gQ0NXZWJTZXJ2aWNlICYge1xuICBwcml2YXRlTGFiZWxzRmllbGQ6IHN0cmluZztcbiAgcHVibGljTGFiZWxzRmllbGQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ0NBcHBTdGF0ZSA9IHtcbiAgd2ViU2VydmljZXM6IFJlY29yZDxzdHJpbmcsIENDV2ViU2VydmljZT47XG4gIGRhdGE6IENKc29uO1xuICBxdWVyaWVzOiBSZWNvcmQ8c3RyaW5nLCBDQ1F1ZXJ5PjtcbiAgY3VzdG9tSlNPTnM6IENKW107XG59XG5cbmNvbnN0IGluaXRpYWxEYXRhOiBDQ0FwcFN0YXRlID0ge1xuICB3ZWJTZXJ2aWNlczoge30sXG4gIGRhdGE6IHt9LFxuICBxdWVyaWVzOiB7fSxcbiAgY3VzdG9tSlNPTnM6IFtdXG59O1xuXG5leHBvcnQgY29uc3QgQXBwU3RvcmUgPSBzaWduYWxTdG9yZShcbiAgeyBwcm92aWRlZEluOiAncm9vdCcgfSxcbiAgd2l0aERldnRvb2xzKCdBcHAnKSxcbiAgd2l0aFN0YXRlKGluaXRpYWxEYXRhKSxcbiAgd2l0aEFwcEZlYXR1cmVzKClcbik7XG5cbi8qKlxuICogRW5oYW5jZXMgdGhlIGFwcGxpY2F0aW9uIHN0b3JlIHdpdGggdmFyaW91cyBmZWF0dXJlcyBhbmQgbWV0aG9kcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGludGVncmF0ZXMgc3RhdGUgbWFuYWdlbWVudCwgY29tcHV0ZWQgcHJvcGVydGllcywgYW5kIG1ldGhvZHNcbiAqIHRvIGludGVyYWN0IHdpdGggdGhlIENDQXBwIHN0YXRlLCBpbmNsdWRpbmcgaW5pdGlhbGl6YXRpb24sIHVwZGF0ZXMsXG4gKiBhbmQgcmV0cmlldmFsIG9mIHNwZWNpZmljIGRhdGEgc3VjaCBhcyB3ZWIgc2VydmljZXMsIHF1ZXJpZXMsIGFuZCBjdXN0b21pemF0aW9uIEpTT05zLlxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBTdGF0ZSBtYW5hZ2VtZW50IHdpdGggaW5pdGlhbCBkYXRhLlxuICogLSBDb21wdXRlZCBwcm9wZXJ0aWVzIGZvciBjdXN0b21pemF0aW9uIEpTT04sIHNvdXJjZXMsIGFuZCBmaWx0ZXJzLlxuICogLSBNZXRob2RzIGZvciBpbml0aWFsaXppbmcgYW5kIHVwZGF0aW5nIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZS5cbiAqIC0gTWV0aG9kcyBmb3IgcmV0cmlldmluZyB3ZWIgc2VydmljZXMsIGxhYmVscywgcXVlcmllcywgYW5kIGN1c3RvbWl6YXRpb24gSlNPTnMuXG4gKiAtIE1ldGhvZHMgZm9yIHJldHJpZXZpbmcgYWdncmVnYXRpb24gaWNvbnMgYW5kIGN1c3RvbWl6YXRpb24gaXRlbXMuXG4gKlxuICogQHJldHVybnMgVGhlIGVuaGFuY2VkIGFwcGxpY2F0aW9uIHN0b3JlIHdpdGggYWRkaXRpb25hbCBmZWF0dXJlcyBhbmQgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBcHBGZWF0dXJlcygpIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoaW5pdGlhbERhdGEpLFxuICAgIHdpdGhDb21wdXRlZCgoeyBjdXN0b21KU09OcywgZGF0YTogY3VzdG9tIH0pID0+ICh7XG4gICAgICBjdXN0b21pemF0aW9uSnNvbjogY29tcHV0ZWQoKCkgPT4gY3VzdG9tKCkgYXMgQ0pzb24pLFxuICAgICAgc291cmNlczogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAoY3VzdG9tSlNPTnMoKSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBjdXN0b21KU09OcygpICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHJldHVybiAoY3VzdG9tKCkgYXMgQ0pzb24pLnNvdXJjZXMgfHwge307XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGN1c3RvbUpTT05zKCk/LmZpbmQoZGF0YSA9PiBkYXRhLm5hbWUgPT09IFwic291cmNlc1wiKSBhcyBDSiB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGRhdGEgfHwgKGN1c3RvbSgpIGFzIENKc29uKS5zb3VyY2VzIHx8IHt9O1xuICAgICAgfSksXG4gICAgICBmaWx0ZXJzOiBjb21wdXRlZCgoKSA9PiB7XG5cbiAgICAgICAgaWYgKGN1c3RvbUpTT05zKCkgPT09IHVuZGVmaW5lZCB8fCBBcnJheS5pc0FycmF5KGN1c3RvbUpTT05zKCkpID09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIChjdXN0b20oKSBhcyBDSnNvbikuZmlsdGVycyBhcyBDRmlsdGVyW10gPz8gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGN1c3RvbUpTT05zKCk/LmZpbmQoZGF0YSA9PiBkYXRhLm5hbWUgPT09IFwiZmlsdGVyc1wiKSBhcyBDSiB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGRhdGEgYXMgQ0ZpbHRlcltdID8/IChjdXN0b20oKSBhcyBDSnNvbikuZmlsdGVycyA/PyBbXTtcbiAgICAgIH0pXG4gICAgfSkpLFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSwgYXBwU2VydmljZSA9IGluamVjdChBcHBTZXJ2aWNlKSkgPT4gKHtcbiAgICAgIC8qKlxuICAgICAgICogSW5pdGlhbGl6ZXMgdGhlIGFwcGxpY2F0aW9uIHN0YXRlIGJ5IGZldGNoaW5nIHRoZSBhcHAgZGF0YSBmcm9tIHRoZSBhcHBTZXJ2aWNlXG4gICAgICAgKiBhbmQgdXBkYXRpbmcgdGhlIHN0b3JlIHdpdGggdGhlIHJldHJpZXZlZCBkYXRhLlxuICAgICAgICpcbiAgICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFwcCBkYXRhIGhhcyBiZWVuIGZldGNoZWQgYW5kIHRoZSBzdG9yZSBoYXMgYmVlbiB1cGRhdGVkLlxuICAgICAgICovXG4gICAgICBpbml0aWFsaXplKCkge1xuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oYXBwU2VydmljZS5nZXRBcHAoKS5waXBlKG1hcChhcHAgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgYXBwKSkpKTtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIEluaXRpYWxpemVzIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBhcHAgbmFtZS5cbiAgICAgICAqIFxuICAgICAgICogQHBhcmFtIGFwcE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdG8gZmV0Y2ggdGhlIGNvbmZpZ3VyYXRpb24gZm9yLlxuICAgICAgICogXG4gICAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhcHAgZGF0YSBoYXMgYmVlbiBmZXRjaGVkIGFuZCB0aGUgc3RvcmUgaGFzIGJlZW4gdXBkYXRlZC5cbiAgICAgICAqL1xuICAgICAgaW5pdGlhbGl6ZVdpdGhBcHBOYW1lKGFwcE5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oYXBwU2VydmljZS5nZXRBcHAoYXBwTmFtZSkucGlwZShtYXAoYXBwID0+IHBhdGNoU3RhdGUoc3RvcmUsIGFwcCkpKSk7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBVcGRhdGVzIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBDQ0FwcCBvYmplY3QuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtDQ0FwcH0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIG9iamVjdCBjb250YWluaW5nIHRoZSBuZXcgc3RhdGUgdmFsdWVzLlxuICAgICAgICovXG4gICAgICB1cGRhdGUoYXBwOiBDQ0FwcCkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4uYXBwIH1cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFJldHVybnMgdGhlIHdlYiBzZXJ2aWNlIGJ5IHR5cGUgbmFtZVxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB0eXBlIFdlYiBzZXJ2aWNlIHR5cGUgbmFtZVxuICAgICAgICogQHJldHVybnMgQSB7QGxpbmsgQ0NXZWJTZXJ2aWNlfSBvYmplY3Qgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICAgICAgICovXG4gICAgICBnZXRXZWJTZXJ2aWNlQnlUeXBlKHR5cGU6IENDV2ViU2VydmljZVsnd2ViU2VydmljZVR5cGUnXSk6IENDV2ViU2VydmljZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCB3ZWJTZXJ2aWNlID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHN0b3JlLndlYlNlcnZpY2VzKCkpXG4gICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdyA9IHN0b3JlLndlYlNlcnZpY2VzKCkgYXMgUmVjb3JkPHN0cmluZywgQ0NXZWJTZXJ2aWNlPjtcbiAgICAgICAgICAgIGNvbnN0IHdzID0gd1trZXldIGFzIHVua25vd24gYXMgQ0NXZWJTZXJ2aWNlO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHdlYiBzZXJ2aWNlIHR5cGUgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHR5cGUgaW4gbG93ZXJjYXNlXG4gICAgICAgICAgICBpZiAod3Mud2ViU2VydmljZVR5cGUudG9Mb3dlckNhc2UoKSA9PT0gdHlwZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSB3ZWJTZXJ2aWNlID0gd3M7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHdlYlNlcnZpY2U7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBSZXRyaWV2ZXMgdGhlIGxhYmVscyBmcm9tIHRoZSB3ZWIgc2VydmljZSBvZiB0eXBlICdMYWJlbHMnLlxuICAgICAgICpcbiAgICAgICAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBwcml2YXRlIGFuZCBwdWJsaWMgbGFiZWxzLlxuICAgICAgICogICAgICAgICAgSWYgdGhlIGxhYmVscyBhcmUgbm90IGZvdW5kLCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGVtcHR5IHN0cmluZ3MgZm9yIGJvdGggZmllbGRzLlxuICAgICAgICovXG4gICAgICBnZXRMYWJlbHMoKTogeyBwcml2YXRlOiBzdHJpbmcsIHB1YmxpYzogc3RyaW5nIH0ge1xuICAgICAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmdldFdlYlNlcnZpY2VCeVR5cGUoJ2xhYmVscycpIGFzIENDV2ViU2VydmljZUxhYmVscztcbiAgICAgICAgaWYgKCFsYWJlbHMpIHJldHVybiB7IHByaXZhdGU6ICcnLCBwdWJsaWM6ICcnIH07XG4gICAgICAgIGNvbnN0IHsgcHVibGljTGFiZWxzRmllbGQsIHByaXZhdGVMYWJlbHNGaWVsZCB9ID0gbGFiZWxzO1xuICAgICAgICByZXR1cm4gKHsgcHJpdmF0ZTogcHJpdmF0ZUxhYmVsc0ZpZWxkLCBwdWJsaWM6IHB1YmxpY0xhYmVsc0ZpZWxkIH0pO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogUmV0cmlldmVzIGEgcXVlcnkgYnkgaXRzIG5hbWUgZnJvbSB0aGUgc3RvcmUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcXVlcnkgdG8gcmV0cmlldmUuXG4gICAgICAgKiBAcmV0dXJucyBUaGUgcXVlcnkgb2JqZWN0IGlmIGZvdW5kLCBvdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gICAgICAgKi9cbiAgICAgIGdldFF1ZXJ5QnlOYW1lKG5hbWU6IHN0cmluZyk6IENDUXVlcnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBxdWVyaWVzID0gc3RvcmUucXVlcmllcygpIGFzIFJlY29yZDxzdHJpbmcsIENDUXVlcnk+O1xuICAgICAgICByZXR1cm4gcXVlcmllc1tuYW1lLnRvTG93ZXJDYXNlKCldIGFzIENDUXVlcnk7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBSZXRyaWV2ZXMgYSBxdWVyeSBieSBpdHMgaW5kZXggZnJvbSB0aGUgc3RvcmUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBxdWVyeSB0byByZXRyaWV2ZS5cbiAgICAgICAqIEByZXR1cm5zIFRoZSBxdWVyeSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy5cbiAgICAgICAqL1xuICAgICAgZ2V0UXVlcnlCeUluZGV4KGluZGV4OiBudW1iZXIpOiBDQ1F1ZXJ5IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcXVlcmllcyA9IHN0b3JlLnF1ZXJpZXMoKSBhcyBSZWNvcmQ8c3RyaW5nLCBDQ1F1ZXJ5PjtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJpZXMpO1xuICAgICAgICByZXR1cm4gcXVlcmllc1trZXlzW2luZGV4XV07XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBSZXRyaWV2ZXMgdGhlIGRlZmF1bHQgcXVlcnkuXG4gICAgICAgKiBUaGUgZGVmYXVsdCBxdWVyeSBpcyBhbHdheXMgdGhlIGZpcnN0IHF1ZXJ5IGluIHRoZSBsaXN0IG9mIHF1ZXJpZXMuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge0NDUXVlcnkgfCB1bmRlZmluZWR9IFRoZSBkZWZhdWx0IHF1ZXJ5IGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cbiAgICAgICAqL1xuICAgICAgZ2V0RGVmYXVsdFF1ZXJ5KCk6IENDUXVlcnkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRRdWVyeUJ5SW5kZXgoMCk7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFJldHJpZXZlcyB0aGUgYWxsb3dFbXB0eVNlYXJjaCBwcm9wZXJ0eSBmb3IgYSBzcGVjaWZpYyBxdWVyeS5cbiAgICAgICAqIEBwYXJhbSBxdWVyeU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcXVlcnkgZm9yIHdoaWNoIHRvIHJldHJpZXZlIGFsbG93IGVtcHR5IHNlcmFjaCBwcm9wZXJ0eS5cbiAgICAgICAqIEByZXR1cm5zIFRoZSBhbGxvd0VtcHR5U2VhcmNoIHByb3BlcnR5IGZvciB0aGUgc3BlY2lmaWVkIHF1ZXJ5LCBvciBmYWxzZSBpZiBub3QgZm91bmQuXG4gICAgICAgKi9cbiAgICAgIGFsbG93RW1wdHlTZWFyY2gocXVlcnlOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcXVlcmllcyA9IHN0b3JlLnF1ZXJpZXMoKSBhcyBSZWNvcmQ8c3RyaW5nLCBDQ1F1ZXJ5PjtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJpZXMpO1xuXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gKHF1ZXJ5TmFtZSAmJiBxdWVyaWVzW3F1ZXJ5TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpXSkgfHwgcXVlcmllc1trZXlzWzBdXTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5Py5hbGxvd0VtcHR5U2VhcmNoIHx8IGZhbHNlO1xuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBSZXRyaWV2ZXMgdGhlIGN1c3RvbWl6YXRpb24ganNvbiBieSBuYW1lXG4gICAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjdXN0b21pemF0aW9uIGpzb25cbiAgICAgICAqIEByZXR1cm5zIFRoZSBjdXN0b21pemF0aW9uIGpzb24gb2JqZWN0IG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAgICAgICAqL1xuICAgICAgZ2V0TmFtZWRDdXN0b21pemF0aW9uSnNvbihuYW1lOiBzdHJpbmcpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gc3RvcmUuY3VzdG9tSlNPTnMoKS5maW5kKGRhdGEgPT4gZGF0YS5uYW1lID09PSBuYW1lKTtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFJldHJpZXZlcyB0aGUgYWxpYXMgZm9yIGEgZ2l2ZW4gY29sdW1uIG5hbWUgZnJvbSB0aGUgYXBwbGljYXRpb24ncyBzdGF0ZS5cbiAgICAgICAqIElmIHRoZSBjb2x1bW4gaGFzIGFsaWFzZXMgZGVmaW5lZCwgdGhlIGZpcnN0IGFsaWFzIGlzIHJldHVybmVkLiBPdGhlcndpc2UsXG4gICAgICAgKiB0aGUgb3JpZ2luYWwgY29sdW1uIG5hbWUgaXMgcmV0dXJuZWQuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIGNvbHVtbiAtIFRoZSBuYW1lIG9mIHRoZSBjb2x1bW4gZm9yIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBhbGlhcy5cbiAgICAgICAqIEByZXR1cm5zIFRoZSBhbGlhcyBvZiB0aGUgY29sdW1uIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHRoZSBvcmlnaW5hbCBjb2x1bW4gbmFtZS5cbiAgICAgICAqL1xuICAgICAgZ2V0Q29sdW1uQWxpYXMoY29sdW1uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGdldFN0YXRlKHN0b3JlKSBhcyBDQ0FwcDtcbiAgICAgICAgY29uc3Qgc2NoZW1hID0gc3RhdGUuaW5kZXhlcz8uWydfJ10/LmNvbHVtbnMgYXMgUmVjb3JkPHN0cmluZywgQ0NDb2x1bW4+O1xuICAgICAgICBjb25zdCBjb2wgPSBzY2hlbWFbY29sdW1uXTtcbiAgICAgICAgaWYgKGNvbCkge1xuICAgICAgICAgIHJldHVybiBjb2wuYWxpYXNlcz8uWzBdIHx8IGNvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgfVxuICAgIH0pKSxcbiAgICB3aXRoTWV0aG9kcygoc3RvcmUsIGFnZ3JlZ2F0aW9uc1N0b3JlID0gaW5qZWN0KEFnZ3JlZ2F0aW9uc1N0b3JlKSwgYWdncmVnYXRpb25zTmFtZXMgPSBpbmplY3QoQUdHUkVHQVRJT05TX05BTUVTKSkgPT4gKHtcbiAgICAgIC8qKlxuICAgICAgICogUmV0cmlldmVzIHRoZSBpY29uIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGNvbHVtbidzIGFnZ3JlZ2F0aW9uLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgbWV0aG9kIHNlYXJjaGVzIHRocm91Z2ggdGhlIHN0b3JlJ3MgZmlsdGVycyB0byBmaW5kIGFuIGFnZ3JlZ2F0aW9uXG4gICAgICAgKiB0aGF0IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBjb2x1bW4uIElmIGEgbWF0Y2hpbmcgYWdncmVnYXRpb24gaXMgZm91bmQsXG4gICAgICAgKiBpdHMgYXNzb2NpYXRlZCBpY29uIGlzIHJldHVybmVkLiBJZiBubyBtYXRjaGluZyBhZ2dyZWdhdGlvbiBpcyBmb3VuZCBpblxuICAgICAgICogdGhlIHN0b3JlJ3MgZmlsdGVycywgdGhlIG1ldGhvZCBmYWxscyBiYWNrIHRvIHNlYXJjaGluZyBpbiB0aGVcbiAgICAgICAqIGN1c3RvbWl6YXRpb25Kc29uJ3MgZmlsdGVycy5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gY29sdW1uIC0gVGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBmb3Igd2hpY2ggdG8gcmV0cmlldmUgdGhlIGFnZ3JlZ2F0aW9uIGljb24uXG4gICAgICAgKiBAcmV0dXJucyBUaGUgaWNvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb2x1bW4ncyBhZ2dyZWdhdGlvbiwgb3IgdW5kZWZpbmVkIGlmIG5vIG1hdGNoaW5nIGFnZ3JlZ2F0aW9uIGlzIGZvdW5kLlxuICAgICAgICovXG4gICAgICBnZXRBZ2dyZWdhdGlvbkljb24oY29sdW1uOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwcmVkaWNhdGUgPSAoYWdncmVnYXRpb246IENGaWx0ZXIpID0+IGFnZ3JlZ2F0aW9uLmNvbHVtbiA9PT0gY29sdW1uO1xuICAgICAgICBpZiAoc3RvcmUuZmlsdGVycygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gc3RvcmUuZmlsdGVycygpLmZpbmQocHJlZGljYXRlKT8uaWNvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBmYWxsYmFjayB0byBjdXN0b21pemF0aW9uSnNvblxuICAgICAgICByZXR1cm4gc3RvcmUuY3VzdG9taXphdGlvbkpzb24oKS5maWx0ZXJzPy5maW5kKHByZWRpY2F0ZSk/Lmljb247XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFJldHJpZXZlcyB0aGUgY3VzdG9taXphdGlvbiBpdGVtcyBmb3IgYSBnaXZlbiBjb2x1bW4gZnJvbSB0aGUgc3RvcmUncyBmaWx0ZXJzLlxuICAgICAgICogSWYgbm8gaXRlbXMgYXJlIGZvdW5kIGluIHRoZSBzdG9yZSdzIGZpbHRlcnMsIGl0IGZhbGxzIGJhY2sgdG8gdGhlIGN1c3RvbWl6YXRpb24gSlNPTi5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gY29sdW1uIC0gVGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBmb3Igd2hpY2ggdG8gcmV0cmlldmUgY3VzdG9taXphdGlvbiBpdGVtcy5cbiAgICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGBDRmlsdGVySXRlbWAgb2JqZWN0cyBpZiBmb3VuZCwgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLlxuICAgICAgICovXG4gICAgICBnZXRBZ2dyZWdhdGlvbkl0ZW1zQ3VzdG9taXphdGlvbihjb2x1bW46IHN0cmluZyk6IENGaWx0ZXJJdGVtW10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwcmVkaWNhdGUgPSAoYWdncmVnYXRpb246IENGaWx0ZXIpID0+IGFnZ3JlZ2F0aW9uLmNvbHVtbiA9PT0gY29sdW1uO1xuICAgICAgICBpZiAoc3RvcmUuZmlsdGVycygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gc3RvcmUuZmlsdGVycygpLmZpbmQocHJlZGljYXRlKT8uaXRlbXMgfHwgW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmFsbGJhY2sgdG8gY3VzdG9taXphdGlvbkpzb25cbiAgICAgICAgcmV0dXJuIHN0b3JlLmN1c3RvbWl6YXRpb25Kc29uKCkuZmlsdGVycz8uZmluZChwcmVkaWNhdGUpPy5pdGVtcyB8fCBbXTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogUmV0cmlldmVzIHRoZSBjdXN0b21pemF0aW9uIGZvciBhIHNwZWNpZmljIGFnZ3JlZ2F0aW9uIGNvbHVtbi5cbiAgICAgICAqIEBwYXJhbSBjb2x1bW4gLSBUaGUgY29sdW1uIG5hbWUgZm9yIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBjdXN0b21pemF0aW9uLlxuICAgICAgICogQHJldHVybnMgVGhlIGN1c3RvbWl6YXRpb24gb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIGNvbHVtbiwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cbiAgICAgICAqL1xuICAgICAgZ2V0QWdncmVnYXRpb25DdXN0b21pemF0aW9uKGNvbHVtbjogc3RyaW5nKTogQ0ZpbHRlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWRpY2F0ZSA9IChhZ2dyZWdhdGlvbjogQ0ZpbHRlcikgPT4gYWdncmVnYXRpb24uY29sdW1uID09PSBjb2x1bW47XG4gICAgICAgIGlmIChzdG9yZS5maWx0ZXJzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJldHVybiBzdG9yZS5maWx0ZXJzKCkuZmluZChwcmVkaWNhdGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIGN1c3RvbWl6YXRpb25Kc29uXG4gICAgICAgIHJldHVybiBzdG9yZS5jdXN0b21pemF0aW9uSnNvbigpLmZpbHRlcnM/LmZpbmQocHJlZGljYXRlKTtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFJldHJpZXZlcyB0aGUgc29ydGVkIGFnZ3JlZ2F0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgbmFtZS5cbiAgICAgICAqIEBwYXJhbSBxdWVyeU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcXVlcnkuXG4gICAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzb3J0ZWQgYWdncmVnYXRpb25zLlxuICAgICAgICovXG4gICAgICBnZXRBdXRob3JpemVkRmlsdGVycyhyb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeU5hbWUgfSA9IHJvdXRlLnNuYXBzaG90LmRhdGE7XG4gICAgICAgIGNvbnN0IHsgYWdncmVnYXRpb25zID0gW10gfSA9IHN0b3JlLmdldFF1ZXJ5QnlOYW1lKHF1ZXJ5TmFtZS50b0xvd2VyQ2FzZSgpKSB8fCB7fSBhcyBDQ1F1ZXJ5O1xuICAgICAgICBjb25zdCBhZ2cgPSBbLi4uYWdncmVnYXRpb25zU3RvcmUuYWdncmVnYXRpb25zKCkuZmlsdGVyKGFnZ3JlZ2F0aW9uID0+IGFnZ3JlZ2F0aW9uc05hbWVzLmluY2x1ZGVzKGFnZ3JlZ2F0aW9uLm5hbWUudHJpbSgpKSldO1xuICAgICAgICAvLyBzb3J0IHRoZSBhZ2dyZWdhdGlvbnMgYmFzZWQgb24gdGhlIHF1ZXJ5IG9yZGVyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFnZ3JlZ2F0aW9ucykpIHtcbiAgICAgICAgICBjb25zdCBxdWVyeUFnZ3JlZ2F0aW9uc09yZGVyID0gYWdncmVnYXRpb25zLm1hcChhZ2dyZWdhdGlvbiA9PiBhZ2dyZWdhdGlvbi5uYW1lLnRyaW0oKSkgfHwgW107XG4gICAgICAgICAgcmV0dXJuIGFnZy50b1NvcnRlZCgoYTogQWdncmVnYXRpb24sIGI6IEFnZ3JlZ2F0aW9uKSA9PiBxdWVyeUFnZ3JlZ2F0aW9uc09yZGVyLmluZGV4T2YoYS5uYW1lKSAtIHF1ZXJ5QWdncmVnYXRpb25zT3JkZXIuaW5kZXhPZihiLm5hbWUpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXR1cm4gdGhlIGRlZmF1bHQgb3JkZXJcbiAgICAgICAgcmV0dXJuIGFnZztcbiAgICAgIH1cbiAgICB9KSlcblxuICApXG59Il19
@@ -1,93 +0,0 @@
1
- import { computed } from "@angular/core";
2
- import { patchState, signalStore, signalStoreFeature, withComputed, withMethods, withState } from "@ngrx/signals";
3
- import { withDevtools } from "@angular-architects/ngrx-toolkit";
4
- const intialState = {
5
- assistantReady: false,
6
- ready: false,
7
- extracts: new Map(),
8
- hasLabelsAccess: false
9
- };
10
- export const ApplicationStore = signalStore(
11
- // providing store at the root level
12
- { providedIn: 'root' }, withDevtools('Application'), withState(intialState), withApplicationFeatures(), withExtractsFeatures());
13
- /**
14
- * Enhances the application store with additional features.
15
- *
16
- * This function integrates several features into the application store, including state management,
17
- * computed properties, and various methods for updating and retrieving application state.
18
- *
19
- * Features included:
20
- * - State initialization with `intialState`.
21
- * - Methods for updating the application state:
22
- * - `updateAssistantReady`: Marks the assistant as ready.
23
- * - `updateReadyState`: Sets the application store's ready state to true.
24
- *
25
- * @returns A configured signal store feature with state, computed properties, and methods.
26
- */
27
- export function withApplicationFeatures() {
28
- return signalStoreFeature(withState(intialState), withMethods((store) => ({
29
- /**
30
- * Updates the application state to indicate that the assistant is ready.
31
- * This function patches the current state by setting the `assistantReady` property to `true`.
32
- */
33
- updateAssistantReady() {
34
- patchState(store, (state) => ({ ...state, assistantReady: true }));
35
- },
36
- /**
37
- * Updates the ready state of the application store to true.
38
- * This function patches the current state of the store by setting the `ready` property to `true`.
39
- */
40
- updateReadyState(value = true) {
41
- patchState(store, (state) => ({ ...state, ready: value }));
42
- },
43
- /**
44
- * Updates the `hasLabelsAccess` property in the application store state.
45
- *
46
- * @param value - A boolean value indicating whether the user has access to labels. Defaults to `true`.
47
- */
48
- updateHasLabelsAccess(value = true) {
49
- patchState(store, (state) => ({ ...state, hasLabelsAccess: value }));
50
- }
51
- })));
52
- }
53
- /**
54
- * Provides features related to extracts within the application store.
55
- *
56
- * This function integrates state management, computed properties, and methods
57
- * for handling extracts in the application store.
58
- *
59
- * Features:
60
- * - State management for extracts.
61
- * - Computed property to get the count of extracts.
62
- * - Methods to update and retrieve extracts.
63
- *
64
- * @returns A configured signal store feature with state, computed properties, and methods for extracts.
65
- */
66
- export function withExtractsFeatures() {
67
- return signalStoreFeature(withState(intialState), withComputed(({ extracts }) => ({
68
- extractsCount: computed(() => extracts().size),
69
- })), withMethods((store) => ({
70
- /**
71
- * Updates the extracts for a given ID in the application store.
72
- *
73
- * @param id - The unique identifier for the extracts to be updated.
74
- * @param extracts - An array of Extract objects to be associated with the given ID.
75
- */
76
- updateExtracts(id, extracts) {
77
- patchState(store, (state) => {
78
- state.extracts.set(id, extracts);
79
- return { ...state };
80
- });
81
- },
82
- /**
83
- * Retrieves extracts from the store based on the provided ID.
84
- *
85
- * @param id - The unique identifier for the extracts to retrieve.
86
- * @returns The extracts associated with the given ID.
87
- */
88
- getExtracts(id) {
89
- return store.extracts().get(id);
90
- }
91
- })));
92
- }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3N0b3Jlcy9hcHBsaWNhdGlvbi5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQWlCaEUsTUFBTSxXQUFXLEdBQXFCO0lBQ3BDLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLEtBQUssRUFBRSxLQUFLO0lBQ1osUUFBUSxFQUFFLElBQUksR0FBRyxFQUFFO0lBQ25CLGVBQWUsRUFBRSxLQUFLO0NBQ3ZCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXO0FBQ3pDLG9DQUFvQztBQUNwQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFDdEIsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUMzQixTQUFTLENBQUMsV0FBVyxDQUFDLEVBQ3RCLHVCQUF1QixFQUFFLEVBQ3pCLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxPQUFPLGtCQUFrQixDQUN2QixTQUFTLENBQUMsV0FBVyxDQUFDLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0Qjs7O1dBR0c7UUFDSCxvQkFBb0I7WUFDbEIsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNEOzs7V0FHRztRQUNILGdCQUFnQixDQUFDLFFBQWlCLElBQUk7WUFDcEMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNEOzs7O1dBSUc7UUFDSCxxQkFBcUIsQ0FBQyxRQUFpQixJQUFJO1lBQ3pDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7S0FDRixDQUFDLENBQUMsQ0FDSixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUN0QixZQUFZLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGFBQWEsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO0tBQy9DLENBQUMsQ0FBQyxFQUNILFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0Qjs7Ozs7V0FLRztRQUNILGNBQWMsQ0FBQyxFQUFVLEVBQUUsUUFBbUI7WUFDNUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNEOzs7OztXQUtHO1FBQ0gsV0FBVyxDQUFDLEVBQVU7WUFDcEIsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7S0FDRixDQUFDLENBQUMsQ0FDSixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHBhdGNoU3RhdGUsIHNpZ25hbFN0b3JlLCBzaWduYWxTdG9yZUZlYXR1cmUsIHdpdGhDb21wdXRlZCwgd2l0aE1ldGhvZHMsIHdpdGhTdGF0ZSB9IGZyb20gXCJAbmdyeC9zaWduYWxzXCI7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgd2l0aERldnRvb2xzIH0gZnJvbSBcIkBhbmd1bGFyLWFyY2hpdGVjdHMvbmdyeC10b29sa2l0XCI7XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3QgPSB7XG4gIGlkOiBzdHJpbmcsXG4gIHRleHQ6IFNhZmVIdG1sLCAvLyBTYW5pdGl6ZWQgSFRNTCB0ZXh0XG4gIHN0YXJ0SW5kZXg6IG51bWJlciwgLy8gdGhpcyBpcyB0aGUgc3RhcnQgaW5kZXggb2YgdGhlIGV4dHJhY3RzIHdpdGhpbiB0aGUgRG9jdW1lbnQgVGV4dFxuICByZWxldmFuY2VJbmRleDogbnVtYmVyLCAvLyAwIHRoZSBtb3N0IHJlbGV2YW50IHRvIE4gdGhlIGxlc3MgcmVsZXZhbnRcbiAgdGV4dEluZGV4OiBudW1iZXIgLy8gaW5kZXggb2YgdGhlIGV4dHJhY3QgaW4gdGhlIHRleHQuIGUuZyAwIGlzIHRoZSBmaXJzdCBleHRyYWN0IGRpc3BsYXllZCBpbiB0aGUgZG9jdW1lbnRcbn1cblxuZXhwb3J0IHR5cGUgQXBwbGljYXRpb25TdGF0ZSA9IHtcbiAgYXNzaXN0YW50UmVhZHk6IGJvb2xlYW4sXG4gIHJlYWR5OiBib29sZWFuLFxuICBleHRyYWN0czogTWFwPHN0cmluZywgRXh0cmFjdFtdPixcbiAgaGFzTGFiZWxzQWNjZXNzOiBib29sZWFuXG59XG5cbmNvbnN0IGludGlhbFN0YXRlOiBBcHBsaWNhdGlvblN0YXRlID0ge1xuICBhc3Npc3RhbnRSZWFkeTogZmFsc2UsXG4gIHJlYWR5OiBmYWxzZSxcbiAgZXh0cmFjdHM6IG5ldyBNYXAoKSxcbiAgaGFzTGFiZWxzQWNjZXNzOiBmYWxzZVxufTtcblxuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uU3RvcmUgPSBzaWduYWxTdG9yZShcbiAgLy8gcHJvdmlkaW5nIHN0b3JlIGF0IHRoZSByb290IGxldmVsXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4gIHdpdGhEZXZ0b29scygnQXBwbGljYXRpb24nKSxcbiAgd2l0aFN0YXRlKGludGlhbFN0YXRlKSxcbiAgd2l0aEFwcGxpY2F0aW9uRmVhdHVyZXMoKSxcbiAgd2l0aEV4dHJhY3RzRmVhdHVyZXMoKVxuKTtcblxuLyoqXG4gKiBFbmhhbmNlcyB0aGUgYXBwbGljYXRpb24gc3RvcmUgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaW50ZWdyYXRlcyBzZXZlcmFsIGZlYXR1cmVzIGludG8gdGhlIGFwcGxpY2F0aW9uIHN0b3JlLCBpbmNsdWRpbmcgc3RhdGUgbWFuYWdlbWVudCxcbiAqIGNvbXB1dGVkIHByb3BlcnRpZXMsIGFuZCB2YXJpb3VzIG1ldGhvZHMgZm9yIHVwZGF0aW5nIGFuZCByZXRyaWV2aW5nIGFwcGxpY2F0aW9uIHN0YXRlLlxuICpcbiAqIEZlYXR1cmVzIGluY2x1ZGVkOlxuICogLSBTdGF0ZSBpbml0aWFsaXphdGlvbiB3aXRoIGBpbnRpYWxTdGF0ZWAuXG4gKiAtIE1ldGhvZHMgZm9yIHVwZGF0aW5nIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZTpcbiAqICAgLSBgdXBkYXRlQXNzaXN0YW50UmVhZHlgOiBNYXJrcyB0aGUgYXNzaXN0YW50IGFzIHJlYWR5LlxuICogICAtIGB1cGRhdGVSZWFkeVN0YXRlYDogU2V0cyB0aGUgYXBwbGljYXRpb24gc3RvcmUncyByZWFkeSBzdGF0ZSB0byB0cnVlLlxuICpcbiAqIEByZXR1cm5zIEEgY29uZmlndXJlZCBzaWduYWwgc3RvcmUgZmVhdHVyZSB3aXRoIHN0YXRlLCBjb21wdXRlZCBwcm9wZXJ0aWVzLCBhbmQgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBcHBsaWNhdGlvbkZlYXR1cmVzKCkge1xuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhTdGF0ZShpbnRpYWxTdGF0ZSksXG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKSA9PiAoe1xuICAgICAgLyoqXG4gICAgICAgKiBVcGRhdGVzIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBhc3Npc3RhbnQgaXMgcmVhZHkuXG4gICAgICAgKiBUaGlzIGZ1bmN0aW9uIHBhdGNoZXMgdGhlIGN1cnJlbnQgc3RhdGUgYnkgc2V0dGluZyB0aGUgYGFzc2lzdGFudFJlYWR5YCBwcm9wZXJ0eSB0byBgdHJ1ZWAuXG4gICAgICAgKi9cbiAgICAgIHVwZGF0ZUFzc2lzdGFudFJlYWR5KCkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBhc3Npc3RhbnRSZWFkeTogdHJ1ZSB9KSk7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBVcGRhdGVzIHRoZSByZWFkeSBzdGF0ZSBvZiB0aGUgYXBwbGljYXRpb24gc3RvcmUgdG8gdHJ1ZS5cbiAgICAgICAqIFRoaXMgZnVuY3Rpb24gcGF0Y2hlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3RvcmUgYnkgc2V0dGluZyB0aGUgYHJlYWR5YCBwcm9wZXJ0eSB0byBgdHJ1ZWAuXG4gICAgICAgKi9cbiAgICAgIHVwZGF0ZVJlYWR5U3RhdGUodmFsdWU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIHJlYWR5OiB2YWx1ZSB9KSk7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBVcGRhdGVzIHRoZSBgaGFzTGFiZWxzQWNjZXNzYCBwcm9wZXJ0eSBpbiB0aGUgYXBwbGljYXRpb24gc3RvcmUgc3RhdGUuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHZhbHVlIC0gQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdXNlciBoYXMgYWNjZXNzIHRvIGxhYmVscy4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgICAgICovXG4gICAgICB1cGRhdGVIYXNMYWJlbHNBY2Nlc3ModmFsdWU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGhhc0xhYmVsc0FjY2VzczogdmFsdWUgfSkpO1xuICAgICAgfVxuICAgIH0pKVxuICApO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGZlYXR1cmVzIHJlbGF0ZWQgdG8gZXh0cmFjdHMgd2l0aGluIHRoZSBhcHBsaWNhdGlvbiBzdG9yZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGludGVncmF0ZXMgc3RhdGUgbWFuYWdlbWVudCwgY29tcHV0ZWQgcHJvcGVydGllcywgYW5kIG1ldGhvZHNcbiAqIGZvciBoYW5kbGluZyBleHRyYWN0cyBpbiB0aGUgYXBwbGljYXRpb24gc3RvcmUuXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIFN0YXRlIG1hbmFnZW1lbnQgZm9yIGV4dHJhY3RzLlxuICogLSBDb21wdXRlZCBwcm9wZXJ0eSB0byBnZXQgdGhlIGNvdW50IG9mIGV4dHJhY3RzLlxuICogLSBNZXRob2RzIHRvIHVwZGF0ZSBhbmQgcmV0cmlldmUgZXh0cmFjdHMuXG4gKlxuICogQHJldHVybnMgQSBjb25maWd1cmVkIHNpZ25hbCBzdG9yZSBmZWF0dXJlIHdpdGggc3RhdGUsIGNvbXB1dGVkIHByb3BlcnRpZXMsIGFuZCBtZXRob2RzIGZvciBleHRyYWN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhFeHRyYWN0c0ZlYXR1cmVzKCkge1xuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhTdGF0ZShpbnRpYWxTdGF0ZSksXG4gICAgd2l0aENvbXB1dGVkKCh7IGV4dHJhY3RzIH0pID0+ICh7XG4gICAgICBleHRyYWN0c0NvdW50OiBjb21wdXRlZCgoKSA9PiBleHRyYWN0cygpLnNpemUpLFxuICAgIH0pKSxcbiAgICB3aXRoTWV0aG9kcygoc3RvcmUpID0+ICh7XG4gICAgICAvKipcbiAgICAgICAqIFVwZGF0ZXMgdGhlIGV4dHJhY3RzIGZvciBhIGdpdmVuIElEIGluIHRoZSBhcHBsaWNhdGlvbiBzdG9yZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBleHRyYWN0cyB0byBiZSB1cGRhdGVkLlxuICAgICAgICogQHBhcmFtIGV4dHJhY3RzIC0gQW4gYXJyYXkgb2YgRXh0cmFjdCBvYmplY3RzIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gSUQuXG4gICAgICAgKi9cbiAgICAgIHVwZGF0ZUV4dHJhY3RzKGlkOiBzdHJpbmcsIGV4dHJhY3RzOiBFeHRyYWN0W10pIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgc3RhdGUuZXh0cmFjdHMuc2V0KGlkLCBleHRyYWN0cyk7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUgfTtcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFJldHJpZXZlcyBleHRyYWN0cyBmcm9tIHRoZSBzdG9yZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgSUQuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZXh0cmFjdHMgdG8gcmV0cmlldmUuXG4gICAgICAgKiBAcmV0dXJucyBUaGUgZXh0cmFjdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBJRC5cbiAgICAgICAqL1xuICAgICAgZ2V0RXh0cmFjdHMoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gc3RvcmUuZXh0cmFjdHMoKS5nZXQoaWQpO1xuICAgICAgfVxuICAgIH0pKVxuICApXG59XG4iXX0=
@@ -1,9 +0,0 @@
1
- export * from "./aggregations.store"; // contains the result's aggregations
2
- export * from "./app.store"; // contains the application's state
3
- export * from "./application.store"; // contains the inner application's state
4
- export * from "./principal.store"; // contains the user's principal
5
- export * from "./query-params.store"; // contains the query parameters
6
- export * from "./selection.store"; // contains the selected items
7
- export * from "./theme.store"; // contains the theme manager
8
- export * from "./user-settings.store"; // contains the user's settings
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3N0b3Jlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDLENBQUMscUNBQXFDO0FBQzNFLGNBQWMsYUFBYSxDQUFDLENBQUMsbUNBQW1DO0FBQ2hFLGNBQWMscUJBQXFCLENBQUMsQ0FBQyx5Q0FBeUM7QUFDOUUsY0FBYyxtQkFBbUIsQ0FBQyxDQUFDLGdDQUFnQztBQUNuRSxjQUFjLHNCQUFzQixDQUFDLENBQUMsZ0NBQWdDO0FBQ3RFLGNBQWMsbUJBQW1CLENBQUMsQ0FBQyw4QkFBOEI7QUFDakUsY0FBYyxlQUFlLENBQUMsQ0FBQyw2QkFBNkI7QUFDNUQsY0FBYyx1QkFBdUIsQ0FBQyxDQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FnZ3JlZ2F0aW9ucy5zdG9yZVwiOyAvLyBjb250YWlucyB0aGUgcmVzdWx0J3MgYWdncmVnYXRpb25zXHJcbmV4cG9ydCAqIGZyb20gXCIuL2FwcC5zdG9yZVwiOyAvLyBjb250YWlucyB0aGUgYXBwbGljYXRpb24ncyBzdGF0ZVxyXG5leHBvcnQgKiBmcm9tIFwiLi9hcHBsaWNhdGlvbi5zdG9yZVwiOyAvLyBjb250YWlucyB0aGUgaW5uZXIgYXBwbGljYXRpb24ncyBzdGF0ZVxyXG5leHBvcnQgKiBmcm9tIFwiLi9wcmluY2lwYWwuc3RvcmVcIjsgLy8gY29udGFpbnMgdGhlIHVzZXIncyBwcmluY2lwYWxcclxuZXhwb3J0ICogZnJvbSBcIi4vcXVlcnktcGFyYW1zLnN0b3JlXCI7IC8vIGNvbnRhaW5zIHRoZSBxdWVyeSBwYXJhbWV0ZXJzXHJcbmV4cG9ydCAqIGZyb20gXCIuL3NlbGVjdGlvbi5zdG9yZVwiOyAvLyBjb250YWlucyB0aGUgc2VsZWN0ZWQgaXRlbXNcclxuZXhwb3J0ICogZnJvbSBcIi4vdGhlbWUuc3RvcmVcIjsgLy8gY29udGFpbnMgdGhlIHRoZW1lIG1hbmFnZXJcclxuZXhwb3J0ICogZnJvbSBcIi4vdXNlci1zZXR0aW5ncy5zdG9yZVwiOyAvLyBjb250YWlucyB0aGUgdXNlcidzIHNldHRpbmdzXHJcblxyXG4iXX0=