@sinequa/atomic-angular 0.0.146 → 0.1.33

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 (220) hide show
  1. package/README.md +145 -0
  2. package/components/no-result/i18n/de.json +5 -0
  3. package/components/no-result/i18n/en.json +5 -0
  4. package/components/no-result/i18n/fr.json +5 -0
  5. package/components/sort-selector/i18n/de.json +3 -0
  6. package/components/sort-selector/i18n/en.json +3 -0
  7. package/components/sort-selector/i18n/fr.json +3 -0
  8. package/components/source/i18n/de.json +3 -0
  9. package/components/source/i18n/en.json +3 -0
  10. package/components/source/i18n/fr.json +3 -0
  11. package/features/alerts/i18n/de.json +33 -0
  12. package/features/alerts/i18n/en.json +33 -0
  13. package/features/alerts/i18n/fr.json +33 -0
  14. package/features/bookmarks/i18n/de.json +11 -0
  15. package/features/bookmarks/i18n/en.json +11 -0
  16. package/features/bookmarks/i18n/fr.json +11 -0
  17. package/features/collections/i18n/de.json +17 -0
  18. package/features/collections/i18n/en.json +17 -0
  19. package/features/collections/i18n/fr.json +16 -0
  20. package/features/dialogs/i18n/de.json +15 -0
  21. package/features/dialogs/i18n/en.json +15 -0
  22. package/features/dialogs/i18n/fr.json +15 -0
  23. package/features/did-you-mean/i18n/de.json +5 -0
  24. package/features/did-you-mean/i18n/en.json +5 -0
  25. package/features/did-you-mean/i18n/fr.json +5 -0
  26. package/features/drawer/i18n/de.json +22 -0
  27. package/features/drawer/i18n/en.json +22 -0
  28. package/features/drawer/i18n/fr.json +22 -0
  29. package/features/export/i18n/de.json +10 -0
  30. package/features/export/i18n/en.json +10 -0
  31. package/features/export/i18n/fr.json +10 -0
  32. package/features/feedback/i18n/de.json +26 -0
  33. package/features/feedback/i18n/en.json +26 -0
  34. package/features/feedback/i18n/fr.json +26 -0
  35. package/features/filters/i18n/de.json +14 -0
  36. package/features/filters/i18n/en.json +14 -0
  37. package/features/filters/i18n/fr.json +14 -0
  38. package/features/labels/i18n/de.json +8 -0
  39. package/features/labels/i18n/en.json +8 -0
  40. package/features/labels/i18n/fr.json +8 -0
  41. package/features/searches/i18n/de.json +15 -0
  42. package/features/searches/i18n/en.json +15 -0
  43. package/features/searches/i18n/fr.json +15 -0
  44. package/features/sign-in/i18n/de.json +12 -0
  45. package/features/sign-in/i18n/en.json +12 -0
  46. package/features/sign-in/i18n/fr.json +14 -0
  47. package/fesm2022/sinequa-atomic-angular.mjs +9699 -3271
  48. package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
  49. package/index.d.ts +6729 -3
  50. package/package.json +71 -10
  51. package/assets/tailwind.css +0 -334
  52. package/esm2022/lib/assistant/index.mjs +0 -2
  53. package/esm2022/lib/assistant/signalR.web.service.mjs +0 -81
  54. package/esm2022/lib/components/dropdown-input.mjs +0 -97
  55. package/esm2022/lib/components/dropdown-list.mjs +0 -35
  56. package/esm2022/lib/components/dropdown.mjs +0 -127
  57. package/esm2022/lib/components/index.mjs +0 -7
  58. package/esm2022/lib/components/menu/index.mjs +0 -3
  59. package/esm2022/lib/components/menu/menu-item.mjs +0 -22
  60. package/esm2022/lib/components/menu/menu.mjs +0 -99
  61. package/esm2022/lib/components/metadata/index.mjs +0 -2
  62. package/esm2022/lib/components/metadata/metadata.component.mjs +0 -65
  63. package/esm2022/lib/components/theme/index.mjs +0 -3
  64. package/esm2022/lib/components/theme/theme-selector.component.mjs +0 -67
  65. package/esm2022/lib/components/theme/theme-toggle.component.mjs +0 -67
  66. package/esm2022/lib/directives/index.mjs +0 -5
  67. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -47
  68. package/esm2022/lib/directives/select-article-on-click.directive.mjs +0 -39
  69. package/esm2022/lib/directives/show-bookmark.directive.mjs +0 -55
  70. package/esm2022/lib/directives/theme-provider.directive.mjs +0 -31
  71. package/esm2022/lib/guards/auth.guard.mjs +0 -27
  72. package/esm2022/lib/guards/index.mjs +0 -3
  73. package/esm2022/lib/guards/initialization.guard.mjs +0 -41
  74. package/esm2022/lib/interceptors/audit.interceptor.mjs +0 -23
  75. package/esm2022/lib/interceptors/auth.interceptor.mjs +0 -49
  76. package/esm2022/lib/interceptors/body.interceptor.mjs +0 -24
  77. package/esm2022/lib/interceptors/error.interceptor.mjs +0 -35
  78. package/esm2022/lib/interceptors/index.mjs +0 -7
  79. package/esm2022/lib/interceptors/toast.interceptor.mjs +0 -27
  80. package/esm2022/lib/models/aggregation.mjs +0 -2
  81. package/esm2022/lib/models/article-metadata.mjs +0 -2
  82. package/esm2022/lib/models/autocomplete.mjs +0 -2
  83. package/esm2022/lib/models/custom-json.mjs +0 -2
  84. package/esm2022/lib/models/filter-dropdown.mjs +0 -2
  85. package/esm2022/lib/models/index.mjs +0 -7
  86. package/esm2022/lib/models/user-settings.mjs +0 -2
  87. package/esm2022/lib/pipes/highlight-word.pipe.mjs +0 -33
  88. package/esm2022/lib/pipes/index.mjs +0 -3
  89. package/esm2022/lib/pipes/source-icon.pipe.mjs +0 -43
  90. package/esm2022/lib/public-api.mjs +0 -18
  91. package/esm2022/lib/resolvers/index.mjs +0 -2
  92. package/esm2022/lib/resolvers/query-name-resolver.mjs +0 -14
  93. package/esm2022/lib/resources/index.mjs +0 -2
  94. package/esm2022/lib/resources/themes.mjs +0 -53
  95. package/esm2022/lib/services/application.service.mjs +0 -245
  96. package/esm2022/lib/services/autocomplete.service.mjs +0 -85
  97. package/esm2022/lib/services/drawer/backdrop.service.mjs +0 -23
  98. package/esm2022/lib/services/drawer/drawer-stack.service.mjs +0 -152
  99. package/esm2022/lib/services/drawer/drawer.service.mjs +0 -38
  100. package/esm2022/lib/services/index.mjs +0 -12
  101. package/esm2022/lib/services/label.service.mjs +0 -161
  102. package/esm2022/lib/services/navigation.service.mjs +0 -59
  103. package/esm2022/lib/services/saved-searches.service.mjs +0 -75
  104. package/esm2022/lib/services/search.service.mjs +0 -89
  105. package/esm2022/lib/services/selection-history.service.mjs +0 -92
  106. package/esm2022/lib/services/selection.service.mjs +0 -87
  107. package/esm2022/lib/stores/aggregations.store.mjs +0 -59
  108. package/esm2022/lib/stores/app.store.mjs +0 -270
  109. package/esm2022/lib/stores/application.store.mjs +0 -87
  110. package/esm2022/lib/stores/index.mjs +0 -9
  111. package/esm2022/lib/stores/principal.store.mjs +0 -47
  112. package/esm2022/lib/stores/query-params.store.mjs +0 -207
  113. package/esm2022/lib/stores/selection.store.mjs +0 -45
  114. package/esm2022/lib/stores/theme.store.mjs +0 -116
  115. package/esm2022/lib/stores/user-settings.store.mjs +0 -391
  116. package/esm2022/lib/tokens/highlights.mjs +0 -32
  117. package/esm2022/lib/tokens/index.mjs +0 -2
  118. package/esm2022/lib/utils/debounced-signal.mjs +0 -38
  119. package/esm2022/lib/utils/index.mjs +0 -8
  120. package/esm2022/lib/utils/inline-worker.mjs +0 -40
  121. package/esm2022/lib/utils/query.mjs +0 -58
  122. package/esm2022/lib/utils/routes.mjs +0 -28
  123. package/esm2022/lib/utils/tailwind-utils.mjs +0 -6
  124. package/esm2022/lib/utils/theme-body-hook.mjs +0 -18
  125. package/esm2022/lib/utils/theme-registry.mjs +0 -6
  126. package/esm2022/lib/web-services/aggregations.service.mjs +0 -104
  127. package/esm2022/lib/web-services/app.service.mjs +0 -48
  128. package/esm2022/lib/web-services/audit.service.mjs +0 -122
  129. package/esm2022/lib/web-services/index.mjs +0 -10
  130. package/esm2022/lib/web-services/json-method-plugin.service.mjs +0 -54
  131. package/esm2022/lib/web-services/preview.service.mjs +0 -327
  132. package/esm2022/lib/web-services/principal.service.mjs +0 -46
  133. package/esm2022/lib/web-services/query.service.mjs +0 -123
  134. package/esm2022/lib/web-services/text-chunck.service.mjs +0 -46
  135. package/esm2022/public-api.mjs +0 -5
  136. package/esm2022/sinequa-atomic-angular.mjs +0 -5
  137. package/lib/assistant/index.d.ts +0 -1
  138. package/lib/assistant/signalR.web.service.d.ts +0 -46
  139. package/lib/components/dropdown-input.d.ts +0 -18
  140. package/lib/components/dropdown-list.d.ts +0 -8
  141. package/lib/components/dropdown.d.ts +0 -50
  142. package/lib/components/index.d.ts +0 -6
  143. package/lib/components/menu/index.d.ts +0 -2
  144. package/lib/components/menu/menu-item.d.ts +0 -8
  145. package/lib/components/menu/menu.d.ts +0 -24
  146. package/lib/components/metadata/index.d.ts +0 -1
  147. package/lib/components/metadata/metadata.component.d.ts +0 -24
  148. package/lib/components/theme/index.d.ts +0 -2
  149. package/lib/components/theme/theme-selector.component.d.ts +0 -70
  150. package/lib/components/theme/theme-toggle.component.d.ts +0 -10
  151. package/lib/directives/index.d.ts +0 -4
  152. package/lib/directives/infinite-scroll.directive.d.ts +0 -30
  153. package/lib/directives/select-article-on-click.directive.d.ts +0 -14
  154. package/lib/directives/show-bookmark.directive.d.ts +0 -60
  155. package/lib/directives/theme-provider.directive.d.ts +0 -20
  156. package/lib/guards/auth.guard.d.ts +0 -7
  157. package/lib/guards/index.d.ts +0 -2
  158. package/lib/guards/initialization.guard.d.ts +0 -20
  159. package/lib/interceptors/audit.interceptor.d.ts +0 -13
  160. package/lib/interceptors/auth.interceptor.d.ts +0 -14
  161. package/lib/interceptors/body.interceptor.d.ts +0 -11
  162. package/lib/interceptors/error.interceptor.d.ts +0 -9
  163. package/lib/interceptors/index.d.ts +0 -5
  164. package/lib/interceptors/toast.interceptor.d.ts +0 -13
  165. package/lib/models/aggregation.d.ts +0 -12
  166. package/lib/models/article-metadata.d.ts +0 -5
  167. package/lib/models/autocomplete.d.ts +0 -5
  168. package/lib/models/custom-json.d.ts +0 -69
  169. package/lib/models/filter-dropdown.d.ts +0 -10
  170. package/lib/models/index.d.ts +0 -6
  171. package/lib/models/user-settings.d.ts +0 -38
  172. package/lib/pipes/highlight-word.pipe.d.ts +0 -22
  173. package/lib/pipes/index.d.ts +0 -2
  174. package/lib/pipes/source-icon.pipe.d.ts +0 -51
  175. package/lib/public-api.d.ts +0 -14
  176. package/lib/resolvers/index.d.ts +0 -1
  177. package/lib/resolvers/query-name-resolver.d.ts +0 -9
  178. package/lib/resources/index.d.ts +0 -1
  179. package/lib/resources/themes.d.ts +0 -51
  180. package/lib/services/application.service.d.ts +0 -183
  181. package/lib/services/autocomplete.service.d.ts +0 -96
  182. package/lib/services/drawer/backdrop.service.d.ts +0 -9
  183. package/lib/services/drawer/drawer-stack.service.d.ts +0 -70
  184. package/lib/services/drawer/drawer.service.d.ts +0 -15
  185. package/lib/services/index.d.ts +0 -11
  186. package/lib/services/label.service.d.ts +0 -114
  187. package/lib/services/navigation.service.d.ts +0 -33
  188. package/lib/services/saved-searches.service.d.ts +0 -149
  189. package/lib/services/search.service.d.ts +0 -159
  190. package/lib/services/selection-history.service.d.ts +0 -50
  191. package/lib/services/selection.service.d.ts +0 -123
  192. package/lib/stores/aggregations.store.d.ts +0 -25
  193. package/lib/stores/app.store.d.ts +0 -110
  194. package/lib/stores/application.store.d.ts +0 -83
  195. package/lib/stores/index.d.ts +0 -8
  196. package/lib/stores/principal.store.d.ts +0 -47
  197. package/lib/stores/query-params.store.d.ts +0 -128
  198. package/lib/stores/selection.store.d.ts +0 -52
  199. package/lib/stores/theme.store.d.ts +0 -66
  200. package/lib/stores/user-settings.store.d.ts +0 -111
  201. package/lib/tokens/highlights.d.ts +0 -8
  202. package/lib/tokens/index.d.ts +0 -1
  203. package/lib/utils/debounced-signal.d.ts +0 -25
  204. package/lib/utils/index.d.ts +0 -7
  205. package/lib/utils/inline-worker.d.ts +0 -11
  206. package/lib/utils/query.d.ts +0 -26
  207. package/lib/utils/routes.d.ts +0 -16
  208. package/lib/utils/tailwind-utils.d.ts +0 -2
  209. package/lib/utils/theme-body-hook.d.ts +0 -6
  210. package/lib/utils/theme-registry.d.ts +0 -3
  211. package/lib/web-services/aggregations.service.d.ts +0 -57
  212. package/lib/web-services/app.service.d.ts +0 -30
  213. package/lib/web-services/audit.service.d.ts +0 -72
  214. package/lib/web-services/index.d.ts +0 -9
  215. package/lib/web-services/json-method-plugin.service.d.ts +0 -41
  216. package/lib/web-services/preview.service.d.ts +0 -283
  217. package/lib/web-services/principal.service.d.ts +0 -28
  218. package/lib/web-services/query.service.d.ts +0 -29
  219. package/lib/web-services/text-chunck.service.d.ts +0 -22
  220. 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=