@sinequa/atomic-angular 0.0.146 → 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 +8021 -2672
  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 -334
  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-input.mjs +0 -97
  42. package/esm2022/lib/components/dropdown-list.mjs +0 -35
  43. package/esm2022/lib/components/dropdown.mjs +0 -127
  44. package/esm2022/lib/components/index.mjs +0 -7
  45. package/esm2022/lib/components/menu/index.mjs +0 -3
  46. package/esm2022/lib/components/menu/menu-item.mjs +0 -22
  47. package/esm2022/lib/components/menu/menu.mjs +0 -99
  48. package/esm2022/lib/components/metadata/index.mjs +0 -2
  49. package/esm2022/lib/components/metadata/metadata.component.mjs +0 -65
  50. package/esm2022/lib/components/theme/index.mjs +0 -3
  51. package/esm2022/lib/components/theme/theme-selector.component.mjs +0 -67
  52. package/esm2022/lib/components/theme/theme-toggle.component.mjs +0 -67
  53. package/esm2022/lib/directives/index.mjs +0 -5
  54. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -47
  55. package/esm2022/lib/directives/select-article-on-click.directive.mjs +0 -39
  56. package/esm2022/lib/directives/show-bookmark.directive.mjs +0 -55
  57. package/esm2022/lib/directives/theme-provider.directive.mjs +0 -31
  58. package/esm2022/lib/guards/auth.guard.mjs +0 -27
  59. package/esm2022/lib/guards/index.mjs +0 -3
  60. package/esm2022/lib/guards/initialization.guard.mjs +0 -41
  61. package/esm2022/lib/interceptors/audit.interceptor.mjs +0 -23
  62. package/esm2022/lib/interceptors/auth.interceptor.mjs +0 -49
  63. package/esm2022/lib/interceptors/body.interceptor.mjs +0 -24
  64. package/esm2022/lib/interceptors/error.interceptor.mjs +0 -35
  65. package/esm2022/lib/interceptors/index.mjs +0 -7
  66. package/esm2022/lib/interceptors/toast.interceptor.mjs +0 -27
  67. package/esm2022/lib/models/aggregation.mjs +0 -2
  68. package/esm2022/lib/models/article-metadata.mjs +0 -2
  69. package/esm2022/lib/models/autocomplete.mjs +0 -2
  70. package/esm2022/lib/models/custom-json.mjs +0 -2
  71. package/esm2022/lib/models/filter-dropdown.mjs +0 -2
  72. package/esm2022/lib/models/index.mjs +0 -7
  73. package/esm2022/lib/models/user-settings.mjs +0 -2
  74. package/esm2022/lib/pipes/highlight-word.pipe.mjs +0 -33
  75. package/esm2022/lib/pipes/index.mjs +0 -3
  76. package/esm2022/lib/pipes/source-icon.pipe.mjs +0 -43
  77. package/esm2022/lib/public-api.mjs +0 -18
  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 -59
  95. package/esm2022/lib/stores/app.store.mjs +0 -270
  96. package/esm2022/lib/stores/application.store.mjs +0 -87
  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 -207
  100. package/esm2022/lib/stores/selection.store.mjs +0 -45
  101. package/esm2022/lib/stores/theme.store.mjs +0 -116
  102. package/esm2022/lib/stores/user-settings.store.mjs +0 -391
  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-input.d.ts +0 -18
  127. package/lib/components/dropdown-list.d.ts +0 -8
  128. package/lib/components/dropdown.d.ts +0 -50
  129. package/lib/components/index.d.ts +0 -6
  130. package/lib/components/menu/index.d.ts +0 -2
  131. package/lib/components/menu/menu-item.d.ts +0 -8
  132. package/lib/components/menu/menu.d.ts +0 -24
  133. package/lib/components/metadata/index.d.ts +0 -1
  134. package/lib/components/metadata/metadata.component.d.ts +0 -24
  135. package/lib/components/theme/index.d.ts +0 -2
  136. package/lib/components/theme/theme-selector.component.d.ts +0 -70
  137. package/lib/components/theme/theme-toggle.component.d.ts +0 -10
  138. package/lib/directives/index.d.ts +0 -4
  139. package/lib/directives/infinite-scroll.directive.d.ts +0 -30
  140. package/lib/directives/select-article-on-click.directive.d.ts +0 -14
  141. package/lib/directives/show-bookmark.directive.d.ts +0 -60
  142. package/lib/directives/theme-provider.directive.d.ts +0 -20
  143. package/lib/guards/auth.guard.d.ts +0 -7
  144. package/lib/guards/index.d.ts +0 -2
  145. package/lib/guards/initialization.guard.d.ts +0 -20
  146. package/lib/interceptors/audit.interceptor.d.ts +0 -13
  147. package/lib/interceptors/auth.interceptor.d.ts +0 -14
  148. package/lib/interceptors/body.interceptor.d.ts +0 -11
  149. package/lib/interceptors/error.interceptor.d.ts +0 -9
  150. package/lib/interceptors/index.d.ts +0 -5
  151. package/lib/interceptors/toast.interceptor.d.ts +0 -13
  152. package/lib/models/aggregation.d.ts +0 -12
  153. package/lib/models/article-metadata.d.ts +0 -5
  154. package/lib/models/autocomplete.d.ts +0 -5
  155. package/lib/models/custom-json.d.ts +0 -69
  156. package/lib/models/filter-dropdown.d.ts +0 -10
  157. package/lib/models/index.d.ts +0 -6
  158. package/lib/models/user-settings.d.ts +0 -38
  159. package/lib/pipes/highlight-word.pipe.d.ts +0 -22
  160. package/lib/pipes/index.d.ts +0 -2
  161. package/lib/pipes/source-icon.pipe.d.ts +0 -51
  162. package/lib/public-api.d.ts +0 -14
  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 -183
  168. package/lib/services/autocomplete.service.d.ts +0 -96
  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 -114
  174. package/lib/services/navigation.service.d.ts +0 -33
  175. package/lib/services/saved-searches.service.d.ts +0 -149
  176. package/lib/services/search.service.d.ts +0 -159
  177. package/lib/services/selection-history.service.d.ts +0 -50
  178. package/lib/services/selection.service.d.ts +0 -123
  179. package/lib/stores/aggregations.store.d.ts +0 -25
  180. package/lib/stores/app.store.d.ts +0 -110
  181. package/lib/stores/application.store.d.ts +0 -83
  182. package/lib/stores/index.d.ts +0 -8
  183. package/lib/stores/principal.store.d.ts +0 -47
  184. package/lib/stores/query-params.store.d.ts +0 -128
  185. package/lib/stores/selection.store.d.ts +0 -52
  186. package/lib/stores/theme.store.d.ts +0 -66
  187. package/lib/stores/user-settings.store.d.ts +0 -111
  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 -57
  199. package/lib/web-services/app.service.d.ts +0 -30
  200. package/lib/web-services/audit.service.d.ts +0 -72
  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 -283
  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,89 +0,0 @@
1
- import { Injectable, Injector, inject } from '@angular/core';
2
- import { ActivatedRoute, Router } from '@angular/router';
3
- import { getState } from '@ngrx/signals';
4
- import { catchError, map, of } from 'rxjs';
5
- import { QueryParamsStore, UserSettingsStore } from '../stores';
6
- import { QueryService } from '../web-services/query.service';
7
- import * as i0 from "@angular/core";
8
- export class SearchService {
9
- constructor() {
10
- this.router = inject(Router);
11
- this.route = inject(ActivatedRoute);
12
- this.queryService = inject(QueryService);
13
- // Represents the last result of a search operation with getResult().
14
- this.result = {};
15
- this.queryParamsStore = inject(QueryParamsStore);
16
- this.userSettingsStore = inject(UserSettingsStore);
17
- this.injector = inject(Injector);
18
- }
19
- /**
20
- * Executes a search operation with the given commands and options.
21
- *
22
- * @param commands - An array of strings representing the search commands.
23
- * @param options - An optional object containing search options.
24
- * @param options.appendFilters - A boolean indicating whether to append existing filters to the search query. Defaults to true.
25
- * @param options.audit - An optional audit trail object to be stored in the navigation state.
26
- *
27
- * The method constructs query parameters based on the current state and the provided options,
28
- * then navigates to the specified commands with the constructed query parameters and audit trail.
29
- */
30
- search(commands, options = { appendFilters: true }) {
31
- const queryParams = {};
32
- const { text, filters = [], page, sort, tab } = getState(this.queryParamsStore);
33
- const { audit, appendFilters } = options;
34
- this.audit = audit;
35
- if (appendFilters) {
36
- queryParams.f = filters.length > 0 ? JSON.stringify(filters) : undefined;
37
- queryParams.p = page;
38
- queryParams.s = sort;
39
- queryParams.t = tab;
40
- queryParams.q = text;
41
- }
42
- // navigation state store the audit trail
43
- this.router.navigate(commands, { relativeTo: this.route, queryParamsHandling: 'merge', queryParams, state: { audit } });
44
- }
45
- /**
46
- * Retrieves the search result based on the provided query.
47
- *
48
- * @param q - A partial query object containing search parameters.
49
- * @returns An Observable of the search result.
50
- *
51
- * This method performs the following actions:
52
- * - Creates an audit event with the type "Search_Text" and the query text.
53
- * - Resets the audit property to undefined.
54
- * - Calls the search method of the queryService with the query, a flag to include the query name in records, and the audit event.
55
- * - Handles any errors by returning an empty Result object.
56
- * - Maps the search result to the service's result property.
57
- */
58
- getResult(q) {
59
- const audit = { type: "Search_Text", detail: { querytext: q?.text }, ...this.audit };
60
- this.audit = undefined;
61
- // add the query name to records, to have it available if we bookmark one
62
- return this.queryService.search(q, true, audit)
63
- .pipe(catchError(() => of({})), map((result) => this.result = result));
64
- }
65
- /**
66
- * Navigates to the specified page and returns the search result.
67
- * @param page - The page number to navigate to.
68
- * @returns A promise that resolves to the search result.
69
- */
70
- gotoPage(page) {
71
- this.queryParamsStore.patch({ page });
72
- this.search([], { audit: {
73
- type: "Search_GotoPage",
74
- detail: {
75
- page: page,
76
- fromresultid: this.result ? this.result.id : null
77
- }
78
- } });
79
- }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
81
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SearchService, providedIn: 'root' }); }
82
- }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SearchService, decorators: [{
84
- type: Injectable,
85
- args: [{
86
- providedIn: 'root'
87
- }]
88
- }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG9taWMtYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUk1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQW1CN0QsTUFBTSxPQUFPLGFBQWE7SUFIMUI7UUFJbUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJELHFFQUFxRTtRQUM5RCxXQUFNLEdBQVcsRUFBWSxDQUFDO1FBR2xCLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0EwRWhEO0lBdkVDOzs7Ozs7Ozs7O09BVUc7SUFDSSxNQUFNLENBQUMsUUFBa0IsRUFBRSxVQUF5QixFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7UUFDaEYsTUFBTSxXQUFXLEdBQWdCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEYsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFekMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixXQUFXLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDekUsV0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckIsV0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckIsV0FBVyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDcEIsV0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUVELHlDQUF5QztRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBSUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksU0FBUyxDQUFDLENBQWlCO1FBQ2hDLE1BQU0sS0FBSyxHQUFnQixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2Qix5RUFBeUU7UUFDekUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQzthQUM1QyxJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFZLENBQUMsQ0FBQyxFQUNsQyxHQUFHLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQzlDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFO2dCQUN2QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLElBQUk7b0JBQ1YsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO2lCQUNwRDthQUNBLEVBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs4R0FwRlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgaW5qZWN0LCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZ2V0U3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIG1hcCwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcnRpY2xlLCBBdWRpdEV2ZW50cywgUXVlcnksIFJlc3VsdCB9IGZyb20gJ0BzaW5lcXVhL2F0b21pYyc7XG5cbmltcG9ydCB7IFF1ZXJ5UGFyYW1zU3RvcmUsIFVzZXJTZXR0aW5nc1N0b3JlIH0gZnJvbSAnLi4vc3RvcmVzJztcbmltcG9ydCB7IFF1ZXJ5U2VydmljZSB9IGZyb20gJy4uL3dlYi1zZXJ2aWNlcy9xdWVyeS5zZXJ2aWNlJztcblxuXG5leHBvcnQgdHlwZSBTZWFyY2hPcHRpb25zID0ge1xuICBhcHBlbmRGaWx0ZXJzPzogYm9vbGVhbjtcbiAgYXVkaXQ/OiBBdWRpdEV2ZW50c1xufVxuXG50eXBlIFF1ZXJ5UGFyYW1zID0ge1xuICBmPzogc3RyaW5nOyAvLyBmaWx0ZXJzIGxpc3RcbiAgcD86IG51bWJlcjsgLy8gcGFnZSBudW1iZXJcbiAgcz86IHN0cmluZzsgLy8gc29ydCBuYW1lXG4gIHQ/OiBzdHJpbmc7IC8vIHRhYiBuYW1lXG4gIHE/OiBzdHJpbmc7IC8vIHF1ZXJ5IHRleHRcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5U2VydmljZSA9IGluamVjdChRdWVyeVNlcnZpY2UpO1xuXG4gIC8vIFJlcHJlc2VudHMgdGhlIGxhc3QgcmVzdWx0IG9mIGEgc2VhcmNoIG9wZXJhdGlvbiB3aXRoIGdldFJlc3VsdCgpLlxuICBwdWJsaWMgcmVzdWx0OiBSZXN1bHQgPSB7fSBhcyBSZXN1bHQ7XG4gIHB1YmxpYyBhdWRpdD86IEF1ZGl0RXZlbnRzO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyeVBhcmFtc1N0b3JlID0gaW5qZWN0KFF1ZXJ5UGFyYW1zU3RvcmUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlclNldHRpbmdzU3RvcmUgPSBpbmplY3QoVXNlclNldHRpbmdzU3RvcmUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgc2VhcmNoIG9wZXJhdGlvbiB3aXRoIHRoZSBnaXZlbiBjb21tYW5kcyBhbmQgb3B0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRzIC0gQW4gYXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHNlYXJjaCBjb21tYW5kcy5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvcHRpb25hbCBvYmplY3QgY29udGFpbmluZyBzZWFyY2ggb3B0aW9ucy5cbiAgICogQHBhcmFtIG9wdGlvbnMuYXBwZW5kRmlsdGVycyAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYXBwZW5kIGV4aXN0aW5nIGZpbHRlcnMgdG8gdGhlIHNlYXJjaCBxdWVyeS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMuYXVkaXQgLSBBbiBvcHRpb25hbCBhdWRpdCB0cmFpbCBvYmplY3QgdG8gYmUgc3RvcmVkIGluIHRoZSBuYXZpZ2F0aW9uIHN0YXRlLlxuICAgKlxuICAgKiBUaGUgbWV0aG9kIGNvbnN0cnVjdHMgcXVlcnkgcGFyYW1ldGVycyBiYXNlZCBvbiB0aGUgY3VycmVudCBzdGF0ZSBhbmQgdGhlIHByb3ZpZGVkIG9wdGlvbnMsXG4gICAqIHRoZW4gbmF2aWdhdGVzIHRvIHRoZSBzcGVjaWZpZWQgY29tbWFuZHMgd2l0aCB0aGUgY29uc3RydWN0ZWQgcXVlcnkgcGFyYW1ldGVycyBhbmQgYXVkaXQgdHJhaWwuXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoKGNvbW1hbmRzOiBzdHJpbmdbXSwgb3B0aW9uczogU2VhcmNoT3B0aW9ucyA9IHsgYXBwZW5kRmlsdGVyczogdHJ1ZSB9KTogdm9pZCB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zID0ge307XG4gICAgY29uc3QgeyB0ZXh0LCBmaWx0ZXJzID0gW10sIHBhZ2UsIHNvcnQsIHRhYiB9ID0gZ2V0U3RhdGUodGhpcy5xdWVyeVBhcmFtc1N0b3JlKTtcbiAgICBjb25zdCB7IGF1ZGl0LCBhcHBlbmRGaWx0ZXJzIH0gPSBvcHRpb25zO1xuXG4gICAgdGhpcy5hdWRpdCA9IGF1ZGl0O1xuXG4gICAgaWYgKGFwcGVuZEZpbHRlcnMpIHtcbiAgICAgIHF1ZXJ5UGFyYW1zLmYgPSBmaWx0ZXJzLmxlbmd0aCA+IDAgPyBKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSA6IHVuZGVmaW5lZDtcbiAgICAgIHF1ZXJ5UGFyYW1zLnAgPSBwYWdlO1xuICAgICAgcXVlcnlQYXJhbXMucyA9IHNvcnQ7XG4gICAgICBxdWVyeVBhcmFtcy50ID0gdGFiO1xuICAgICAgcXVlcnlQYXJhbXMucSA9IHRleHQ7XG4gICAgfVxuXG4gICAgLy8gbmF2aWdhdGlvbiBzdGF0ZSBzdG9yZSB0aGUgYXVkaXQgdHJhaWxcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLCBxdWVyeVBhcmFtcywgc3RhdGU6IHsgYXVkaXQgfSB9KTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBzZWFyY2ggcmVzdWx0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeS5cbiAgICpcbiAgICogQHBhcmFtIHEgLSBBIHBhcnRpYWwgcXVlcnkgb2JqZWN0IGNvbnRhaW5pbmcgc2VhcmNoIHBhcmFtZXRlcnMuXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgb2YgdGhlIHNlYXJjaCByZXN1bHQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgYWN0aW9uczpcbiAgICogLSBDcmVhdGVzIGFuIGF1ZGl0IGV2ZW50IHdpdGggdGhlIHR5cGUgXCJTZWFyY2hfVGV4dFwiIGFuZCB0aGUgcXVlcnkgdGV4dC5cbiAgICogLSBSZXNldHMgdGhlIGF1ZGl0IHByb3BlcnR5IHRvIHVuZGVmaW5lZC5cbiAgICogLSBDYWxscyB0aGUgc2VhcmNoIG1ldGhvZCBvZiB0aGUgcXVlcnlTZXJ2aWNlIHdpdGggdGhlIHF1ZXJ5LCBhIGZsYWcgdG8gaW5jbHVkZSB0aGUgcXVlcnkgbmFtZSBpbiByZWNvcmRzLCBhbmQgdGhlIGF1ZGl0IGV2ZW50LlxuICAgKiAtIEhhbmRsZXMgYW55IGVycm9ycyBieSByZXR1cm5pbmcgYW4gZW1wdHkgUmVzdWx0IG9iamVjdC5cbiAgICogLSBNYXBzIHRoZSBzZWFyY2ggcmVzdWx0IHRvIHRoZSBzZXJ2aWNlJ3MgcmVzdWx0IHByb3BlcnR5LlxuICAgKi9cbiAgcHVibGljIGdldFJlc3VsdChxOiBQYXJ0aWFsPFF1ZXJ5Pik6IE9ic2VydmFibGU8UmVzdWx0PiB7XG4gICAgY29uc3QgYXVkaXQ6IEF1ZGl0RXZlbnRzID0geyB0eXBlOiBcIlNlYXJjaF9UZXh0XCIsIGRldGFpbDogeyBxdWVyeXRleHQ6IHE/LnRleHQgfSwgIC4uLnRoaXMuYXVkaXR9O1xuICAgIHRoaXMuYXVkaXQgPSB1bmRlZmluZWQ7XG4gICAgLy8gYWRkIHRoZSBxdWVyeSBuYW1lIHRvIHJlY29yZHMsIHRvIGhhdmUgaXQgYXZhaWxhYmxlIGlmIHdlIGJvb2ttYXJrIG9uZVxuICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VydmljZS5zZWFyY2gocSwgdHJ1ZSwgYXVkaXQpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih7fSBhcyBSZXN1bHQpKSxcbiAgICAgICAgbWFwKChyZXN1bHQ6IFJlc3VsdCkgPT4gdGhpcy5yZXN1bHQgPSByZXN1bHQpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgc3BlY2lmaWVkIHBhZ2UgYW5kIHJldHVybnMgdGhlIHNlYXJjaCByZXN1bHQuXG4gICAqIEBwYXJhbSBwYWdlIC0gVGhlIHBhZ2UgbnVtYmVyIHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgc2VhcmNoIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBnb3RvUGFnZShwYWdlOiBudW1iZXIpIHtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zU3RvcmUucGF0Y2goeyBwYWdlIH0pO1xuICAgIHRoaXMuc2VhcmNoKFtdLCB7IGF1ZGl0OiB7XG4gICAgICB0eXBlOiBcIlNlYXJjaF9Hb3RvUGFnZVwiLFxuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIHBhZ2U6IHBhZ2UsXG4gICAgICAgIGZyb21yZXN1bHRpZDogdGhpcy5yZXN1bHQgPyB0aGlzLnJlc3VsdC5pZCA6IG51bGxcbiAgICB9XG4gICAgfX0pO1xuICB9XG59XG4iXX0=
@@ -1,92 +0,0 @@
1
- import { EventEmitter, Injectable, effect, inject } from '@angular/core';
2
- import { getState } from '@ngrx/signals';
3
- import { SelectionStore } from '../stores';
4
- import { SelectionService } from './selection.service';
5
- import * as i0 from "@angular/core";
6
- /*
7
- * The `SelectionHistoryService` class is responsible for managing the selection history.
8
- *
9
- * It keeps track of the history of selected articles and provides methods to navigate through the history.
10
- * The service also emits events when the selection history changes.
11
- * This service is used by the Drawer
12
- */
13
- export class SelectionHistoryService {
14
- constructor() {
15
- this.selectionHistoryEvent = new EventEmitter();
16
- this.selectionService = inject(SelectionService);
17
- this.selectionStore = inject(SelectionStore);
18
- this.history = [];
19
- effect(() => {
20
- const { article } = getState(this.selectionStore);
21
- if (!!article && article !== this.history[this.history.length - 1]) {
22
- this.history.push(article);
23
- this.selectionHistoryEvent.next('new');
24
- }
25
- });
26
- }
27
- /**
28
- * Retrieves the index of the current selection.
29
- *
30
- * @returns {number} The index of the current selection, which is the last element in the history array.
31
- */
32
- getCurrentSelectionIndex() {
33
- return this.history.length - 1;
34
- }
35
- /**
36
- * Retrieves an article from the selection history at the specified index.
37
- *
38
- * @param index - The index of the article to retrieve.
39
- * @returns The article at the specified index, or `undefined` if the index is out of bounds.
40
- */
41
- getSelection(index) {
42
- if (index < 0 || index >= this.history.length)
43
- return undefined;
44
- return this.history[index];
45
- }
46
- /**
47
- * Retrieves the length of the history array.
48
- *
49
- * @returns {number} The number of entries in the history.
50
- */
51
- getHistoryLength() {
52
- return this.history.length;
53
- }
54
- /**
55
- * Clears the selection history and resets the current article selection.
56
- *
57
- * This method performs the following actions:
58
- * - Empties the history array.
59
- * - Calls the `clearCurrentArticle` method on the `selectionService` to reset the current article selection.
60
- */
61
- clearHistory() {
62
- this.history.length = 0;
63
- this.selectionService.clearCurrentArticle();
64
- }
65
- /**
66
- * Navigates back in the selection history.
67
- *
68
- * Removes the most recent entry from the history. If the history is empty after this operation,
69
- * it returns `undefined`. Otherwise, it sets the current article to the last entry in the history,
70
- * triggers a 'back' event, and returns the last entry.
71
- *
72
- * @returns {Article | undefined} The last article in the history, or `undefined` if the history is empty.
73
- */
74
- back() {
75
- this.history.pop();
76
- if (this.history.length === 0)
77
- return undefined;
78
- const last = this.history[this.history.length - 1];
79
- this.selectionService.setCurrentArticle(last);
80
- this.selectionHistoryEvent.next('back');
81
- return last;
82
- }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SelectionHistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
84
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SelectionHistoryService, providedIn: 'root' }); }
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SelectionHistoryService, decorators: [{
87
- type: Injectable,
88
- args: [{
89
- providedIn: 'root'
90
- }]
91
- }], ctorParameters: () => [] });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWhpc3Rvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0b21pYy1hbmd1bGFyL3NyYy9saWIvc2VydmljZXMvc2VsZWN0aW9uLWhpc3Rvcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNdkQ7Ozs7OztHQU1HO0FBS0gsTUFBTSxPQUFPLHVCQUF1QjtJQVFsQztRQVBnQiwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUVqRSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV4QyxZQUFPLEdBQWMsRUFBRSxDQUFDO1FBR3ZDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUVsRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx3QkFBd0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksWUFBWSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVoRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWTtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksSUFBSTtRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBakZVLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuXG5pbXBvcnQgeyBBcnRpY2xlIH0gZnJvbSAnQHNpbmVxdWEvYXRvbWljJztcblxuaW1wb3J0IHsgU2VsZWN0aW9uU3RvcmUgfSBmcm9tICcuLi9zdG9yZXMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VsZWN0aW9uLnNlcnZpY2UnO1xuXG4vLyBiYWNrIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBjbG9zZSB0aGUgY3VycmVudCBzZWxlY3Rpb24gYW5kIHdhbnQgdG8gZ28gYmFjayB0byB0aGUgcHJldmlvdXMgb25lXG4vLyBuZXcgaXMgdXNlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdCBhIG5ldyBhcnRpY2xlXG5leHBvcnQgdHlwZSBTZWxlY3Rpb25IaXN0b3J5RXZlbnQgPSAnYmFjaycgfCAnbmV3JztcblxuLypcbiAqIFRoZSBgU2VsZWN0aW9uSGlzdG9yeVNlcnZpY2VgIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgc2VsZWN0aW9uIGhpc3RvcnkuXG4gKlxuICogSXQga2VlcHMgdHJhY2sgb2YgdGhlIGhpc3Rvcnkgb2Ygc2VsZWN0ZWQgYXJ0aWNsZXMgYW5kIHByb3ZpZGVzIG1ldGhvZHMgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgaGlzdG9yeS5cbiAqIFRoZSBzZXJ2aWNlIGFsc28gZW1pdHMgZXZlbnRzIHdoZW4gdGhlIHNlbGVjdGlvbiBoaXN0b3J5IGNoYW5nZXMuXG4gKiBUaGlzIHNlcnZpY2UgaXMgdXNlZCBieSB0aGUgRHJhd2VyXG4gKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uSGlzdG9yeVNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uSGlzdG9yeUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25IaXN0b3J5RXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFNlbGVjdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvblN0b3JlID0gaW5qZWN0KFNlbGVjdGlvblN0b3JlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGhpc3Rvcnk6IEFydGljbGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB7IGFydGljbGUgfSA9IGdldFN0YXRlKHRoaXMuc2VsZWN0aW9uU3RvcmUpO1xuXG4gICAgICBpZiAoISFhcnRpY2xlICYmIGFydGljbGUgIT09IHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5LnB1c2goYXJ0aWNsZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uSGlzdG9yeUV2ZW50Lm5leHQoJ25ldycpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24sIHdoaWNoIGlzIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGhpc3RvcnkgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudFNlbGVjdGlvbkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeS5sZW5ndGggLSAxO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbiBhcnRpY2xlIGZyb20gdGhlIHNlbGVjdGlvbiBoaXN0b3J5IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgYXJ0aWNsZSB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMgVGhlIGFydGljbGUgYXQgdGhlIHNwZWNpZmllZCBpbmRleCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0U2VsZWN0aW9uKGluZGV4OiBudW1iZXIpOiBBcnRpY2xlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMuaGlzdG9yeS5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5W2luZGV4XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGxlbmd0aCBvZiB0aGUgaGlzdG9yeSBhcnJheS5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBoaXN0b3J5LlxuICAgKi9cbiAgcHVibGljIGdldEhpc3RvcnlMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5Lmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIHNlbGVjdGlvbiBoaXN0b3J5IGFuZCByZXNldHMgdGhlIGN1cnJlbnQgYXJ0aWNsZSBzZWxlY3Rpb24uXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgYWN0aW9uczpcbiAgICogLSBFbXB0aWVzIHRoZSBoaXN0b3J5IGFycmF5LlxuICAgKiAtIENhbGxzIHRoZSBgY2xlYXJDdXJyZW50QXJ0aWNsZWAgbWV0aG9kIG9uIHRoZSBgc2VsZWN0aW9uU2VydmljZWAgdG8gcmVzZXQgdGhlIGN1cnJlbnQgYXJ0aWNsZSBzZWxlY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgY2xlYXJIaXN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuaGlzdG9yeS5sZW5ndGggPSAwO1xuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5jbGVhckN1cnJlbnRBcnRpY2xlKCk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIGJhY2sgaW4gdGhlIHNlbGVjdGlvbiBoaXN0b3J5LlxuICAgKlxuICAgKiBSZW1vdmVzIHRoZSBtb3N0IHJlY2VudCBlbnRyeSBmcm9tIHRoZSBoaXN0b3J5LiBJZiB0aGUgaGlzdG9yeSBpcyBlbXB0eSBhZnRlciB0aGlzIG9wZXJhdGlvbixcbiAgICogaXQgcmV0dXJucyBgdW5kZWZpbmVkYC4gT3RoZXJ3aXNlLCBpdCBzZXRzIHRoZSBjdXJyZW50IGFydGljbGUgdG8gdGhlIGxhc3QgZW50cnkgaW4gdGhlIGhpc3RvcnksXG4gICAqIHRyaWdnZXJzIGEgJ2JhY2snIGV2ZW50LCBhbmQgcmV0dXJucyB0aGUgbGFzdCBlbnRyeS5cbiAgICpcbiAgICogQHJldHVybnMge0FydGljbGUgfCB1bmRlZmluZWR9IFRoZSBsYXN0IGFydGljbGUgaW4gdGhlIGhpc3RvcnksIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBoaXN0b3J5IGlzIGVtcHR5LlxuICAgKi9cbiAgcHVibGljIGJhY2soKTogQXJ0aWNsZSB8IHVuZGVmaW5lZCB7XG4gICAgdGhpcy5oaXN0b3J5LnBvcCgpO1xuXG4gICAgaWYgKHRoaXMuaGlzdG9yeS5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBsYXN0ID0gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeS5sZW5ndGggLSAxXTtcblxuICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZXRDdXJyZW50QXJ0aWNsZShsYXN0KTtcbiAgICB0aGlzLnNlbGVjdGlvbkhpc3RvcnlFdmVudC5uZXh0KCdiYWNrJyk7XG5cbiAgICByZXR1cm4gbGFzdDtcbiAgfVxufVxuIl19
@@ -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,59 +0,0 @@
1
- import { withDevtools } from "@angular-architects/ngrx-toolkit";
2
- import { getState, patchState, signalStore, signalStoreFeature, withMethods, withState } from "@ngrx/signals";
3
- export const AggregationsStore = signalStore(
4
- // providing store at the root level
5
- { providedIn: 'root' }, withDevtools('Aggregations'), withAggregationsFeatures());
6
- export function withAggregationsFeatures() {
7
- return signalStoreFeature(withState({ aggregations: [] }), withMethods((store) => ({
8
- /**
9
- * Updates the state with the provided aggregations.
10
- *
11
- * @param {Aggregation[]} aggregations - The new aggregations to update the state with.
12
- */
13
- update(aggregations) {
14
- patchState(store, (state) => {
15
- return { ...state, aggregations };
16
- });
17
- },
18
- /**
19
- * Updates an existing aggregation in the store.
20
- *
21
- * @param aggregation - The aggregation object to update.
22
- * @returns void
23
- */
24
- updateAggregation(aggregation) {
25
- patchState(store, (state) => {
26
- const index = state.aggregations.findIndex((a) => a.name === aggregation.name);
27
- if (index !== -1) {
28
- state.aggregations[index] = aggregation;
29
- }
30
- return { ...state };
31
- });
32
- },
33
- /**
34
- * Clears the aggregations in the store by setting the `aggregations` property to an empty array.
35
- *
36
- * @remarks
37
- * This method uses the `patchState` function to update the state of the store.
38
- */
39
- clear() {
40
- patchState(store, (state) => {
41
- return { ...state, aggregations: [] };
42
- });
43
- },
44
- /**
45
- * Retrieves an aggregation by name or column.
46
- *
47
- * @param name - The name or column of the aggregation to retrieve.
48
- * @param kind - The kind of aggregation to retrieve. Defaults to "name".
49
- * @returns The matching aggregation, or undefined if not found.
50
- */
51
- getAggregation(name, kind = "name") {
52
- if (kind === "column") {
53
- return getState(store).aggregations.find((aggregation) => aggregation.column === name);
54
- }
55
- return getState(store).aggregations.find((aggregation) => aggregation.name === name);
56
- }
57
- })));
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb25zLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvbWljLWFuZ3VsYXIvc3JjL2xpYi9zdG9yZXMvYWdncmVnYXRpb25zLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVE5RyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXO0FBQzFDLG9DQUFvQztBQUNwQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFDdEIsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUU1Qix3QkFBd0IsRUFBRSxDQUMzQixDQUFDO0FBRUYsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxPQUFPLGtCQUFrQixDQUN2QixTQUFTLENBQUMsRUFBRSxZQUFZLEVBQUUsRUFBbUIsRUFBdUIsQ0FBQyxFQUNyRSxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEI7Ozs7V0FJRztRQUNILE1BQU0sQ0FBQyxZQUEyQjtZQUNoQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQTtZQUNuQyxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRDs7Ozs7V0FLRztRQUNILGlCQUFpQixDQUFDLFdBQXdCO1lBQ3hDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNqQixLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLFdBQVcsQ0FBQztnQkFDMUMsQ0FBQztnQkFDRCxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQTtZQUNyQixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRDs7Ozs7V0FLRztRQUNILEtBQUs7WUFDSCxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUE7WUFDdkMsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0Q7Ozs7OztXQU1HO1FBQ0gsY0FBYyxDQUFDLElBQVksRUFBRSxPQUEwQixNQUFNO1lBQzNELElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3pGLENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7S0FDRixDQUFDLENBQUMsQ0FDSixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdpdGhEZXZ0b29scyB9IGZyb20gXCJAYW5ndWxhci1hcmNoaXRlY3RzL25ncngtdG9vbGtpdFwiO1xyXG5pbXBvcnQgeyBnZXRTdGF0ZSwgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHNpZ25hbFN0b3JlRmVhdHVyZSwgd2l0aE1ldGhvZHMsIHdpdGhTdGF0ZSB9IGZyb20gXCJAbmdyeC9zaWduYWxzXCI7XHJcblxyXG5pbXBvcnQgeyBBZ2dyZWdhdGlvbiB9IGZyb20gXCJAc2luZXF1YS9hdG9taWNcIjtcclxuXHJcbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uc1N0YXRlID0ge1xyXG4gIGFnZ3JlZ2F0aW9uczogQWdncmVnYXRpb25bXVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQWdncmVnYXRpb25zU3RvcmUgPSBzaWduYWxTdG9yZShcclxuICAvLyBwcm92aWRpbmcgc3RvcmUgYXQgdGhlIHJvb3QgbGV2ZWxcclxuICB7IHByb3ZpZGVkSW46ICdyb290JyB9LFxyXG4gIHdpdGhEZXZ0b29scygnQWdncmVnYXRpb25zJyksXHJcblxyXG4gIHdpdGhBZ2dyZWdhdGlvbnNGZWF0dXJlcygpXHJcbik7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gd2l0aEFnZ3JlZ2F0aW9uc0ZlYXR1cmVzKCkge1xyXG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXHJcbiAgICB3aXRoU3RhdGUoeyBhZ2dyZWdhdGlvbnM6IFtdIGFzIEFnZ3JlZ2F0aW9uW10gfSBhcyBBZ2dyZWdhdGlvbnNTdGF0ZSksXHJcbiAgICB3aXRoTWV0aG9kcygoc3RvcmUpID0+ICh7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBVcGRhdGVzIHRoZSBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBhZ2dyZWdhdGlvbnMuXHJcbiAgICAgICAqXHJcbiAgICAgICAqIEBwYXJhbSB7QWdncmVnYXRpb25bXX0gYWdncmVnYXRpb25zIC0gVGhlIG5ldyBhZ2dyZWdhdGlvbnMgdG8gdXBkYXRlIHRoZSBzdGF0ZSB3aXRoLlxyXG4gICAgICAgKi9cclxuICAgICAgdXBkYXRlKGFnZ3JlZ2F0aW9uczogQWdncmVnYXRpb25bXSkge1xyXG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFnZ3JlZ2F0aW9ucyB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSxcclxuICAgICAgLyoqXHJcbiAgICAgICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgYWdncmVnYXRpb24gaW4gdGhlIHN0b3JlLlxyXG4gICAgICAgKlxyXG4gICAgICAgKiBAcGFyYW0gYWdncmVnYXRpb24gLSBUaGUgYWdncmVnYXRpb24gb2JqZWN0IHRvIHVwZGF0ZS5cclxuICAgICAgICogQHJldHVybnMgdm9pZFxyXG4gICAgICAgKi9cclxuICAgICAgdXBkYXRlQWdncmVnYXRpb24oYWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uKSB7XHJcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmFnZ3JlZ2F0aW9ucy5maW5kSW5kZXgoKGEpID0+IGEubmFtZSA9PT0gYWdncmVnYXRpb24ubmFtZSk7XHJcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHN0YXRlLmFnZ3JlZ2F0aW9uc1tpbmRleF0gPSBhZ2dyZWdhdGlvbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB7IC4uLnN0YXRlIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9LFxyXG4gICAgICAvKipcclxuICAgICAgICogQ2xlYXJzIHRoZSBhZ2dyZWdhdGlvbnMgaW4gdGhlIHN0b3JlIGJ5IHNldHRpbmcgdGhlIGBhZ2dyZWdhdGlvbnNgIHByb3BlcnR5IHRvIGFuIGVtcHR5IGFycmF5LlxyXG4gICAgICAgKlxyXG4gICAgICAgKiBAcmVtYXJrc1xyXG4gICAgICAgKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBgcGF0Y2hTdGF0ZWAgZnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgc3RvcmUuXHJcbiAgICAgICAqL1xyXG4gICAgICBjbGVhcigpIHtcclxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCAoc3RhdGUpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhZ2dyZWdhdGlvbnM6IFtdIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9LFxyXG4gICAgICAvKipcclxuICAgICAgICogUmV0cmlldmVzIGFuIGFnZ3JlZ2F0aW9uIGJ5IG5hbWUgb3IgY29sdW1uLlxyXG4gICAgICAgKiBcclxuICAgICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvciBjb2x1bW4gb2YgdGhlIGFnZ3JlZ2F0aW9uIHRvIHJldHJpZXZlLlxyXG4gICAgICAgKiBAcGFyYW0ga2luZCAtIFRoZSBraW5kIG9mIGFnZ3JlZ2F0aW9uIHRvIHJldHJpZXZlLiBEZWZhdWx0cyB0byBcIm5hbWVcIi5cclxuICAgICAgICogQHJldHVybnMgVGhlIG1hdGNoaW5nIGFnZ3JlZ2F0aW9uLCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kLlxyXG4gICAgICAgKi9cclxuICAgICAgZ2V0QWdncmVnYXRpb24obmFtZTogc3RyaW5nLCBraW5kOiBcImNvbHVtblwiIHwgXCJuYW1lXCIgPSBcIm5hbWVcIikge1xyXG4gICAgICAgIGlmIChraW5kID09PSBcImNvbHVtblwiKSB7XHJcbiAgICAgICAgICByZXR1cm4gZ2V0U3RhdGUoc3RvcmUpLmFnZ3JlZ2F0aW9ucy5maW5kKChhZ2dyZWdhdGlvbikgPT4gYWdncmVnYXRpb24uY29sdW1uID09PSBuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGdldFN0YXRlKHN0b3JlKS5hZ2dyZWdhdGlvbnMuZmluZCgoYWdncmVnYXRpb24pID0+IGFnZ3JlZ2F0aW9uLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9KSlcclxuICApXHJcbn0iXX0=