@sinequa/atomic-angular 0.1.36 → 0.1.38

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 (49) hide show
  1. package/fesm2022/sinequa-atomic-angular.mjs +561 -549
  2. package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
  3. package/index.d.ts +2687 -2687
  4. package/package.json +2 -4
  5. /package/{components → src/components}/no-result/i18n/de.json +0 -0
  6. /package/{components → src/components}/no-result/i18n/en.json +0 -0
  7. /package/{components → src/components}/no-result/i18n/fr.json +0 -0
  8. /package/{components → src/components}/sort-selector/i18n/de.json +0 -0
  9. /package/{components → src/components}/sort-selector/i18n/en.json +0 -0
  10. /package/{components → src/components}/sort-selector/i18n/fr.json +0 -0
  11. /package/{components → src/components}/source/i18n/de.json +0 -0
  12. /package/{components → src/components}/source/i18n/en.json +0 -0
  13. /package/{components → src/components}/source/i18n/fr.json +0 -0
  14. /package/{features → src/features}/alerts/i18n/de.json +0 -0
  15. /package/{features → src/features}/alerts/i18n/en.json +0 -0
  16. /package/{features → src/features}/alerts/i18n/fr.json +0 -0
  17. /package/{features → src/features}/bookmarks/i18n/de.json +0 -0
  18. /package/{features → src/features}/bookmarks/i18n/en.json +0 -0
  19. /package/{features → src/features}/bookmarks/i18n/fr.json +0 -0
  20. /package/{features → src/features}/collections/i18n/de.json +0 -0
  21. /package/{features → src/features}/collections/i18n/en.json +0 -0
  22. /package/{features → src/features}/collections/i18n/fr.json +0 -0
  23. /package/{features → src/features}/dialogs/i18n/de.json +0 -0
  24. /package/{features → src/features}/dialogs/i18n/en.json +0 -0
  25. /package/{features → src/features}/dialogs/i18n/fr.json +0 -0
  26. /package/{features → src/features}/did-you-mean/i18n/de.json +0 -0
  27. /package/{features → src/features}/did-you-mean/i18n/en.json +0 -0
  28. /package/{features → src/features}/did-you-mean/i18n/fr.json +0 -0
  29. /package/{features → src/features}/drawer/i18n/de.json +0 -0
  30. /package/{features → src/features}/drawer/i18n/en.json +0 -0
  31. /package/{features → src/features}/drawer/i18n/fr.json +0 -0
  32. /package/{features → src/features}/export/i18n/de.json +0 -0
  33. /package/{features → src/features}/export/i18n/en.json +0 -0
  34. /package/{features → src/features}/export/i18n/fr.json +0 -0
  35. /package/{features → src/features}/feedback/i18n/de.json +0 -0
  36. /package/{features → src/features}/feedback/i18n/en.json +0 -0
  37. /package/{features → src/features}/feedback/i18n/fr.json +0 -0
  38. /package/{features → src/features}/filters/i18n/de.json +0 -0
  39. /package/{features → src/features}/filters/i18n/en.json +0 -0
  40. /package/{features → src/features}/filters/i18n/fr.json +0 -0
  41. /package/{features → src/features}/labels/i18n/de.json +0 -0
  42. /package/{features → src/features}/labels/i18n/en.json +0 -0
  43. /package/{features → src/features}/labels/i18n/fr.json +0 -0
  44. /package/{features → src/features}/searches/i18n/de.json +0 -0
  45. /package/{features → src/features}/searches/i18n/en.json +0 -0
  46. /package/{features → src/features}/searches/i18n/fr.json +0 -0
  47. /package/{features → src/features}/sign-in/i18n/de.json +0 -0
  48. /package/{features → src/features}/sign-in/i18n/en.json +0 -0
  49. /package/{features → src/features}/sign-in/i18n/fr.json +0 -0
@@ -21,10 +21,10 @@ import { DragDropModule } from '@angular/cdk/drag-drop';
21
21
  import { Overlay } from '@angular/cdk/overlay';
22
22
 
23
23
  class DropdownListComponent {
24
- items = input.required();
24
+ items = input.required(...(ngDevMode ? [{ debugName: "items" }] : []));
25
25
  onClick = output();
26
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DropdownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DropdownListComponent, isStandalone: true, selector: "dropdown-list, DropdownList", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
26
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DropdownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: DropdownListComponent, isStandalone: true, selector: "dropdown-list, DropdownList", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
28
28
  @for (item of items(); track $index) {
29
29
  <span class="bg-primary text-primary-foreground m-1 inline-flex cursor-default select-none items-center rounded-full px-2 py-1 text-sm font-semibold">
30
30
  {{ item.display || item.value }}
@@ -45,7 +45,7 @@ class DropdownListComponent {
45
45
  }
46
46
  `, isInline: true });
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DropdownListComponent, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DropdownListComponent, decorators: [{
49
49
  type: Component,
50
50
  args: [{
51
51
  selector: 'dropdown-list, DropdownList',
@@ -74,17 +74,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
74
74
  }] });
75
75
 
76
76
  class DropdownInputComponent {
77
- label = input();
78
- placeholder = input('Start typing to search...');
79
- noResultLabel = input('No results to be displayed...');
80
- suggestions = input([]);
81
- selected = input.required();
77
+ label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
78
+ placeholder = input('Start typing to search...', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
79
+ noResultLabel = input('No results to be displayed...', ...(ngDevMode ? [{ debugName: "noResultLabel" }] : []));
80
+ suggestions = input([], ...(ngDevMode ? [{ debugName: "suggestions" }] : []));
81
+ selected = input.required(...(ngDevMode ? [{ debugName: "selected" }] : []));
82
82
  onFocus = output(); // emits the input value
83
83
  onKeyUp = output(); // emits the input value
84
84
  removeItem = output();
85
85
  addItem = output();
86
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DropdownInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
87
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DropdownInputComponent, isStandalone: true, selector: "dropdown-input, DropdownInput", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, noResultLabel: { classPropertyName: "noResultLabel", publicName: "noResultLabel", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onFocus: "onFocus", onKeyUp: "onKeyUp", removeItem: "removeItem", addItem: "addItem" }, ngImport: i0, template: `
86
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DropdownInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
87
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: DropdownInputComponent, isStandalone: true, selector: "dropdown-input, DropdownInput", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, noResultLabel: { classPropertyName: "noResultLabel", publicName: "noResultLabel", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onFocus: "onFocus", onKeyUp: "onKeyUp", removeItem: "removeItem", addItem: "addItem" }, ngImport: i0, template: `
88
88
  @if (label()) {
89
89
  <p class="font-semibold">{{ label() }}</p>
90
90
  }
@@ -118,7 +118,7 @@ class DropdownInputComponent {
118
118
  </Dropdown>
119
119
  `, isInline: true, dependencies: [{ kind: "component", type: DropdownComponent, selector: "dropdown, Dropdown", inputs: ["disabled"] }, { kind: "component", type: DropdownListComponent, selector: "dropdown-list, DropdownList", inputs: ["items"], outputs: ["onClick"] }, { kind: "directive", type: DropdownContentComponent, selector: "dropdown-content, dropdowncontent, DropdownContent", inputs: ["class", "position"] }] });
120
120
  }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DropdownInputComponent, decorators: [{
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DropdownInputComponent, decorators: [{
122
122
  type: Component,
123
123
  args: [{
124
124
  selector: 'dropdown-input, DropdownInput',
@@ -168,10 +168,10 @@ class BackdropService {
168
168
  hide() {
169
169
  this.isVisible.next(false);
170
170
  }
171
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BackdropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
172
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BackdropService, providedIn: 'root' });
171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BackdropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
172
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BackdropService, providedIn: 'root' });
173
173
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BackdropService, decorators: [{
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BackdropService, decorators: [{
175
175
  type: Injectable,
176
176
  args: [{
177
177
  providedIn: 'root'
@@ -188,10 +188,10 @@ class BackdropComponent {
188
188
  ngOnDestroy() {
189
189
  this.sub.unsubscribe();
190
190
  }
191
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
192
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: BackdropComponent, isStandalone: true, selector: "app-backdrop", host: { properties: { "attr.backdrop-visible": "this.backdropVisible" }, classAttribute: "z-[var(--z-backdrop)] bg-backdrop absolute bottom-0 left-0 right-0 top-0 hidden select-none" }, ngImport: i0, template: ``, isInline: true, styles: [":host{--backdrop-animation-duration: .25s;animation:hide-backdrop var(--backdrop-animation-duration, .25s) ease-out;@keyframes show-backdrop{0%{display:none;opacity:0}1%{display:block}to{opacity:1}}@keyframes hide-backdrop{0%{display:block;opacity:1}99%{opacity:0}to{display:none}}}:host[backdrop-visible=true]{display:block;animation:show-backdrop var(--backdrop-animation-duration, .25s) ease-out}\n"] });
191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
192
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: BackdropComponent, isStandalone: true, selector: "app-backdrop", host: { properties: { "attr.backdrop-visible": "this.backdropVisible" }, classAttribute: "z-[var(--z-backdrop)] bg-backdrop absolute bottom-0 left-0 right-0 top-0 hidden select-none" }, ngImport: i0, template: ``, isInline: true, styles: [":host{--backdrop-animation-duration: .25s;animation:hide-backdrop var(--backdrop-animation-duration, .25s) ease-out;@keyframes show-backdrop{0%{display:none;opacity:0}1%{display:block}to{opacity:1}}@keyframes hide-backdrop{0%{display:block;opacity:1}99%{opacity:0}to{display:none}}}:host[backdrop-visible=true]{display:block;animation:show-backdrop var(--backdrop-animation-duration, .25s) ease-out}\n"] });
193
193
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BackdropComponent, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BackdropComponent, decorators: [{
195
195
  type: Component,
196
196
  args: [{ selector: 'app-backdrop', standalone: true, imports: [], template: ``, host: {
197
197
  class: 'z-[var(--z-backdrop)] bg-backdrop absolute bottom-0 left-0 right-0 top-0 hidden select-none'
@@ -295,10 +295,10 @@ class AppService {
295
295
  return EMPTY;
296
296
  }));
297
297
  }
298
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
299
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AppService, providedIn: 'root' });
298
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
299
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AppService, providedIn: 'root' });
300
300
  }
301
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AppService, decorators: [{
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AppService, decorators: [{
302
302
  type: Injectable,
303
303
  args: [{
304
304
  providedIn: 'root'
@@ -796,10 +796,10 @@ class PrincipalService {
796
796
  return EMPTY;
797
797
  }));
798
798
  }
799
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PrincipalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
800
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PrincipalService, providedIn: 'root' });
799
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: PrincipalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
800
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: PrincipalService, providedIn: 'root' });
801
801
  }
802
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PrincipalService, decorators: [{
802
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: PrincipalService, decorators: [{
803
803
  type: Injectable,
804
804
  args: [{
805
805
  providedIn: 'root'
@@ -870,7 +870,7 @@ function withPrincipalFeatures() {
870
870
  * ```
871
871
  */
872
872
  function debouncedSignal(input, timeOutMs = 0) {
873
- const debounceSignal = signal(input());
873
+ const debounceSignal = signal(input(), ...(ngDevMode ? [{ debugName: "debounceSignal" }] : []));
874
874
  let timeout;
875
875
  effect(onCleanUp => {
876
876
  const value = input();
@@ -1228,10 +1228,10 @@ class QueryService {
1228
1228
  };
1229
1229
  this.queryParamsStore.patch({ page }, audit);
1230
1230
  }
1231
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: QueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1232
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: QueryService, providedIn: 'root' });
1231
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: QueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1232
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: QueryService, providedIn: 'root' });
1233
1233
  }
1234
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: QueryService, decorators: [{
1234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: QueryService, decorators: [{
1235
1235
  type: Injectable,
1236
1236
  args: [{
1237
1237
  providedIn: 'root'
@@ -1478,10 +1478,10 @@ class AggregationsService {
1478
1478
  }
1479
1479
  return node;
1480
1480
  }
1481
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AggregationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1482
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AggregationsService, providedIn: 'root' });
1481
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AggregationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1482
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AggregationsService, providedIn: 'root' });
1483
1483
  }
1484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AggregationsService, decorators: [{
1484
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AggregationsService, decorators: [{
1485
1485
  type: Injectable,
1486
1486
  args: [{
1487
1487
  providedIn: 'root'
@@ -2080,8 +2080,8 @@ class ApplicationService {
2080
2080
  router = inject(Router);
2081
2081
  title = inject(Title);
2082
2082
  components = inject(ROUTE_COMPONENTS);
2083
- defaultComponent = computed(() => this.components.find(c => c.path === 'all')?.component);
2084
- defaultLayoutComponent = computed(() => this.components.find(c => c.isRoot)?.component);
2083
+ defaultComponent = computed(() => this.components.find(c => c.path === 'all')?.component, ...(ngDevMode ? [{ debugName: "defaultComponent" }] : []));
2084
+ defaultLayoutComponent = computed(() => this.components.find(c => c.isRoot)?.component, ...(ngDevMode ? [{ debugName: "defaultLayoutComponent" }] : []));
2085
2085
  /**
2086
2086
  * Initializes the application and creates routes.
2087
2087
  *
@@ -2173,7 +2173,19 @@ class ApplicationService {
2173
2173
  const firstQuery = queriesMap[0];
2174
2174
  // We need to create a route path object for each tab in the first query
2175
2175
  // if the query has no tabs, we create a route with the query name as the tab name
2176
- const firstQueryConfig = { name: firstQuery.name, tabs: firstQuery.tabSearch.tabs || [{ name: firstQuery.name }] };
2176
+ const firstQueryConfig = {
2177
+ name: firstQuery.name,
2178
+ tabs: (firstQuery.tabSearch.tabs && firstQuery.tabSearch.tabs.length
2179
+ ? firstQuery.tabSearch.tabs
2180
+ : [{
2181
+ name: firstQuery.name,
2182
+ display: firstQuery.name,
2183
+ value: firstQuery.name,
2184
+ isDefault: false,
2185
+ excludedIndices: [],
2186
+ icon: ''
2187
+ }])
2188
+ };
2177
2189
  // We need to remove the current search route from the router config
2178
2190
  // the route exists in the router config because it was created in the app-routing.module.ts and we need it
2179
2191
  // to be able to navigate to the search page. We will recreate it with the new tabs
@@ -2311,10 +2323,10 @@ class ApplicationService {
2311
2323
  document.documentElement.style.setProperty('--logo-large', `url('${light.large}')`);
2312
2324
  }
2313
2325
  }
2314
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ApplicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2315
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ApplicationService, providedIn: 'root' });
2326
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ApplicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2327
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ApplicationService, providedIn: 'root' });
2316
2328
  }
2317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ApplicationService, decorators: [{
2329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ApplicationService, decorators: [{
2318
2330
  type: Injectable,
2319
2331
  args: [{
2320
2332
  providedIn: 'root'
@@ -2323,7 +2335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
2323
2335
 
2324
2336
  class AuditService {
2325
2337
  appStore = inject(AppStore);
2326
- app = computed(() => getState(this.appStore));
2338
+ app = computed(() => getState(this.appStore), ...(ngDevMode ? [{ debugName: "app" }] : []));
2327
2339
  http = inject(HttpClient);
2328
2340
  router = inject(Router);
2329
2341
  API_URL = `${globalConfig.backendUrl}/${globalConfig.apiPath}`;
@@ -2408,7 +2420,7 @@ class AuditService {
2408
2420
  // Second event triggered when we come back
2409
2421
  document.addEventListener('visibilitychange', () => {
2410
2422
  if (document.visibilityState === 'visible') {
2411
- this.notify({ type: "Navigation_Return" /* AuditEventType.Navigation_Return */ });
2423
+ this.notify({ type: 'Navigation_Return' });
2412
2424
  }
2413
2425
  }, { once: true });
2414
2426
  }
@@ -2426,10 +2438,10 @@ class AuditService {
2426
2438
  }
2427
2439
  });
2428
2440
  }
2429
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AuditService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2430
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AuditService, providedIn: 'root' });
2441
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuditService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2442
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuditService, providedIn: 'root' });
2431
2443
  }
2432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AuditService, decorators: [{
2444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AuditService, decorators: [{
2433
2445
  type: Injectable,
2434
2446
  args: [{
2435
2447
  providedIn: 'root'
@@ -2437,7 +2449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
2437
2449
  }] });
2438
2450
 
2439
2451
  class AutocompleteService {
2440
- opened = signal(false);
2452
+ opened = signal(false, ...(ngDevMode ? [{ debugName: "opened" }] : []));
2441
2453
  injector = inject(Injector);
2442
2454
  userSettingsStore = inject(UserSettingsStore);
2443
2455
  appStore = inject(AppStore);
@@ -2500,10 +2512,10 @@ class AutocompleteService {
2500
2512
  }
2501
2513
  return items;
2502
2514
  }
2503
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AutocompleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2504
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AutocompleteService, providedIn: 'root' });
2515
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AutocompleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2516
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AutocompleteService, providedIn: 'root' });
2505
2517
  }
2506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AutocompleteService, decorators: [{
2518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AutocompleteService, decorators: [{
2507
2519
  type: Injectable,
2508
2520
  args: [{
2509
2521
  providedIn: 'root'
@@ -2541,10 +2553,10 @@ class JsonMethodPluginService {
2541
2553
  ...options
2542
2554
  });
2543
2555
  }
2544
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: JsonMethodPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2545
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: JsonMethodPluginService, providedIn: 'root' });
2556
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: JsonMethodPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2557
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: JsonMethodPluginService, providedIn: 'root' });
2546
2558
  }
2547
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: JsonMethodPluginService, decorators: [{
2559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: JsonMethodPluginService, decorators: [{
2548
2560
  type: Injectable,
2549
2561
  args: [{
2550
2562
  providedIn: 'root'
@@ -2576,10 +2588,10 @@ class NavigationService {
2576
2588
  this.auditService.notifyRouteChange(url);
2577
2589
  }
2578
2590
  }), tap(event => (this.urlAfterNavigation = event.url)), shareReplay(1));
2579
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2580
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NavigationService, providedIn: 'root' });
2591
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2592
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NavigationService, providedIn: 'root' });
2581
2593
  }
2582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NavigationService, decorators: [{
2594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NavigationService, decorators: [{
2583
2595
  type: Injectable,
2584
2596
  args: [{
2585
2597
  providedIn: 'root'
@@ -2759,7 +2771,7 @@ class PreviewService {
2759
2771
  close(id, query) {
2760
2772
  const detail = this.getAuditPreviewDetail(id, query);
2761
2773
  const auditEvent = {
2762
- type: "Preview_Close" /* AuditEventType.Preview_Close */,
2774
+ type: "Preview_Close",
2763
2775
  detail
2764
2776
  };
2765
2777
  Audit.notify(auditEvent);
@@ -2953,10 +2965,10 @@ class PreviewService {
2953
2965
  // merge the entities with the default highlights without duplicates
2954
2966
  this.entities = [...new Set([...this.entities, ...entities])];
2955
2967
  }
2956
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PreviewService, deps: [{ token: i0.DestroyRef }, { token: HIGHLIGHTS }], target: i0.ɵɵFactoryTarget.Injectable });
2957
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PreviewService, providedIn: 'root' });
2968
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: PreviewService, deps: [{ token: i0.DestroyRef }, { token: HIGHLIGHTS }], target: i0.ɵɵFactoryTarget.Injectable });
2969
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: PreviewService, providedIn: 'root' });
2958
2970
  }
2959
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PreviewService, decorators: [{
2971
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: PreviewService, decorators: [{
2960
2972
  type: Injectable,
2961
2973
  args: [{
2962
2974
  providedIn: 'root'
@@ -3025,10 +3037,10 @@ class SavedSearchesService {
3025
3037
  deleteSavedSearch(index) {
3026
3038
  this.userSettingsStore.deleteSavedSearch(index);
3027
3039
  }
3028
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SavedSearchesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3029
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SavedSearchesService, providedIn: 'root' });
3040
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SavedSearchesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3041
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SavedSearchesService, providedIn: 'root' });
3030
3042
  }
3031
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SavedSearchesService, decorators: [{
3043
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SavedSearchesService, decorators: [{
3032
3044
  type: Injectable,
3033
3045
  args: [{
3034
3046
  providedIn: 'root'
@@ -3121,10 +3133,10 @@ class SearchService {
3121
3133
  }
3122
3134
  });
3123
3135
  }
3124
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3125
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchService, providedIn: 'root' });
3136
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3137
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchService, providedIn: 'root' });
3126
3138
  }
3127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchService, decorators: [{
3139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchService, decorators: [{
3128
3140
  type: Injectable,
3129
3141
  args: [{
3130
3142
  providedIn: 'root'
@@ -3273,10 +3285,10 @@ class SelectionService {
3273
3285
  const url = this.router.createUrlTree([], { relativeTo: this.route, queryParams }).toString();
3274
3286
  this.location.replaceState(url);
3275
3287
  }
3276
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3277
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SelectionService, providedIn: 'root' });
3288
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3289
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectionService, providedIn: 'root' });
3278
3290
  }
3279
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SelectionService, decorators: [{
3291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectionService, decorators: [{
3280
3292
  type: Injectable,
3281
3293
  args: [{
3282
3294
  providedIn: 'root'
@@ -3360,10 +3372,10 @@ class SelectionHistoryService {
3360
3372
  this.selectionHistoryEvent.next('back');
3361
3373
  return last;
3362
3374
  }
3363
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SelectionHistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3364
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SelectionHistoryService, providedIn: 'root' });
3375
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectionHistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3376
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectionHistoryService, providedIn: 'root' });
3365
3377
  }
3366
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SelectionHistoryService, decorators: [{
3378
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectionHistoryService, decorators: [{
3367
3379
  type: Injectable,
3368
3380
  args: [{
3369
3381
  providedIn: 'root'
@@ -3398,10 +3410,10 @@ class TextChunkService {
3398
3410
  return [];
3399
3411
  }));
3400
3412
  }
3401
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: TextChunkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3402
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: TextChunkService, providedIn: 'root' });
3413
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: TextChunkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3414
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: TextChunkService, providedIn: 'root' });
3403
3415
  }
3404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: TextChunkService, decorators: [{
3416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: TextChunkService, decorators: [{
3405
3417
  type: Injectable,
3406
3418
  args: [{
3407
3419
  providedIn: 'root'
@@ -3860,8 +3872,8 @@ function applyThemeToNativeElement(element, cssVars) {
3860
3872
  }
3861
3873
 
3862
3874
  class SourceComponent {
3863
- collection = input();
3864
- connector = input('');
3875
+ collection = input(...(ngDevMode ? [undefined, { debugName: "collection" }] : []));
3876
+ connector = input('', ...(ngDevMode ? [{ debugName: "connector" }] : []));
3865
3877
  appStore = inject(AppStore);
3866
3878
  iconDetails = computed(() => {
3867
3879
  const [collection] = this.collection() || [];
@@ -3888,11 +3900,11 @@ class SourceComponent {
3888
3900
  return { iconClass, iconPath };
3889
3901
  }
3890
3902
  return { iconClass: defaultIconClass };
3891
- });
3892
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SourceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3893
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SourceComponent, isStandalone: true, selector: "source, Source", inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: false, transformFunction: null }, connector: { classPropertyName: "connector", publicName: "connector", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('sources')], ngImport: i0, template: "@if (iconDetails()?.iconPath) {\n <img [src]=\"iconDetails()?.iconPath\" [alt]=\"collection()?.[0] || ('sources.sourceIcon' | transloco)\" />\n} @else {\n <i class=\"{{ iconDetails()?.iconClass }}\" [attr.aria-label]=\"'sources.sourceIcon' | transloco\"></i>\n}\n", dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
3903
+ }, ...(ngDevMode ? [{ debugName: "iconDetails" }] : []));
3904
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SourceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3905
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SourceComponent, isStandalone: true, selector: "source, Source", inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: false, transformFunction: null }, connector: { classPropertyName: "connector", publicName: "connector", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('sources')], ngImport: i0, template: "@if (iconDetails()?.iconPath) {\n <img [src]=\"iconDetails()?.iconPath\" [alt]=\"collection()?.[0] || ('sources.sourceIcon' | transloco)\" />\n} @else {\n <i class=\"{{ iconDetails()?.iconClass }}\" [attr.aria-label]=\"'sources.sourceIcon' | transloco\"></i>\n}\n", dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
3894
3906
  }
3895
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SourceComponent, decorators: [{
3907
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SourceComponent, decorators: [{
3896
3908
  type: Component,
3897
3909
  args: [{ selector: 'source, Source', standalone: true, imports: [TranslocoPipe], providers: [provideTranslocoScope('sources')], template: "@if (iconDetails()?.iconPath) {\n <img [src]=\"iconDetails()?.iconPath\" [alt]=\"collection()?.[0] || ('sources.sourceIcon' | transloco)\" />\n} @else {\n <i class=\"{{ iconDetails()?.iconClass }}\" [attr.aria-label]=\"'sources.sourceIcon' | transloco\"></i>\n}\n" }]
3898
3910
  }] });
@@ -3903,20 +3915,20 @@ class DocumentLocatorComponent {
3903
3915
  * This property is used to ensure that an `Article` object is provided
3904
3916
  * as an input to the component.
3905
3917
  */
3906
- article = input.required();
3918
+ article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
3907
3919
  /**
3908
3920
  * The name of the aggregation to use for the document locator.
3909
3921
  */
3910
- aggregation = input.required();
3911
- shadow = viewChild('shadowRender', { read: ElementRef });
3912
- client = viewChild('documentLocator', { read: ElementRef });
3922
+ aggregation = input.required(...(ngDevMode ? [{ debugName: "aggregation" }] : []));
3923
+ shadow = viewChild('shadowRender', ...(ngDevMode ? [{ debugName: "shadow", read: ElementRef }] : [{ read: ElementRef }]));
3924
+ client = viewChild('documentLocator', ...(ngDevMode ? [{ debugName: "client", read: ElementRef }] : [{ read: ElementRef }]));
3913
3925
  el = inject(ElementRef);
3914
3926
  router = inject(Router);
3915
3927
  queryParamStore = inject(QueryParamsStore);
3916
3928
  aggregationStore = inject(AggregationsStore);
3917
- locationSegments = signal([]);
3918
- visibleSegments = signal([]);
3919
- invisibleSegments = signal([]);
3929
+ locationSegments = signal([], ...(ngDevMode ? [{ debugName: "locationSegments" }] : []));
3930
+ visibleSegments = signal([], ...(ngDevMode ? [{ debugName: "visibleSegments" }] : []));
3931
+ invisibleSegments = signal([], ...(ngDevMode ? [{ debugName: "invisibleSegments" }] : []));
3920
3932
  // margin for dropdown segment with separator
3921
3933
  margin = 70;
3922
3934
  previousCount;
@@ -3977,8 +3989,8 @@ class DocumentLocatorComponent {
3977
3989
  const { filters } = getState(this.queryParamStore);
3978
3990
  this.router.navigate([], { queryParams: { f: JSON.stringify(filters) }, queryParamsHandling: 'merge' });
3979
3991
  }
3980
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DocumentLocatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3981
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DocumentLocatorComponent, isStandalone: true, selector: "document-locator, DocumentLocator", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, aggregation: { classPropertyName: "aggregation", publicName: "aggregation", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "flex items-center grow gap-2 overflow-hidden" }, viewQueries: [{ propertyName: "shadow", first: true, predicate: ["shadowRender"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "client", first: true, predicate: ["documentLocator"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
3992
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DocumentLocatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3993
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: DocumentLocatorComponent, isStandalone: true, selector: "document-locator, DocumentLocator", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, aggregation: { classPropertyName: "aggregation", publicName: "aggregation", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "flex items-center grow gap-2 overflow-hidden" }, viewQueries: [{ propertyName: "shadow", first: true, predicate: ["shadowRender"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "client", first: true, predicate: ["documentLocator"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
3982
3994
  <!-- Renders all segment hidden to user to compute width -->
3983
3995
  <div #shadowRender class="pointer-events-none invisible absolute left-0 top-0 -z-10 flex gap-2">
3984
3996
  @for (segment of locationSegments(); track $index) {
@@ -4023,7 +4035,7 @@ class DocumentLocatorComponent {
4023
4035
  </div>
4024
4036
  `, isInline: true, dependencies: [{ kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant"] }] });
4025
4037
  }
4026
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DocumentLocatorComponent, decorators: [{
4038
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DocumentLocatorComponent, decorators: [{
4027
4039
  type: Component,
4028
4040
  args: [{
4029
4041
  selector: 'document-locator, DocumentLocator',
@@ -4084,8 +4096,8 @@ class ErrorComponent {
4084
4096
  reload() {
4085
4097
  this.router.navigate(['/']).then(() => window.location.reload());
4086
4098
  }
4087
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4088
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: ErrorComponent, isStandalone: true, selector: "error-component, ErrorComponent", ngImport: i0, template: `
4099
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4100
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: ErrorComponent, isStandalone: true, selector: "error-component, ErrorComponent", ngImport: i0, template: `
4089
4101
  <div class="bg-background text-foreground flex min-h-screen flex-col items-center justify-center">
4090
4102
  <svg
4091
4103
  class="mb-8 h-20 w-20 text-red-600"
@@ -4128,7 +4140,7 @@ class ErrorComponent {
4128
4140
  </div>
4129
4141
  `, isInline: true });
4130
4142
  }
4131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ErrorComponent, decorators: [{
4143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ErrorComponent, decorators: [{
4132
4144
  type: Component,
4133
4145
  args: [{
4134
4146
  selector: 'error-component, ErrorComponent',
@@ -4180,7 +4192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
4180
4192
  }] });
4181
4193
 
4182
4194
  class LoadingComponent {
4183
- state = computed(() => getState(this.application));
4195
+ state = computed(() => getState(this.application), ...(ngDevMode ? [{ debugName: "state" }] : []));
4184
4196
  application = inject(ApplicationStore);
4185
4197
  queryParamsStore = inject(QueryParamsStore);
4186
4198
  route = inject(ActivatedRoute);
@@ -4225,8 +4237,8 @@ class LoadingComponent {
4225
4237
  });
4226
4238
  }
4227
4239
  }
4228
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LoadingComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
4229
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: LoadingComponent, isStandalone: true, selector: "app-wait", ngImport: i0, template: `
4240
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LoadingComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
4241
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: LoadingComponent, isStandalone: true, selector: "app-wait", ngImport: i0, template: `
4230
4242
  <div class="flex h-[100dvh] w-full items-center justify-center">
4231
4243
  <div class="flex flex-col items-center space-y-4">
4232
4244
  <span class="loader"></span>
@@ -4234,7 +4246,7 @@ class LoadingComponent {
4234
4246
  </div>
4235
4247
  `, isInline: true, styles: [".loader{--w: 96px;--h: 96px;transform:rotate(45deg);perspective:1000px;border-radius:50%;width:var(--w);height:var(--h);color:#0040bf}.loader:before,.loader:after{content:\"\";display:block;position:absolute;top:0;left:0;width:inherit;height:inherit;border-radius:50%;transform:rotateX(70deg);animation:1s spin linear infinite}.loader:after{color:#ff854a;transform:rotateY(70deg);animation-delay:.4s}@keyframes rotate{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes rotateccw{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(-360deg)}}@keyframes spin{0%,to{box-shadow:.4em 0 0 0 currentcolor}12%{box-shadow:.4em .4em 0 0 currentcolor}25%{box-shadow:0 .4em 0 0 currentcolor}37%{box-shadow:-.4em .4em 0 0 currentcolor}50%{box-shadow:-.4em 0 0 0 currentcolor}62%{box-shadow:-.4em -.4em 0 0 currentcolor}75%{box-shadow:0 -.4em 0 0 currentcolor}87%{box-shadow:.4em -.4em 0 0 currentcolor}}\n"] });
4236
4248
  }
4237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LoadingComponent, decorators: [{
4249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LoadingComponent, decorators: [{
4238
4250
  type: Component,
4239
4251
  args: [{ selector: 'app-wait', standalone: true, imports: [], template: `
4240
4252
  <div class="flex h-[100dvh] w-full items-center justify-center">
@@ -4247,17 +4259,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
4247
4259
 
4248
4260
  class MetadataComponent {
4249
4261
  click = output();
4250
- class = input();
4251
- variant = input('default');
4252
- metadata = input.required();
4253
- article = input.required();
4254
- limit = input(undefined, { transform: (value) => (value ? Math.max(0, Number(value)) : undefined) });
4255
- items = computed(() => getMetadata(this.article(), this.metadata()));
4262
+ class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
4263
+ variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
4264
+ metadata = input.required(...(ngDevMode ? [{ debugName: "metadata" }] : []));
4265
+ article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
4266
+ limit = input(undefined, ...(ngDevMode ? [{ debugName: "limit", transform: (value) => (value ? Math.max(0, Number(value)) : undefined) }] : [{ transform: (value) => (value ? Math.max(0, Number(value)) : undefined) }]));
4267
+ items = computed(() => getMetadata(this.article(), this.metadata()), ...(ngDevMode ? [{ debugName: "items" }] : []));
4256
4268
  handleClick(event, item) {
4257
4269
  this.click.emit({ filter: item, event });
4258
4270
  }
4259
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MetadataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4260
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: MetadataComponent, isStandalone: true, selector: "Metadata, metadata", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, metadata: { classPropertyName: "metadata", publicName: "metadata", isSignal: true, isRequired: true, transformFunction: null }, article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, limit: { classPropertyName: "limit", publicName: "limit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click" }, host: { properties: { "class.hidden": "items().length === 0" } }, exportAs: ["metadata"], ngImport: i0, template: `
4271
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MetadataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4272
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: MetadataComponent, isStandalone: true, selector: "Metadata, metadata", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, metadata: { classPropertyName: "metadata", publicName: "metadata", isSignal: true, isRequired: true, transformFunction: null }, article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, limit: { classPropertyName: "limit", publicName: "limit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click" }, host: { properties: { "class.hidden": "items().length === 0" } }, exportAs: ["metadata"], ngImport: i0, template: `
4261
4273
  @for (item of items().slice(0, limit()); track $index) {
4262
4274
  @if (item) {
4263
4275
  <badge [variant]="variant()" [class]="class()" (click)="handleClick($event, { field: this.metadata(), value: item })">{{ item }}</badge>
@@ -4265,7 +4277,7 @@ class MetadataComponent {
4265
4277
  }
4266
4278
  `, isInline: true, styles: [":host{display:contents}:host,:host:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }] });
4267
4279
  }
4268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MetadataComponent, decorators: [{
4280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MetadataComponent, decorators: [{
4269
4281
  type: Component,
4270
4282
  args: [{ selector: 'Metadata, metadata', exportAs: 'metadata', standalone: true, imports: [BadgeComponent], template: `
4271
4283
  @for (item of items().slice(0, limit()); track $index) {
@@ -4279,7 +4291,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
4279
4291
  }] });
4280
4292
 
4281
4293
  class MissingTermsComponent {
4282
- article = input.required();
4294
+ article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
4283
4295
  queryParamsStore = inject(QueryParamsStore);
4284
4296
  router = inject(Router);
4285
4297
  missingTerms = computed(() => {
@@ -4293,27 +4305,27 @@ class MissingTermsComponent {
4293
4305
  queryParams: { q: `${text} +[${tp.term}]` }
4294
4306
  };
4295
4307
  });
4296
- });
4297
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MissingTermsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4298
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: MissingTermsComponent, isStandalone: true, selector: "missing-terms, MissingTerms, missingterms", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, providers: [provideTranslocoScope('article')], ngImport: i0, template: "@if ((missingTerms() || []).length > 0) {\n <span class=\"terms-label\">{{ 'article.missingTerms' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <span class=\"term ms-1\">{{ term.value }}</span>\n }\n </span>\n <span class=\"mx-1\">|</span>\n <span class=\"terms-label ms-1\">{{ 'article.mustInclude' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <a role=\"button\" class=\"ms-1\" routerLink=\"search\" [queryParams]=\"term.queryParams\" (click)=\"$event.stopPropagation()\">{{ term.value }}</a>\n }\n </span>\n}\n", styles: [".term{text-decoration-line:line-through}\n"], dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
4308
+ }, ...(ngDevMode ? [{ debugName: "missingTerms" }] : []));
4309
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MissingTermsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4310
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: MissingTermsComponent, isStandalone: true, selector: "missing-terms, MissingTerms, missingterms", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, providers: [provideTranslocoScope('article')], ngImport: i0, template: "@if ((missingTerms() || []).length > 0) {\n <span class=\"terms-label\">{{ 'article.missingTerms' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <span class=\"term ms-1\">{{ term.value }}</span>\n }\n </span>\n <span class=\"mx-1\">|</span>\n <span class=\"terms-label ms-1\">{{ 'article.mustInclude' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <a role=\"button\" class=\"ms-1\" routerLink=\"search\" [queryParams]=\"term.queryParams\" (click)=\"$event.stopPropagation()\">{{ term.value }}</a>\n }\n </span>\n}\n", styles: [".term{text-decoration-line:line-through}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
4299
4311
  }
4300
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MissingTermsComponent, decorators: [{
4312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MissingTermsComponent, decorators: [{
4301
4313
  type: Component,
4302
4314
  args: [{ selector: 'missing-terms, MissingTerms, missingterms', standalone: true, imports: [TranslocoPipe, RouterLink], providers: [provideTranslocoScope('article')], template: "@if ((missingTerms() || []).length > 0) {\n <span class=\"terms-label\">{{ 'article.missingTerms' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <span class=\"term ms-1\">{{ term.value }}</span>\n }\n </span>\n <span class=\"mx-1\">|</span>\n <span class=\"terms-label ms-1\">{{ 'article.mustInclude' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <a role=\"button\" class=\"ms-1\" routerLink=\"search\" [queryParams]=\"term.queryParams\" (click)=\"$event.stopPropagation()\">{{ term.value }}</a>\n }\n </span>\n}\n", styles: [".term{text-decoration-line:line-through}\n"] }]
4303
4315
  }] });
4304
4316
 
4305
4317
  class CollectionsDialog {
4306
4318
  closed = output();
4307
- createInputElement = viewChild('createInput');
4308
- dialogElement = viewChild(DialogComponent);
4319
+ createInputElement = viewChild('createInput', ...(ngDevMode ? [{ debugName: "createInputElement" }] : []));
4320
+ dialogElement = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialogElement" }] : []));
4309
4321
  queryParamStore = inject(QueryParamsStore);
4310
4322
  userSettingsStore = inject(UserSettingsStore);
4311
- collection = signal(undefined);
4312
- article = signal([]);
4313
- newCollectionName = signal('');
4314
- creating = signal(false);
4315
- removedFromCollection = signal(false);
4316
- collections = computed(() => this.userSettingsStore.baskets());
4323
+ collection = signal(undefined, ...(ngDevMode ? [{ debugName: "collection" }] : []));
4324
+ article = signal([], ...(ngDevMode ? [{ debugName: "article" }] : []));
4325
+ newCollectionName = signal('', ...(ngDevMode ? [{ debugName: "newCollectionName" }] : []));
4326
+ creating = signal(false, ...(ngDevMode ? [{ debugName: "creating" }] : []));
4327
+ removedFromCollection = signal(false, ...(ngDevMode ? [{ debugName: "removedFromCollection" }] : []));
4328
+ collections = computed(() => this.userSettingsStore.baskets(), ...(ngDevMode ? [{ debugName: "collections" }] : []));
4317
4329
  // Compute map of collection names to their article inclusion status
4318
4330
  collectionsMap = linkedSignal(() => this.collections().reduce((acc, collection) => {
4319
4331
  acc[collection.name] = this.containsArticle(collection);
@@ -4392,8 +4404,8 @@ class CollectionsDialog {
4392
4404
  this.newCollectionName.set('');
4393
4405
  this.creating.set(false);
4394
4406
  }
4395
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: CollectionsDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
4396
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: CollectionsDialog, isStandalone: true, selector: "add-to-collection-dialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope('collections')], viewQueries: [{ propertyName: "createInputElement", first: true, predicate: ["createInput"], descendants: true, isSignal: true }, { propertyName: "dialogElement", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
4407
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CollectionsDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
4408
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: CollectionsDialog, isStandalone: true, selector: "add-to-collection-dialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope('collections')], viewQueries: [{ propertyName: "createInputElement", first: true, predicate: ["createInput"], descendants: true, isSignal: true }, { propertyName: "dialogElement", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
4397
4409
  <dialog #dialog (closed)="closeBtn.click()">
4398
4410
  <DialogHeader>
4399
4411
  <DialogTitle>{{ 'collections.addToCollection' | transloco }}</DialogTitle>
@@ -4456,9 +4468,9 @@ class CollectionsDialog {
4456
4468
  </button>
4457
4469
  </DialogFooter>
4458
4470
  </dialog>
4459
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }] });
4471
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
4460
4472
  }
4461
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: CollectionsDialog, decorators: [{
4473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CollectionsDialog, decorators: [{
4462
4474
  type: Component,
4463
4475
  args: [{
4464
4476
  selector: 'add-to-collection-dialog',
@@ -4625,7 +4637,7 @@ class ExportService {
4625
4637
  exportedColumns: exportedColumns,
4626
4638
  selection: (selection ?? []).length > 0 ? selection : undefined,
4627
4639
  $auditRecord: {
4628
- type: "Search_ExportCSV" /* AuditEventType.Search_ExportCSV */,
4640
+ type: "Search_ExportCSV",
4629
4641
  detail: {
4630
4642
  resultid: results ? results.id : undefined
4631
4643
  }
@@ -4636,10 +4648,10 @@ class ExportService {
4636
4648
  responseType: 'blob'
4637
4649
  });
4638
4650
  }
4639
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4640
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ExportService, providedIn: 'root' });
4651
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4652
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ExportService, providedIn: 'root' });
4641
4653
  }
4642
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ExportService, decorators: [{
4654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ExportService, decorators: [{
4643
4655
  type: Injectable,
4644
4656
  args: [{
4645
4657
  providedIn: 'root'
@@ -4652,14 +4664,14 @@ class ExportDialog {
4652
4664
  appStore = inject(AppStore);
4653
4665
  exportService = inject(ExportService);
4654
4666
  queryParamsStore = inject(QueryParamsStore);
4655
- dialog = viewChild(DialogComponent);
4656
- selection = signal([]);
4667
+ dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
4668
+ selection = signal([], ...(ngDevMode ? [{ debugName: "selection" }] : []));
4657
4669
  fromSelection = linkedSignal(() => this.selection()?.length > 0);
4658
- exportableColumns = signal([]);
4670
+ exportableColumns = signal([], ...(ngDevMode ? [{ debugName: "exportableColumns" }] : []));
4659
4671
  supportedFormats = ['Csv', 'Xlsx', 'Json'];
4660
- format = model('Csv');
4661
- maxCount = model(undefined);
4662
- columnsToExport = model([]);
4672
+ format = model('Csv', ...(ngDevMode ? [{ debugName: "format" }] : []));
4673
+ maxCount = model(undefined, ...(ngDevMode ? [{ debugName: "maxCount" }] : []));
4674
+ columnsToExport = model([], ...(ngDevMode ? [{ debugName: "columnsToExport" }] : []));
4663
4675
  destroyRef = inject(DestroyRef);
4664
4676
  open(selection) {
4665
4677
  const app = getState(this.appStore);
@@ -4707,8 +4719,8 @@ class ExportDialog {
4707
4719
  this.maxCount.set(1);
4708
4720
  }
4709
4721
  }
4710
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ExportDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
4711
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: ExportDialog, isStandalone: true, selector: "export-dialog", inputs: { format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, maxCount: { classPropertyName: "maxCount", publicName: "maxCount", isSignal: true, isRequired: false, transformFunction: null }, columnsToExport: { classPropertyName: "columnsToExport", publicName: "columnsToExport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onExport: "onExport", format: "formatChange", maxCount: "maxCountChange", columnsToExport: "columnsToExportChange" }, providers: [provideTranslocoScope('export')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
4722
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ExportDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
4723
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: ExportDialog, isStandalone: true, selector: "export-dialog", inputs: { format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, maxCount: { classPropertyName: "maxCount", publicName: "maxCount", isSignal: true, isRequired: false, transformFunction: null }, columnsToExport: { classPropertyName: "columnsToExport", publicName: "columnsToExport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onExport: "onExport", format: "formatChange", maxCount: "maxCountChange", columnsToExport: "columnsToExportChange" }, providers: [provideTranslocoScope('export')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
4712
4724
  <dialog #dialog>
4713
4725
  <DialogHeader>
4714
4726
  <DialogTitle>{{ 'export.title' | transloco }}</DialogTitle>
@@ -4777,9 +4789,9 @@ class ExportDialog {
4777
4789
  </button>
4778
4790
  </DialogFooter>
4779
4791
  </dialog>
4780
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "component", type: SwitchComponent, selector: "switch, Switch", inputs: ["toggled", "disabled", "className", "size"], outputs: ["toggledChange"] }] });
4792
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "component", type: SwitchComponent, selector: "switch, Switch", inputs: ["toggled", "disabled", "className", "size"], outputs: ["toggledChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
4781
4793
  }
4782
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ExportDialog, decorators: [{
4794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ExportDialog, decorators: [{
4783
4795
  type: Component,
4784
4796
  args: [{
4785
4797
  selector: 'export-dialog',
@@ -4887,11 +4899,11 @@ class MultiSelectionToolbarComponent {
4887
4899
  selection = inject(SelectionStore);
4888
4900
  dialog = inject(DialogService);
4889
4901
  appFeatures = inject(APP_FEATURES);
4890
- className = input('');
4891
- variant = input('dark');
4902
+ className = input('', ...(ngDevMode ? [{ debugName: "className" }] : []));
4903
+ variant = input('dark', ...(ngDevMode ? [{ debugName: "variant" }] : []));
4892
4904
  count = this.selection.multiSelectCount;
4893
- variants = computed(() => cn(multiSelectionToolbarVariants({ variant: this.variant(), class: this.className() })));
4894
- ids = computed(() => getState(this.selection).multiSelection.map(x => x.id));
4905
+ variants = computed(() => cn(multiSelectionToolbarVariants({ variant: this.variant(), class: this.className() })), ...(ngDevMode ? [{ debugName: "variants" }] : []));
4906
+ ids = computed(() => getState(this.selection).multiSelection.map(x => x.id), ...(ngDevMode ? [{ debugName: "ids" }] : []));
4895
4907
  instanceId = computed(() => {
4896
4908
  const { assistant: { usePrefixName = true } } = this.appFeatures;
4897
4909
  if (usePrefixName) {
@@ -4899,14 +4911,14 @@ class MultiSelectionToolbarComponent {
4899
4911
  return `${name}-search-results-assistant`;
4900
4912
  }
4901
4913
  return `search-results-assistant`;
4902
- });
4903
- enabledUserInput = computed(() => this.appStore.assistants()[this.instanceId()]?.['modeSettings']?.['enabledUserInput'] === true);
4914
+ }, ...(ngDevMode ? [{ debugName: "instanceId" }] : []));
4915
+ enabledUserInput = computed(() => this.appStore.assistants()[this.instanceId()]?.['modeSettings']?.['enabledUserInput'] === true, ...(ngDevMode ? [{ debugName: "enabledUserInput" }] : []));
4904
4916
  clearSelection = () => this.selection.clearMultiSelection();
4905
4917
  openCollectionDialog = () => this.dialog.open(CollectionsDialog, getState(this.selection).multiSelection);
4906
4918
  openExportDialog = () => this.dialog.open(ExportDialog, this.ids());
4907
4919
  attachToAssistant = () => this.selection.update({ assistantIdsToAttach: this.ids() });
4908
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MultiSelectionToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4909
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: MultiSelectionToolbarComponent, isStandalone: true, selector: "MultiSelectionToolbar, multi-selection-toolbar", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.opacity-100": "count() > 0", "class.-translate-y-14": "count() > 0" }, classAttribute: "fixed bottom-[-40px] left-[50%] translate-x-[-50%] z-50 transition-[translate,opacity,discrete] duration-300 opacity-0" }, ngImport: i0, template: `
4920
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MultiSelectionToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4921
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: MultiSelectionToolbarComponent, isStandalone: true, selector: "MultiSelectionToolbar, multi-selection-toolbar", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.opacity-100": "count() > 0", "class.-translate-y-14": "count() > 0" }, classAttribute: "fixed bottom-[-40px] left-[50%] translate-x-[-50%] z-50 transition-[translate,opacity,discrete] duration-300 opacity-0" }, ngImport: i0, template: `
4910
4922
  <menu id="multi-select-toolbar" [class]="cn(variants(), className())">
4911
4923
  <li class="!ps-0">
4912
4924
  {{ count() }} items selected
@@ -4940,7 +4952,7 @@ class MultiSelectionToolbarComponent {
4940
4952
  </menu>
4941
4953
  `, isInline: true });
4942
4954
  }
4943
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MultiSelectionToolbarComponent, decorators: [{
4955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MultiSelectionToolbarComponent, decorators: [{
4944
4956
  type: Component,
4945
4957
  args: [{
4946
4958
  selector: 'MultiSelectionToolbar, multi-selection-toolbar',
@@ -5003,7 +5015,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
5003
5015
  */
5004
5016
  class InfinityScrollDirective {
5005
5017
  el;
5006
- options = input({ root: null });
5018
+ options = input({ root: null }, ...(ngDevMode ? [{ debugName: "options" }] : []));
5007
5019
  onScroll = output();
5008
5020
  observer = new IntersectionObserver(([entry]) => {
5009
5021
  if (entry.isIntersecting) {
@@ -5019,10 +5031,10 @@ class InfinityScrollDirective {
5019
5031
  ngOnDestroy() {
5020
5032
  this.observer.disconnect();
5021
5033
  }
5022
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: InfinityScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5023
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.0", type: InfinityScrollDirective, isStandalone: true, selector: "[infinity-scroll]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScroll: "onScroll" }, ngImport: i0 });
5034
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: InfinityScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5035
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: InfinityScrollDirective, isStandalone: true, selector: "[infinity-scroll]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScroll: "onScroll" }, ngImport: i0 });
5024
5036
  }
5025
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: InfinityScrollDirective, decorators: [{
5037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: InfinityScrollDirective, decorators: [{
5026
5038
  type: Directive,
5027
5039
  args: [{
5028
5040
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -5043,19 +5055,19 @@ const defaultNavigatorOptions = {
5043
5055
  }
5044
5056
  };
5045
5057
  class KeyboardNavigatorDirective {
5046
- keyboardNavigator = input(defaultNavigatorOptions, { transform: this.normalizeOptions });
5047
- listboxId = input('', { alias: 'aria-controls' });
5058
+ keyboardNavigator = input(defaultNavigatorOptions, ...(ngDevMode ? [{ debugName: "keyboardNavigator", transform: this.normalizeOptions }] : [{ transform: this.normalizeOptions }]));
5059
+ listboxId = input('', ...(ngDevMode ? [{ debugName: "listboxId", alias: 'aria-controls' }] : [{ alias: 'aria-controls' }]));
5048
5060
  onFocus = output();
5049
5061
  onBlur = output();
5050
5062
  onSelected = output();
5051
- ariaExpanded = signal(false);
5052
- activeDescendant = signal(undefined);
5063
+ ariaExpanded = signal(false, ...(ngDevMode ? [{ debugName: "ariaExpanded" }] : []));
5064
+ activeDescendant = signal(undefined, ...(ngDevMode ? [{ debugName: "activeDescendant" }] : []));
5053
5065
  renderer = inject(Renderer2);
5054
- listboxElement = signal(null);
5055
- items = signal(null);
5056
- hasItems = computed(() => this.items() && this.items().length > 0);
5057
- currentIndex = signal(-1);
5058
- previousIndex = signal(-1);
5066
+ listboxElement = signal(null, ...(ngDevMode ? [{ debugName: "listboxElement" }] : []));
5067
+ items = signal(null, ...(ngDevMode ? [{ debugName: "items" }] : []));
5068
+ hasItems = computed(() => this.items() && this.items().length > 0, ...(ngDevMode ? [{ debugName: "hasItems" }] : []));
5069
+ currentIndex = signal(-1, ...(ngDevMode ? [{ debugName: "currentIndex" }] : []));
5070
+ previousIndex = signal(-1, ...(ngDevMode ? [{ debugName: "previousIndex" }] : []));
5059
5071
  unlisteners = [];
5060
5072
  mutationObserver = new MutationObserver(() => this.setItems());
5061
5073
  constructor() {
@@ -5326,10 +5338,10 @@ class KeyboardNavigatorDirective {
5326
5338
  this.renderer.setAttribute(this.listboxElement(), 'aria-hidden', 'true');
5327
5339
  this.ariaExpanded.set(false);
5328
5340
  }
5329
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: KeyboardNavigatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5330
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.0", type: KeyboardNavigatorDirective, isStandalone: true, selector: "input[role=\"combobox\"]", inputs: { keyboardNavigator: { classPropertyName: "keyboardNavigator", publicName: "keyboardNavigator", isSignal: true, isRequired: false, transformFunction: null }, listboxId: { classPropertyName: "listboxId", publicName: "aria-controls", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onSelected: "onSelected" }, host: { listeners: { "focus": "focus()", "blur": "blur()", "keydown.arrowup": "up()", "keydown.arrowdown": "down()", "keydown.arrowleft": "left()", "keydown.arrowright": "right()", "keydown.home": "home()", "keydown.end": "end()", "keydown.pageup": "pageUp()", "keydown.pagedown": "pageDown()", "keydown.enter": "enter()", "keydown.escape": "escape()" }, properties: { "attr.aria-expanded": "ariaExpanded()", "attr.aria-activedescendant": "activeDescendant()" } }, ngImport: i0 });
5341
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: KeyboardNavigatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5342
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: KeyboardNavigatorDirective, isStandalone: true, selector: "input[role=\"combobox\"]", inputs: { keyboardNavigator: { classPropertyName: "keyboardNavigator", publicName: "keyboardNavigator", isSignal: true, isRequired: false, transformFunction: null }, listboxId: { classPropertyName: "listboxId", publicName: "aria-controls", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onSelected: "onSelected" }, host: { listeners: { "focus": "focus()", "blur": "blur()", "keydown.arrowup": "up()", "keydown.arrowdown": "down()", "keydown.arrowleft": "left()", "keydown.arrowright": "right()", "keydown.home": "home()", "keydown.end": "end()", "keydown.pageup": "pageUp()", "keydown.pagedown": "pageDown()", "keydown.enter": "enter()", "keydown.escape": "escape()" }, properties: { "attr.aria-expanded": "ariaExpanded()", "attr.aria-activedescendant": "activeDescendant()" } }, ngImport: i0 });
5331
5343
  }
5332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: KeyboardNavigatorDirective, decorators: [{
5344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: KeyboardNavigatorDirective, decorators: [{
5333
5345
  type: Directive,
5334
5346
  args: [{
5335
5347
  selector: 'input[role="combobox"]',
@@ -5358,16 +5370,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
5358
5370
  */
5359
5371
  class OpenArticleOnCtrlEnterDirective {
5360
5372
  previewService = inject(PreviewService);
5361
- article = input.required();
5373
+ article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
5362
5374
  onCtrlEnter() {
5363
5375
  if (!this.article())
5364
5376
  return;
5365
5377
  this.previewService.openExternal(this.article());
5366
5378
  }
5367
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5368
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.0", type: OpenArticleOnCtrlEnterDirective, isStandalone: true, selector: "[appOpenArticleOnCtrlEnter],[openArticleOnCtrlEnter]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "keydown.control.Enter": "onCtrlEnter()" } }, ngImport: i0 });
5379
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5380
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: OpenArticleOnCtrlEnterDirective, isStandalone: true, selector: "[appOpenArticleOnCtrlEnter],[openArticleOnCtrlEnter]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "keydown.control.Enter": "onCtrlEnter()" } }, ngImport: i0 });
5369
5381
  }
5370
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, decorators: [{
5382
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, decorators: [{
5371
5383
  type: Directive,
5372
5384
  args: [{
5373
5385
  selector: '[appOpenArticleOnCtrlEnter],[openArticleOnCtrlEnter]',
@@ -5383,10 +5395,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
5383
5395
  * overflow manager.
5384
5396
  */
5385
5397
  class OverflowItemDirective {
5386
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OverflowItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5387
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: OverflowItemDirective, isStandalone: true, selector: "[overflowItem]", ngImport: i0 });
5398
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OverflowItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5399
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: OverflowItemDirective, isStandalone: true, selector: "[overflowItem]", ngImport: i0 });
5388
5400
  }
5389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OverflowItemDirective, decorators: [{
5401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OverflowItemDirective, decorators: [{
5390
5402
  type: Directive,
5391
5403
  args: [{
5392
5404
  selector: '[overflowItem]',
@@ -5398,10 +5410,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
5398
5410
  * for the overflow manager.
5399
5411
  */
5400
5412
  class OverflowStopDirective {
5401
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OverflowStopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5402
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: OverflowStopDirective, isStandalone: true, selector: "[overflowStop]", ngImport: i0 });
5413
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OverflowStopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5414
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: OverflowStopDirective, isStandalone: true, selector: "[overflowStop]", ngImport: i0 });
5403
5415
  }
5404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OverflowStopDirective, decorators: [{
5416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OverflowStopDirective, decorators: [{
5405
5417
  type: Directive,
5406
5418
  args: [{
5407
5419
  selector: '[overflowStop]',
@@ -5446,11 +5458,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
5446
5458
  * ```
5447
5459
  */
5448
5460
  class OverflowManagerDirective {
5449
- items = contentChildren(OverflowItemDirective, { descendants: true, read: ElementRef });
5450
- stop = contentChild(OverflowStopDirective, { descendants: true, read: ElementRef });
5451
- target = input();
5452
- margin = input(4);
5453
- direction = input('horizontal');
5461
+ items = contentChildren(OverflowItemDirective, ...(ngDevMode ? [{ debugName: "items", descendants: true, read: ElementRef }] : [{ descendants: true, read: ElementRef }]));
5462
+ stop = contentChild(OverflowStopDirective, ...(ngDevMode ? [{ debugName: "stop", descendants: true, read: ElementRef }] : [{ descendants: true, read: ElementRef }]));
5463
+ target = input(...(ngDevMode ? [undefined, { debugName: "target" }] : []));
5464
+ margin = input(4, ...(ngDevMode ? [{ debugName: "margin" }] : []));
5465
+ direction = input('horizontal', ...(ngDevMode ? [{ debugName: "direction" }] : []));
5454
5466
  count = output();
5455
5467
  el = inject(ElementRef).nativeElement;
5456
5468
  resizeObserver = new ResizeObserver(() => this.countItems());
@@ -5509,10 +5521,10 @@ class OverflowManagerDirective {
5509
5521
  item.nativeElement.style.visibility = state;
5510
5522
  });
5511
5523
  }
5512
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OverflowManagerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5513
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.0.0", type: OverflowManagerDirective, isStandalone: true, selector: "[overflowManager]", inputs: { target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, margin: { classPropertyName: "margin", publicName: "margin", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { count: "count" }, queries: [{ propertyName: "items", predicate: OverflowItemDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "stop", first: true, predicate: OverflowStopDirective, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 });
5524
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OverflowManagerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5525
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.1.2", type: OverflowManagerDirective, isStandalone: true, selector: "[overflowManager]", inputs: { target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, margin: { classPropertyName: "margin", publicName: "margin", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { count: "count" }, queries: [{ propertyName: "items", predicate: OverflowItemDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "stop", first: true, predicate: OverflowStopDirective, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 });
5514
5526
  }
5515
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OverflowManagerDirective, decorators: [{
5527
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OverflowManagerDirective, decorators: [{
5516
5528
  type: Directive,
5517
5529
  args: [{
5518
5530
  selector: '[overflowManager]',
@@ -5654,10 +5666,10 @@ class DrawerStackService {
5654
5666
  this.openAssistant();
5655
5667
  this.askAI$.next(text);
5656
5668
  }
5657
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5658
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerStackService, providedIn: 'root' });
5669
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5670
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerStackService, providedIn: 'root' });
5659
5671
  }
5660
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerStackService, decorators: [{
5672
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerStackService, decorators: [{
5661
5673
  type: Injectable,
5662
5674
  args: [{
5663
5675
  providedIn: 'root'
@@ -5669,8 +5681,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
5669
5681
  */
5670
5682
  class SelectArticleOnClickDirective {
5671
5683
  drawerStack = inject(DrawerStackService);
5672
- article = input.required();
5673
- strategy = input('stack');
5684
+ article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
5685
+ strategy = input('stack', ...(ngDevMode ? [{ debugName: "strategy" }] : []));
5674
5686
  onEnter(e) {
5675
5687
  if (e && isNotInputEvent(e)) {
5676
5688
  this.onClick();
@@ -5689,10 +5701,10 @@ class SelectArticleOnClickDirective {
5689
5701
  break;
5690
5702
  }
5691
5703
  }
5692
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SelectArticleOnClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5693
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.0", type: SelectArticleOnClickDirective, isStandalone: true, selector: "[appSelectArticleOnClick],[selectArticleOnClick]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown.enter": "onEnter($event)", "click": "onClick()" } }, ngImport: i0 });
5704
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectArticleOnClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5705
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: SelectArticleOnClickDirective, isStandalone: true, selector: "[appSelectArticleOnClick],[selectArticleOnClick]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown.enter": "onEnter($event)", "click": "onClick()" } }, ngImport: i0 });
5694
5706
  }
5695
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SelectArticleOnClickDirective, decorators: [{
5707
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectArticleOnClickDirective, decorators: [{
5696
5708
  type: Directive,
5697
5709
  args: [{
5698
5710
  selector: '[appSelectArticleOnClick],[selectArticleOnClick]',
@@ -5725,14 +5737,14 @@ class ShowBookmarkDirective {
5725
5737
  mouseLeave() {
5726
5738
  this.bookmarkHovered.set(false);
5727
5739
  }
5728
- bookmarkHovered = signal(false);
5740
+ bookmarkHovered = signal(false, ...(ngDevMode ? [{ debugName: "bookmarkHovered" }] : []));
5729
5741
  userSettingsStore = inject(UserSettingsStore);
5730
5742
  isBookmarked = computed(() => {
5731
5743
  if (!this.article())
5732
5744
  return false;
5733
5745
  return this.userSettingsStore.isBookmarked(this.article());
5734
- });
5735
- article = input.required();
5746
+ }, ...(ngDevMode ? [{ debugName: "isBookmarked" }] : []));
5747
+ article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
5736
5748
  showBookmark = output();
5737
5749
  constructor() {
5738
5750
  effect(() => {
@@ -5741,10 +5753,10 @@ class ShowBookmarkDirective {
5741
5753
  this.showBookmark.emit(bookmarkHovered || isBookmarked);
5742
5754
  });
5743
5755
  }
5744
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ShowBookmarkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5745
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.0", type: ShowBookmarkDirective, isStandalone: true, selector: "[showBookmark]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { showBookmark: "showBookmark" }, host: { listeners: { "mouseenter": "mouseEnter()", "mouseleave": "mouseLeave()" } }, ngImport: i0 });
5756
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ShowBookmarkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5757
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: ShowBookmarkDirective, isStandalone: true, selector: "[showBookmark]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { showBookmark: "showBookmark" }, host: { listeners: { "mouseenter": "mouseEnter()", "mouseleave": "mouseLeave()" } }, ngImport: i0 });
5746
5758
  }
5747
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ShowBookmarkDirective, decorators: [{
5759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ShowBookmarkDirective, decorators: [{
5748
5760
  type: Directive,
5749
5761
  args: [{
5750
5762
  selector: '[showBookmark]',
@@ -5762,7 +5774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
5762
5774
  * This directive is used to apply a theme to a native element based on the theme scope.
5763
5775
  */
5764
5776
  class ThemeProviderDirective {
5765
- themeProvider = input.required();
5777
+ themeProvider = input.required(...(ngDevMode ? [{ debugName: "themeProvider" }] : []));
5766
5778
  host = inject(ElementRef);
5767
5779
  themeStore = inject(ThemeStore);
5768
5780
  constructor() {
@@ -5775,10 +5787,10 @@ class ThemeProviderDirective {
5775
5787
  applyThemeToNativeElement(this.host.nativeElement, vars);
5776
5788
  });
5777
5789
  }
5778
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ThemeProviderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5779
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.0", type: ThemeProviderDirective, isStandalone: true, selector: "[themeProvider]", inputs: { themeProvider: { classPropertyName: "themeProvider", publicName: "themeProvider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
5790
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ThemeProviderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5791
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: ThemeProviderDirective, isStandalone: true, selector: "[themeProvider]", inputs: { themeProvider: { classPropertyName: "themeProvider", publicName: "themeProvider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
5780
5792
  }
5781
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ThemeProviderDirective, decorators: [{
5793
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ThemeProviderDirective, decorators: [{
5782
5794
  type: Directive,
5783
5795
  args: [{
5784
5796
  selector: '[themeProvider]',
@@ -5802,10 +5814,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
5802
5814
  */
5803
5815
  class ChildMarkerDirective {
5804
5816
  template = inject((TemplateRef));
5805
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ChildMarkerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5806
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: ChildMarkerDirective, isStandalone: true, selector: "[childMarker]", ngImport: i0 });
5817
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ChildMarkerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5818
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.2", type: ChildMarkerDirective, isStandalone: true, selector: "[childMarker]", ngImport: i0 });
5807
5819
  }
5808
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ChildMarkerDirective, decorators: [{
5820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ChildMarkerDirective, decorators: [{
5809
5821
  type: Directive,
5810
5822
  args: [{
5811
5823
  selector: '[childMarker]'
@@ -5832,10 +5844,10 @@ class HighlightWordPipe {
5832
5844
  const wordNormalized = word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
5833
5845
  return highlightWords({ text: valueNormalized, query: wordNormalized, clipBy });
5834
5846
  }
5835
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: HighlightWordPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5836
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: HighlightWordPipe, isStandalone: true, name: "highlightWord" });
5847
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5848
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, isStandalone: true, name: "highlightWord" });
5837
5849
  }
5838
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: HighlightWordPipe, decorators: [{
5850
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, decorators: [{
5839
5851
  type: Pipe,
5840
5852
  args: [{
5841
5853
  name: 'highlightWord',
@@ -5870,10 +5882,10 @@ class SourceIconPipe {
5870
5882
  }
5871
5883
  return 'far fa-file';
5872
5884
  }
5873
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SourceIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5874
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: SourceIconPipe, isStandalone: true, name: "sourceIcon" });
5885
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5886
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, isStandalone: true, name: "sourceIcon" });
5875
5887
  }
5876
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SourceIconPipe, decorators: [{
5888
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, decorators: [{
5877
5889
  type: Pipe,
5878
5890
  args: [{
5879
5891
  name: 'sourceIcon',
@@ -5911,10 +5923,10 @@ class OperatorPipe {
5911
5923
  return '';
5912
5924
  }
5913
5925
  }
5914
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OperatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5915
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: OperatorPipe, isStandalone: true, name: "operator" });
5926
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5927
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, isStandalone: true, name: "operator" });
5916
5928
  }
5917
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OperatorPipe, decorators: [{
5929
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, decorators: [{
5918
5930
  type: Pipe,
5919
5931
  args: [{
5920
5932
  name: 'operator',
@@ -5965,10 +5977,10 @@ class SyslangPipe {
5965
5977
  }
5966
5978
  return this.lastValue;
5967
5979
  }
5968
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SyslangPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5969
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: SyslangPipe, isStandalone: true, name: "syslang", pure: false });
5980
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5981
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, isStandalone: true, name: "syslang", pure: false });
5970
5982
  }
5971
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SyslangPipe, decorators: [{
5983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, decorators: [{
5972
5984
  type: Pipe,
5973
5985
  args: [{
5974
5986
  name: 'syslang',
@@ -6000,10 +6012,10 @@ class TranslocoDateImpurePipe extends DatePipe {
6000
6012
  });
6001
6013
  return this.lastTransformedValue;
6002
6014
  }
6003
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: TranslocoDateImpurePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }, { token: DATE_PIPE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
6004
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: TranslocoDateImpurePipe, isStandalone: true, name: "translocoDate", pure: false });
6015
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: TranslocoDateImpurePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }, { token: DATE_PIPE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
6016
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: TranslocoDateImpurePipe, isStandalone: true, name: "translocoDate", pure: false });
6005
6017
  }
6006
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: TranslocoDateImpurePipe, decorators: [{
6018
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: TranslocoDateImpurePipe, decorators: [{
6007
6019
  type: Pipe,
6008
6020
  args: [{
6009
6021
  name: 'translocoDate',
@@ -6029,13 +6041,13 @@ class NavbarTabsComponent {
6029
6041
  router = inject(Router);
6030
6042
  route = inject(ActivatedRoute);
6031
6043
  drawerStack = inject(DrawerStackService);
6032
- drawerOpened = signal(false);
6044
+ drawerOpened = signal(false, ...(ngDevMode ? [{ debugName: "drawerOpened" }] : []));
6033
6045
  queryParamsStore = inject(QueryParamsStore);
6034
6046
  searchText = computed(() => {
6035
6047
  const state = getState(this.queryParamsStore);
6036
6048
  return state.text || '';
6037
- });
6038
- visibleTabCount = signal(undefined);
6049
+ }, ...(ngDevMode ? [{ debugName: "searchText" }] : []));
6050
+ visibleTabCount = signal(undefined, ...(ngDevMode ? [{ debugName: "visibleTabCount" }] : []));
6039
6051
  currentPath = computed(() => {
6040
6052
  let current = this.route.snapshot;
6041
6053
  while (current.firstChild) {
@@ -6043,7 +6055,7 @@ class NavbarTabsComponent {
6043
6055
  }
6044
6056
  const childPath = current.url.map(segment => segment.path).join('/');
6045
6057
  return childPath || 'all';
6046
- });
6058
+ }, ...(ngDevMode ? [{ debugName: "currentPath" }] : []));
6047
6059
  // create tabs from the search routes
6048
6060
  tabs = computed(() => this.router.config
6049
6061
  .find(item => item.path === 'search')
@@ -6055,8 +6067,8 @@ class NavbarTabsComponent {
6055
6067
  routerLink: `/search/${child.path}`,
6056
6068
  icon: child.data?.['icon'],
6057
6069
  queryName: child.data?.['queryName']
6058
- })) ?? []);
6059
- moreTabs = computed(() => this.tabs().slice(this.visibleTabCount()));
6070
+ })) ?? [], ...(ngDevMode ? [{ debugName: "tabs" }] : []));
6071
+ moreTabs = computed(() => this.tabs().slice(this.visibleTabCount()), ...(ngDevMode ? [{ debugName: "moreTabs" }] : []));
6060
6072
  changeTab(tab) {
6061
6073
  // we use the routerlink to navigate, so just close the drawer and remove the id parameter from the query params
6062
6074
  this.drawerStack.closeAll();
@@ -6064,8 +6076,8 @@ class NavbarTabsComponent {
6064
6076
  constructor() {
6065
6077
  this.drawerStack.isOpened.pipe(takeUntilDestroyed()).subscribe(state => this.drawerOpened.set(state));
6066
6078
  }
6067
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NavbarTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6068
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: NavbarTabsComponent, isStandalone: true, selector: "navbar-tabs", ngImport: i0, template: `
6079
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NavbarTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6080
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: NavbarTabsComponent, isStandalone: true, selector: "navbar-tabs", ngImport: i0, template: `
6069
6081
  <!-- do not display the tabs if there are no tabs -->
6070
6082
  @if (tabs().length > 0) {
6071
6083
  <div overflowManager class="relative col-span-2 col-start-2 row-start-2 flex" (count)="visibleTabCount.set($event)">
@@ -6118,9 +6130,9 @@ class NavbarTabsComponent {
6118
6130
  }
6119
6131
  </div>
6120
6132
  }
6121
- `, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: TabsComponent, selector: "tabs, Tabs", inputs: ["class", "variant", "size"] }, { kind: "component", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "size", "value", "active"], outputs: ["clicked"] }, { kind: "directive", type: OverflowManagerDirective, selector: "[overflowManager]", inputs: ["target", "margin", "direction"], outputs: ["count"] }, { kind: "directive", type: OverflowItemDirective, selector: "[overflowItem]" }, { kind: "directive", type: OverflowStopDirective, selector: "[overflowStop]" }] });
6133
+ `, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: TabsComponent, selector: "tabs, Tabs", inputs: ["class", "variant", "size"] }, { kind: "component", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "size", "value", "active"], outputs: ["clicked"] }, { kind: "directive", type: OverflowManagerDirective, selector: "[overflowManager]", inputs: ["target", "margin", "direction"], outputs: ["count"] }, { kind: "directive", type: OverflowItemDirective, selector: "[overflowItem]" }, { kind: "directive", type: OverflowStopDirective, selector: "[overflowStop]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
6122
6134
  }
6123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NavbarTabsComponent, decorators: [{
6135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NavbarTabsComponent, decorators: [{
6124
6136
  type: Component,
6125
6137
  args: [{
6126
6138
  selector: 'navbar-tabs',
@@ -6197,8 +6209,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
6197
6209
  }], ctorParameters: () => [] });
6198
6210
 
6199
6211
  class NoResultComponent {
6200
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NoResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6201
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: NoResultComponent, isStandalone: true, selector: "NoResult", host: { classAttribute: "p-4 flex flex-col gap-2 bg-gray-100 rounded-md" }, providers: [provideTranslocoScope('no-result')], ngImport: i0, template: `
6212
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NoResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6213
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: NoResultComponent, isStandalone: true, selector: "NoResult", host: { classAttribute: "p-4 flex flex-col gap-2 bg-gray-100 rounded-md" }, providers: [provideTranslocoScope('no-result')], ngImport: i0, template: `
6202
6214
  <header class="flex items-center gap-2 text-xl font-semibold">
6203
6215
  <i class="fa-fw far fa-face-sad-sweat text-3xl"></i>
6204
6216
  <p>{{ 'noResult.noResult' | transloco }}</p>
@@ -6211,7 +6223,7 @@ class NoResultComponent {
6211
6223
  <p>{{ 'noResult.noResultAssistance' | transloco }}</p>
6212
6224
  `, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
6213
6225
  }
6214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NoResultComponent, decorators: [{
6226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NoResultComponent, decorators: [{
6215
6227
  type: Component,
6216
6228
  args: [{
6217
6229
  selector: 'NoResult',
@@ -6237,12 +6249,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
6237
6249
  }] });
6238
6250
 
6239
6251
  class PagerComponent {
6240
- configuration = input.required();
6241
- page = signal(0);
6252
+ configuration = input.required(...(ngDevMode ? [{ debugName: "configuration" }] : []));
6253
+ page = signal(0, ...(ngDevMode ? [{ debugName: "page" }] : []));
6242
6254
  hasPages = computed(() => {
6243
6255
  const { page, pageSize, rowCount } = this.configuration();
6244
6256
  return page * pageSize < rowCount;
6245
- });
6257
+ }, ...(ngDevMode ? [{ debugName: "hasPages" }] : []));
6246
6258
  queryService = inject(QueryService);
6247
6259
  constructor() {
6248
6260
  effect(() => {
@@ -6257,8 +6269,8 @@ class PagerComponent {
6257
6269
  this.page.set(this.page() - 1);
6258
6270
  this.queryService.gotoPage(this.page());
6259
6271
  }
6260
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6261
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: PagerComponent, isStandalone: true, selector: "pager", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
6272
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: PagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6273
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: PagerComponent, isStandalone: true, selector: "pager", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
6262
6274
  <div class="flex gap-2">
6263
6275
  @if ((hasPages() && page() > 1) || (!hasPages() && page() > 1)) {
6264
6276
  <button variant="ghost" [attr.title]="'previousPage' | transloco" (click)="previousPage()">
@@ -6280,9 +6292,9 @@ class PagerComponent {
6280
6292
  </button>
6281
6293
  }
6282
6294
  </div>
6283
- `, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }] });
6295
+ `, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
6284
6296
  }
6285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: PagerComponent, decorators: [{
6297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: PagerComponent, decorators: [{
6286
6298
  type: Component,
6287
6299
  args: [{
6288
6300
  selector: 'pager',
@@ -6316,11 +6328,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
6316
6328
 
6317
6329
  class SearchInputComponent {
6318
6330
  cn = cn;
6319
- searchElement = viewChild('search');
6331
+ searchElement = viewChild('search', ...(ngDevMode ? [{ debugName: "searchElement" }] : []));
6320
6332
  onFocus = output();
6321
6333
  onBlur = output();
6322
6334
  onSelected = output();
6323
- controls = input.required();
6335
+ controls = input.required(...(ngDevMode ? [{ debugName: "controls" }] : []));
6324
6336
  keyboardNavigatorOptions = input({
6325
6337
  name: 'searchInputKeyboardNavigator',
6326
6338
  optionSelector: '[role="option"]:not([aria-disabled="true"])',
@@ -6331,15 +6343,15 @@ class SearchInputComponent {
6331
6343
  hideListbox: true,
6332
6344
  resetSelection: true
6333
6345
  }
6334
- });
6335
- placeholder = input('Search...');
6336
- disabled = input(false);
6337
- hotkey = input('shift+/');
6338
- class = input();
6339
- variant = input('default');
6346
+ }, ...(ngDevMode ? [{ debugName: "keyboardNavigatorOptions" }] : []));
6347
+ placeholder = input('Search...', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
6348
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
6349
+ hotkey = input('shift+/', ...(ngDevMode ? [{ debugName: "hotkey" }] : []));
6350
+ class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
6351
+ variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
6340
6352
  variants = computed(() => {
6341
6353
  return searchVariants({ variant: this.variant(), class: this.class() });
6342
- });
6354
+ }, ...(ngDevMode ? [{ debugName: "variants" }] : []));
6343
6355
  clearSearch(e) {
6344
6356
  const searchEl = this.searchElement()?.nativeElement;
6345
6357
  if (searchEl) {
@@ -6363,8 +6375,8 @@ class SearchInputComponent {
6363
6375
  registerOnTouched(fn) {
6364
6376
  this.onTouched = fn;
6365
6377
  }
6366
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6367
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: SearchInputComponent, isStandalone: true, selector: "SearchInput", inputs: { controls: { classPropertyName: "controls", publicName: "controls", isSignal: true, isRequired: true, transformFunction: null }, keyboardNavigatorOptions: { classPropertyName: "keyboardNavigatorOptions", publicName: "keyboardNavigatorOptions", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hotkey: { classPropertyName: "hotkey", publicName: "hotkey", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onSelected: "onSelected" }, host: { properties: { "class": "cn(variants(), disabled() && 'pointer-events-none opacity-50')" } }, providers: [
6378
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6379
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", type: SearchInputComponent, isStandalone: true, selector: "SearchInput", inputs: { controls: { classPropertyName: "controls", publicName: "controls", isSignal: true, isRequired: true, transformFunction: null }, keyboardNavigatorOptions: { classPropertyName: "keyboardNavigatorOptions", publicName: "keyboardNavigatorOptions", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hotkey: { classPropertyName: "hotkey", publicName: "hotkey", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onSelected: "onSelected" }, host: { properties: { "class": "cn(variants(), disabled() && 'pointer-events-none opacity-50')" } }, providers: [
6368
6380
  {
6369
6381
  provide: NG_VALUE_ACCESSOR,
6370
6382
  useExisting: forwardRef(() => SearchInputComponent),
@@ -6400,7 +6412,7 @@ class SearchInputComponent {
6400
6412
  <ng-content />
6401
6413
  `, isInline: true, styles: [":host input[type=search]::-ms-clear,:host input[type=search]::-ms-reveal{appearance:none;width:0;height:0}:host input[type=search]::-webkit-search-decoration,:host input[type=search]::-webkit-search-cancel-button,:host input[type=search]::-webkit-search-results-button,:host input[type=search]::-webkit-search-results-decoration{appearance:none}\n"], dependencies: [{ kind: "component", type: SearchIconComponent, selector: "SearchIcon", inputs: ["class", "width", "height"] }, { kind: "component", type: XMarkIConComponent, selector: "XMark, xmark, x-mark", inputs: ["class", "width", "height"] }, { kind: "directive", type: KeyboardNavigatorDirective, selector: "input[role=\"combobox\"]", inputs: ["keyboardNavigator", "aria-controls"], outputs: ["onFocus", "onBlur", "onSelected"] }] });
6402
6414
  }
6403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchInputComponent, decorators: [{
6415
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchInputComponent, decorators: [{
6404
6416
  type: Component,
6405
6417
  args: [{ selector: 'SearchInput', standalone: true, imports: [SearchIconComponent, XMarkIConComponent, KeyboardNavigatorDirective], template: `
6406
6418
  <SearchIcon class="text-foreground size-4 rotate-0 transition-[rotate] duration-500 group-focus-within:rotate-90" />
@@ -6442,12 +6454,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
6442
6454
  }] });
6443
6455
 
6444
6456
  class SortSelectorComponent {
6445
- dropdown = viewChild(DropdownComponent);
6446
- result = input.required();
6447
- position = input('bottom-start');
6457
+ dropdown = viewChild(DropdownComponent, ...(ngDevMode ? [{ debugName: "dropdown" }] : []));
6458
+ result = input.required(...(ngDevMode ? [{ debugName: "result" }] : []));
6459
+ position = input('bottom-start', ...(ngDevMode ? [{ debugName: "position" }] : []));
6448
6460
  onSort = output();
6449
6461
  appStore = inject(AppStore);
6450
- queryName = computed(() => this.result()?.queryName);
6462
+ queryName = computed(() => this.result()?.queryName, ...(ngDevMode ? [{ debugName: "queryName" }] : []));
6451
6463
  // fetch the sorting choices from the queries and process if choice is desc or asc
6452
6464
  sortOptions = computed(() => {
6453
6465
  const query = this.appStore.getQueryByName(this.queryName());
@@ -6477,19 +6489,19 @@ class SortSelectorComponent {
6477
6489
  return acc;
6478
6490
  }, [])
6479
6491
  .filter(s => this.result().hasRelevance || !s.orderByClause.includes('globalrelevance'));
6480
- });
6481
- sort = computed(() => this.sortOptions()?.find(x => x.name === this.result()?.sort));
6482
- isSortingDesc = computed(() => this.sort()?.orderByClause?.includes('desc'));
6492
+ }, ...(ngDevMode ? [{ debugName: "sortOptions" }] : []));
6493
+ sort = computed(() => this.sortOptions()?.find(x => x.name === this.result()?.sort), ...(ngDevMode ? [{ debugName: "sort" }] : []));
6494
+ isSortingDesc = computed(() => this.sort()?.orderByClause?.includes('desc'), ...(ngDevMode ? [{ debugName: "isSortingDesc" }] : []));
6483
6495
  onSortOptionClicked(sort) {
6484
6496
  if (sort.name !== this.sort()?.name) {
6485
6497
  this.dropdown()?.close();
6486
6498
  this.onSort.emit(sort);
6487
6499
  }
6488
6500
  }
6489
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SortSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6490
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SortSelectorComponent, isStandalone: true, selector: "sort-selector, sortselector, SortSelector", inputs: { result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSort: "onSort" }, providers: [provideTranslocoScope('sort-selector')], viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<menu>\n <button tabindex=\"0\" variant=\"ghost\" [attr.title]=\"'sortSelector.selectSort' | transloco\">\n <i class=\"fa-fw fa-regular fa-arrow-{{ sort()?.$isDesc ? 'down' : 'up' }}-big-small me-1\"></i>\n <span>{{ sort()?.display | transloco }}</span>\n </button>\n\n <MenuContent [position]=\"position()\" class=\"min-w-max\">\n @if (sortOptions().length > 0) {\n @for (option of sortOptions(); track $index) {\n <menuitem (click)=\"onSortOptionClicked(option)\" class=\"justify-between\">\n <span>{{ option.display | transloco }}</span>\n <i class=\"fa-fw fa-regular fa-arrow-{{ option.$isDesc ? 'down' : 'up' }}-big-small\"></i>\n </menuitem>\n }\n }\n </MenuContent>\n</menu>\n", dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant"] }] });
6501
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SortSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6502
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SortSelectorComponent, isStandalone: true, selector: "sort-selector, sortselector, SortSelector", inputs: { result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSort: "onSort" }, providers: [provideTranslocoScope('sort-selector')], viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<menu>\n <button tabindex=\"0\" variant=\"ghost\" [attr.title]=\"'sortSelector.selectSort' | transloco\">\n <i class=\"fa-fw fa-regular fa-arrow-{{ sort()?.$isDesc ? 'down' : 'up' }}-big-small me-1\"></i>\n <span>{{ sort()?.display | transloco }}</span>\n </button>\n\n <MenuContent [position]=\"position()\" class=\"min-w-max\">\n @if (sortOptions().length > 0) {\n @for (option of sortOptions(); track $index) {\n <menuitem (click)=\"onSortOptionClicked(option)\" class=\"justify-between\">\n <span>{{ option.display | transloco }}</span>\n <i class=\"fa-fw fa-regular fa-arrow-{{ option.$isDesc ? 'down' : 'up' }}-big-small\"></i>\n </menuitem>\n }\n }\n </MenuContent>\n</menu>\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
6491
6503
  }
6492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SortSelectorComponent, decorators: [{
6504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SortSelectorComponent, decorators: [{
6493
6505
  type: Component,
6494
6506
  args: [{ selector: 'sort-selector, sortselector, SortSelector', standalone: true, imports: [TranslocoPipe, ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent], providers: [provideTranslocoScope('sort-selector')], template: "<menu>\n <button tabindex=\"0\" variant=\"ghost\" [attr.title]=\"'sortSelector.selectSort' | transloco\">\n <i class=\"fa-fw fa-regular fa-arrow-{{ sort()?.$isDesc ? 'down' : 'up' }}-big-small me-1\"></i>\n <span>{{ sort()?.display | transloco }}</span>\n </button>\n\n <MenuContent [position]=\"position()\" class=\"min-w-max\">\n @if (sortOptions().length > 0) {\n @for (option of sortOptions(); track $index) {\n <menuitem (click)=\"onSortOptionClicked(option)\" class=\"justify-between\">\n <span>{{ option.display | transloco }}</span>\n <i class=\"fa-fw fa-regular fa-arrow-{{ option.$isDesc ? 'down' : 'up' }}-big-small\"></i>\n </menuitem>\n }\n }\n </MenuContent>\n</menu>\n" }]
6495
6507
  }] });
@@ -6499,7 +6511,7 @@ class SponsoredResultsComponent {
6499
6511
  * The directive used to mark the child template for the "Promoted" badge.
6500
6512
  * This allows users to customize the appearance of the badge.
6501
6513
  */
6502
- childElement = contentChild(ChildMarkerDirective);
6514
+ childElement = contentChild(ChildMarkerDirective, ...(ngDevMode ? [{ debugName: "childElement" }] : []));
6503
6515
  injector = inject(Injector);
6504
6516
  appStore = inject(AppStore);
6505
6517
  queryParamStore = inject(QueryParamsStore);
@@ -6507,17 +6519,17 @@ class SponsoredResultsComponent {
6507
6519
  * The maximum number of sponsored results to display.
6508
6520
  * This is set to 3 by default, but can be overridden by the `maxSponsoredResults` query parameter.
6509
6521
  */
6510
- slice = input(3);
6522
+ slice = input(3, ...(ngDevMode ? [{ debugName: "slice" }] : []));
6511
6523
  /**
6512
6524
  * Whether to display the "Promoted" badge next to sponsored results.
6513
6525
  * This is set to true by default, but can be overridden by the `displayPromoted` query parameter.
6514
6526
  */
6515
- displayPromoted = input(true);
6527
+ displayPromoted = input(true, ...(ngDevMode ? [{ debugName: "displayPromoted" }] : []));
6516
6528
  sponsoredLinks = computed(() => {
6517
6529
  const { sponsoredLinks } = getState(this.appStore);
6518
6530
  return sponsoredLinks;
6519
- });
6520
- sponsoredResults = signal(undefined);
6531
+ }, ...(ngDevMode ? [{ debugName: "sponsoredLinks" }] : []));
6532
+ sponsoredResults = signal(undefined, ...(ngDevMode ? [{ debugName: "sponsoredResults" }] : []));
6521
6533
  constructor() {
6522
6534
  afterNextRender(async () => {
6523
6535
  if (this.sponsoredLinks()) {
@@ -6540,8 +6552,8 @@ class SponsoredResultsComponent {
6540
6552
  }
6541
6553
  });
6542
6554
  }
6543
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SponsoredResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6544
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SponsoredResultsComponent, isStandalone: true, selector: "sponsored-results, SponsoredResults, sponsoredresults", inputs: { slice: { classPropertyName: "slice", publicName: "slice", isSignal: true, isRequired: false, transformFunction: null }, displayPromoted: { classPropertyName: "displayPromoted", publicName: "displayPromoted", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "list" } }, queries: [{ propertyName: "childElement", first: true, predicate: ChildMarkerDirective, descendants: true, isSignal: true }], ngImport: i0, template: ` @if (sponsoredResults()?.length) {
6555
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SponsoredResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6556
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SponsoredResultsComponent, isStandalone: true, selector: "sponsored-results, SponsoredResults, sponsoredresults", inputs: { slice: { classPropertyName: "slice", publicName: "slice", isSignal: true, isRequired: false, transformFunction: null }, displayPromoted: { classPropertyName: "displayPromoted", publicName: "displayPromoted", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "list" } }, queries: [{ propertyName: "childElement", first: true, predicate: ChildMarkerDirective, descendants: true, isSignal: true }], ngImport: i0, template: ` @if (sponsoredResults()?.length) {
6545
6557
  @for (link of sponsoredResults(); track $index) {
6546
6558
  <li role="listitem" class="text-primary flex items-center gap-2 rounded px-3 py-2 font-bold">
6547
6559
  <a href="{{ link.url }}" target="_blank" rel="noopener" title="{{ link.tooltip }}" class="result-link peer flex items-center gap-2 hover:underline">
@@ -6559,7 +6571,7 @@ class SponsoredResultsComponent {
6559
6571
  }
6560
6572
  }`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
6561
6573
  }
6562
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SponsoredResultsComponent, decorators: [{
6574
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SponsoredResultsComponent, decorators: [{
6563
6575
  type: Component,
6564
6576
  args: [{
6565
6577
  selector: 'sponsored-results, SponsoredResults, sponsoredresults',
@@ -6589,10 +6601,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
6589
6601
  }], ctorParameters: () => [] });
6590
6602
 
6591
6603
  class ThemeSelectorComponent {
6592
- scope = input.required();
6593
- showPrivate = input(false);
6594
- themes = computed(() => THEMES.filter(theme => (this.showPrivate() ? true : !theme.private)));
6595
- selectedTheme = model();
6604
+ scope = input.required(...(ngDevMode ? [{ debugName: "scope" }] : []));
6605
+ showPrivate = input(false, ...(ngDevMode ? [{ debugName: "showPrivate" }] : []));
6606
+ themes = computed(() => THEMES.filter(theme => (this.showPrivate() ? true : !theme.private)), ...(ngDevMode ? [{ debugName: "themes" }] : []));
6607
+ selectedTheme = model(...(ngDevMode ? [undefined, { debugName: "selectedTheme" }] : []));
6596
6608
  themeStore = inject(ThemeStore);
6597
6609
  constructor() {
6598
6610
  effect(() => {
@@ -6607,8 +6619,8 @@ class ThemeSelectorComponent {
6607
6619
  theme = theme.name;
6608
6620
  this.themeStore.setCurrentTheme(this.scope(), theme);
6609
6621
  }
6610
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ThemeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6611
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: ThemeSelectorComponent, isStandalone: true, selector: "theme-selector", inputs: { scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: true, transformFunction: null }, showPrivate: { classPropertyName: "showPrivate", publicName: "showPrivate", isSignal: true, isRequired: false, transformFunction: null }, selectedTheme: { classPropertyName: "selectedTheme", publicName: "selectedTheme", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTheme: "selectedThemeChange" }, ngImport: i0, template: `
6622
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ThemeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6623
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: ThemeSelectorComponent, isStandalone: true, selector: "theme-selector", inputs: { scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: true, transformFunction: null }, showPrivate: { classPropertyName: "showPrivate", publicName: "showPrivate", isSignal: true, isRequired: false, transformFunction: null }, selectedTheme: { classPropertyName: "selectedTheme", publicName: "selectedTheme", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTheme: "selectedThemeChange" }, ngImport: i0, template: `
6612
6624
  <Menu>
6613
6625
  <ng-content></ng-content>
6614
6626
 
@@ -6627,7 +6639,7 @@ class ThemeSelectorComponent {
6627
6639
  </Menu>
6628
6640
  `, isInline: true, styles: [""], dependencies: [{ kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }] });
6629
6641
  }
6630
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ThemeSelectorComponent, decorators: [{
6642
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ThemeSelectorComponent, decorators: [{
6631
6643
  type: Component,
6632
6644
  args: [{ selector: 'theme-selector', standalone: true, imports: [MenuComponent, NgStyle, MenuContentComponent], template: `
6633
6645
  <Menu>
@@ -6650,8 +6662,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
6650
6662
  }], ctorParameters: () => [] });
6651
6663
 
6652
6664
  class ThemeToggleComponent {
6653
- scope = input.required();
6654
- darkMode = model();
6665
+ scope = input.required(...(ngDevMode ? [{ debugName: "scope" }] : []));
6666
+ darkMode = model(...(ngDevMode ? [undefined, { debugName: "darkMode" }] : []));
6655
6667
  themeStore = inject(ThemeStore);
6656
6668
  constructor() {
6657
6669
  effect(() => {
@@ -6667,8 +6679,8 @@ class ThemeToggleComponent {
6667
6679
  return;
6668
6680
  this.themeStore.setDarkMode(this.scope(), status);
6669
6681
  }
6670
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6671
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: ThemeToggleComponent, isStandalone: true, selector: "theme-toggle", inputs: { scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: true, transformFunction: null }, darkMode: { classPropertyName: "darkMode", publicName: "darkMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { darkMode: "darkModeChange" }, ngImport: i0, template: `
6682
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6683
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: ThemeToggleComponent, isStandalone: true, selector: "theme-toggle", inputs: { scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: true, transformFunction: null }, darkMode: { classPropertyName: "darkMode", publicName: "darkMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { darkMode: "darkModeChange" }, ngImport: i0, template: `
6672
6684
  <label class="flex cursor-pointer select-none items-center gap-2">
6673
6685
  @if (darkMode()) {
6674
6686
  <i class="fa-fw far fa-toggle-large-on text-primary"></i>
@@ -6682,7 +6694,7 @@ class ThemeToggleComponent {
6682
6694
  </label>
6683
6695
  `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
6684
6696
  }
6685
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ThemeToggleComponent, decorators: [{
6697
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ThemeToggleComponent, decorators: [{
6686
6698
  type: Component,
6687
6699
  args: [{ selector: 'theme-toggle', standalone: true, imports: [FormsModule], template: `
6688
6700
  <label class="flex cursor-pointer select-none items-center gap-2">
@@ -6877,24 +6889,24 @@ const queryNameResolver = () => {
6877
6889
  };
6878
6890
 
6879
6891
  class SearchFooterComponent {
6880
- hasMore = input.required();
6881
- config = input.required();
6892
+ hasMore = input.required(...(ngDevMode ? [{ debugName: "hasMore" }] : []));
6893
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
6882
6894
  loadMore = output();
6883
6895
  onLoadMore(event) {
6884
6896
  event.stopPropagation();
6885
6897
  this.loadMore.emit();
6886
6898
  }
6887
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6888
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SearchFooterComponent, isStandalone: true, selector: "search-footer, searchfooter, SearchFooter", inputs: { hasMore: { classPropertyName: "hasMore", publicName: "hasMore", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { loadMore: "loadMore" }, ngImport: i0, template: ` <div class="flex flex-col px-2">
6899
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6900
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SearchFooterComponent, isStandalone: true, selector: "search-footer, searchfooter, SearchFooter", inputs: { hasMore: { classPropertyName: "hasMore", publicName: "hasMore", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { loadMore: "loadMore" }, ngImport: i0, template: ` <div class="flex flex-col px-2">
6889
6901
  @if (hasMore() && config().showLoadMore) {
6890
6902
  <button variant="outline" class="w-full" tabindex="0" [attr.title]="'loadMore' | transloco" (click)="onLoadMore($event)">
6891
6903
  {{ 'loadMore' | transloco }}
6892
6904
  </button>
6893
6905
  }
6894
6906
  <button variant="link" class="ml-auto" [attr.title]="'seeMore' | transloco" [routerLink]="[config().routerLink]">{{ 'seeMore' | transloco }}</button>
6895
- </div>`, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }] });
6907
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
6896
6908
  }
6897
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchFooterComponent, decorators: [{
6909
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchFooterComponent, decorators: [{
6898
6910
  type: Component,
6899
6911
  args: [{
6900
6912
  selector: 'search-footer, searchfooter, SearchFooter',
@@ -6912,9 +6924,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
6912
6924
 
6913
6925
  class SearchHeaderComponent {
6914
6926
  floating = inject(PopoverContentComponent, { skipSelf: true, optional: true });
6915
- label = input('');
6916
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6917
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SearchHeaderComponent, isStandalone: true, selector: "search-header, searchheader, SearchHeader", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
6927
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
6928
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6929
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SearchHeaderComponent, isStandalone: true, selector: "search-header, searchheader, SearchHeader", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
6918
6930
  @if (floating) {
6919
6931
  <div class="p-2">
6920
6932
  <label class="text-xl font-bold">{{ label() }}</label>
@@ -6923,7 +6935,7 @@ class SearchHeaderComponent {
6923
6935
  }
6924
6936
  `, isInline: true, dependencies: [{ kind: "component", type: HorizontalDividerComponent, selector: "menu-separator, MenuSeparator, menuseparator, horizontal-divider, HorizontalDivider, horizontaldivider" }] });
6925
6937
  }
6926
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchHeaderComponent, decorators: [{
6938
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchHeaderComponent, decorators: [{
6927
6939
  type: Component,
6928
6940
  args: [{
6929
6941
  selector: 'search-header, searchheader, SearchHeader',
@@ -6942,9 +6954,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
6942
6954
  class SearchListComponent {
6943
6955
  cn = cn;
6944
6956
  getRelativeDate = getRelativeDate;
6945
- iconTemplate = contentChild(ChildMarkerDirective);
6946
- paginatedSearches = input.required();
6947
- deleteButtonTitle = input('remove');
6957
+ iconTemplate = contentChild(ChildMarkerDirective, ...(ngDevMode ? [{ debugName: "iconTemplate" }] : []));
6958
+ paginatedSearches = input.required(...(ngDevMode ? [{ debugName: "paginatedSearches" }] : []));
6959
+ deleteButtonTitle = input('remove', ...(ngDevMode ? [{ debugName: "deleteButtonTitle" }] : []));
6948
6960
  delete = output();
6949
6961
  router = inject(Router);
6950
6962
  userSettingsStore = inject(UserSettingsStore);
@@ -6961,8 +6973,8 @@ class SearchListComponent {
6961
6973
  e.stopPropagation();
6962
6974
  this.delete.emit(index);
6963
6975
  }
6964
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6965
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SearchListComponent, isStandalone: true, selector: "search-list, searchlist, SearchList", inputs: { paginatedSearches: { classPropertyName: "paginatedSearches", publicName: "paginatedSearches", isSignal: true, isRequired: true, transformFunction: null }, deleteButtonTitle: { classPropertyName: "deleteButtonTitle", publicName: "deleteButtonTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { delete: "delete" }, host: { attributes: { "role": "list" }, classAttribute: "flex max-h-[460px] flex-col overflow-auto" }, providers: [provideTranslocoScope('searches')], queries: [{ propertyName: "iconTemplate", first: true, predicate: ChildMarkerDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
6976
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6977
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SearchListComponent, isStandalone: true, selector: "search-list, searchlist, SearchList", inputs: { paginatedSearches: { classPropertyName: "paginatedSearches", publicName: "paginatedSearches", isSignal: true, isRequired: true, transformFunction: null }, deleteButtonTitle: { classPropertyName: "deleteButtonTitle", publicName: "deleteButtonTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { delete: "delete" }, host: { attributes: { "role": "list" }, classAttribute: "flex max-h-[460px] flex-col overflow-auto" }, providers: [provideTranslocoScope('searches')], queries: [{ propertyName: "iconTemplate", first: true, predicate: ChildMarkerDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
6966
6978
  @for (search of paginatedSearches(); track $index) {
6967
6979
  <li
6968
6980
  role="listitem"
@@ -7004,9 +7016,9 @@ class SearchListComponent {
7004
7016
  <ng-content />
7005
7017
  </li>
7006
7018
  }
7007
- `, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
7019
+ `, isInline: true, dependencies: [{ kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7008
7020
  }
7009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchListComponent, decorators: [{
7021
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchListComponent, decorators: [{
7010
7022
  type: Component,
7011
7023
  args: [{
7012
7024
  selector: 'search-list, searchlist, SearchList',
@@ -7075,10 +7087,10 @@ class RecentSearchesComponent {
7075
7087
  * Represents the configuration options for recent searches.
7076
7088
  * This property is initialized using the `input` function with a `RecentSearchesConfig` type.
7077
7089
  */
7078
- options = input();
7090
+ options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
7079
7091
  config = inject(RECENT_SEARCHES_CONFIG);
7080
7092
  userSettingsStore = inject(UserSettingsStore);
7081
- range = signal(10);
7093
+ range = signal(10, ...(ngDevMode ? [{ debugName: "range" }] : []));
7082
7094
  recentSearches = computed(() => (this.userSettingsStore.recentSearches() || []).reduce((acc, item) => {
7083
7095
  const queryParams = getQueryParamsFromUrl(item.url);
7084
7096
  acc.push(Object.assign(item, {
@@ -7087,9 +7099,9 @@ class RecentSearchesComponent {
7087
7099
  queryParams
7088
7100
  }));
7089
7101
  return acc;
7090
- }, []));
7091
- paginatedRecentSearches = computed(() => this.recentSearches().slice(0, this.range()));
7092
- hasMore = computed(() => this.recentSearches().length > 0 && this.range() < this.recentSearches().length);
7102
+ }, []), ...(ngDevMode ? [{ debugName: "recentSearches" }] : []));
7103
+ paginatedRecentSearches = computed(() => this.recentSearches().slice(0, this.range()), ...(ngDevMode ? [{ debugName: "paginatedRecentSearches" }] : []));
7104
+ hasMore = computed(() => this.recentSearches().length > 0 && this.range() < this.recentSearches().length, ...(ngDevMode ? [{ debugName: "hasMore" }] : []));
7093
7105
  constructor() {
7094
7106
  effect(() => {
7095
7107
  if (this.options()) {
@@ -7110,8 +7122,8 @@ class RecentSearchesComponent {
7110
7122
  loadMore() {
7111
7123
  this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
7112
7124
  }
7113
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecentSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7114
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.0", type: RecentSearchesComponent, isStandalone: true, selector: "RecentSearches, recent-searches", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('searches')], ngImport: i0, template: `
7125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: RecentSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.2", type: RecentSearchesComponent, isStandalone: true, selector: "RecentSearches, recent-searches", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('searches')], ngImport: i0, template: `
7115
7127
  <SearchHeader [label]="'searches.recent.label' | transloco" />
7116
7128
 
7117
7129
  <SearchList
@@ -7125,9 +7137,9 @@ class RecentSearchesComponent {
7125
7137
  </SearchList>
7126
7138
 
7127
7139
  <SearchFooter [hasMore]="hasMore()" [config]="config" (loadMore)="loadMore()" />
7128
- `, isInline: true, styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ChildMarkerDirective, selector: "[childMarker]" }, { kind: "component", type: SearchHeaderComponent, selector: "search-header, searchheader, SearchHeader", inputs: ["label"] }, { kind: "component", type: SearchListComponent, selector: "search-list, searchlist, SearchList", inputs: ["paginatedSearches", "deleteButtonTitle"], outputs: ["delete"] }, { kind: "component", type: SearchFooterComponent, selector: "search-footer, searchfooter, SearchFooter", inputs: ["hasMore", "config"], outputs: ["loadMore"] }] });
7140
+ `, isInline: true, styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: ChildMarkerDirective, selector: "[childMarker]" }, { kind: "component", type: SearchHeaderComponent, selector: "search-header, searchheader, SearchHeader", inputs: ["label"] }, { kind: "component", type: SearchListComponent, selector: "search-list, searchlist, SearchList", inputs: ["paginatedSearches", "deleteButtonTitle"], outputs: ["delete"] }, { kind: "component", type: SearchFooterComponent, selector: "search-footer, searchfooter, SearchFooter", inputs: ["hasMore", "config"], outputs: ["loadMore"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7129
7141
  }
7130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: RecentSearchesComponent, decorators: [{
7142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: RecentSearchesComponent, decorators: [{
7131
7143
  type: Component,
7132
7144
  args: [{ selector: 'RecentSearches, recent-searches', standalone: true, providers: [provideTranslocoScope('searches')], imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent], template: `
7133
7145
  <SearchHeader [label]="'searches.recent.label' | transloco" />
@@ -7153,10 +7165,10 @@ const SAVED_SEARCHES_OPTIONS = {
7153
7165
  };
7154
7166
  const SAVED_SEARCHES_CONFIG = new InjectionToken('saved searches options', { factory: () => SAVED_SEARCHES_OPTIONS });
7155
7167
  class SavedSearchesComponent {
7156
- options = input();
7168
+ options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
7157
7169
  config = inject(SAVED_SEARCHES_CONFIG);
7158
7170
  userSettingsStore = inject(UserSettingsStore);
7159
- range = signal(10);
7171
+ range = signal(10, ...(ngDevMode ? [{ debugName: "range" }] : []));
7160
7172
  savedSearches = computed(() => (this.userSettingsStore.savedSearches() || []).reduce((acc, item) => {
7161
7173
  const queryParams = getQueryParamsFromUrl(item.url);
7162
7174
  acc.push(Object.assign(item, {
@@ -7165,9 +7177,9 @@ class SavedSearchesComponent {
7165
7177
  queryParams
7166
7178
  }));
7167
7179
  return acc;
7168
- }, []));
7169
- paginatedSearches = computed(() => this.savedSearches().slice(0, this.range()));
7170
- hasMore = computed(() => this.savedSearches().length > 0 && this.range() < this.savedSearches().length);
7180
+ }, []), ...(ngDevMode ? [{ debugName: "savedSearches" }] : []));
7181
+ paginatedSearches = computed(() => this.savedSearches().slice(0, this.range()), ...(ngDevMode ? [{ debugName: "paginatedSearches" }] : []));
7182
+ hasMore = computed(() => this.savedSearches().length > 0 && this.range() < this.savedSearches().length, ...(ngDevMode ? [{ debugName: "hasMore" }] : []));
7171
7183
  constructor() {
7172
7184
  effect(() => {
7173
7185
  if (this.options()) {
@@ -7183,8 +7195,8 @@ class SavedSearchesComponent {
7183
7195
  loadMore() {
7184
7196
  this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
7185
7197
  }
7186
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SavedSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7187
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.0", type: SavedSearchesComponent, isStandalone: true, selector: "saved-searches, SavedSearches", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('searches')], ngImport: i0, template: `
7198
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SavedSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7199
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.2", type: SavedSearchesComponent, isStandalone: true, selector: "saved-searches, SavedSearches", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('searches')], ngImport: i0, template: `
7188
7200
  <SearchHeader [label]="'searches.saved.label' | transloco" />
7189
7201
 
7190
7202
  <SearchList [paginatedSearches]="paginatedSearches()" deleteButtonTitle="searches.saved.remove" (delete)="onDelete($event)">
@@ -7194,9 +7206,9 @@ class SavedSearchesComponent {
7194
7206
  </SearchList>
7195
7207
 
7196
7208
  <SearchFooter [hasMore]="hasMore()" [config]="config" (loadMore)="loadMore()" />
7197
- `, isInline: true, styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ChildMarkerDirective, selector: "[childMarker]" }, { kind: "component", type: SearchHeaderComponent, selector: "search-header, searchheader, SearchHeader", inputs: ["label"] }, { kind: "component", type: SearchListComponent, selector: "search-list, searchlist, SearchList", inputs: ["paginatedSearches", "deleteButtonTitle"], outputs: ["delete"] }, { kind: "component", type: SearchFooterComponent, selector: "search-footer, searchfooter, SearchFooter", inputs: ["hasMore", "config"], outputs: ["loadMore"] }] });
7209
+ `, isInline: true, styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: ChildMarkerDirective, selector: "[childMarker]" }, { kind: "component", type: SearchHeaderComponent, selector: "search-header, searchheader, SearchHeader", inputs: ["label"] }, { kind: "component", type: SearchListComponent, selector: "search-list, searchlist, SearchList", inputs: ["paginatedSearches", "deleteButtonTitle"], outputs: ["delete"] }, { kind: "component", type: SearchFooterComponent, selector: "search-footer, searchfooter, SearchFooter", inputs: ["hasMore", "config"], outputs: ["loadMore"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7198
7210
  }
7199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SavedSearchesComponent, decorators: [{
7211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SavedSearchesComponent, decorators: [{
7200
7212
  type: Component,
7201
7213
  args: [{ selector: 'saved-searches, SavedSearches', standalone: true, imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent], providers: [provideTranslocoScope('searches')], template: `
7202
7214
  <SearchHeader [label]="'searches.saved.label' | transloco" />
@@ -7214,8 +7226,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
7214
7226
  class SavedSearchDialog {
7215
7227
  savedSearchesService = inject(SavedSearchesService);
7216
7228
  queryParamsStore = inject(QueryParamsStore);
7217
- dialog = viewChild(DialogComponent);
7218
- saveName = signal('');
7229
+ dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
7230
+ saveName = signal('', ...(ngDevMode ? [{ debugName: "saveName" }] : []));
7219
7231
  closed = output();
7220
7232
  open(text) {
7221
7233
  this.saveName.set(text || '');
@@ -7228,8 +7240,8 @@ class SavedSearchDialog {
7228
7240
  // emit closed event for the diaglog service
7229
7241
  this.closed.emit('dialog-confirm');
7230
7242
  }
7231
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SavedSearchDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
7232
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: SavedSearchDialog, isStandalone: true, selector: "saved-search-dialog, savedsearchdialog, SavedSearchDialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope('searches')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
7243
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SavedSearchDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
7244
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", type: SavedSearchDialog, isStandalone: true, selector: "saved-search-dialog, savedsearchdialog, SavedSearchDialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope('searches')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
7233
7245
  <dialog #dialog>
7234
7246
  <DialogHeader>
7235
7247
  <DialogTitle>{{ 'searches.saved.save' | transloco }}</DialogTitle>
@@ -7257,9 +7269,9 @@ class SavedSearchDialog {
7257
7269
  </div>
7258
7270
  </DialogFooter>
7259
7271
  </dialog>
7260
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }] });
7272
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7261
7273
  }
7262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SavedSearchDialog, decorators: [{
7274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SavedSearchDialog, decorators: [{
7263
7275
  type: Component,
7264
7276
  args: [{
7265
7277
  selector: 'saved-search-dialog, savedsearchdialog, SavedSearchDialog',
@@ -7309,14 +7321,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
7309
7321
  }] });
7310
7322
 
7311
7323
  class BookmarkButtonComponent {
7312
- article = input.required();
7324
+ article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
7313
7325
  userSettingsStore = inject(UserSettingsStore);
7314
7326
  route = inject(ActivatedRoute);
7315
7327
  transloco = inject(TranslocoService);
7316
7328
  isBookmarked = computed(() => {
7317
7329
  return this.userSettingsStore.isBookmarked(this.article());
7318
- });
7319
- title = computed(() => this.transloco.translate('bookmarks.bookmarkDocument'));
7330
+ }, ...(ngDevMode ? [{ debugName: "isBookmarked" }] : []));
7331
+ title = computed(() => this.transloco.translate('bookmarks.bookmarkDocument'), ...(ngDevMode ? [{ debugName: "title" }] : []));
7320
7332
  async bookmark(e) {
7321
7333
  e.stopPropagation();
7322
7334
  const isBookmarked = await this.userSettingsStore.isBookmarked(this.article());
@@ -7334,14 +7346,14 @@ class BookmarkButtonComponent {
7334
7346
  notify.success(this.transloco.translate('bookmarks.bookmarkAdded'), { duration: 2000 });
7335
7347
  }
7336
7348
  }
7337
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BookmarkButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7338
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: BookmarkButtonComponent, isStandalone: true, selector: "bookmark-button, bookmarkbutton, BookmarkButton", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "bookmark($event)" }, properties: { "title": "title()" }, classAttribute: "cursor-pointer" }, providers: [provideTranslocoScope('bookmark')], ngImport: i0, template: ` @if (isBookmarked()) {
7349
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BookmarkButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7350
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: BookmarkButtonComponent, isStandalone: true, selector: "bookmark-button, bookmarkbutton, BookmarkButton", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "bookmark($event)" }, properties: { "title": "title()" }, classAttribute: "cursor-pointer" }, providers: [provideTranslocoScope('bookmark')], ngImport: i0, template: ` @if (isBookmarked()) {
7339
7351
  <i class="fa-fw fa-bookmark fa-solid"></i>
7340
7352
  } @else {
7341
7353
  <i class="fa-fw fa-bookmark fa-regular"></i>
7342
7354
  }`, isInline: true });
7343
7355
  }
7344
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BookmarkButtonComponent, decorators: [{
7356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BookmarkButtonComponent, decorators: [{
7345
7357
  type: Component,
7346
7358
  args: [{
7347
7359
  selector: 'bookmark-button, bookmarkbutton, BookmarkButton',
@@ -7374,12 +7386,12 @@ class BookmarksComponent {
7374
7386
  userSettingsStore = inject(UserSettingsStore);
7375
7387
  appStore = inject(AppStore);
7376
7388
  destroyRef = inject(DestroyRef);
7377
- options = input();
7389
+ options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
7378
7390
  config = inject(BOOKMARKS_CONFIG);
7379
- range = signal(10);
7380
- bookmarks = computed(() => this.userSettingsStore.bookmarks());
7381
- paginatedBookmarks = computed(() => this.bookmarks().slice(0, this.range()));
7382
- hasMore = computed(() => this.bookmarks().length > 0 && this.range() < this.bookmarks().length);
7391
+ range = signal(10, ...(ngDevMode ? [{ debugName: "range" }] : []));
7392
+ bookmarks = computed(() => this.userSettingsStore.bookmarks(), ...(ngDevMode ? [{ debugName: "bookmarks" }] : []));
7393
+ paginatedBookmarks = computed(() => this.bookmarks().slice(0, this.range()), ...(ngDevMode ? [{ debugName: "paginatedBookmarks" }] : []));
7394
+ hasMore = computed(() => this.bookmarks().length > 0 && this.range() < this.bookmarks().length, ...(ngDevMode ? [{ debugName: "hasMore" }] : []));
7383
7395
  constructor() {
7384
7396
  effect(() => {
7385
7397
  if (this.options()) {
@@ -7433,20 +7445,20 @@ class BookmarksComponent {
7433
7445
  e.stopPropagation();
7434
7446
  this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
7435
7447
  }
7436
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BookmarksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7437
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: BookmarksComponent, isStandalone: true, selector: "bookmarks, Bookmarks", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('bookmarks')], ngImport: i0, template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'bookmarks.label' | transloco }}</label>\n <MenuSeparator />\n </div>\n}\n\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\" role=\"list\">\n @for (bookmark of paginatedBookmarks(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(bookmark)\" (keydown.enter)=\"onClick(bookmark)\">\n <i class=\"fa-fw fas fa-bookmark shrink-0\" aria-hidden=\"true\"></i>\n\n <p class=\"line-clamp-1\">{{ bookmark.label }}</p>\n\n @if (bookmark.author) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-user\" aria-hidden=\"true\"></i>\n {{ bookmark.author }}\n </p>\n }\n @if (bookmark.parentFolder) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-folder\" aria-hidden=\"true\"></i>\n {{ bookmark.parentFolder }}\n </p>\n }\n\n <button\n variant=\"icon\"\n title=\"{{ 'bookmarks.openBookmark' | transloco }}\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n [attr.title]=\"'bookmarks.removeBookmark' | transloco\"\n [attr.aria-label]=\"'bookmarks.removeBookmark' | transloco\"\n (click)=\"onDelete(bookmark, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n </li>\n } @empty {\n <li class=\"py-4 text-center text-neutral-500\">{{ 'bookmarks.noBookmarks' | transloco }}</li>\n }\n</ul>\n\n<div class=\"flex flex-col px-2\">\n @if (hasMore() && config.showLoadMore) {\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'loadMore' | transloco\" (click)=\"loadMore($event)\">{{ 'loadMore' | transloco }}</button>\n }\n <button variant=\"link\" class=\"ml-auto\" [attr.title]=\"'seeMore' | transloco\" [routerLink]=\"[config.routerLink]\">{{ 'seeMore' | transloco }}</button>\n</div>\n", styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: HorizontalDividerComponent, selector: "menu-separator, MenuSeparator, menuseparator, horizontal-divider, HorizontalDivider, horizontaldivider" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }] });
7448
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BookmarksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7449
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: BookmarksComponent, isStandalone: true, selector: "bookmarks, Bookmarks", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('bookmarks')], ngImport: i0, template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'bookmarks.label' | transloco }}</label>\n <MenuSeparator />\n </div>\n}\n\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\" role=\"list\">\n @for (bookmark of paginatedBookmarks(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(bookmark)\" (keydown.enter)=\"onClick(bookmark)\">\n <i class=\"fa-fw fas fa-bookmark shrink-0\" aria-hidden=\"true\"></i>\n\n <p class=\"line-clamp-1\">{{ bookmark.label }}</p>\n\n @if (bookmark.author) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-user\" aria-hidden=\"true\"></i>\n {{ bookmark.author }}\n </p>\n }\n @if (bookmark.parentFolder) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-folder\" aria-hidden=\"true\"></i>\n {{ bookmark.parentFolder }}\n </p>\n }\n\n <button\n variant=\"icon\"\n title=\"{{ 'bookmarks.openBookmark' | transloco }}\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n [attr.title]=\"'bookmarks.removeBookmark' | transloco\"\n [attr.aria-label]=\"'bookmarks.removeBookmark' | transloco\"\n (click)=\"onDelete(bookmark, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n </li>\n } @empty {\n <li class=\"py-4 text-center text-neutral-500\">{{ 'bookmarks.noBookmarks' | transloco }}</li>\n }\n</ul>\n\n<div class=\"flex flex-col px-2\">\n @if (hasMore() && config.showLoadMore) {\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'loadMore' | transloco\" (click)=\"loadMore($event)\">{{ 'loadMore' | transloco }}</button>\n }\n <button variant=\"link\" class=\"ml-auto\" [attr.title]=\"'seeMore' | transloco\" [routerLink]=\"[config.routerLink]\">{{ 'seeMore' | transloco }}</button>\n</div>\n", styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: HorizontalDividerComponent, selector: "menu-separator, MenuSeparator, menuseparator, horizontal-divider, HorizontalDivider, horizontaldivider" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7438
7450
  }
7439
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BookmarksComponent, decorators: [{
7451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: BookmarksComponent, decorators: [{
7440
7452
  type: Component,
7441
7453
  args: [{ selector: 'bookmarks, Bookmarks', standalone: true, imports: [TranslocoPipe, RouterLink, ButtonComponent, HorizontalDividerComponent, ListItemComponent], providers: [provideTranslocoScope('bookmarks')], template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'bookmarks.label' | transloco }}</label>\n <MenuSeparator />\n </div>\n}\n\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\" role=\"list\">\n @for (bookmark of paginatedBookmarks(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(bookmark)\" (keydown.enter)=\"onClick(bookmark)\">\n <i class=\"fa-fw fas fa-bookmark shrink-0\" aria-hidden=\"true\"></i>\n\n <p class=\"line-clamp-1\">{{ bookmark.label }}</p>\n\n @if (bookmark.author) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-user\" aria-hidden=\"true\"></i>\n {{ bookmark.author }}\n </p>\n }\n @if (bookmark.parentFolder) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-folder\" aria-hidden=\"true\"></i>\n {{ bookmark.parentFolder }}\n </p>\n }\n\n <button\n variant=\"icon\"\n title=\"{{ 'bookmarks.openBookmark' | transloco }}\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n [attr.title]=\"'bookmarks.removeBookmark' | transloco\"\n [attr.aria-label]=\"'bookmarks.removeBookmark' | transloco\"\n (click)=\"onDelete(bookmark, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n </li>\n } @empty {\n <li class=\"py-4 text-center text-neutral-500\">{{ 'bookmarks.noBookmarks' | transloco }}</li>\n }\n</ul>\n\n<div class=\"flex flex-col px-2\">\n @if (hasMore() && config.showLoadMore) {\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'loadMore' | transloco\" (click)=\"loadMore($event)\">{{ 'loadMore' | transloco }}</button>\n }\n <button variant=\"link\" class=\"ml-auto\" [attr.title]=\"'seeMore' | transloco\" [routerLink]=\"[config.routerLink]\">{{ 'seeMore' | transloco }}</button>\n</div>\n", styles: [":host ul{scrollbar-width:thin}\n"] }]
7442
7454
  }], ctorParameters: () => [] });
7443
7455
 
7444
7456
  class DeleteCollectionDialog {
7445
- dialog = viewChild(DialogComponent);
7457
+ dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
7446
7458
  userSettingsStore = inject(UserSettingsStore);
7447
7459
  translocoService = inject(TranslocoService);
7448
- collection = signal(undefined);
7449
- index = signal(undefined);
7460
+ collection = signal(undefined, ...(ngDevMode ? [{ debugName: "collection" }] : []));
7461
+ index = signal(undefined, ...(ngDevMode ? [{ debugName: "index" }] : []));
7450
7462
  open(collection, index) {
7451
7463
  this.collection.set(collection);
7452
7464
  this.index.set(index);
@@ -7458,8 +7470,8 @@ class DeleteCollectionDialog {
7458
7470
  const message = this.translocoService.translate('collections.deleted');
7459
7471
  notify.success(message, { duration: 2000 });
7460
7472
  }
7461
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DeleteCollectionDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
7462
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: DeleteCollectionDialog, isStandalone: true, selector: "delete-collection-dialog", providers: [provideTranslocoScope('collections')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
7473
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DeleteCollectionDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
7474
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", type: DeleteCollectionDialog, isStandalone: true, selector: "delete-collection-dialog", providers: [provideTranslocoScope('collections')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
7463
7475
  <dialog #dialog>
7464
7476
  <DialogHeader>
7465
7477
  <DialogTitle>{{ 'collections.deleteCollection' | transloco }}</DialogTitle>
@@ -7479,9 +7491,9 @@ class DeleteCollectionDialog {
7479
7491
  </button>
7480
7492
  </DialogFooter>
7481
7493
  </dialog>
7482
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }] });
7494
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7483
7495
  }
7484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DeleteCollectionDialog, decorators: [{
7496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DeleteCollectionDialog, decorators: [{
7485
7497
  type: Component,
7486
7498
  args: [{
7487
7499
  selector: 'delete-collection-dialog',
@@ -7534,13 +7546,13 @@ class CollectionsComponent {
7534
7546
  userSettingsStore = inject(UserSettingsStore);
7535
7547
  drawerStack = inject(DrawerStackService);
7536
7548
  router = inject(Router);
7537
- options = input();
7549
+ options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
7538
7550
  config = inject(COLLECTIONS_CONFIG);
7539
- range = signal(10);
7540
- collections = computed(() => this.userSettingsStore.baskets());
7541
- paginatedCollections = computed(() => this.collections().slice(0, this.range()));
7542
- hasMore = computed(() => this.collections().length > 0 && this.range() < this.collections().length);
7543
- deleteCollectionDialog = viewChild(DeleteCollectionDialog);
7551
+ range = signal(10, ...(ngDevMode ? [{ debugName: "range" }] : []));
7552
+ collections = computed(() => this.userSettingsStore.baskets(), ...(ngDevMode ? [{ debugName: "collections" }] : []));
7553
+ paginatedCollections = computed(() => this.collections().slice(0, this.range()), ...(ngDevMode ? [{ debugName: "paginatedCollections" }] : []));
7554
+ hasMore = computed(() => this.collections().length > 0 && this.range() < this.collections().length, ...(ngDevMode ? [{ debugName: "hasMore" }] : []));
7555
+ deleteCollectionDialog = viewChild(DeleteCollectionDialog, ...(ngDevMode ? [{ debugName: "deleteCollectionDialog" }] : []));
7544
7556
  constructor() {
7545
7557
  effect(() => {
7546
7558
  if (this.options()) {
@@ -7561,10 +7573,10 @@ class CollectionsComponent {
7561
7573
  e.stopPropagation();
7562
7574
  this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
7563
7575
  }
7564
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: CollectionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7565
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: CollectionsComponent, isStandalone: true, selector: "app-collections", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('collections')], viewQueries: [{ propertyName: "deleteCollectionDialog", first: true, predicate: DeleteCollectionDialog, descendants: true, isSignal: true }], ngImport: i0, template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'collections.label' | transloco }}</label>\n <MenuSeparator />\n </div>\n}\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\">\n @for (collection of paginatedCollections(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(collection)\" (keydown.enter)=\"onClick(collection)\">\n <i class=\"fas fa-inbox\"></i>\n\n <p class=\"line-clamp-1\">{{ collection.name }}</p>\n\n <button\n variant=\"icon\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'collections.deleteCollection' | transloco }}\"\n [attr.aria-label]=\"'collections.deleteCollection' | transloco\"\n (click)=\"onDelete(collection, $index, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n </li>\n } @empty {\n <li class=\"list-none py-4 text-center text-neutral-500\">{{ 'collections.noCollections' | transloco }}</li>\n }\n</ul>\n\n<div class=\"flex flex-col px-2\">\n @if (hasMore() && config.showLoadMore) {\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'loadMore' | transloco\" (click)=\"loadMore($event)\">{{ 'loadMore' | transloco }}</button>\n }\n <button variant=\"link\" class=\"ml-auto\" [attr.title]=\"'seeMore' | transloco\" [routerLink]=\"[config.routerLink]\">{{ 'seeMore' | transloco }}</button>\n</div>\n\n<delete-collection-dialog />\n", dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: HorizontalDividerComponent, selector: "menu-separator, MenuSeparator, menuseparator, horizontal-divider, HorizontalDivider, horizontaldivider" }, { kind: "component", type: DeleteCollectionDialog, selector: "delete-collection-dialog" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }] });
7576
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CollectionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7577
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: CollectionsComponent, isStandalone: true, selector: "app-collections", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('collections')], viewQueries: [{ propertyName: "deleteCollectionDialog", first: true, predicate: DeleteCollectionDialog, descendants: true, isSignal: true }], ngImport: i0, template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'collections.label' | transloco }}</label>\n <MenuSeparator />\n </div>\n}\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\">\n @for (collection of paginatedCollections(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(collection)\" (keydown.enter)=\"onClick(collection)\">\n <i class=\"fas fa-inbox\"></i>\n\n <p class=\"line-clamp-1\">{{ collection.name }}</p>\n\n <button\n variant=\"icon\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'collections.deleteCollection' | transloco }}\"\n [attr.aria-label]=\"'collections.deleteCollection' | transloco\"\n (click)=\"onDelete(collection, $index, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n </li>\n } @empty {\n <li class=\"list-none py-4 text-center text-neutral-500\">{{ 'collections.noCollections' | transloco }}</li>\n }\n</ul>\n\n<div class=\"flex flex-col px-2\">\n @if (hasMore() && config.showLoadMore) {\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'loadMore' | transloco\" (click)=\"loadMore($event)\">{{ 'loadMore' | transloco }}</button>\n }\n <button variant=\"link\" class=\"ml-auto\" [attr.title]=\"'seeMore' | transloco\" [routerLink]=\"[config.routerLink]\">{{ 'seeMore' | transloco }}</button>\n</div>\n\n<delete-collection-dialog />\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: HorizontalDividerComponent, selector: "menu-separator, MenuSeparator, menuseparator, horizontal-divider, HorizontalDivider, horizontaldivider" }, { kind: "component", type: DeleteCollectionDialog, selector: "delete-collection-dialog" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7566
7578
  }
7567
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: CollectionsComponent, decorators: [{
7579
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: CollectionsComponent, decorators: [{
7568
7580
  type: Component,
7569
7581
  args: [{ selector: 'app-collections', standalone: true, imports: [TranslocoPipe, RouterLink, HorizontalDividerComponent, DeleteCollectionDialog, ButtonComponent, ListItemComponent], providers: [provideTranslocoScope('collections')], template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'collections.label' | transloco }}</label>\n <MenuSeparator />\n </div>\n}\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\">\n @for (collection of paginatedCollections(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(collection)\" (keydown.enter)=\"onClick(collection)\">\n <i class=\"fas fa-inbox\"></i>\n\n <p class=\"line-clamp-1\">{{ collection.name }}</p>\n\n <button\n variant=\"icon\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'collections.deleteCollection' | transloco }}\"\n [attr.aria-label]=\"'collections.deleteCollection' | transloco\"\n (click)=\"onDelete(collection, $index, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n </li>\n } @empty {\n <li class=\"list-none py-4 text-center text-neutral-500\">{{ 'collections.noCollections' | transloco }}</li>\n }\n</ul>\n\n<div class=\"flex flex-col px-2\">\n @if (hasMore() && config.showLoadMore) {\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'loadMore' | transloco\" (click)=\"loadMore($event)\">{{ 'loadMore' | transloco }}</button>\n }\n <button variant=\"link\" class=\"ml-auto\" [attr.title]=\"'seeMore' | transloco\" [routerLink]=\"[config.routerLink]\">{{ 'seeMore' | transloco }}</button>\n</div>\n\n<delete-collection-dialog />\n" }]
7570
7582
  }], ctorParameters: () => [] });
@@ -7573,7 +7585,7 @@ class AlertDialog {
7573
7585
  queryService = inject(QueryService);
7574
7586
  queryParamsStore = inject(QueryParamsStore);
7575
7587
  userSettingsStore = inject(UserSettingsStore);
7576
- dialog = viewChild(DialogComponent);
7588
+ dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
7577
7589
  frequencies = [Alert.Frequency.Daily, Alert.Frequency.Hourly, Alert.Frequency.Immediate];
7578
7590
  frequency = Alert.Frequency;
7579
7591
  weekdays = [
@@ -7587,14 +7599,14 @@ class AlertDialog {
7587
7599
  ];
7588
7600
  index;
7589
7601
  alert;
7590
- alertName = signal('');
7591
- alertFrequency = signal(Alert.Frequency.Daily);
7592
- alertDays = signal(Alert.Days.None);
7593
- alertTimes = signal('09:00');
7594
- alertActive = signal(true);
7595
- canUpdateQuery = signal(false);
7596
- updateStatus = signal('idle');
7597
- invalidForm = computed(() => !this.alertName() || !this.alertTimes());
7602
+ alertName = signal('', ...(ngDevMode ? [{ debugName: "alertName" }] : []));
7603
+ alertFrequency = signal(Alert.Frequency.Daily, ...(ngDevMode ? [{ debugName: "alertFrequency" }] : []));
7604
+ alertDays = signal(Alert.Days.None, ...(ngDevMode ? [{ debugName: "alertDays" }] : []));
7605
+ alertTimes = signal('09:00', ...(ngDevMode ? [{ debugName: "alertTimes" }] : []));
7606
+ alertActive = signal(true, ...(ngDevMode ? [{ debugName: "alertActive" }] : []));
7607
+ canUpdateQuery = signal(false, ...(ngDevMode ? [{ debugName: "canUpdateQuery" }] : []));
7608
+ updateStatus = signal('idle', ...(ngDevMode ? [{ debugName: "updateStatus" }] : []));
7609
+ invalidForm = computed(() => !this.alertName() || !this.alertTimes(), ...(ngDevMode ? [{ debugName: "invalidForm" }] : []));
7598
7610
  closed = output();
7599
7611
  open(index) {
7600
7612
  this.showModal(index);
@@ -7691,8 +7703,8 @@ class AlertDialog {
7691
7703
  this.queryParamsStore.patch({ text: q.text, tab: q.tab, basket: q.basket, sort: q.sort, filters, name: q.name });
7692
7704
  this.dialog().close(e);
7693
7705
  }
7694
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AlertDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
7695
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: AlertDialog, isStandalone: true, selector: "alert-dialog, alertdialog, AlertDialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope('alerts')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
7706
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AlertDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
7707
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: AlertDialog, isStandalone: true, selector: "alert-dialog, alertdialog, AlertDialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope('alerts')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
7696
7708
  <dialog #dialog>
7697
7709
  <DialogHeader class="px-1">
7698
7710
  <DialogTitle>{{ 'alerts.createAlert' | transloco }}</DialogTitle>
@@ -7802,9 +7814,9 @@ class AlertDialog {
7802
7814
  </div>
7803
7815
  </DialogFooter>
7804
7816
  </dialog>
7805
- `, isInline: true, styles: [".weekdays-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "component", type: ChevronRightIconComponent, selector: "chevron-right, ChevronRight, chevronright", inputs: ["class", "width", "height"] }, { kind: "component", type: LoadingCircleIconComponent, selector: "loading-circle, LoadingCircle, loadingcircle", inputs: ["class", "width", "height"] }, { kind: "component", type: CircleCheckIconComponent, selector: "circle-check, CircleCheck, circlecheck", inputs: ["class", "width", "height"] }] });
7817
+ `, isInline: true, styles: [".weekdays-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "component", type: ChevronRightIconComponent, selector: "chevron-right, ChevronRight, chevronright", inputs: ["class", "width", "height"] }, { kind: "component", type: LoadingCircleIconComponent, selector: "loading-circle, LoadingCircle, loadingcircle", inputs: ["class", "width", "height"] }, { kind: "component", type: CircleCheckIconComponent, selector: "circle-check, CircleCheck, circlecheck", inputs: ["class", "width", "height"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7806
7818
  }
7807
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AlertDialog, decorators: [{
7819
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AlertDialog, decorators: [{
7808
7820
  type: Component,
7809
7821
  args: [{ selector: 'alert-dialog, alertdialog, AlertDialog', standalone: true, imports: [
7810
7822
  FormsModule,
@@ -7936,9 +7948,9 @@ class AlertsComponent {
7936
7948
  floating = inject(PopoverComponent, { skipSelf: true, optional: true });
7937
7949
  userSettingsStore = inject(UserSettingsStore);
7938
7950
  modal = inject(DialogService);
7939
- alertFormDialog = viewChild(AlertDialog);
7940
- reordering = signal(false);
7941
- alerts = computed(() => this.userSettingsStore.alerts());
7951
+ alertFormDialog = viewChild(AlertDialog, ...(ngDevMode ? [{ debugName: "alertFormDialog" }] : []));
7952
+ reordering = signal(false, ...(ngDevMode ? [{ debugName: "reordering" }] : []));
7953
+ alerts = computed(() => this.userSettingsStore.alerts(), ...(ngDevMode ? [{ debugName: "alerts" }] : []));
7942
7954
  tmpAlerts = [];
7943
7955
  query;
7944
7956
  constructor() {
@@ -7974,19 +7986,19 @@ class AlertsComponent {
7974
7986
  }
7975
7987
  this.tmpAlerts.splice(drop.currentIndex, 0, this.tmpAlerts.splice(drop.previousIndex, 1)[0]);
7976
7988
  }
7977
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7978
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: AlertsComponent, isStandalone: true, selector: "Alerts", providers: [provideTranslocoScope('alerts')], viewQueries: [{ propertyName: "alertFormDialog", first: true, predicate: AlertDialog, descendants: true, isSignal: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"flex min-w-80 flex-col p-2\"\n cdkDropList\n [cdkDropListData]=\"tmpAlerts\"\n [cdkDropListDisabled]=\"!reordering()\"\n (cdkDropListDropped)=\"dropped($event)\">\n @if (floating) {\n <label class=\"text-xl font-bold\">{{ 'alerts.label' | transloco }}</label>\n <MenuSeparator />\n }\n @for (alert of tmpAlerts; track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" cdkDrag (click)=\"onClick($index)\" (keydown.enter)=\"onClick($index)\">\n <i class=\"fa-fw fas fa-bell shrink-0\" aria-hidden=\"true\"></i>\n <p class=\"line-clamp-1\">{{ alert.name }}</p>\n @if (!reordering()) {\n <button\n variant=\"icon\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'alerts.deleteAlert' | transloco }}\"\n [attr.aria-label]=\"'alerts.deleteAlert' | transloco\"\n (click)=\"deleteAlert($event, $index)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n } @else {\n <i class=\"fa-fw fa-regular fa-bars\"></i>\n }\n </li>\n } @empty {\n <li role=\"listitem\" class=\"py-4 text-center text-neutral-500\">{{ 'alerts.noAlerts' | transloco }}</li>\n }\n</ul>\n<div class=\"flex flex-col gap-2 p-2\">\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'alerts.manageAlerts' | transloco\" [disabled]=\"!alerts().length\" (click)=\"reorder()\">\n {{ (reordering() ? 'save' : 'alerts.manageAlerts') | transloco }}\n </button>\n <button class=\"w-full\" [attr.title]=\"'alerts.createAlert' | transloco\" (click)=\"createAlert()\">{{ 'alerts.createAlert' | transloco }}</button>\n</div>\n", dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: HorizontalDividerComponent, selector: "menu-separator, MenuSeparator, menuseparator, horizontal-divider, HorizontalDivider, horizontaldivider" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }] });
7989
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7990
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: AlertsComponent, isStandalone: true, selector: "Alerts", providers: [provideTranslocoScope('alerts')], viewQueries: [{ propertyName: "alertFormDialog", first: true, predicate: AlertDialog, descendants: true, isSignal: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"flex min-w-80 flex-col p-2\"\n cdkDropList\n [cdkDropListData]=\"tmpAlerts\"\n [cdkDropListDisabled]=\"!reordering()\"\n (cdkDropListDropped)=\"dropped($event)\">\n @if (floating) {\n <label class=\"text-xl font-bold\">{{ 'alerts.label' | transloco }}</label>\n <MenuSeparator />\n }\n @for (alert of tmpAlerts; track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" cdkDrag (click)=\"onClick($index)\" (keydown.enter)=\"onClick($index)\">\n <i class=\"fa-fw fas fa-bell shrink-0\" aria-hidden=\"true\"></i>\n <p class=\"line-clamp-1\">{{ alert.name }}</p>\n @if (!reordering()) {\n <button\n variant=\"icon\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'alerts.deleteAlert' | transloco }}\"\n [attr.aria-label]=\"'alerts.deleteAlert' | transloco\"\n (click)=\"deleteAlert($event, $index)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n } @else {\n <i class=\"fa-fw fa-regular fa-bars\"></i>\n }\n </li>\n } @empty {\n <li role=\"listitem\" class=\"py-4 text-center text-neutral-500\">{{ 'alerts.noAlerts' | transloco }}</li>\n }\n</ul>\n<div class=\"flex flex-col gap-2 p-2\">\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'alerts.manageAlerts' | transloco\" [disabled]=\"!alerts().length\" (click)=\"reorder()\">\n {{ (reordering() ? 'save' : 'alerts.manageAlerts') | transloco }}\n </button>\n <button class=\"w-full\" [attr.title]=\"'alerts.createAlert' | transloco\" (click)=\"createAlert()\">{{ 'alerts.createAlert' | transloco }}</button>\n</div>\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: HorizontalDividerComponent, selector: "menu-separator, MenuSeparator, menuseparator, horizontal-divider, HorizontalDivider, horizontaldivider" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
7979
7991
  }
7980
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AlertsComponent, decorators: [{
7992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AlertsComponent, decorators: [{
7981
7993
  type: Component,
7982
7994
  args: [{ selector: 'Alerts', standalone: true, imports: [TranslocoPipe, ButtonComponent, HorizontalDividerComponent, ListItemComponent, DragDropModule], providers: [provideTranslocoScope('alerts')], template: "<ul\n role=\"list\"\n class=\"flex min-w-80 flex-col p-2\"\n cdkDropList\n [cdkDropListData]=\"tmpAlerts\"\n [cdkDropListDisabled]=\"!reordering()\"\n (cdkDropListDropped)=\"dropped($event)\">\n @if (floating) {\n <label class=\"text-xl font-bold\">{{ 'alerts.label' | transloco }}</label>\n <MenuSeparator />\n }\n @for (alert of tmpAlerts; track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" cdkDrag (click)=\"onClick($index)\" (keydown.enter)=\"onClick($index)\">\n <i class=\"fa-fw fas fa-bell shrink-0\" aria-hidden=\"true\"></i>\n <p class=\"line-clamp-1\">{{ alert.name }}</p>\n @if (!reordering()) {\n <button\n variant=\"icon\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'alerts.deleteAlert' | transloco }}\"\n [attr.aria-label]=\"'alerts.deleteAlert' | transloco\"\n (click)=\"deleteAlert($event, $index)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n } @else {\n <i class=\"fa-fw fa-regular fa-bars\"></i>\n }\n </li>\n } @empty {\n <li role=\"listitem\" class=\"py-4 text-center text-neutral-500\">{{ 'alerts.noAlerts' | transloco }}</li>\n }\n</ul>\n<div class=\"flex flex-col gap-2 p-2\">\n <button variant=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'alerts.manageAlerts' | transloco\" [disabled]=\"!alerts().length\" (click)=\"reorder()\">\n {{ (reordering() ? 'save' : 'alerts.manageAlerts') | transloco }}\n </button>\n <button class=\"w-full\" [attr.title]=\"'alerts.createAlert' | transloco\" (click)=\"createAlert()\">{{ 'alerts.createAlert' | transloco }}</button>\n</div>\n" }]
7983
7995
  }], ctorParameters: () => [] });
7984
7996
 
7985
7997
  class OverrideUserDialogComponent {
7986
- dialog = viewChild(DialogComponent);
7998
+ dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
7987
7999
  appService = inject(ApplicationService);
7988
8000
  principalStore = inject(PrincipalStore);
7989
- overrideUser = model({ username: '', domain: '' });
8001
+ overrideUser = model({ username: '', domain: '' }, ...(ngDevMode ? [{ debugName: "overrideUser" }] : []));
7990
8002
  open() {
7991
8003
  this.dialog().showModal();
7992
8004
  }
@@ -8039,8 +8051,8 @@ class OverrideUserDialogComponent {
8039
8051
  });
8040
8052
  }
8041
8053
  }
8042
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OverrideUserDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8043
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: OverrideUserDialogComponent, isStandalone: true, selector: "override-user-dialog", inputs: { overrideUser: { classPropertyName: "overrideUser", publicName: "overrideUser", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overrideUser: "overrideUserChange" }, providers: [provideTranslocoScope('dialogs')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
8054
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OverrideUserDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8055
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", type: OverrideUserDialogComponent, isStandalone: true, selector: "override-user-dialog", inputs: { overrideUser: { classPropertyName: "overrideUser", publicName: "overrideUser", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overrideUser: "overrideUserChange" }, providers: [provideTranslocoScope('dialogs')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
8044
8056
  <dialog #dialog class="max-w-md">
8045
8057
  <DialogHeader>
8046
8058
  <DialogTitle>{{ 'dialogs.overrideUser.title' | transloco }}</DialogTitle>
@@ -8088,7 +8100,7 @@ class OverrideUserDialogComponent {
8088
8100
  </dialog>
8089
8101
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8090
8102
  }
8091
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: OverrideUserDialogComponent, decorators: [{
8103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OverrideUserDialogComponent, decorators: [{
8092
8104
  type: Component,
8093
8105
  args: [{
8094
8106
  selector: 'override-user-dialog',
@@ -8156,7 +8168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
8156
8168
  }] });
8157
8169
 
8158
8170
  class ResetUserSettingsDialogComponent {
8159
- dialog = viewChild(DialogComponent);
8171
+ dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
8160
8172
  userSettingsStore = inject(UserSettingsStore);
8161
8173
  translocoService = inject(TranslocoService);
8162
8174
  open() {
@@ -8169,8 +8181,8 @@ class ResetUserSettingsDialogComponent {
8169
8181
  notify.success(message, { duration: 2000 });
8170
8182
  });
8171
8183
  }
8172
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ResetUserSettingsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8173
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: ResetUserSettingsDialogComponent, isStandalone: true, selector: "reset-user-settings-dialog", providers: [provideTranslocoScope('dialogs')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
8184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ResetUserSettingsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8185
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", type: ResetUserSettingsDialogComponent, isStandalone: true, selector: "reset-user-settings-dialog", providers: [provideTranslocoScope('dialogs')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
8174
8186
  <dialog #dialog>
8175
8187
  <DialogHeader>
8176
8188
  <DialogTitle>{{ 'dialogs.resetUserSettings.title' | transloco }}</DialogTitle>
@@ -8192,7 +8204,7 @@ class ResetUserSettingsDialogComponent {
8192
8204
  </dialog>
8193
8205
  `, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8194
8206
  }
8195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ResetUserSettingsDialogComponent, decorators: [{
8207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: ResetUserSettingsDialogComponent, decorators: [{
8196
8208
  type: Component,
8197
8209
  args: [{
8198
8210
  selector: 'reset-user-settings-dialog',
@@ -8224,10 +8236,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
8224
8236
  }] });
8225
8237
 
8226
8238
  class DidYouMeanComponent {
8227
- result = input();
8228
- spellingCorrectionMode = computed(() => this.result()?.didYouMean?.spellingCorrectionMode);
8229
- correction = computed(() => this.result()?.didYouMean?.text.corrected);
8230
- original = computed(() => this.result()?.didYouMean?.text.original);
8239
+ result = input(...(ngDevMode ? [undefined, { debugName: "result" }] : []));
8240
+ spellingCorrectionMode = computed(() => this.result()?.didYouMean?.spellingCorrectionMode, ...(ngDevMode ? [{ debugName: "spellingCorrectionMode" }] : []));
8241
+ correction = computed(() => this.result()?.didYouMean?.text.corrected, ...(ngDevMode ? [{ debugName: "correction" }] : []));
8242
+ original = computed(() => this.result()?.didYouMean?.text.original, ...(ngDevMode ? [{ debugName: "original" }] : []));
8231
8243
  router = inject(Router);
8232
8244
  queryParamsStore = inject(QueryParamsStore);
8233
8245
  selectCorrected() {
@@ -8238,10 +8250,10 @@ class DidYouMeanComponent {
8238
8250
  this.queryParamsStore.patch({ spellingCorrectionMode: 'dymonly' });
8239
8251
  this.router.navigate([], { queryParamsHandling: 'merge', queryParams: { c: 'dymonly', q: this.original() } });
8240
8252
  }
8241
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DidYouMeanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8242
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DidYouMeanComponent, isStandalone: true, selector: "app-did-you-mean", inputs: { result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('did-you-mean')], ngImport: i0, template: "@switch (spellingCorrectionMode()?.toLowerCase()) { @case ('dymonly') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.didYouMean' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n <span>?</span>\n</p>\n} @case ('correct') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n\n <span class=\"me-1\">. {{ 'didYouMean.searchInsteadFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n</p>\n} @case ('smart') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n\n <span class=\"mx-1\">and</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n</p>\n} }\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8253
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DidYouMeanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8254
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: DidYouMeanComponent, isStandalone: true, selector: "app-did-you-mean", inputs: { result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('did-you-mean')], ngImport: i0, template: "@switch (spellingCorrectionMode()?.toLowerCase()) { @case ('dymonly') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.didYouMean' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n <span>?</span>\n</p>\n} @case ('correct') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n\n <span class=\"me-1\">. {{ 'didYouMean.searchInsteadFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n</p>\n} @case ('smart') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n\n <span class=\"mx-1\">and</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n</p>\n} }\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8243
8255
  }
8244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DidYouMeanComponent, decorators: [{
8256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DidYouMeanComponent, decorators: [{
8245
8257
  type: Component,
8246
8258
  args: [{ selector: 'app-did-you-mean', standalone: true, imports: [RouterModule, TranslocoPipe], providers: [provideTranslocoScope('did-you-mean')], template: "@switch (spellingCorrectionMode()?.toLowerCase()) { @case ('dymonly') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.didYouMean' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n <span>?</span>\n</p>\n} @case ('correct') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n\n <span class=\"me-1\">. {{ 'didYouMean.searchInsteadFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n</p>\n} @case ('smart') {\n<p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n\n <span class=\"mx-1\">and</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n</p>\n} }\n", styles: [":host{display:block}\n"] }]
8247
8259
  }] });
@@ -8256,10 +8268,10 @@ class SignInComponent {
8256
8268
  /**
8257
8269
  * Represents the user credentials for login.
8258
8270
  */
8259
- credentials = signal({ username: '', password: '' });
8260
- authenticated = signal(isAuthenticated());
8261
- user = signal(null);
8262
- returnUrl = signal(null);
8271
+ credentials = signal({ username: '', password: '' }, ...(ngDevMode ? [{ debugName: "credentials" }] : []));
8272
+ authenticated = signal(isAuthenticated(), ...(ngDevMode ? [{ debugName: "authenticated" }] : []));
8273
+ user = signal(null, ...(ngDevMode ? [{ debugName: "user" }] : []));
8274
+ returnUrl = signal(null, ...(ngDevMode ? [{ debugName: "returnUrl" }] : []));
8263
8275
  router = inject(Router);
8264
8276
  route = inject(ActivatedRoute);
8265
8277
  principalService = inject(PrincipalService);
@@ -8268,7 +8280,7 @@ class SignInComponent {
8268
8280
  * Indicates whether the login credentials are valid.
8269
8281
  * Returns true if both the username and password are non-empty, otherwise false.
8270
8282
  */
8271
- valid = computed(() => this.credentials().username.length > 0 && this.credentials().password.length > 0);
8283
+ valid = computed(() => this.credentials().username.length > 0 && this.credentials().password.length > 0, ...(ngDevMode ? [{ debugName: "valid" }] : []));
8272
8284
  constructor(destroyRef) {
8273
8285
  this.destroyRef = destroyRef;
8274
8286
  effect(() => {
@@ -8362,10 +8374,10 @@ class SignInComponent {
8362
8374
  this.router.navigate(['/']);
8363
8375
  }
8364
8376
  }
8365
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SignInComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
8366
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SignInComponent, isStandalone: true, selector: "signIn, signin, sign-in", providers: [provideTranslocoScope('login')], ngImport: i0, template: "<Card>\n <CardHeader>\n <a href=\"#\" title=\"Logo\">\n <ng-content select=\"[logo]\">\n <svg\n version=\"1.1\"\n id=\"Calque_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 858 228\"\n style=\"enable-background: new 0 0 858 228\"\n xml:space=\"preserve\">\n <style type=\"text/css\">\n .st0 {\n fill: #0040bf;\n }\n .st1 {\n fill: url(#SVGID_1_);\n }\n .st2 {\n fill: url(#SVGID_00000085217246274894832600000009342302383523206054_);\n }\n </style>\n <path\n class=\"st0\"\n d=\"M44.7,168.7c-10.1-4.1-17.6-9.9-22.5-17.1c-5-7.3-7.6-15.7-8.1-25.2h25.7c0.5,10.2,4.6,17.9,12.2,23.1\n c7.6,5.2,18.4,7.8,32.4,7.8c13.5,0,23.5-2.2,30.2-6.5c6.7-4.3,10-10.4,10-18.1c0-6.5-1.7-11.4-5.2-14.6c-3.5-3.2-8.5-5.5-15.1-7\n c-6.6-1.5-14.6-2.9-24.2-4.1c-12.5-1.6-23.4-3.8-32.7-6.4C38.1,98,31,93.9,25.9,88.4c-5-5.5-7.5-13.1-7.5-22.9\n c0-9.1,2.6-16.8,7.7-23.1c5.2-6.3,12.5-11.1,22-14.5c9.5-3.3,20.7-5,33.4-5c19.3,0,34.3,3.8,45.1,11.5c10.8,7.7,16.6,18.4,17.4,32.1\n h-24.9c-0.5-9-4.2-15.6-11.1-19.9c-6.9-4.3-16.1-6.4-27.6-6.4c-11.8,0-21,2-27.4,6.1c-6.5,4.1-9.7,9.6-9.7,16.5\n c0,5.8,1.6,10.2,4.7,13.1c3.1,2.9,7.9,5.1,14.3,6.5c6.4,1.4,14.5,2.8,24.3,4c9.6,1.2,18.3,2.7,26.1,4.4c7.7,1.7,14.4,4.1,20,7.2\n c5.6,3.1,9.8,7.3,12.7,12.5c2.9,5.2,4.4,12,4.4,20.3c0,13.6-5.6,24.3-16.9,32.2c-11.3,7.9-27.7,11.8-49.3,11.8\n C67.7,174.9,54.7,172.9,44.7,168.7z\" />\n <path\n class=\"st0\"\n d=\"M346.6,168.2c-9.4-4.5-16.6-10.9-21.7-19.2c-5.1-8.3-7.6-18.1-7.6-29.4c0-11.5,2.5-21.5,7.6-29.9\n c5.1-8.4,12.3-14.8,21.5-19.4c9.2-4.6,20.1-6.8,32.6-6.8c13,0,24.2,2.4,33.3,7.1c9.2,4.8,16.1,11.6,20.7,20.6\n c4.6,9,6.5,19.8,5.7,32.4h-97.8c0.3,10.9,3.9,19.3,10.9,25.3c7,6,16.5,9,28.4,9c9.2,0,17-1.7,23.2-5c6.2-3.3,10.3-7.8,12-13.4h22.6\n c-1.1,7.1-4.3,13.2-9.7,18.5c-5.4,5.3-12.3,9.4-20.7,12.3c-8.4,2.9-17.8,4.4-28.1,4.4C367,174.9,356,172.7,346.6,168.2z M352.5,88.4\n c-6.7,5.2-10.6,12.4-11.8,21.5h74.4c-0.4-9.4-3.8-16.6-10.3-21.7c-6.5-5.1-15.1-7.6-26-7.6C367.9,80.6,359.2,83.2,352.5,88.4z\" />\n <path\n class=\"st0\"\n d=\"M546,151.9h-1c-3.4,7.1-9,12.7-16.9,16.8c-7.9,4.1-16.7,6.2-26.5,6.2c-10.7,0-20.1-2.3-28.1-6.8\n c-8-4.6-14.3-11-18.8-19.5c-4.5-8.4-6.7-18.3-6.7-29.6c0-11.4,2.2-21.3,6.7-29.6c4.5-8.3,10.8-14.7,18.9-19.2\n c8.1-4.5,17.4-6.7,28-6.7c11,0,20.3,2,27.8,6c7.5,4,12.9,9.3,16,15.8h1l0.8-20.2h22.4v141.9H546V151.9z M528.6,151.9\n c5.6-3.1,10-7.3,12.9-12.4c3-5.2,4.5-10.7,4.5-16.7v-7.9c0-6-1.5-11.4-4.5-16.4c-3-5-7.3-8.9-12.9-11.9c-5.6-3-12.5-4.5-20.5-4.5\n c-10.7,0-19.5,3.2-26.2,9.7c-6.7,6.5-10.1,15.6-10.1,27.4c0,11.6,3.3,20.7,10,27.4c6.7,6.7,15.4,10.1,26.3,10.1\n C516.1,156.6,522.9,155,528.6,151.9z\" />\n <linearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"780.8157\" y1=\"119.2805\" x2=\"690.0867\" y2=\"119.2805\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n class=\"st1\"\n d=\"M803.4,65.3l-0.8,20.2h-1c-3.3-6.5-8.6-11.8-16.1-15.8c-7.5-4-16.7-6-27.7-6c-10.6,0-19.9,2.2-28,6.7\n c-8.1,4.5-14.4,10.9-18.9,19.2c-4.5,8.3-6.7,18.2-6.7,29.8c0,11.3,2.2,21.1,6.7,29.5s10.7,14.8,18.8,19.4c8,4.6,17.4,6.8,28.1,6.8\n c9.9,0,18.8-2.1,26.6-6.2c7.8-4.1,14.4-12.2,17.8-19.3h23.6V65.3H803.4z M802.2,122.7c0,6-1.5,11.6-4.5,16.7\n c-3,5.2-7.3,9.3-12.9,12.4c-5.6,3.1-12.5,4.7-20.5,4.7c-10.9,0-19.6-3.3-26.3-10c-6.7-6.7-10-15.8-10-27.3c0-12,3.4-21.2,10.1-27.6\n c6.7-6.5,15.5-9.7,26.2-9.7c8,0,14.8,1.5,20.5,4.5c5.6,3,10,7,12.9,11.9c3,5,4.5,10.4,4.5,16.2V122.7z\" />\n <linearGradient\n id=\"SVGID_00000152963432808947599350000011020247854886079881_\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"780.8157\"\n y1=\"161.271\"\n x2=\"690.0867\"\n y2=\"161.271\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n style=\"fill: url(#SVGID_00000152963432808947599350000011020247854886079881_)\"\n d=\"M843.9,161.3c0,6.5-5.3,11.8-11.8,11.8l0,0\n c-6.5,0-11.8-5.3-11.8-11.8v0c0-6.5,5.3-11.8,11.8-11.8l0,0C838.6,149.4,843.9,154.7,843.9,161.3\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n <g>\n <polygon class=\"st0\" points=\"159.2,149.4 159.2,173.1 182.8,173.1 182.8,149.4 182.8,65.3 159.2,65.3 \t\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n </g>\n <path\n class=\"st0\"\n d=\"M302.7,84.2c-4-7.3-9.5-12.6-16.5-15.8c-7-3.2-15.1-4.8-24.4-4.8c-9.2,0-17.8,2.1-25.8,6.2\n c-7.9,4.1-13.9,10-17.8,17.6h-1.4l-0.6-22.2h-23v107.8h23.6v-53.4c0-7.5,1.6-14,4.7-19.7c3.1-5.6,7.5-10.1,13.1-13.2\n c5.6-3.2,12.2-4.8,19.7-4.8c10.6,0,18.4,3,23.3,8.9c5,5.9,7.4,15,7.4,27.2v55h23.6V114C308.7,101.5,306.7,91.6,302.7,84.2z\" />\n <path\n class=\"st0\"\n d=\"M671.7,65.3v53.4c0,7.5-1.6,14.1-4.7,19.8c-3.1,5.7-7.5,10.2-13.1,13.4c-5.6,3.2-12.2,4.8-19.7,4.8\n c-10.7,0-18.6-3-23.5-9.1c-5-6-7.4-15-7.4-27V65.3h-23.4v59.5c0,12.2,2,22,5.9,29.4c3.9,7.3,9.4,12.6,16.5,15.9\n c7.1,3.3,15.2,4.9,24.5,4.9c9.6,0,18.4-2.1,26.2-6.3c7.6-4.1,15-11.3,18.9-18.6v23.1h23.4v-23.6v-5.2v-79H671.7z\" />\n </svg>\n </ng-content>\n </a>\n @if (authenticated()) {\n <h3 class=\"whitespace-nowrap text-2xl font-semibold tracking-tight\">{{ 'login.welcomeBack' | transloco : { name: user()?.fullName ?? '' } }}</h3>\n <p class=\"text-muted-foreground text-sm\">{{ 'login.youAreLoggedIn' | transloco }}</p>\n }\n </CardHeader>\n\n @if (!authenticated()) {\n <CardContent>\n <div class=\"grid gap-4\">\n @if (!config.autoOAuthProvider && !config.autoSAMLProvider) {\n <div class=\"grid gap-2\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"username\"\n >{{ 'login.username' | transloco }}</label\n >\n\n <input\n type=\"text\"\n id=\"username\"\n required\n [ngModel]=\"credentials().username\"\n (ngModelChange)=\"updateCredentials({ username: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n <div class=\"grid gap-2\">\n <div class=\"flex items-center\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"password\"\n >{{ 'login.password' | transloco }}</label\n >\n </div>\n <input\n type=\"password\"\n id=\"password\"\n required\n [ngModel]=\"credentials().password\"\n (ngModelChange)=\"updateCredentials({ password: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n <button [disabled]=\"!valid()\" (click)=\"handleLoginWithCredentials()\">{{ 'login.connect' | transloco }}</button>\n } @else {\n <button (click)=\"handleLogin()\">{{ 'login.SignInWith' | transloco: { provider: config.autoOAuthProvider ? 'OAuth' : 'SAML' } }}</button>\n }\n </div>\n </CardContent>\n } @else {\n <CardFooter class=\"justify-between gap-2\">\n <button class=\"w-full\" (click)=\"handleLogout()\" type=\"submit\">{{ 'login.disconnect' | transloco }}</button>\n <button class=\"w-full\" variant=\"ghost\" (click)=\"handleBack()\">{{ 'login.back' | transloco }}</button>\n </CardFooter>\n }\n</Card>\n", styles: [":host{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:2rem}.btn-primary{background-color:#000;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class"] }, { kind: "directive", type: CardHeaderComponent, selector: ".card-header, card-header, CardHeader, cardheader", inputs: ["class"] }, { kind: "directive", type: CardContentComponent, selector: ".card-content, card-content, CardContent, cardcontent", inputs: ["class"] }, { kind: "directive", type: CardFooterComponent, selector: ".card-footer, card-footer, CardFooter, cardfooter", inputs: ["class"] }] });
8377
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SignInComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
8378
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SignInComponent, isStandalone: true, selector: "signIn, signin, sign-in", providers: [provideTranslocoScope('login')], ngImport: i0, template: "<Card>\n <CardHeader>\n <a href=\"#\" title=\"Logo\">\n <ng-content select=\"[logo]\">\n <svg\n version=\"1.1\"\n id=\"Calque_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 858 228\"\n style=\"enable-background: new 0 0 858 228\"\n xml:space=\"preserve\">\n <style type=\"text/css\">\n .st0 {\n fill: #0040bf;\n }\n .st1 {\n fill: url(#SVGID_1_);\n }\n .st2 {\n fill: url(#SVGID_00000085217246274894832600000009342302383523206054_);\n }\n </style>\n <path\n class=\"st0\"\n d=\"M44.7,168.7c-10.1-4.1-17.6-9.9-22.5-17.1c-5-7.3-7.6-15.7-8.1-25.2h25.7c0.5,10.2,4.6,17.9,12.2,23.1\n c7.6,5.2,18.4,7.8,32.4,7.8c13.5,0,23.5-2.2,30.2-6.5c6.7-4.3,10-10.4,10-18.1c0-6.5-1.7-11.4-5.2-14.6c-3.5-3.2-8.5-5.5-15.1-7\n c-6.6-1.5-14.6-2.9-24.2-4.1c-12.5-1.6-23.4-3.8-32.7-6.4C38.1,98,31,93.9,25.9,88.4c-5-5.5-7.5-13.1-7.5-22.9\n c0-9.1,2.6-16.8,7.7-23.1c5.2-6.3,12.5-11.1,22-14.5c9.5-3.3,20.7-5,33.4-5c19.3,0,34.3,3.8,45.1,11.5c10.8,7.7,16.6,18.4,17.4,32.1\n h-24.9c-0.5-9-4.2-15.6-11.1-19.9c-6.9-4.3-16.1-6.4-27.6-6.4c-11.8,0-21,2-27.4,6.1c-6.5,4.1-9.7,9.6-9.7,16.5\n c0,5.8,1.6,10.2,4.7,13.1c3.1,2.9,7.9,5.1,14.3,6.5c6.4,1.4,14.5,2.8,24.3,4c9.6,1.2,18.3,2.7,26.1,4.4c7.7,1.7,14.4,4.1,20,7.2\n c5.6,3.1,9.8,7.3,12.7,12.5c2.9,5.2,4.4,12,4.4,20.3c0,13.6-5.6,24.3-16.9,32.2c-11.3,7.9-27.7,11.8-49.3,11.8\n C67.7,174.9,54.7,172.9,44.7,168.7z\" />\n <path\n class=\"st0\"\n d=\"M346.6,168.2c-9.4-4.5-16.6-10.9-21.7-19.2c-5.1-8.3-7.6-18.1-7.6-29.4c0-11.5,2.5-21.5,7.6-29.9\n c5.1-8.4,12.3-14.8,21.5-19.4c9.2-4.6,20.1-6.8,32.6-6.8c13,0,24.2,2.4,33.3,7.1c9.2,4.8,16.1,11.6,20.7,20.6\n c4.6,9,6.5,19.8,5.7,32.4h-97.8c0.3,10.9,3.9,19.3,10.9,25.3c7,6,16.5,9,28.4,9c9.2,0,17-1.7,23.2-5c6.2-3.3,10.3-7.8,12-13.4h22.6\n c-1.1,7.1-4.3,13.2-9.7,18.5c-5.4,5.3-12.3,9.4-20.7,12.3c-8.4,2.9-17.8,4.4-28.1,4.4C367,174.9,356,172.7,346.6,168.2z M352.5,88.4\n c-6.7,5.2-10.6,12.4-11.8,21.5h74.4c-0.4-9.4-3.8-16.6-10.3-21.7c-6.5-5.1-15.1-7.6-26-7.6C367.9,80.6,359.2,83.2,352.5,88.4z\" />\n <path\n class=\"st0\"\n d=\"M546,151.9h-1c-3.4,7.1-9,12.7-16.9,16.8c-7.9,4.1-16.7,6.2-26.5,6.2c-10.7,0-20.1-2.3-28.1-6.8\n c-8-4.6-14.3-11-18.8-19.5c-4.5-8.4-6.7-18.3-6.7-29.6c0-11.4,2.2-21.3,6.7-29.6c4.5-8.3,10.8-14.7,18.9-19.2\n c8.1-4.5,17.4-6.7,28-6.7c11,0,20.3,2,27.8,6c7.5,4,12.9,9.3,16,15.8h1l0.8-20.2h22.4v141.9H546V151.9z M528.6,151.9\n c5.6-3.1,10-7.3,12.9-12.4c3-5.2,4.5-10.7,4.5-16.7v-7.9c0-6-1.5-11.4-4.5-16.4c-3-5-7.3-8.9-12.9-11.9c-5.6-3-12.5-4.5-20.5-4.5\n c-10.7,0-19.5,3.2-26.2,9.7c-6.7,6.5-10.1,15.6-10.1,27.4c0,11.6,3.3,20.7,10,27.4c6.7,6.7,15.4,10.1,26.3,10.1\n C516.1,156.6,522.9,155,528.6,151.9z\" />\n <linearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"780.8157\" y1=\"119.2805\" x2=\"690.0867\" y2=\"119.2805\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n class=\"st1\"\n d=\"M803.4,65.3l-0.8,20.2h-1c-3.3-6.5-8.6-11.8-16.1-15.8c-7.5-4-16.7-6-27.7-6c-10.6,0-19.9,2.2-28,6.7\n c-8.1,4.5-14.4,10.9-18.9,19.2c-4.5,8.3-6.7,18.2-6.7,29.8c0,11.3,2.2,21.1,6.7,29.5s10.7,14.8,18.8,19.4c8,4.6,17.4,6.8,28.1,6.8\n c9.9,0,18.8-2.1,26.6-6.2c7.8-4.1,14.4-12.2,17.8-19.3h23.6V65.3H803.4z M802.2,122.7c0,6-1.5,11.6-4.5,16.7\n c-3,5.2-7.3,9.3-12.9,12.4c-5.6,3.1-12.5,4.7-20.5,4.7c-10.9,0-19.6-3.3-26.3-10c-6.7-6.7-10-15.8-10-27.3c0-12,3.4-21.2,10.1-27.6\n c6.7-6.5,15.5-9.7,26.2-9.7c8,0,14.8,1.5,20.5,4.5c5.6,3,10,7,12.9,11.9c3,5,4.5,10.4,4.5,16.2V122.7z\" />\n <linearGradient\n id=\"SVGID_00000152963432808947599350000011020247854886079881_\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"780.8157\"\n y1=\"161.271\"\n x2=\"690.0867\"\n y2=\"161.271\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n style=\"fill: url(#SVGID_00000152963432808947599350000011020247854886079881_)\"\n d=\"M843.9,161.3c0,6.5-5.3,11.8-11.8,11.8l0,0\n c-6.5,0-11.8-5.3-11.8-11.8v0c0-6.5,5.3-11.8,11.8-11.8l0,0C838.6,149.4,843.9,154.7,843.9,161.3\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n <g>\n <polygon class=\"st0\" points=\"159.2,149.4 159.2,173.1 182.8,173.1 182.8,149.4 182.8,65.3 159.2,65.3 \t\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n </g>\n <path\n class=\"st0\"\n d=\"M302.7,84.2c-4-7.3-9.5-12.6-16.5-15.8c-7-3.2-15.1-4.8-24.4-4.8c-9.2,0-17.8,2.1-25.8,6.2\n c-7.9,4.1-13.9,10-17.8,17.6h-1.4l-0.6-22.2h-23v107.8h23.6v-53.4c0-7.5,1.6-14,4.7-19.7c3.1-5.6,7.5-10.1,13.1-13.2\n c5.6-3.2,12.2-4.8,19.7-4.8c10.6,0,18.4,3,23.3,8.9c5,5.9,7.4,15,7.4,27.2v55h23.6V114C308.7,101.5,306.7,91.6,302.7,84.2z\" />\n <path\n class=\"st0\"\n d=\"M671.7,65.3v53.4c0,7.5-1.6,14.1-4.7,19.8c-3.1,5.7-7.5,10.2-13.1,13.4c-5.6,3.2-12.2,4.8-19.7,4.8\n c-10.7,0-18.6-3-23.5-9.1c-5-6-7.4-15-7.4-27V65.3h-23.4v59.5c0,12.2,2,22,5.9,29.4c3.9,7.3,9.4,12.6,16.5,15.9\n c7.1,3.3,15.2,4.9,24.5,4.9c9.6,0,18.4-2.1,26.2-6.3c7.6-4.1,15-11.3,18.9-18.6v23.1h23.4v-23.6v-5.2v-79H671.7z\" />\n </svg>\n </ng-content>\n </a>\n @if (authenticated()) {\n <h3 class=\"whitespace-nowrap text-2xl font-semibold tracking-tight\">{{ 'login.welcomeBack' | transloco : { name: user()?.fullName ?? '' } }}</h3>\n <p class=\"text-muted-foreground text-sm\">{{ 'login.youAreLoggedIn' | transloco }}</p>\n }\n </CardHeader>\n\n @if (!authenticated()) {\n <CardContent>\n <div class=\"grid gap-4\">\n @if (!config.autoOAuthProvider && !config.autoSAMLProvider) {\n <div class=\"grid gap-2\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"username\"\n >{{ 'login.username' | transloco }}</label\n >\n\n <input\n type=\"text\"\n id=\"username\"\n required\n [ngModel]=\"credentials().username\"\n (ngModelChange)=\"updateCredentials({ username: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n <div class=\"grid gap-2\">\n <div class=\"flex items-center\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"password\"\n >{{ 'login.password' | transloco }}</label\n >\n </div>\n <input\n type=\"password\"\n id=\"password\"\n required\n [ngModel]=\"credentials().password\"\n (ngModelChange)=\"updateCredentials({ password: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n <button [disabled]=\"!valid()\" (click)=\"handleLoginWithCredentials()\">{{ 'login.connect' | transloco }}</button>\n } @else {\n <button (click)=\"handleLogin()\">{{ 'login.SignInWith' | transloco: { provider: config.autoOAuthProvider ? 'OAuth' : 'SAML' } }}</button>\n }\n </div>\n </CardContent>\n } @else {\n <CardFooter class=\"justify-between gap-2\">\n <button class=\"w-full\" (click)=\"handleLogout()\" type=\"submit\">{{ 'login.disconnect' | transloco }}</button>\n <button class=\"w-full\" variant=\"ghost\" (click)=\"handleBack()\">{{ 'login.back' | transloco }}</button>\n </CardFooter>\n }\n</Card>\n", styles: [":host{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:2rem}.btn-primary{background-color:#000;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class"] }, { kind: "directive", type: CardHeaderComponent, selector: ".card-header, card-header, CardHeader, cardheader", inputs: ["class"] }, { kind: "directive", type: CardContentComponent, selector: ".card-content, card-content, CardContent, cardcontent", inputs: ["class"] }, { kind: "directive", type: CardFooterComponent, selector: ".card-footer, card-footer, CardFooter, cardfooter", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8367
8379
  }
8368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SignInComponent, decorators: [{
8380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SignInComponent, decorators: [{
8369
8381
  type: Component,
8370
8382
  args: [{ selector: 'signIn, signin, sign-in', standalone: true, providers: [provideTranslocoScope('login')], imports: [
8371
8383
  RouterModule,
@@ -8382,7 +8394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
8382
8394
 
8383
8395
  class LabelService {
8384
8396
  appStore = inject(AppStore);
8385
- hasAccess = signal(undefined);
8397
+ hasAccess = signal(undefined, ...(ngDevMode ? [{ debugName: "hasAccess" }] : []));
8386
8398
  /**
8387
8399
  * Check user rights to verify if they can access labels handling
8388
8400
  * @returns if has the rights
@@ -8516,10 +8528,10 @@ class LabelService {
8516
8528
  return from(labels.bulkRemove(labelsToRemove, query, publicOnly));
8517
8529
  }));
8518
8530
  }
8519
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LabelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8520
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LabelService, providedIn: 'root' });
8531
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LabelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8532
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LabelService, providedIn: 'root' });
8521
8533
  }
8522
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LabelService, decorators: [{
8534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LabelService, decorators: [{
8523
8535
  type: Injectable,
8524
8536
  args: [{
8525
8537
  providedIn: 'root'
@@ -8528,18 +8540,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
8528
8540
 
8529
8541
  const DEBOUNCE_DELAY = 300;
8530
8542
  class MultiSelectLabelsComponent {
8531
- article = model();
8532
- isPublic = input(false);
8533
- allowModification = input(false);
8534
- labelsField = input();
8535
- anchor = signal(`--${guid()}`);
8536
- suggestedLabels = signal([]);
8537
- labelInput = model('');
8543
+ article = model(...(ngDevMode ? [undefined, { debugName: "article" }] : []));
8544
+ isPublic = input(false, ...(ngDevMode ? [{ debugName: "isPublic" }] : []));
8545
+ allowModification = input(false, ...(ngDevMode ? [{ debugName: "allowModification" }] : []));
8546
+ labelsField = input(...(ngDevMode ? [undefined, { debugName: "labelsField" }] : []));
8547
+ anchor = signal(`--${guid()}`, ...(ngDevMode ? [{ debugName: "anchor" }] : []));
8548
+ suggestedLabels = signal([], ...(ngDevMode ? [{ debugName: "suggestedLabels" }] : []));
8549
+ labelInput = model('', ...(ngDevMode ? [{ debugName: "labelInput" }] : []));
8538
8550
  debouncedLabelInput = debouncedSignal(this.labelInput, DEBOUNCE_DELAY);
8539
- popover = viewChild('LabelsPopover');
8540
- popoverElement = computed(() => this.popover()?.nativeElement);
8541
- labels = signal([]);
8542
- id = signal(`labels-form-${guid()}`);
8551
+ popover = viewChild('LabelsPopover', ...(ngDevMode ? [{ debugName: "popover" }] : []));
8552
+ popoverElement = computed(() => this.popover()?.nativeElement, ...(ngDevMode ? [{ debugName: "popoverElement" }] : []));
8553
+ labels = signal([], ...(ngDevMode ? [{ debugName: "labels" }] : []));
8554
+ id = signal(`labels-form-${guid()}`, ...(ngDevMode ? [{ debugName: "id" }] : []));
8543
8555
  constructor() {
8544
8556
  afterEveryRender(() => {
8545
8557
  this.popoverElement().style.positionAnchor = this.anchor();
@@ -8626,8 +8638,8 @@ class MultiSelectLabelsComponent {
8626
8638
  updateArticleWithLabels() {
8627
8639
  this.article()[this.labelsField()] = this.labels();
8628
8640
  }
8629
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MultiSelectLabelsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8630
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: MultiSelectLabelsComponent, isStandalone: true, selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: false, transformFunction: null }, isPublic: { classPropertyName: "isPublic", publicName: "isPublic", isSignal: true, isRequired: false, transformFunction: null }, allowModification: { classPropertyName: "allowModification", publicName: "allowModification", isSignal: true, isRequired: false, transformFunction: null }, labelsField: { classPropertyName: "labelsField", publicName: "labelsField", isSignal: true, isRequired: false, transformFunction: null }, labelInput: { classPropertyName: "labelInput", publicName: "labelInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { article: "articleChange", labelInput: "labelInputChange" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["LabelsPopover"], descendants: true, isSignal: true }], ngImport: i0, template: `
8641
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MultiSelectLabelsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8642
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: MultiSelectLabelsComponent, isStandalone: true, selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: false, transformFunction: null }, isPublic: { classPropertyName: "isPublic", publicName: "isPublic", isSignal: true, isRequired: false, transformFunction: null }, allowModification: { classPropertyName: "allowModification", publicName: "allowModification", isSignal: true, isRequired: false, transformFunction: null }, labelsField: { classPropertyName: "labelsField", publicName: "labelsField", isSignal: true, isRequired: false, transformFunction: null }, labelInput: { classPropertyName: "labelInput", publicName: "labelInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { article: "articleChange", labelInput: "labelInputChange" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["LabelsPopover"], descendants: true, isSignal: true }], ngImport: i0, template: `
8631
8643
  <div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
8632
8644
  <label [htmlFor]="id()" class="font-semibold">{{ (isPublic() ? 'labels.publicLabels' : 'labels.privateLabels') | transloco }}</label>
8633
8645
  <input
@@ -8664,9 +8676,9 @@ class MultiSelectLabelsComponent {
8664
8676
  </Badge>
8665
8677
  }
8666
8678
  </div>
8667
- `, isInline: true, styles: [".anchor:has(.popover:popover-open){z-index:var(--z-menu, 1000);border-radius:var(--radius) var(--radius) 0 0}.anchor .popover::backdrop{background-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.popover{width:anchor-size(width);top:anchor(bottom);left:anchor(left)}@supports (-moz-appearance: none){.popover{margin:calc(33.3333333333vh + 30px) 25vw;width:50vw}}@supports (background: -webkit-named-image(i)){.popover{margin:calc(33.3333333333vh + 30px) 25vw;width:50vw}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }] });
8679
+ `, isInline: true, styles: [".anchor:has(.popover:popover-open){z-index:var(--z-menu, 1000);border-radius:var(--radius) var(--radius) 0 0}.anchor .popover::backdrop{background-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.popover{width:anchor-size(width);top:anchor(bottom);left:anchor(left)}@supports (-moz-appearance: none){.popover{margin:calc(33.3333333333vh + 30px) 25vw;width:50vw}}@supports (background: -webkit-named-image(i)){.popover{margin:calc(33.3333333333vh + 30px) 25vw;width:50vw}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8668
8680
  }
8669
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MultiSelectLabelsComponent, decorators: [{
8681
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MultiSelectLabelsComponent, decorators: [{
8670
8682
  type: Component,
8671
8683
  args: [{ selector: 'multiselect-labels, multiselectlabels, MultiSelectLabels', standalone: true, imports: [FormsModule, NgStyle, TranslocoPipe, InputComponent, BadgeComponent, ListItemComponent], template: `
8672
8684
  <div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
@@ -8710,11 +8722,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
8710
8722
 
8711
8723
  class LabelsEditDialog {
8712
8724
  destroyRef;
8713
- dialog = viewChild(DialogComponent);
8725
+ dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
8714
8726
  labelService = inject(LabelService);
8715
8727
  closed = output();
8716
- article = model({});
8717
- labelsConfig = signal(undefined);
8728
+ article = model({}, ...(ngDevMode ? [{ debugName: "article" }] : []));
8729
+ labelsConfig = signal(undefined, ...(ngDevMode ? [{ debugName: "labelsConfig" }] : []));
8718
8730
  constructor(destroyRef) {
8719
8731
  this.destroyRef = destroyRef;
8720
8732
  this.labelService
@@ -8729,8 +8741,8 @@ class LabelsEditDialog {
8729
8741
  close(event) {
8730
8742
  this.closed.emit({ type: event, article: this.article() });
8731
8743
  }
8732
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LabelsEditDialog, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
8733
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: LabelsEditDialog, isStandalone: true, selector: "labels-edit-dialog, labelseditdialog, LabelsEditDialog", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", article: "articleChange" }, providers: [provideTranslocoScope('labels')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
8744
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LabelsEditDialog, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
8745
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: LabelsEditDialog, isStandalone: true, selector: "labels-edit-dialog, labelseditdialog, LabelsEditDialog", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", article: "articleChange" }, providers: [provideTranslocoScope('labels')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
8734
8746
  <dialog #dialog (closed)="close($event)">
8735
8747
  <DialogHeader>
8736
8748
  <DialogTitle>{{ 'labels.title' | transloco }}</DialogTitle>
@@ -8758,9 +8770,9 @@ class LabelsEditDialog {
8758
8770
  </button>
8759
8771
  </DialogFooter>
8760
8772
  </dialog>
8761
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "component", type: MultiSelectLabelsComponent, selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", inputs: ["article", "isPublic", "allowModification", "labelsField", "labelInput"], outputs: ["articleChange", "labelInputChange"] }] });
8773
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "component", type: MultiSelectLabelsComponent, selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", inputs: ["article", "isPublic", "allowModification", "labelsField", "labelInput"], outputs: ["articleChange", "labelInputChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8762
8774
  }
8763
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: LabelsEditDialog, decorators: [{
8775
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: LabelsEditDialog, decorators: [{
8764
8776
  type: Component,
8765
8777
  args: [{
8766
8778
  selector: 'labels-edit-dialog, labelseditdialog, LabelsEditDialog',
@@ -8811,12 +8823,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
8811
8823
 
8812
8824
  const AuditFeedbackType = 'UserFeedback_UserFeedback';
8813
8825
  class FeedbackDialogComponent {
8814
- dialog = viewChild(DialogComponent);
8826
+ dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
8815
8827
  auditService = inject(AuditService);
8816
8828
  appStore = inject(AppStore);
8817
8829
  transloco = inject(TranslocoService);
8818
- comment = model('');
8819
- type = signal(undefined);
8830
+ comment = model('', ...(ngDevMode ? [{ debugName: "comment" }] : []));
8831
+ type = signal(undefined, ...(ngDevMode ? [{ debugName: "type" }] : []));
8820
8832
  open(type) {
8821
8833
  this.type.set(type);
8822
8834
  this.dialog().showModal();
@@ -8835,8 +8847,8 @@ class FeedbackDialogComponent {
8835
8847
  this.dialog().close(e);
8836
8848
  notify.success(this.transloco.translate('feedback.feedbackSuccess'), { duration: 2000 });
8837
8849
  }
8838
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FeedbackDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8839
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: FeedbackDialogComponent, isStandalone: true, selector: "feedback-dialog, feedbackdialog, FeedbackDialog", inputs: { comment: { classPropertyName: "comment", publicName: "comment", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { comment: "commentChange" }, providers: [provideTranslocoScope('feedback')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
8850
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FeedbackDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8851
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: FeedbackDialogComponent, isStandalone: true, selector: "feedback-dialog, feedbackdialog, FeedbackDialog", inputs: { comment: { classPropertyName: "comment", publicName: "comment", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { comment: "commentChange" }, providers: [provideTranslocoScope('feedback')], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
8840
8852
  <dialog #dialog>
8841
8853
  <DialogHeader>
8842
8854
  <DialogTitle>{{ 'feedback.dialogTitle' | transloco }}</DialogTitle>
@@ -8863,9 +8875,9 @@ class FeedbackDialogComponent {
8863
8875
  </button>
8864
8876
  </DialogFooter>
8865
8877
  </dialog>
8866
- `, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }] });
8878
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8867
8879
  }
8868
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FeedbackDialogComponent, decorators: [{
8880
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FeedbackDialogComponent, decorators: [{
8869
8881
  type: Component,
8870
8882
  args: [{
8871
8883
  selector: 'feedback-dialog, feedbackdialog, FeedbackDialog',
@@ -8914,13 +8926,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
8914
8926
 
8915
8927
  class SearchFeedbackComponent {
8916
8928
  onClose = output();
8917
- feedbackDialog = viewChild(FeedbackDialogComponent);
8918
- pages = input.required();
8929
+ feedbackDialog = viewChild(FeedbackDialogComponent, ...(ngDevMode ? [{ debugName: "feedbackDialog" }] : []));
8930
+ pages = input.required(...(ngDevMode ? [{ debugName: "pages" }] : []));
8919
8931
  auditService = inject(AuditService);
8920
8932
  queryParamsStore = inject(QueryParamsStore);
8921
8933
  transloco = inject(TranslocoService);
8922
- liked = signal(false);
8923
- disliked = signal(false);
8934
+ liked = signal(false, ...(ngDevMode ? [{ debugName: "liked" }] : []));
8935
+ disliked = signal(false, ...(ngDevMode ? [{ debugName: "disliked" }] : []));
8924
8936
  menus = [
8925
8937
  { type: 'content', icon: 'far fa-file-alt' },
8926
8938
  { type: 'ui', icon: 'fas fa-desktop' },
@@ -8970,10 +8982,10 @@ class SearchFeedbackComponent {
8970
8982
  openFeedbackDialog(type) {
8971
8983
  this.feedbackDialog()?.open(type);
8972
8984
  }
8973
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8974
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SearchFeedbackComponent, isStandalone: true, selector: "feedback, Feedback", inputs: { pages: { classPropertyName: "pages", publicName: "pages", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onClose: "onClose" }, providers: [provideTranslocoScope('feedback')], viewQueries: [{ propertyName: "feedbackDialog", first: true, predicate: FeedbackDialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<menu>\n <button class=\"border border-gray-200 p-5\" variant=\"ghost\" title=\"{{'feedback.button' | transloco }}\">\n <i class=\"fa-fw far fa-commenting\" aria-hidden=\"true\"></i>\n {{ 'feedback.label' | transloco }}\n <i class=\"fa-fw fas fa-xmark ms-2\" (click)=\"close($event);\" aria-hidden=\"true\"></i>\n </button>\n\n <MenuContent>\n @if (!disliked()) {\n <menuitem (click)=\"like()\" [attr.aria-label]=\"'feedback.like' | transloco\">\n @if (liked()) {\n <i class=\"fa-fw fas fa-thumbs-up\"></i> {{ 'feedback.liked' | transloco }} } @else { <i class=\"fa-fw far fa-thumbs-up\"></i> {{ 'feedback.like' | transloco\n }} }\n </menuitem>\n } @if (!liked()) {\n <menuitem (click)=\"dislike()\" [attr.aria-label]=\"'feedback.dislike' | transloco\">\n @if (disliked()) {\n <i class=\"fa-fw fas fa-thumbs-down\"></i> {{ 'feedback.disliked' | transloco }} } @else { <i class=\"fa-fw far fa-thumbs-down\"></i> {{ 'feedback.dislike' |\n transloco }} }\n </menuitem>\n } @for (menu of menus; track $index) {\n <menuitem (click)=\"openFeedbackDialog(menu.type)\" [attr.aria-label]=\"'feedback.' + menu.type + '.title' | transloco\">\n <i class=\"fa-fw {{menu.icon}}\"></i> {{ 'feedback.' + menu.type + '.title' | transloco }}\n </menuitem>\n }\n </MenuContent>\n</menu>\n\n<feedback-dialog />\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "component", type: FeedbackDialogComponent, selector: "feedback-dialog, feedbackdialog, FeedbackDialog", inputs: ["comment"], outputs: ["commentChange"] }] });
8985
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8986
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SearchFeedbackComponent, isStandalone: true, selector: "feedback, Feedback", inputs: { pages: { classPropertyName: "pages", publicName: "pages", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onClose: "onClose" }, providers: [provideTranslocoScope('feedback')], viewQueries: [{ propertyName: "feedbackDialog", first: true, predicate: FeedbackDialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<menu>\n <button class=\"border border-gray-200 p-5\" variant=\"ghost\" title=\"{{'feedback.button' | transloco }}\">\n <i class=\"fa-fw far fa-commenting\" aria-hidden=\"true\"></i>\n {{ 'feedback.label' | transloco }}\n <i class=\"fa-fw fas fa-xmark ms-2\" (click)=\"close($event);\" aria-hidden=\"true\"></i>\n </button>\n\n <MenuContent>\n @if (!disliked()) {\n <menuitem (click)=\"like()\" [attr.aria-label]=\"'feedback.like' | transloco\">\n @if (liked()) {\n <i class=\"fa-fw fas fa-thumbs-up\"></i> {{ 'feedback.liked' | transloco }} } @else { <i class=\"fa-fw far fa-thumbs-up\"></i> {{ 'feedback.like' | transloco\n }} }\n </menuitem>\n } @if (!liked()) {\n <menuitem (click)=\"dislike()\" [attr.aria-label]=\"'feedback.dislike' | transloco\">\n @if (disliked()) {\n <i class=\"fa-fw fas fa-thumbs-down\"></i> {{ 'feedback.disliked' | transloco }} } @else { <i class=\"fa-fw far fa-thumbs-down\"></i> {{ 'feedback.dislike' |\n transloco }} }\n </menuitem>\n } @for (menu of menus; track $index) {\n <menuitem (click)=\"openFeedbackDialog(menu.type)\" [attr.aria-label]=\"'feedback.' + menu.type + '.title' | transloco\">\n <i class=\"fa-fw {{menu.icon}}\"></i> {{ 'feedback.' + menu.type + '.title' | transloco }}\n </menuitem>\n }\n </MenuContent>\n</menu>\n\n<feedback-dialog />\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant"] }, { kind: "component", type: FeedbackDialogComponent, selector: "feedback-dialog, feedbackdialog, FeedbackDialog", inputs: ["comment"], outputs: ["commentChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
8975
8987
  }
8976
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SearchFeedbackComponent, decorators: [{
8988
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SearchFeedbackComponent, decorators: [{
8977
8989
  type: Component,
8978
8990
  args: [{ selector: 'feedback, Feedback', standalone: true, imports: [ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, TranslocoPipe, FeedbackDialogComponent], providers: [provideTranslocoScope('feedback')], template: "<menu>\n <button class=\"border border-gray-200 p-5\" variant=\"ghost\" title=\"{{'feedback.button' | transloco }}\">\n <i class=\"fa-fw far fa-commenting\" aria-hidden=\"true\"></i>\n {{ 'feedback.label' | transloco }}\n <i class=\"fa-fw fas fa-xmark ms-2\" (click)=\"close($event);\" aria-hidden=\"true\"></i>\n </button>\n\n <MenuContent>\n @if (!disliked()) {\n <menuitem (click)=\"like()\" [attr.aria-label]=\"'feedback.like' | transloco\">\n @if (liked()) {\n <i class=\"fa-fw fas fa-thumbs-up\"></i> {{ 'feedback.liked' | transloco }} } @else { <i class=\"fa-fw far fa-thumbs-up\"></i> {{ 'feedback.like' | transloco\n }} }\n </menuitem>\n } @if (!liked()) {\n <menuitem (click)=\"dislike()\" [attr.aria-label]=\"'feedback.dislike' | transloco\">\n @if (disliked()) {\n <i class=\"fa-fw fas fa-thumbs-down\"></i> {{ 'feedback.disliked' | transloco }} } @else { <i class=\"fa-fw far fa-thumbs-down\"></i> {{ 'feedback.dislike' |\n transloco }} }\n </menuitem>\n } @for (menu of menus; track $index) {\n <menuitem (click)=\"openFeedbackDialog(menu.type)\" [attr.aria-label]=\"'feedback.' + menu.type + '.title' | transloco\">\n <i class=\"fa-fw {{menu.icon}}\"></i> {{ 'feedback.' + menu.type + '.title' | transloco }}\n </menuitem>\n }\n </MenuContent>\n</menu>\n\n<feedback-dialog />\n" }]
8979
8991
  }] });
@@ -8985,19 +8997,19 @@ class AggregationItemComponent {
8985
8997
  }
8986
8998
  onSelect = new EventEmitter();
8987
8999
  onOpen = new EventEmitter();
8988
- node = input.required();
9000
+ node = input.required(...(ngDevMode ? [{ debugName: "node" }] : []));
8989
9001
  searchText = inject(AggregationComponent).searchText;
8990
9002
  name = computed(() => {
8991
9003
  const value = this.node().display || this.node().value;
8992
9004
  return typeof value === 'string' ? value : `${value}`;
8993
- });
9005
+ }, ...(ngDevMode ? [{ debugName: "name" }] : []));
8994
9006
  level = computed(() => {
8995
9007
  const level = (this.node().$level ?? 0) - 1 + (!this.node().hasChildren ? 1 : 0);
8996
9008
  if (this.node().hasChildren === false) {
8997
9009
  return level + 1;
8998
9010
  }
8999
9011
  return level;
9000
- });
9012
+ }, ...(ngDevMode ? [{ debugName: "level" }] : []));
9001
9013
  select(e, item) {
9002
9014
  e.stopImmediatePropagation();
9003
9015
  item.$selected = !item.$selected;
@@ -9017,10 +9029,10 @@ class AggregationItemComponent {
9017
9029
  }
9018
9030
  this.onOpen.emit(node);
9019
9031
  }
9020
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AggregationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9021
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: AggregationItemComponent, isStandalone: true, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onSelect: "onSelect", onOpen: "onOpen" }, host: { properties: { "attr.disabled": "this.disabled" } }, ngImport: i0, template: "<a\n role=\"listitem\"\n [attr.aria-selected]=\"node().$selected\"\n [attr.aria-label]=\"name() | syslang\"\n [style.--level]=\"level()\"\n [class]=\"\n cn(\n 'flex grow items-center gap-2 p-1 leading-7',\n node().count === 0 && 'disabled pointer-events-none text-neutral-300',\n node().$selected && 'bg-primary-100 text-primary'\n )\n \"\n (click)=\"select($event, node())\">\n <!-- chrevron is visible only if the node has children -->\n <button (click)=\"open($event, node())\" class=\"transition-transform ease-in hover:scale-125\" aria-label=\"Open\">\n <ChevronRight [class]=\"cn('size-4 translate-x-1', node().$opened && 'rotate-90', !node().hasChildren && 'hidden')\" width=\"16\" height=\"16\" />\n </button>\n\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n value=\"{{ node().value }}\"\n [attr.disabled]=\"node().count === 0 ? true : null\"\n [attr.aria-disabled]=\"node().count === 0\"\n (keydown.enter)=\"select($event, node())\"\n [checked]=\"node().$selected\" />\n\n @if (node().icon) {\n <i class=\"fa-fw {{ node().icon }} self-center justify-self-center\" aria-hidden=\"true\"></i>\n }\n <p class=\"line-clamp-1 text-ellipsis break-all\" [title]=\"name() | syslang\">\n @for (chunk of (name() | syslang) ?? '' | highlightWord: searchText() : 10; track $index) {\n <span [class]=\"{ 'font-bold': chunk.match }\" aria-hidden=\"true\">{{ chunk.text }}</span>\n }\n </p>\n</a>\n\n@if (node().hasChildren && node().$opened) {\n @for (item of node().items; track $index) {\n <AggregationItem [node]=\"item\" (onOpen)=\"onOpen.emit($event)\" (onSelect)=\"onSelect.emit($event)\" />\n }\n}\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}:host a{padding-left:calc((var(--agg-tree-indent, .5rem) * var(--level)))}a{line-height:var(--agg-item-height, inherit)}\n"], dependencies: [{ kind: "component", type: AggregationItemComponent, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: ["node"], outputs: ["onSelect", "onOpen"] }, { kind: "pipe", type: HighlightWordPipe, name: "highlightWord" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "component", type: ChevronRightIconComponent, selector: "chevron-right, ChevronRight, chevronright", inputs: ["class", "width", "height"] }] });
9032
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AggregationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9033
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: AggregationItemComponent, isStandalone: true, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onSelect: "onSelect", onOpen: "onOpen" }, host: { properties: { "attr.disabled": "this.disabled" } }, ngImport: i0, template: "<a\n role=\"listitem\"\n [attr.aria-selected]=\"node().$selected\"\n [attr.aria-label]=\"name() | syslang\"\n [style.--level]=\"level()\"\n [class]=\"\n cn(\n 'flex grow items-center gap-2 p-1 leading-7',\n node().count === 0 && 'disabled pointer-events-none text-neutral-300',\n node().$selected && 'bg-primary-100 text-primary'\n )\n \"\n (click)=\"select($event, node())\">\n <!-- chrevron is visible only if the node has children -->\n <button (click)=\"open($event, node())\" class=\"transition-transform ease-in hover:scale-125\" aria-label=\"Open\">\n <ChevronRight [class]=\"cn('size-4 translate-x-1', node().$opened && 'rotate-90', !node().hasChildren && 'hidden')\" width=\"16\" height=\"16\" />\n </button>\n\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n value=\"{{ node().value }}\"\n [attr.disabled]=\"node().count === 0 ? true : null\"\n [attr.aria-disabled]=\"node().count === 0\"\n (keydown.enter)=\"select($event, node())\"\n [checked]=\"node().$selected\" />\n\n @if (node().icon) {\n <i class=\"fa-fw {{ node().icon }} self-center justify-self-center\" aria-hidden=\"true\"></i>\n }\n <p class=\"line-clamp-1 text-ellipsis break-all\" [title]=\"name() | syslang\">\n @for (chunk of (name() | syslang) ?? '' | highlightWord: searchText() : 10; track $index) {\n <span [class]=\"{ 'font-bold': chunk.match }\" aria-hidden=\"true\">{{ chunk.text }}</span>\n }\n </p>\n</a>\n\n@if (node().hasChildren && node().$opened) {\n @for (item of node().items; track $index) {\n <AggregationItem [node]=\"item\" (onOpen)=\"onOpen.emit($event)\" (onSelect)=\"onSelect.emit($event)\" />\n }\n}\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}:host a{padding-left:calc((var(--agg-tree-indent, .5rem) * var(--level)))}a{line-height:var(--agg-item-height, inherit)}\n"], dependencies: [{ kind: "component", type: AggregationItemComponent, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: ["node"], outputs: ["onSelect", "onOpen"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "component", type: ChevronRightIconComponent, selector: "chevron-right, ChevronRight, chevronright", inputs: ["class", "width", "height"] }, { kind: "pipe", type: HighlightWordPipe, name: "highlightWord" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
9022
9034
  }
9023
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AggregationItemComponent, decorators: [{
9035
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AggregationItemComponent, decorators: [{
9024
9036
  type: Component,
9025
9037
  args: [{ selector: 'aggregation-item, AggregationItem, aggregationitem', standalone: true, imports: [HighlightWordPipe, ListItemComponent, SyslangPipe, ChevronRightIconComponent], template: "<a\n role=\"listitem\"\n [attr.aria-selected]=\"node().$selected\"\n [attr.aria-label]=\"name() | syslang\"\n [style.--level]=\"level()\"\n [class]=\"\n cn(\n 'flex grow items-center gap-2 p-1 leading-7',\n node().count === 0 && 'disabled pointer-events-none text-neutral-300',\n node().$selected && 'bg-primary-100 text-primary'\n )\n \"\n (click)=\"select($event, node())\">\n <!-- chrevron is visible only if the node has children -->\n <button (click)=\"open($event, node())\" class=\"transition-transform ease-in hover:scale-125\" aria-label=\"Open\">\n <ChevronRight [class]=\"cn('size-4 translate-x-1', node().$opened && 'rotate-90', !node().hasChildren && 'hidden')\" width=\"16\" height=\"16\" />\n </button>\n\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n value=\"{{ node().value }}\"\n [attr.disabled]=\"node().count === 0 ? true : null\"\n [attr.aria-disabled]=\"node().count === 0\"\n (keydown.enter)=\"select($event, node())\"\n [checked]=\"node().$selected\" />\n\n @if (node().icon) {\n <i class=\"fa-fw {{ node().icon }} self-center justify-self-center\" aria-hidden=\"true\"></i>\n }\n <p class=\"line-clamp-1 text-ellipsis break-all\" [title]=\"name() | syslang\">\n @for (chunk of (name() | syslang) ?? '' | highlightWord: searchText() : 10; track $index) {\n <span [class]=\"{ 'font-bold': chunk.match }\" aria-hidden=\"true\">{{ chunk.text }}</span>\n }\n </p>\n</a>\n\n@if (node().hasChildren && node().$opened) {\n @for (item of node().items; track $index) {\n <AggregationItem [node]=\"item\" (onOpen)=\"onOpen.emit($event)\" (onSelect)=\"onSelect.emit($event)\" />\n }\n}\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}:host a{padding-left:calc((var(--agg-tree-indent, .5rem) * var(--level)))}a{line-height:var(--agg-item-height, inherit)}\n"] }]
9026
9038
  }], propDecorators: { disabled: [{
@@ -9039,8 +9051,8 @@ class AggregationComponent {
9039
9051
  /* services */
9040
9052
  aggregationsService = inject(AggregationsService);
9041
9053
  el = inject(ElementRef);
9042
- name = input.required();
9043
- column = input.required();
9054
+ name = input.required(...(ngDevMode ? [{ debugName: "name" }] : []));
9055
+ column = input.required(...(ngDevMode ? [{ debugName: "column" }] : []));
9044
9056
  onSelect = output();
9045
9057
  /**
9046
9058
  * A boolean flag indicating whether the component should operate in headless mode.
@@ -9048,19 +9060,19 @@ class AggregationComponent {
9048
9060
  *
9049
9061
  * @default false
9050
9062
  */
9051
- headless = input(false);
9063
+ headless = input(false, ...(ngDevMode ? [{ debugName: "headless" }] : []));
9052
9064
  /**
9053
9065
  * A boolean flag indicating whether the component is searchable.
9054
9066
  * This property is initialized to `undefined` by default.
9055
9067
  * "Undefined" and not "false" because this input overrides the custom json settings
9056
9068
  */
9057
- searchable = input(undefined);
9058
- selection = signal(false);
9069
+ searchable = input(undefined, ...(ngDevMode ? [{ debugName: "searchable" }] : []));
9070
+ selection = signal(false, ...(ngDevMode ? [{ debugName: "selection" }] : []));
9059
9071
  /**
9060
9072
  * A boolean flag indicating whether we want to see the filters count when some is applied
9061
9073
  * This property is initialized to `false` by default.
9062
9074
  */
9063
- showCount = input(false);
9075
+ showCount = input(false, ...(ngDevMode ? [{ debugName: "showCount" }] : []));
9064
9076
  /* aggregation */
9065
9077
  aggregation = computed(() => {
9066
9078
  // when the aggegation store updates, we need to check if the aggregation is still valid
@@ -9076,7 +9088,7 @@ class AggregationComponent {
9076
9088
  }
9077
9089
  }
9078
9090
  return null;
9079
- });
9091
+ }, ...(ngDevMode ? [{ debugName: "aggregation" }] : []));
9080
9092
  /* items of the aggretions */
9081
9093
  items = computed(() => {
9082
9094
  // when the aggegation store updates, we need to check if the aggregation is still valid
@@ -9091,7 +9103,7 @@ class AggregationComponent {
9091
9103
  return currentFilters;
9092
9104
  }
9093
9105
  return [];
9094
- });
9106
+ }, ...(ngDevMode ? [{ debugName: "items" }] : []));
9095
9107
  /**
9096
9108
  * A computed property that determines whether there are active filters
9097
9109
  * for the current aggregation column.
@@ -9103,7 +9115,7 @@ class AggregationComponent {
9103
9115
  hasFilters = computed(() => {
9104
9116
  const { count = 0 } = this.queryParamsStore.getFilter({ field: this.aggregation()?.column, name: this.aggregation()?.name }) || {};
9105
9117
  return count > 0;
9106
- });
9118
+ }, ...(ngDevMode ? [{ debugName: "hasFilters" }] : []));
9107
9119
  /**
9108
9120
  * A computed property that returns the number of items of this aggregation applied in the active filters
9109
9121
  *
@@ -9114,21 +9126,21 @@ class AggregationComponent {
9114
9126
  filtersCount = computed(() => {
9115
9127
  const { count = 0 } = this.queryParamsStore.getFilter({ field: this.aggregation()?.column, name: this.aggregation()?.name }) || {};
9116
9128
  return count;
9117
- });
9129
+ }, ...(ngDevMode ? [{ debugName: "filtersCount" }] : []));
9118
9130
  /*
9119
9131
  * A computed property that returns the height of the component based on its state.
9120
9132
  *
9121
9133
  * @returns {number} the height of the component in rem.
9122
9134
  */
9123
- computeHeight = computed(() => (this.headless() ? 0 : 2) + (this.aggregation()?.searchable ? 2 : 0));
9135
+ computeHeight = computed(() => (this.headless() ? 0 : 2) + (this.aggregation()?.searchable ? 2 : 0), ...(ngDevMode ? [{ debugName: "computeHeight" }] : []));
9124
9136
  /* search feature */
9125
- searchText = model('');
9137
+ searchText = model('', ...(ngDevMode ? [{ debugName: "searchText" }] : []));
9126
9138
  debouncedSearchText = debouncedSignal(this.searchText, 300);
9127
9139
  normalizedSearchText = computed(() => this.debouncedSearchText()
9128
9140
  .normalize('NFD')
9129
- .replace(/[\u0300-\u036f]/g, ''));
9141
+ .replace(/[\u0300-\u036f]/g, ''), ...(ngDevMode ? [{ debugName: "normalizedSearchText" }] : []));
9130
9142
  /* suggestions */
9131
- suggests = signal([]);
9143
+ suggests = signal([], ...(ngDevMode ? [{ debugName: "suggests" }] : []));
9132
9144
  /* searched items */
9133
9145
  searchedItems = computed(() => {
9134
9146
  if (!this.suggests())
@@ -9147,7 +9159,7 @@ class AggregationComponent {
9147
9159
  $selected: false,
9148
9160
  items: []
9149
9161
  }));
9150
- });
9162
+ }, ...(ngDevMode ? [{ debugName: "searchedItems" }] : []));
9151
9163
  query;
9152
9164
  constructor() {
9153
9165
  this.query = buildQuery();
@@ -9379,10 +9391,10 @@ class AggregationComponent {
9379
9391
  }
9380
9392
  return currentItems;
9381
9393
  }
9382
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AggregationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9383
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: AggregationComponent, isStandalone: true, selector: "Aggregation, aggregation", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, headless: { classPropertyName: "headless", publicName: "headless", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, searchText: { classPropertyName: "searchText", publicName: "searchText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", searchText: "searchTextChange" }, host: { properties: { "style.--header-height": "`${this.computeHeight()}rem`" }, classAttribute: "d-flex flex-column h-100" }, ngImport: i0, template: "<fieldset class=\"flex flex-col gap-2\">\n @if (!headless()) {\n <legend class=\"mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold text-gray-600\">\n <ng-content select=\"label\">\n @if (aggregation()?.icon) {\n <i class=\"fa-fw {{ aggregation()?.icon }} mr-1\" aria-hidden=\"true\"></i>\n }\n <span class=\"grow\">{{ aggregation()?.display | syslang | transloco }}</span>\n </ng-content>\n\n @if (showCount() && filtersCount() > 0) {\n <!-- count -->\n <Badge>\n {{ filtersCount() }}\n </Badge>\n }\n @if (hasFilters()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.clearFilters' | transloco\"\n [attr.aria-label]=\"'filters.clearFilters' | transloco\"\n (click)=\"clear()\">\n <i class=\"fa-fw far fa-filter-circle-xmark\"></i>\n </button>\n }\n @if (selection()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.applyFilters' | transloco\"\n [attr.aria-label]=\"'filters.applyFilters' | transloco\"\n (click)=\"apply()\">\n <i class=\"fa-fw far fa-filter\"></i>\n </button>\n }\n </legend>\n }\n\n @if (aggregation()?.searchable && items().length) {\n <input type=\"text\" [placeholder]=\"'search' | transloco\" [(ngModel)]=\"searchText\" />\n }\n\n <ul class=\"snap-y snap-start overflow-auto\" role=\"list\" [attr.aria-label]=\"aggregation()?.display | syslang | transloco\">\n @for (item of items(); track $index) {\n <AggregationItem [node]=\"item\" (onSelect)=\"select()\" (onOpen)=\"open($event)\" />\n }\n </ul>\n @if (aggregation()?.$hasMore && this.searchedItems().length === 0) {\n <button variant=\"link\" class=\"mt-1 flex w-full justify-center\" [attr.aria-label]=\"'loadMore' | transloco\" (click)=\"loadMore()\">\n {{ 'loadMore' | transloco }}\n </button>\n }\n</fieldset>\n", styles: [":host{display:block}fieldset{height:100%;max-height:inherit;scrollbar-width:thin}ul[role=list]{scrollbar-width:inherit;max-height:calc(100vh - var(--header-height, 0px) - var(--agg-header-height, 0px))}AggregationItem:has(+AggregationItem){margin-bottom:var(--agg-item-gap, inherit)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "component", type: AggregationItemComponent, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: ["node"], outputs: ["onSelect", "onOpen"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }] });
9394
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AggregationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9395
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: AggregationComponent, isStandalone: true, selector: "Aggregation, aggregation", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, headless: { classPropertyName: "headless", publicName: "headless", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, searchText: { classPropertyName: "searchText", publicName: "searchText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", searchText: "searchTextChange" }, host: { properties: { "style.--header-height": "`${this.computeHeight()}rem`" }, classAttribute: "d-flex flex-column h-100" }, ngImport: i0, template: "<fieldset class=\"flex flex-col gap-2\">\n @if (!headless()) {\n <legend class=\"mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold text-gray-600\">\n <ng-content select=\"label\">\n @if (aggregation()?.icon) {\n <i class=\"fa-fw {{ aggregation()?.icon }} mr-1\" aria-hidden=\"true\"></i>\n }\n <span class=\"grow\">{{ aggregation()?.display | syslang | transloco }}</span>\n </ng-content>\n\n @if (showCount() && filtersCount() > 0) {\n <!-- count -->\n <Badge>\n {{ filtersCount() }}\n </Badge>\n }\n @if (hasFilters()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.clearFilters' | transloco\"\n [attr.aria-label]=\"'filters.clearFilters' | transloco\"\n (click)=\"clear()\">\n <i class=\"fa-fw far fa-filter-circle-xmark\"></i>\n </button>\n }\n @if (selection()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.applyFilters' | transloco\"\n [attr.aria-label]=\"'filters.applyFilters' | transloco\"\n (click)=\"apply()\">\n <i class=\"fa-fw far fa-filter\"></i>\n </button>\n }\n </legend>\n }\n\n @if (aggregation()?.searchable && items().length) {\n <input type=\"text\" [placeholder]=\"'search' | transloco\" [(ngModel)]=\"searchText\" />\n }\n\n <ul class=\"snap-y snap-start overflow-auto\" role=\"list\" [attr.aria-label]=\"aggregation()?.display | syslang | transloco\">\n @for (item of items(); track $index) {\n <AggregationItem [node]=\"item\" (onSelect)=\"select()\" (onOpen)=\"open($event)\" />\n }\n </ul>\n @if (aggregation()?.$hasMore && this.searchedItems().length === 0) {\n <button variant=\"link\" class=\"mt-1 flex w-full justify-center\" [attr.aria-label]=\"'loadMore' | transloco\" (click)=\"loadMore()\">\n {{ 'loadMore' | transloco }}\n </button>\n }\n</fieldset>\n", styles: [":host{display:block}fieldset{height:100%;max-height:inherit;scrollbar-width:thin}ul[role=list]{scrollbar-width:inherit;max-height:calc(100vh - var(--header-height, 0px) - var(--agg-header-height, 0px))}AggregationItem:has(+AggregationItem){margin-bottom:var(--agg-item-gap, inherit)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "component", type: AggregationItemComponent, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: ["node"], outputs: ["onSelect", "onOpen"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
9384
9396
  }
9385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AggregationComponent, decorators: [{
9397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AggregationComponent, decorators: [{
9386
9398
  type: Component,
9387
9399
  args: [{ selector: 'Aggregation, aggregation', imports: [FormsModule, ReactiveFormsModule, ButtonComponent, InputComponent, AggregationItemComponent, SyslangPipe, TranslocoPipe, BadgeComponent], standalone: true, host: {
9388
9400
  class: 'd-flex flex-column h-100',
@@ -9409,11 +9421,11 @@ const FILTER_DATE_ALLOW_CUSTOM_RANGE = new InjectionToken('date allow custom ran
9409
9421
  class DateComponent extends AggregationComponent {
9410
9422
  destroyRef;
9411
9423
  cn = cn;
9412
- title = input({ label: 'Date', icon: 'far fa-calendar-day' });
9413
- displayEmptyDistributionIntervals = input(false);
9424
+ title = input({ label: 'Date', icon: 'far fa-calendar-day' }, ...(ngDevMode ? [{ debugName: "title" }] : []));
9425
+ displayEmptyDistributionIntervals = input(false, ...(ngDevMode ? [{ debugName: "displayEmptyDistributionIntervals" }] : []));
9414
9426
  allowCustomRange = inject(FILTER_DATE_ALLOW_CUSTOM_RANGE);
9415
9427
  transloco = inject(TranslocoService);
9416
- dateOptions = computed(() => translateAggregationToDateOptions(this.aggregation(), this.displayEmptyDistributionIntervals()));
9428
+ dateOptions = computed(() => translateAggregationToDateOptions(this.aggregation(), this.displayEmptyDistributionIntervals()), ...(ngDevMode ? [{ debugName: "dateOptions" }] : []));
9417
9429
  form = new FormGroup({
9418
9430
  option: new FormControl(null),
9419
9431
  customRange: new FormGroup({
@@ -9422,7 +9434,7 @@ class DateComponent extends AggregationComponent {
9422
9434
  })
9423
9435
  });
9424
9436
  today = new Date().toISOString().split('T')[0];
9425
- validSelection = signal(false);
9437
+ validSelection = signal(false, ...(ngDevMode ? [{ debugName: "validSelection" }] : []));
9426
9438
  constructor(destroyRef) {
9427
9439
  super();
9428
9440
  this.destroyRef = destroyRef;
@@ -9441,7 +9453,7 @@ class DateComponent extends AggregationComponent {
9441
9453
  return { ...agg, items: agg?.items?.filter((item) => item.display !== 'custom-range') ?? [] };
9442
9454
  }
9443
9455
  return null;
9444
- });
9456
+ }, ...(ngDevMode ? [{ debugName: "aggregation" }] : []));
9445
9457
  apply() {
9446
9458
  try {
9447
9459
  const filter = this.getFormValueFilter();
@@ -9552,19 +9564,19 @@ class DateComponent extends AggregationComponent {
9552
9564
  }
9553
9565
  throw new Error('filters.filterInvalid');
9554
9566
  }
9555
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DateComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
9556
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DateComponent, isStandalone: true, selector: "date-filter,DateFilter", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, displayEmptyDistributionIntervals: { classPropertyName: "displayEmptyDistributionIntervals", publicName: "displayEmptyDistributionIntervals", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('filters')], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <fieldset class=\"overflow-auto\">\n @if (!headless()) {\n <legend class=\"mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold text-gray-600\">\n <p class=\"me-4 grow\">\n <i class=\"fa-fw {{ title().icon }}\" aria-hidden=\"true\"></i>\n {{ title().label | syslang | transloco }}\n </p>\n <div class=\"ms-4\">\n @if (hasFilters()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.clearFilters' | transloco\"\n [attr.aria-label]=\"'filters.clearFilters' | transloco\"\n (click)=\"clear()\"\n (keydown.enter)=\"clear()\">\n <i class=\"fa-fw far fa-filter-circle-xmark\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (selection() && validSelection()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.applyFilters' | transloco\"\n [attr.aria-label]=\"'filters.applyFilters' | transloco\"\n (click)=\"apply()\"\n (keydown.enter)=\"apply()\">\n <i class=\"fa-fw far fa-filter\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </legend>\n }\n\n <ul class=\"flex flex-col gap-1 pt-2\" role=\"list\">\n @for (option of dateOptions(); track $index) {\n <li\n role=\"listitem\"\n tabindex=\"0\"\n (click)=\"radio.click()\"\n [attr.aria-label]=\"option.display | syslang | transloco\"\n [class]=\"\n cn(\n 'flex p-0 px-2 leading-7',\n form.get('option')?.value === option.display && 'bg-accent',\n option.hidden && 'hidden',\n option.disabled && 'disabled pointer-events-none text-neutral-300'\n )\n \"\n [attr.aria-hidden]=\"option.disabled\">\n <input\n #radio\n type=\"radio\"\n formControlName=\"option\"\n id=\"date-filter-{{ option.display }}\"\n [attr.disabled]=\"option.disabled ? true : null\"\n [attr.aria-disabled]=\"option.disabled\"\n (click)=\"select()\"\n value=\"{{ option.display }}\" />\n\n <label for=\"date-filter-{{ option.display }}\" class=\"grow cursor-pointer p-1\">\n {{ option.display | syslang | transloco }}\n </label>\n </li>\n }\n\n @if (allowCustomRange) {\n <li role=\"listitem\" aria-label=\"custom range\" class=\"flex px-2 leading-7\" [ngClass]=\"{ selected: form.get('option')?.value === 'custom-range' }\">\n <input #radiorange type=\"radio\" formControlName=\"option\" id=\"date-filter-custom-range\" value=\"custom-range\" (click)=\"select()\" />\n\n <div class=\"grid grow grid-cols-[4rem_auto] p-1 *:cursor-pointer\" formGroupName=\"customRange\" (click)=\"radiorange.click()\">\n <label for=\"date-filter-custom-from\">{{ 'from' | transloco }}</label>\n\n <input\n class=\"grow border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-from\"\n #dateFilterCustomFrom\n formControlName=\"from\"\n [max]=\"form.get('customRange.to')?.value ?? today\" />\n\n <label for=\"date-filter-custom-to\">{{ 'to' | transloco }}</label>\n\n <input\n class=\"border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-to\"\n formControlName=\"to\"\n [min]=\"form.get('customRange.from')?.value\"\n [max]=\"today\" />\n </div>\n </li>\n }\n </ul>\n </fieldset>\n</form>\n", styles: [":host{display:block}ul[role=list]{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
9567
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DateComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
9568
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: DateComponent, isStandalone: true, selector: "date-filter,DateFilter", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, displayEmptyDistributionIntervals: { classPropertyName: "displayEmptyDistributionIntervals", publicName: "displayEmptyDistributionIntervals", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('filters')], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <fieldset class=\"overflow-auto\">\n @if (!headless()) {\n <legend class=\"mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold text-gray-600\">\n <p class=\"me-4 grow\">\n <i class=\"fa-fw {{ title().icon }}\" aria-hidden=\"true\"></i>\n {{ title().label | syslang | transloco }}\n </p>\n <div class=\"ms-4\">\n @if (hasFilters()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.clearFilters' | transloco\"\n [attr.aria-label]=\"'filters.clearFilters' | transloco\"\n (click)=\"clear()\"\n (keydown.enter)=\"clear()\">\n <i class=\"fa-fw far fa-filter-circle-xmark\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (selection() && validSelection()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.applyFilters' | transloco\"\n [attr.aria-label]=\"'filters.applyFilters' | transloco\"\n (click)=\"apply()\"\n (keydown.enter)=\"apply()\">\n <i class=\"fa-fw far fa-filter\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </legend>\n }\n\n <ul class=\"flex flex-col gap-1 pt-2\" role=\"list\">\n @for (option of dateOptions(); track $index) {\n <li\n role=\"listitem\"\n tabindex=\"0\"\n (click)=\"radio.click()\"\n [attr.aria-label]=\"option.display | syslang | transloco\"\n [class]=\"\n cn(\n 'flex p-0 px-2 leading-7',\n form.get('option')?.value === option.display && 'bg-accent',\n option.hidden && 'hidden',\n option.disabled && 'disabled pointer-events-none text-neutral-300'\n )\n \"\n [attr.aria-hidden]=\"option.disabled\">\n <input\n #radio\n type=\"radio\"\n formControlName=\"option\"\n id=\"date-filter-{{ option.display }}\"\n [attr.disabled]=\"option.disabled ? true : null\"\n [attr.aria-disabled]=\"option.disabled\"\n (click)=\"select()\"\n value=\"{{ option.display }}\" />\n\n <label for=\"date-filter-{{ option.display }}\" class=\"grow cursor-pointer p-1\">\n {{ option.display | syslang | transloco }}\n </label>\n </li>\n }\n\n @if (allowCustomRange) {\n <li role=\"listitem\" aria-label=\"custom range\" class=\"flex px-2 leading-7\" [ngClass]=\"{ selected: form.get('option')?.value === 'custom-range' }\">\n <input #radiorange type=\"radio\" formControlName=\"option\" id=\"date-filter-custom-range\" value=\"custom-range\" (click)=\"select()\" />\n\n <div class=\"grid grow grid-cols-[4rem_auto] p-1 *:cursor-pointer\" formGroupName=\"customRange\" (click)=\"radiorange.click()\">\n <label for=\"date-filter-custom-from\">{{ 'from' | transloco }}</label>\n\n <input\n class=\"grow border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-from\"\n #dateFilterCustomFrom\n formControlName=\"from\"\n [max]=\"form.get('customRange.to')?.value ?? today\" />\n\n <label for=\"date-filter-custom-to\">{{ 'to' | transloco }}</label>\n\n <input\n class=\"border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-to\"\n formControlName=\"to\"\n [min]=\"form.get('customRange.from')?.value\"\n [max]=\"today\" />\n </div>\n </li>\n }\n </ul>\n </fieldset>\n</form>\n", styles: [":host{display:block}ul[role=list]{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
9557
9569
  }
9558
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DateComponent, decorators: [{
9570
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DateComponent, decorators: [{
9559
9571
  type: Component,
9560
9572
  args: [{ selector: 'date-filter,DateFilter', standalone: true, providers: [provideTranslocoScope('filters')], imports: [NgClass, ButtonComponent, ListItemComponent, ReactiveFormsModule, TranslocoPipe, SyslangPipe], template: "<form [formGroup]=\"form\">\n <fieldset class=\"overflow-auto\">\n @if (!headless()) {\n <legend class=\"mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold text-gray-600\">\n <p class=\"me-4 grow\">\n <i class=\"fa-fw {{ title().icon }}\" aria-hidden=\"true\"></i>\n {{ title().label | syslang | transloco }}\n </p>\n <div class=\"ms-4\">\n @if (hasFilters()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.clearFilters' | transloco\"\n [attr.aria-label]=\"'filters.clearFilters' | transloco\"\n (click)=\"clear()\"\n (keydown.enter)=\"clear()\">\n <i class=\"fa-fw far fa-filter-circle-xmark\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (selection() && validSelection()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.applyFilters' | transloco\"\n [attr.aria-label]=\"'filters.applyFilters' | transloco\"\n (click)=\"apply()\"\n (keydown.enter)=\"apply()\">\n <i class=\"fa-fw far fa-filter\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </legend>\n }\n\n <ul class=\"flex flex-col gap-1 pt-2\" role=\"list\">\n @for (option of dateOptions(); track $index) {\n <li\n role=\"listitem\"\n tabindex=\"0\"\n (click)=\"radio.click()\"\n [attr.aria-label]=\"option.display | syslang | transloco\"\n [class]=\"\n cn(\n 'flex p-0 px-2 leading-7',\n form.get('option')?.value === option.display && 'bg-accent',\n option.hidden && 'hidden',\n option.disabled && 'disabled pointer-events-none text-neutral-300'\n )\n \"\n [attr.aria-hidden]=\"option.disabled\">\n <input\n #radio\n type=\"radio\"\n formControlName=\"option\"\n id=\"date-filter-{{ option.display }}\"\n [attr.disabled]=\"option.disabled ? true : null\"\n [attr.aria-disabled]=\"option.disabled\"\n (click)=\"select()\"\n value=\"{{ option.display }}\" />\n\n <label for=\"date-filter-{{ option.display }}\" class=\"grow cursor-pointer p-1\">\n {{ option.display | syslang | transloco }}\n </label>\n </li>\n }\n\n @if (allowCustomRange) {\n <li role=\"listitem\" aria-label=\"custom range\" class=\"flex px-2 leading-7\" [ngClass]=\"{ selected: form.get('option')?.value === 'custom-range' }\">\n <input #radiorange type=\"radio\" formControlName=\"option\" id=\"date-filter-custom-range\" value=\"custom-range\" (click)=\"select()\" />\n\n <div class=\"grid grow grid-cols-[4rem_auto] p-1 *:cursor-pointer\" formGroupName=\"customRange\" (click)=\"radiorange.click()\">\n <label for=\"date-filter-custom-from\">{{ 'from' | transloco }}</label>\n\n <input\n class=\"grow border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-from\"\n #dateFilterCustomFrom\n formControlName=\"from\"\n [max]=\"form.get('customRange.to')?.value ?? today\" />\n\n <label for=\"date-filter-custom-to\">{{ 'to' | transloco }}</label>\n\n <input\n class=\"border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-to\"\n formControlName=\"to\"\n [min]=\"form.get('customRange.from')?.value\"\n [max]=\"today\" />\n </div>\n </li>\n }\n </ul>\n </fieldset>\n</form>\n", styles: [":host{display:block}ul[role=list]{scrollbar-width:thin}\n"] }]
9561
9573
  }], ctorParameters: () => [{ type: i0.DestroyRef }] });
9562
9574
 
9563
9575
  class FilterButtonComponent {
9564
- name = input.required();
9565
- column = input.required();
9566
- position = input('bottom-start');
9567
- variant = signal('ghost');
9576
+ name = input.required(...(ngDevMode ? [{ debugName: "name" }] : []));
9577
+ column = input.required(...(ngDevMode ? [{ debugName: "column" }] : []));
9578
+ position = input('bottom-start', ...(ngDevMode ? [{ debugName: "position" }] : []));
9579
+ variant = signal('ghost', ...(ngDevMode ? [{ debugName: "variant" }] : []));
9568
9580
  filter = signal({
9569
9581
  name: '',
9570
9582
  icon: '',
@@ -9574,7 +9586,7 @@ class FilterButtonComponent {
9574
9586
  count: 0,
9575
9587
  hidden: false,
9576
9588
  disabled: false
9577
- });
9589
+ }, ...(ngDevMode ? [{ debugName: "filter" }] : []));
9578
9590
  nativeElement = inject(ElementRef).nativeElement;
9579
9591
  aggregationsStore = inject(AggregationsStore);
9580
9592
  queryParamsStore = inject(QueryParamsStore);
@@ -9617,8 +9629,8 @@ class FilterButtonComponent {
9617
9629
  isDate(column) {
9618
9630
  return this.appStore.isDateColumn(column);
9619
9631
  }
9620
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FilterButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9621
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: FilterButtonComponent, isStandalone: true, selector: "filter-button, FilterButton", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.hidden": "filter().hidden" } }, ngImport: i0, template: `
9632
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FilterButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9633
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: FilterButtonComponent, isStandalone: true, selector: "filter-button, FilterButton", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.hidden": "filter().hidden" } }, ngImport: i0, template: `
9622
9634
  <Popover [disabled]="filter().disabled" class="group">
9623
9635
  <button
9624
9636
  [variant]="variant()"
@@ -9660,9 +9672,9 @@ class FilterButtonComponent {
9660
9672
  }
9661
9673
  </PopoverContent>
9662
9674
  </Popover>
9663
- `, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["position", "keepOpen", "class"] }, { kind: "pipe", type: OperatorPipe, name: "operator" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["name", "column", "headless", "searchable", "showCount", "searchText"], outputs: ["onSelect", "searchTextChange"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "component", type: DateComponent, selector: "date-filter,DateFilter", inputs: ["title", "displayEmptyDistributionIntervals"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }] });
9675
+ `, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["position", "keepOpen", "class"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["name", "column", "headless", "searchable", "showCount", "searchText"], outputs: ["onSelect", "searchTextChange"] }, { kind: "component", type: DateComponent, selector: "date-filter,DateFilter", inputs: ["title", "displayEmptyDistributionIntervals"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "pipe", type: OperatorPipe, name: "operator" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
9664
9676
  }
9665
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FilterButtonComponent, decorators: [{
9677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FilterButtonComponent, decorators: [{
9666
9678
  type: Component,
9667
9679
  args: [{
9668
9680
  selector: 'filter-button, FilterButton',
@@ -9731,13 +9743,13 @@ const FILTERS_BREAKPOINT = new InjectionToken('FILTERS_BREAKPOINT', { factory: (
9731
9743
 
9732
9744
  class MoreComponent {
9733
9745
  cn = cn;
9734
- count = input(2);
9735
- excludedFilters = input([]);
9746
+ count = input(2, ...(ngDevMode ? [{ debugName: "count" }] : []));
9747
+ excludedFilters = input([], ...(ngDevMode ? [{ debugName: "excludedFilters" }] : []));
9736
9748
  route = inject(ActivatedRoute);
9737
9749
  appStore = inject(AppStore);
9738
9750
  aggregationsStore = inject(AggregationsStore);
9739
9751
  queryParamsStore = inject(QueryParamsStore);
9740
- filters = signal([]);
9752
+ filters = signal([], ...(ngDevMode ? [{ debugName: "filters" }] : []));
9741
9753
  constructor() {
9742
9754
  effect(() => {
9743
9755
  const count = this.count();
@@ -9804,8 +9816,8 @@ class MoreComponent {
9804
9816
  const { count = 0 } = this.queryParamsStore.getFilter({ field: aggregation.column, name: aggregation.name }) || {};
9805
9817
  return count > 0;
9806
9818
  }
9807
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9808
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: MoreComponent, isStandalone: true, selector: "more, More", inputs: { count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, excludedFilters: { classPropertyName: "excludedFilters", publicName: "excludedFilters", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "divide-y divide-gray-200" }, ngImport: i0, template: `
9819
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9820
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: MoreComponent, isStandalone: true, selector: "more, More", inputs: { count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, excludedFilters: { classPropertyName: "excludedFilters", publicName: "excludedFilters", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "divide-y divide-gray-200" }, ngImport: i0, template: `
9809
9821
  @for (filter of filters(); track $index) {
9810
9822
  <li [class]="cn('collapse pb-1', filter.hidden && 'hidden')">
9811
9823
  <!-- header -->
@@ -9865,9 +9877,9 @@ class MoreComponent {
9865
9877
  </div>
9866
9878
  </ng-template>
9867
9879
  }
9868
- `, isInline: true, styles: [":host{scrollbar-width:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["name", "column", "headless", "searchable", "showCount", "searchText"], outputs: ["onSelect", "searchTextChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "component", type: DateComponent, selector: "date-filter,DateFilter", inputs: ["title", "displayEmptyDistributionIntervals"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }] });
9880
+ `, isInline: true, styles: [":host{scrollbar-width:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["name", "column", "headless", "searchable", "showCount", "searchText"], outputs: ["onSelect", "searchTextChange"] }, { kind: "component", type: DateComponent, selector: "date-filter,DateFilter", inputs: ["title", "displayEmptyDistributionIntervals"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
9869
9881
  }
9870
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MoreComponent, decorators: [{
9882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MoreComponent, decorators: [{
9871
9883
  type: Component,
9872
9884
  args: [{ selector: 'more, More', standalone: true, imports: [NgTemplateOutlet, ButtonComponent, AggregationComponent, TranslocoPipe, DateComponent, BadgeComponent], template: `
9873
9885
  @for (filter of filters(); track $index) {
@@ -9939,9 +9951,9 @@ class MoreButtonComponent {
9939
9951
  appStore = inject(AppStore);
9940
9952
  queryParamsStore = inject(QueryParamsStore);
9941
9953
  nativeElement = inject(ElementRef).nativeElement;
9942
- count = input(2);
9943
- position = input('bottom-end');
9944
- excludedFilters = input([]);
9954
+ count = input(2, ...(ngDevMode ? [{ debugName: "count" }] : []));
9955
+ position = input('bottom-end', ...(ngDevMode ? [{ debugName: "position" }] : []));
9956
+ excludedFilters = input([], ...(ngDevMode ? [{ debugName: "excludedFilters" }] : []));
9945
9957
  totalFiltersCount = computed(() => {
9946
9958
  const count = this.count();
9947
9959
  const authorizedFilters = this.appStore
@@ -9955,9 +9967,9 @@ class MoreButtonComponent {
9955
9967
  return acc;
9956
9968
  }, 0);
9957
9969
  return total;
9958
- });
9959
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MoreButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9960
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: MoreButtonComponent, isStandalone: true, selector: "more-button, MoreButton", inputs: { count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, excludedFilters: { classPropertyName: "excludedFilters", publicName: "excludedFilters", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
9970
+ }, ...(ngDevMode ? [{ debugName: "totalFiltersCount" }] : []));
9971
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MoreButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9972
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: MoreButtonComponent, isStandalone: true, selector: "more-button, MoreButton", inputs: { count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, excludedFilters: { classPropertyName: "excludedFilters", publicName: "excludedFilters", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
9961
9973
  <Popover class="group">
9962
9974
  <button
9963
9975
  variant="ghost"
@@ -9977,9 +9989,9 @@ class MoreButtonComponent {
9977
9989
  <More [count]="count()" [excludedFilters]="excludedFilters()" class="h-full max-w-80 overflow-y-scroll" />
9978
9990
  </PopoverContent>
9979
9991
  </Popover>
9980
- `, isInline: true, styles: [".more-filters{overflow:var(--scrollbar-overflow, hidden);padding-right:0;scrollbar-width:thin;scrollbar-gutter:stable}.more-filters:hover{--scrollbar-overflow: overlay}\n"], dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["position", "keepOpen", "class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "component", type: MoreComponent, selector: "more, More", inputs: ["count", "excludedFilters"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }] });
9992
+ `, isInline: true, styles: [".more-filters{overflow:var(--scrollbar-overflow, hidden);padding-right:0;scrollbar-width:thin;scrollbar-gutter:stable}.more-filters:hover{--scrollbar-overflow: overlay}\n"], dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["position", "keepOpen", "class"] }, { kind: "component", type: MoreComponent, selector: "more, More", inputs: ["count", "excludedFilters"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
9981
9993
  }
9982
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: MoreButtonComponent, decorators: [{
9994
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: MoreButtonComponent, decorators: [{
9983
9995
  type: Component,
9984
9996
  args: [{ selector: 'more-button, MoreButton', standalone: true, imports: [ButtonComponent, PopoverComponent, PopoverContentComponent, TranslocoPipe, MoreComponent, BadgeComponent], template: `
9985
9997
  <Popover class="group">
@@ -10005,8 +10017,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
10005
10017
  }] });
10006
10018
 
10007
10019
  class FiltersBarComponent {
10008
- class = input();
10009
- position = input('bottom-start');
10020
+ class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
10021
+ position = input('bottom-start', ...(ngDevMode ? [{ debugName: "position" }] : []));
10010
10022
  /**
10011
10023
  * Filters that should be excluded from the filters bar.
10012
10024
  * This can be used to hide specific filters from the UI.
@@ -10014,14 +10026,14 @@ class FiltersBarComponent {
10014
10026
  * Use the filter column names to specify which filters to exclude.
10015
10027
  * For example, to exclude the "geo" filter, set `excludeFilters = ['Geo']`.
10016
10028
  */
10017
- excludeFilters = input([]);
10029
+ excludeFilters = input([], ...(ngDevMode ? [{ debugName: "excludeFilters" }] : []));
10018
10030
  /**
10019
10031
  * The number of filters to display before showing the "more filters" button.
10020
10032
  * This is used to limit the number of visible filters in the UI.
10021
10033
  * The default value is set by the FILTERS_BREAKPOINT injection token.
10022
10034
  */
10023
- filtersCount = input(inject(FILTERS_BREAKPOINT));
10024
- direction = input('horizontal');
10035
+ filtersCount = input(inject(FILTERS_BREAKPOINT), ...(ngDevMode ? [{ debugName: "filtersCount" }] : []));
10036
+ direction = input('horizontal', ...(ngDevMode ? [{ debugName: "direction" }] : []));
10025
10037
  /**
10026
10038
  * Event emitted when the clear filters button is clicked.
10027
10039
  * This event can be used to perform additional actions when filters are cleared.
@@ -10033,9 +10045,9 @@ class FiltersBarComponent {
10033
10045
  */
10034
10046
  onClearBasket = output();
10035
10047
  cn = cn;
10036
- moreFilterElement = viewChild(MoreButtonComponent);
10037
- dropdownElements = viewChildren(FilterButtonComponent);
10038
- overflowManager = viewChild(OverflowManagerDirective);
10048
+ moreFilterElement = viewChild(MoreButtonComponent, ...(ngDevMode ? [{ debugName: "moreFilterElement" }] : []));
10049
+ dropdownElements = viewChildren(FilterButtonComponent, ...(ngDevMode ? [{ debugName: "dropdownElements" }] : []));
10050
+ overflowManager = viewChild(OverflowManagerDirective, ...(ngDevMode ? [{ debugName: "overflowManager" }] : []));
10039
10051
  cdr = inject(ChangeDetectorRef);
10040
10052
  route = inject(ActivatedRoute);
10041
10053
  appStore = inject(AppStore);
@@ -10045,23 +10057,23 @@ class FiltersBarComponent {
10045
10057
  transloco = inject(TranslocoService);
10046
10058
  router = inject(Router);
10047
10059
  destroyRef = inject(DestroyRef);
10048
- filters = signal([]);
10049
- moreFilterCount = signal(this.filtersCount());
10060
+ filters = signal([], ...(ngDevMode ? [{ debugName: "filters" }] : []));
10061
+ moreFilterCount = signal(this.filtersCount(), ...(ngDevMode ? [{ debugName: "moreFilterCount" }] : []));
10050
10062
  hasFilters = computed(() => {
10051
10063
  // when the query parameters store updates, update the hasFilters signal
10052
10064
  // to show or hide the clear filters button
10053
10065
  const state = getState(this.queryParamsStore);
10054
10066
  return state.basket || (Array.isArray(state.filters) && state.filters.length > 0);
10055
- });
10067
+ }, ...(ngDevMode ? [{ debugName: "hasFilters" }] : []));
10056
10068
  currentBasket = computed(() => {
10057
10069
  const { basket } = getState(this.queryParamsStore);
10058
10070
  return basket;
10059
- });
10071
+ }, ...(ngDevMode ? [{ debugName: "currentBasket" }] : []));
10060
10072
  hasAggregations = computed(() => {
10061
10073
  if (this.aggregationsStore.aggregations())
10062
10074
  return this.aggregationsStore.aggregations().length > 0;
10063
10075
  return false;
10064
- });
10076
+ }, ...(ngDevMode ? [{ debugName: "hasAggregations" }] : []));
10065
10077
  hasMoreFilters = computed(() => {
10066
10078
  const moreFiltersAggregations = this.appStore
10067
10079
  .getAuthorizedFilters(this.route)
@@ -10070,7 +10082,7 @@ class FiltersBarComponent {
10070
10082
  .toSpliced(0, this.moreFilterCount())
10071
10083
  .map(f => this.aggregationsStore.getAggregation(f.column, 'column'));
10072
10084
  return moreFiltersAggregations;
10073
- });
10085
+ }, ...(ngDevMode ? [{ debugName: "hasMoreFilters" }] : []));
10074
10086
  constructor() {
10075
10087
  effect(() => {
10076
10088
  // set filters according to the route and the authorized filters with default values
@@ -10113,8 +10125,8 @@ class FiltersBarComponent {
10113
10125
  // filtersCount is the number of filters that can be displayed before the "more filters" option is shown
10114
10126
  this.moreFilterCount.set(count > this.filtersCount() ? this.filtersCount() : count);
10115
10127
  }
10116
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FiltersBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10117
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: FiltersBarComponent, isStandalone: true, selector: "filters-bar, FiltersBar, filtersbar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, excludeFilters: { classPropertyName: "excludeFilters", publicName: "excludeFilters", isSignal: true, isRequired: false, transformFunction: null }, filtersCount: { classPropertyName: "filtersCount", publicName: "filtersCount", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClearFilters: "onClearFilters", onClearBasket: "onClearBasket" }, host: { attributes: { "role": "list", "aria-label": "Filters list" }, properties: { "class": "cn(\"flex relative z-filter gap-2\", direction() === \"vertical\" ? \"flex-col items-start\" : \"flex-row\", class())" } }, providers: [provideTranslocoScope('filters')], viewQueries: [{ propertyName: "moreFilterElement", first: true, predicate: MoreButtonComponent, descendants: true, isSignal: true }, { propertyName: "dropdownElements", predicate: FilterButtonComponent, descendants: true, isSignal: true }, { propertyName: "overflowManager", first: true, predicate: OverflowManagerDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
10128
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FiltersBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10129
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: FiltersBarComponent, isStandalone: true, selector: "filters-bar, FiltersBar, filtersbar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, excludeFilters: { classPropertyName: "excludeFilters", publicName: "excludeFilters", isSignal: true, isRequired: false, transformFunction: null }, filtersCount: { classPropertyName: "filtersCount", publicName: "filtersCount", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClearFilters: "onClearFilters", onClearBasket: "onClearBasket" }, host: { attributes: { "role": "list", "aria-label": "Filters list" }, properties: { "class": "cn(\"flex relative z-filter gap-2\", direction() === \"vertical\" ? \"flex-col items-start\" : \"flex-row\", class())" } }, providers: [provideTranslocoScope('filters')], viewQueries: [{ propertyName: "moreFilterElement", first: true, predicate: MoreButtonComponent, descendants: true, isSignal: true }, { propertyName: "dropdownElements", predicate: FilterButtonComponent, descendants: true, isSignal: true }, { propertyName: "overflowManager", first: true, predicate: OverflowManagerDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
10118
10130
  <ng-container overflowManager [direction]="direction()" [target]="el.nativeElement" (count)="adjustFiltersCount($event)">
10119
10131
  @if (hasFilters()) {
10120
10132
  <button
@@ -10151,7 +10163,7 @@ class FiltersBarComponent {
10151
10163
  </ng-container>
10152
10164
  `, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MoreButtonComponent, selector: "more-button, MoreButton", inputs: ["count", "position", "excludedFilters"] }, { kind: "component", type: FilterButtonComponent, selector: "filter-button, FilterButton", inputs: ["name", "column", "position"] }, { kind: "directive", type: OverflowManagerDirective, selector: "[overflowManager]", inputs: ["target", "margin", "direction"], outputs: ["count"] }, { kind: "directive", type: OverflowItemDirective, selector: "[overflowItem]" }, { kind: "directive", type: OverflowStopDirective, selector: "[overflowStop]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
10153
10165
  }
10154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FiltersBarComponent, decorators: [{
10166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: FiltersBarComponent, decorators: [{
10155
10167
  type: Component,
10156
10168
  args: [{
10157
10169
  selector: 'filters-bar, FiltersBar, filtersbar',
@@ -10299,10 +10311,10 @@ class DrawerStackComponent {
10299
10311
  drawer?.destroy();
10300
10312
  }, 250);
10301
10313
  }
10302
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerStackComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
10303
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: DrawerStackComponent, isStandalone: true, selector: "app-drawer-stack", host: { properties: { "attr.drawer-opened": "this.drawerOpened" } }, ngImport: i0, template: ``, isInline: true, styles: [":host{position:absolute;top:50%;right:0;--drawer-width: 46;--drawer-subdrawer-width: 400px;z-index:var(--z-drawer);transition:right .3s linear}:host[drawer-opened=true]{right:calc(1% * var(--drawer-width))}\n"] });
10314
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerStackComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
10315
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: DrawerStackComponent, isStandalone: true, selector: "app-drawer-stack", host: { properties: { "attr.drawer-opened": "this.drawerOpened" } }, ngImport: i0, template: ``, isInline: true, styles: [":host{position:absolute;top:50%;right:0;--drawer-width: 46;--drawer-subdrawer-width: 400px;z-index:var(--z-drawer);transition:right .3s linear}:host[drawer-opened=true]{right:calc(1% * var(--drawer-width))}\n"] });
10304
10316
  }
10305
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerStackComponent, decorators: [{
10317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerStackComponent, decorators: [{
10306
10318
  type: Component,
10307
10319
  args: [{ selector: 'app-drawer-stack', template: ``, styles: [":host{position:absolute;top:50%;right:0;--drawer-width: 46;--drawer-subdrawer-width: 400px;z-index:var(--z-drawer);transition:right .3s linear}:host[drawer-opened=true]{right:calc(1% * var(--drawer-width))}\n"] }]
10308
10320
  }], ctorParameters: () => [{ type: i0.DestroyRef }], propDecorators: { drawerOpened: [{
@@ -10335,10 +10347,10 @@ class DrawerService {
10335
10347
  toggleExtension() {
10336
10348
  this.isExtended.getValue() ? this.collapse() : this.extend();
10337
10349
  }
10338
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10339
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerService });
10350
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10351
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerService });
10340
10352
  }
10341
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerService, decorators: [{
10353
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerService, decorators: [{
10342
10354
  type: Injectable
10343
10355
  }] });
10344
10356
 
@@ -10346,8 +10358,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
10346
10358
  * Each Drawer component has it's own drawer service to handle its state and link it to the drawer stack.
10347
10359
  */
10348
10360
  class DrawerComponent {
10349
- drawerOpened = signal(false);
10350
- drawerExtended = signal(false);
10361
+ drawerOpened = signal(false, ...(ngDevMode ? [{ debugName: "drawerOpened" }] : []));
10362
+ drawerExtended = signal(false, ...(ngDevMode ? [{ debugName: "drawerExtended" }] : []));
10351
10363
  drawerGridTemplateColumns = '';
10352
10364
  mouseMove(event) {
10353
10365
  if (!this.isSliding)
@@ -10368,7 +10380,7 @@ class DrawerComponent {
10368
10380
  this.enableAnimation();
10369
10381
  this.isSliding = false;
10370
10382
  }
10371
- drawerHandle = viewChild('drawerHandle');
10383
+ drawerHandle = viewChild('drawerHandle', ...(ngDevMode ? [{ debugName: "drawerHandle" }] : []));
10372
10384
  drawer = inject(DrawerService);
10373
10385
  drawerStack = inject(DrawerStackService);
10374
10386
  element = inject(ElementRef).nativeElement;
@@ -10399,10 +10411,10 @@ class DrawerComponent {
10399
10411
  resetGridTemplateColumns() {
10400
10412
  this.element.style.gridTemplateColumns = this.defaultDrawerGridTemplate;
10401
10413
  }
10402
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10403
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: DrawerComponent, isStandalone: true, selector: "app-drawer", host: { listeners: { "mousemove": "mouseMove($event)", "mousedown": "mouseDown($event)", "mouseup": "mouseUp()" }, properties: { "attr.drawer-opened": "drawerOpened()", "attr.drawer-extended": "drawerExtended()", "style.grid-template-columns": "this.drawerGridTemplateColumns" } }, providers: [DrawerService], viewQueries: [{ propertyName: "drawerHandle", first: true, predicate: ["drawerHandle"], descendants: true, isSignal: true }], ngImport: i0, template: ``, isInline: true, styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;position:absolute;height:100%;top:0;right:-100%;justify-content:flex-end;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{right:0;width:100vw;grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"] });
10414
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10415
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", type: DrawerComponent, isStandalone: true, selector: "app-drawer", host: { listeners: { "mousemove": "mouseMove($event)", "mousedown": "mouseDown($event)", "mouseup": "mouseUp()" }, properties: { "attr.drawer-opened": "drawerOpened()", "attr.drawer-extended": "drawerExtended()", "style.grid-template-columns": "this.drawerGridTemplateColumns" } }, providers: [DrawerService], viewQueries: [{ propertyName: "drawerHandle", first: true, predicate: ["drawerHandle"], descendants: true, isSignal: true }], ngImport: i0, template: ``, isInline: true, styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;position:absolute;height:100%;top:0;right:-100%;justify-content:flex-end;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{right:0;width:100vw;grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"] });
10404
10416
  }
10405
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerComponent, decorators: [{
10417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerComponent, decorators: [{
10406
10418
  type: Component,
10407
10419
  args: [{ selector: 'app-drawer', standalone: true, providers: [DrawerService], template: ``, host: {
10408
10420
  '[attr.drawer-opened]': 'drawerOpened()',
@@ -10426,10 +10438,10 @@ class DrawerNavbarComponent {
10426
10438
  drawerStack = inject(DrawerStackService);
10427
10439
  drawerService = inject(DrawerService);
10428
10440
  isExtended = toSignal(this.drawerService.isExtended);
10429
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10430
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0", type: DrawerNavbarComponent, isStandalone: true, selector: "app-drawer-navbar", ngImport: i0, template: "<menu class=\"flex items-center gap-2 p-4 font-semibold\">\n <button variant=\"ghost\" class=\"group\" [attr.title]=\"'back' | transloco\" (click)=\"drawerStack.close()\">\n <i class=\"fa-fw far fa-arrow-left [&_svg]-ms-1 [&_svg]transition-transform opacity-60 group-hover:-translate-x-0.5\"></i>\n {{ 'back' | transloco }}\n </button>\n\n <VerticalDivider />\n\n <ng-content></ng-content>\n</menu>\n", dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: VerticalDividerComponent, selector: "vertical-divider, VerticalDivider, verticaldivider" }] });
10441
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10442
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.2", type: DrawerNavbarComponent, isStandalone: true, selector: "app-drawer-navbar", ngImport: i0, template: "<menu class=\"flex items-center gap-2 p-4 font-semibold\">\n <button variant=\"ghost\" class=\"group\" [attr.title]=\"'back' | transloco\" (click)=\"drawerStack.close()\">\n <i class=\"fa-fw far fa-arrow-left [&_svg]-ms-1 [&_svg]transition-transform opacity-60 group-hover:-translate-x-0.5\"></i>\n {{ 'back' | transloco }}\n </button>\n\n <VerticalDivider />\n\n <ng-content></ng-content>\n</menu>\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: VerticalDividerComponent, selector: "vertical-divider, VerticalDivider, verticaldivider" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
10431
10443
  }
10432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerNavbarComponent, decorators: [{
10444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerNavbarComponent, decorators: [{
10433
10445
  type: Component,
10434
10446
  args: [{ selector: 'app-drawer-navbar', standalone: true, imports: [TranslocoPipe, ButtonComponent, VerticalDividerComponent], template: "<menu class=\"flex items-center gap-2 p-4 font-semibold\">\n <button variant=\"ghost\" class=\"group\" [attr.title]=\"'back' | transloco\" (click)=\"drawerStack.close()\">\n <i class=\"fa-fw far fa-arrow-left [&_svg]-ms-1 [&_svg]transition-transform opacity-60 group-hover:-translate-x-0.5\"></i>\n {{ 'back' | transloco }}\n </button>\n\n <VerticalDivider />\n\n <ng-content></ng-content>\n</menu>\n" }]
10435
10447
  }] });
@@ -10466,15 +10478,15 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
10466
10478
  value: this.formBuilder.control(undefined)
10467
10479
  })
10468
10480
  });
10469
- currentTab = signal('all');
10470
- currentFilter = signal(undefined);
10471
- appliedFilters = signal([]);
10472
- suggestions = signal([]);
10473
- aggregations = signal(undefined);
10481
+ currentTab = signal('all', ...(ngDevMode ? [{ debugName: "currentTab" }] : []));
10482
+ currentFilter = signal(undefined, ...(ngDevMode ? [{ debugName: "currentFilter" }] : []));
10483
+ appliedFilters = signal([], ...(ngDevMode ? [{ debugName: "appliedFilters" }] : []));
10484
+ suggestions = signal([], ...(ngDevMode ? [{ debugName: "suggestions" }] : []));
10485
+ aggregations = signal(undefined, ...(ngDevMode ? [{ debugName: "aggregations" }] : []));
10474
10486
  tabs = computed(() => {
10475
10487
  const routeData = this.router.config.find(c => c.path === searchRoute);
10476
10488
  return !routeData ? [] : ['all'].concat(routeData.children.filter(c => !!c.path && c.path !== 'all' && c.path !== '**').map(c => c.path));
10477
- });
10489
+ }, ...(ngDevMode ? [{ debugName: "tabs" }] : []));
10478
10490
  filters = computed(() => {
10479
10491
  return (this.appStore
10480
10492
  .customizationJson()
@@ -10484,7 +10496,7 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
10484
10496
  alias: this.appStore.getColumnAlias(f.column),
10485
10497
  items: this.aggregations()?.find(a => a.column === f.column)?.items
10486
10498
  })) || []);
10487
- });
10499
+ }, ...(ngDevMode ? [{ debugName: "filters" }] : []));
10488
10500
  text = '';
10489
10501
  constructor() {
10490
10502
  super();
@@ -10648,16 +10660,16 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
10648
10660
  // todo handle tree items
10649
10661
  return res;
10650
10662
  }
10651
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerAdvancedFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10652
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DrawerAdvancedFiltersComponent, isStandalone: true, selector: "advanced-filters", providers: [DrawerService, provideTranslocoScope('drawers')], usesInheritance: true, ngImport: i0, template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex h-full flex-col overflow-auto bg-white\">\n <app-drawer-navbar class=\"block border-b border-neutral-300 bg-white\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </app-drawer-navbar>\n\n <div class=\"flex h-full flex-grow flex-col overflow-auto\">\n <section class=\"flex flex-col gap-4 p-6\" [formGroup]=\"form\">\n <!-- FIND IN -->\n <h1 class=\"text-xl font-bold\">{{ 'drawers.findInContent' | transloco }}</h1>\n <div class=\"flex items-center gap-4\" formGroupName=\"content\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInContent' | transloco }}</span>\n <select\n id=\"content-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\n <div class=\"flex items-center gap-4\" formGroupName=\"title\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInTitle' | transloco }}</span>\n <select\n id=\"title-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input id=\"title-value\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" [placeholder]=\"getPlaceholder('title.operator')\" formControlName=\"value\" />\n </div>\n <div class=\"flex items-center gap-4\" formGroupName=\"location\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInLocation' | transloco }}</span>\n <select\n id=\"location-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n id=\"location-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('location.operator')\"\n formControlName=\"value\" />\n </div>\n\n <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }}&nbsp;&quot;{{ currentTab() }}&quot;</h1>\n <div class=\"inline-flex -space-x-px rtl:space-x-reverse\">\n @for (tab of tabs(); track $index) {\n <button\n [variant]=\"tab !== currentTab() ? 'outline' : 'default'\"\n class=\"rounded-none shadow-none first:rounded-s-md last:rounded-e-md\"\n (click)=\"onTabChange(tab)\">\n {{ tab }}\n </button>\n }\n </div>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n <DropdownInput\n [suggestions]=\"suggestions()\"\n [selected]=\"getItems(filter.column)\"\n [label]=\"filter.alias\"\n [placeholder]=\"'drawers.startTyping' | transloco\"\n [noResultLabel]=\"'drawers.noResult' | transloco\"\n (onFocus)=\"setFilterFocus($event, filter)\"\n (onKeyUp)=\"onInputTyping($event)\"\n (removeItem)=\"removeItem($event, filter)\"\n (addItem)=\"addItem($event, filter)\" />\n } @empty {\n {{ 'drawers.noFilters' | transloco }}\n }\n </section>\n </div>\n</div>\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;justify-content:flex-end;position:absolute;top:0;height:100%;right:-100%;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{width:100vw;right:calc(var(--spacing) * 0);grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}:is() .dropdown{width:100%}:is() .dropdown-content{width:50%}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "component", type: DrawerNavbarComponent, selector: "app-drawer-navbar" }, { kind: "component", type: DropdownInputComponent, selector: "dropdown-input, DropdownInput", inputs: ["label", "placeholder", "noResultLabel", "suggestions", "selected"], outputs: ["onFocus", "onKeyUp", "removeItem", "addItem"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }] });
10663
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerAdvancedFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10664
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: DrawerAdvancedFiltersComponent, isStandalone: true, selector: "advanced-filters", providers: [DrawerService, provideTranslocoScope('drawers')], usesInheritance: true, ngImport: i0, template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex h-full flex-col overflow-auto bg-white\">\n <app-drawer-navbar class=\"block border-b border-neutral-300 bg-white\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </app-drawer-navbar>\n\n <div class=\"flex h-full flex-grow flex-col overflow-auto\">\n <section class=\"flex flex-col gap-4 p-6\" [formGroup]=\"form\">\n <!-- FIND IN -->\n <h1 class=\"text-xl font-bold\">{{ 'drawers.findInContent' | transloco }}</h1>\n <div class=\"flex items-center gap-4\" formGroupName=\"content\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInContent' | transloco }}</span>\n <select\n id=\"content-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\n <div class=\"flex items-center gap-4\" formGroupName=\"title\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInTitle' | transloco }}</span>\n <select\n id=\"title-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input id=\"title-value\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" [placeholder]=\"getPlaceholder('title.operator')\" formControlName=\"value\" />\n </div>\n <div class=\"flex items-center gap-4\" formGroupName=\"location\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInLocation' | transloco }}</span>\n <select\n id=\"location-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n id=\"location-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('location.operator')\"\n formControlName=\"value\" />\n </div>\n\n <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }}&nbsp;&quot;{{ currentTab() }}&quot;</h1>\n <div class=\"inline-flex -space-x-px rtl:space-x-reverse\">\n @for (tab of tabs(); track $index) {\n <button\n [variant]=\"tab !== currentTab() ? 'outline' : 'default'\"\n class=\"rounded-none shadow-none first:rounded-s-md last:rounded-e-md\"\n (click)=\"onTabChange(tab)\">\n {{ tab }}\n </button>\n }\n </div>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n <DropdownInput\n [suggestions]=\"suggestions()\"\n [selected]=\"getItems(filter.column)\"\n [label]=\"filter.alias\"\n [placeholder]=\"'drawers.startTyping' | transloco\"\n [noResultLabel]=\"'drawers.noResult' | transloco\"\n (onFocus)=\"setFilterFocus($event, filter)\"\n (onKeyUp)=\"onInputTyping($event)\"\n (removeItem)=\"removeItem($event, filter)\"\n (addItem)=\"addItem($event, filter)\" />\n } @empty {\n {{ 'drawers.noFilters' | transloco }}\n }\n </section>\n </div>\n</div>\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;justify-content:flex-end;position:absolute;top:0;height:100%;right:-100%;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{width:100vw;right:calc(var(--spacing) * 0);grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}:is() .dropdown{width:100%}:is() .dropdown-content{width:50%}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: DrawerNavbarComponent, selector: "app-drawer-navbar" }, { kind: "component", type: DropdownInputComponent, selector: "dropdown-input, DropdownInput", inputs: ["label", "placeholder", "noResultLabel", "suggestions", "selected"], outputs: ["onFocus", "onKeyUp", "removeItem", "addItem"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
10653
10665
  }
10654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerAdvancedFiltersComponent, decorators: [{
10666
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerAdvancedFiltersComponent, decorators: [{
10655
10667
  type: Component,
10656
10668
  args: [{ selector: 'advanced-filters', standalone: true, imports: [ReactiveFormsModule, TranslocoPipe, DrawerNavbarComponent, DropdownInputComponent, ButtonComponent, InputComponent], providers: [DrawerService, provideTranslocoScope('drawers')], template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex h-full flex-col overflow-auto bg-white\">\n <app-drawer-navbar class=\"block border-b border-neutral-300 bg-white\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </app-drawer-navbar>\n\n <div class=\"flex h-full flex-grow flex-col overflow-auto\">\n <section class=\"flex flex-col gap-4 p-6\" [formGroup]=\"form\">\n <!-- FIND IN -->\n <h1 class=\"text-xl font-bold\">{{ 'drawers.findInContent' | transloco }}</h1>\n <div class=\"flex items-center gap-4\" formGroupName=\"content\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInContent' | transloco }}</span>\n <select\n id=\"content-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\n <div class=\"flex items-center gap-4\" formGroupName=\"title\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInTitle' | transloco }}</span>\n <select\n id=\"title-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input id=\"title-value\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" [placeholder]=\"getPlaceholder('title.operator')\" formControlName=\"value\" />\n </div>\n <div class=\"flex items-center gap-4\" formGroupName=\"location\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInLocation' | transloco }}</span>\n <select\n id=\"location-operator\"\n class=\"hover:outline-primary focus:outline-primary h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n id=\"location-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('location.operator')\"\n formControlName=\"value\" />\n </div>\n\n <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }}&nbsp;&quot;{{ currentTab() }}&quot;</h1>\n <div class=\"inline-flex -space-x-px rtl:space-x-reverse\">\n @for (tab of tabs(); track $index) {\n <button\n [variant]=\"tab !== currentTab() ? 'outline' : 'default'\"\n class=\"rounded-none shadow-none first:rounded-s-md last:rounded-e-md\"\n (click)=\"onTabChange(tab)\">\n {{ tab }}\n </button>\n }\n </div>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n <DropdownInput\n [suggestions]=\"suggestions()\"\n [selected]=\"getItems(filter.column)\"\n [label]=\"filter.alias\"\n [placeholder]=\"'drawers.startTyping' | transloco\"\n [noResultLabel]=\"'drawers.noResult' | transloco\"\n (onFocus)=\"setFilterFocus($event, filter)\"\n (onKeyUp)=\"onInputTyping($event)\"\n (removeItem)=\"removeItem($event, filter)\"\n (addItem)=\"addItem($event, filter)\" />\n } @empty {\n {{ 'drawers.noFilters' | transloco }}\n }\n </section>\n </div>\n</div>\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;justify-content:flex-end;position:absolute;top:0;height:100%;right:-100%;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{width:100vw;right:calc(var(--spacing) * 0);grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}:is() .dropdown{width:100%}:is() .dropdown-content{width:50%}\n"] }]
10657
10669
  }], ctorParameters: () => [] });
10658
10670
 
10659
10671
  class AdvancedSearchComponent {
10660
- article = input.required();
10672
+ article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
10661
10673
  destroyRef = inject(DestroyRef);
10662
10674
  labels = inject(AppStore).getLabels();
10663
10675
  applicationStore = inject(ApplicationStore);
@@ -10665,14 +10677,14 @@ class AdvancedSearchComponent {
10665
10677
  selectionStore = inject(SelectionStore);
10666
10678
  previewService = inject(PreviewService);
10667
10679
  queryParamsStore = inject(QueryParamsStore);
10668
- input = signal(getState(this.selectionStore).queryText || '');
10680
+ input = signal(getState(this.selectionStore).queryText || '', ...(ngDevMode ? [{ debugName: "input" }] : []));
10669
10681
  extracts = computed(() => {
10670
10682
  getState(this.applicationStore);
10671
10683
  if (!this.article())
10672
10684
  return [];
10673
10685
  return this.applicationStore.getExtracts(this.article().id);
10674
- });
10675
- similarDocuments = signal([]);
10686
+ }, ...(ngDevMode ? [{ debugName: "extracts" }] : []));
10687
+ similarDocuments = signal([], ...(ngDevMode ? [{ debugName: "similarDocuments" }] : []));
10676
10688
  previewHighlights = computed(() => {
10677
10689
  const highlights = this.appStore.getWebServiceByType('preview')?.highlights
10678
10690
  ?.split(',')
@@ -10682,17 +10694,17 @@ class AdvancedSearchComponent {
10682
10694
  entity: highlight,
10683
10695
  metadata: this.article()[highlight]
10684
10696
  }));
10685
- });
10686
- navigation = signal(undefined);
10687
- hovering = signal(undefined);
10688
- hoverIndex = computed(() => (this.navigation()?.value === this.hovering() ? this.navigation().index : 0));
10697
+ }, ...(ngDevMode ? [{ debugName: "previewHighlights" }] : []));
10698
+ navigation = signal(undefined, ...(ngDevMode ? [{ debugName: "navigation" }] : []));
10699
+ hovering = signal(undefined, ...(ngDevMode ? [{ debugName: "hovering" }] : []));
10700
+ hoverIndex = computed(() => (this.navigation()?.value === this.hovering() ? this.navigation().index : 0), ...(ngDevMode ? [{ debugName: "hoverIndex" }] : []));
10689
10701
  hasLabels = computed(() => {
10690
10702
  const article = this.article(); // required as any otherwise the lines below won't compile
10691
10703
  const publicLabels = article[this.labels.public];
10692
10704
  const privateLabels = article[this.labels.private];
10693
10705
  return (publicLabels && publicLabels.length > 0) || (privateLabels && privateLabels.length > 0);
10694
- });
10695
- loading = signal(true);
10706
+ }, ...(ngDevMode ? [{ debugName: "hasLabels" }] : []));
10707
+ loading = signal(true, ...(ngDevMode ? [{ debugName: "loading" }] : []));
10696
10708
  constructor() {
10697
10709
  this.previewService.events.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(event => {
10698
10710
  switch (event) {
@@ -10746,10 +10758,10 @@ class AdvancedSearchComponent {
10746
10758
  this.scrollTo(entity, id);
10747
10759
  }
10748
10760
  }
10749
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10750
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: AdvancedSearchComponent, isStandalone: true, selector: "advanced-search", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, providers: [provideTranslocoScope('drawers')], ngImport: i0, template: "@if (article()) {\n <div class=\"scroll-stable flex h-screen flex-col overflow-y-auto pb-6 pl-6 pr-3\">\n <section class=\"mb-4 mt-6 flex w-full flex-col gap-6\">\n <header\n id=\"panel-control\"\n class=\"focus-within:outline-primary group flex rounded focus-within:outline hover:outline [&:not(:focus-within)]:hover:outline-neutral-300\">\n <div class=\"flex grow items-center gap-2 rounded-e-none rounded-s bg-neutral-50 pl-2 group-hover:bg-white\">\n <input\n id=\"advanced-search-input\"\n type=\"search\"\n class=\"grow bg-neutral-50 focus:outline-none group-hover:bg-white\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.placeholder]=\"'drawers.inputPlaceholder' | transloco\"\n [attr.aria-label]=\"'drawers.inputPlaceholder' | transloco\"\n [ngModel]=\"input()\"\n (ngModelChange)=\"input.set($event)\"\n (keydown.enter)=\"executeSearch()\" />\n\n @if (input() !== '') {\n <button\n variant=\"icon\"\n size=\"icon\"\n [attr.title]=\"'clear' | transloco\"\n [attr.aria-label]=\"'clear' | transloco\"\n (click)=\"clearInput()\"\n (keydown.enter)=\"clearInput()\">\n <i class=\"fa-fw far fa-circle-xmark\"></i>\n </button>\n }\n </div>\n\n <button\n size=\"icon\"\n class=\"rounded-e rounded-s-none group-focus-within:rounded-br-none\"\n [disabled]=\"input() === '' || null\"\n [attr.title]=\"'search' | transloco\"\n [attr.aria-label]=\"'search' | transloco\"\n (click)=\"executeSearch()\">\n <i class=\"fa-fw far fa-magnifying-glass\"></i>\n </button>\n </header>\n </section>\n\n <!-- the same name is used everywhere to simulate an accordion -->\n <!-- extracts -->\n <details name=\"advanced-search-panels\" class=\"group border-b border-neutral-300\" open>\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-magnifying-glass\"></i>\n {{ 'extracts' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n @if (loading()) {\n <div class=\"flex h-32 items-center justify-center\">\n <i class=\"fa-fw far fa-spinner-third fa-spin text-primary\"></i>\n </div>\n } @else {\n <ul>\n @for (extract of extracts(); track $index) {\n <li class=\"hover:bg-highlight mr-2 rounded px-2 py-1\" [id]=\"extract.id\" [attr.data-id]=\"extract.textIndex\">\n <p class=\"cursor-pointer\" role=\"button\" [innerHTML]=\"extract.text\" (click)=\"scrollTo(undefined, extract.textIndex, true)\"></p>\n </li>\n\n <li class=\"mr-2 h-[1px] bg-neutral-200 px-2\"></li>\n } @empty {\n <li class=\"text-slate-300\">{{ 'drawers.noRelevantExtracts' | transloco }}</li>\n }\n </ul>\n }\n </details>\n\n <!-- labels -->\n @if (hasLabels()) {\n <details class=\"group border-b border-neutral-300\" name=\"advanced-search-panels\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-tags\"></i>\n {{ 'labels' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n <div>\n <ul class=\"mt-4 flex flex-col flex-wrap gap-2\">\n <li>\n <Metadata variant=\"outline\" [article]=\"article()!\" [metadata]=\"labels.public\" />\n </li>\n\n <li>\n <Metadata variant=\"outline\" [article]=\"article()!\" [metadata]=\"labels.private\" />\n </li>\n </ul>\n </div>\n </details>\n }\n\n <!-- entities -->\n <details name=\"advanced-search-panels\" class=\"group border-b border-neutral-300\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold capitalize\">\n <i class=\"fa-fw far fa-highlighter\"></i>\n {{ 'entities' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n @for (highlight of previewHighlights(); track $index) {\n @if (highlight.metadata) {\n <ng-container *ngTemplateOutlet=\"metadataPanel; context: highlight\" />\n }\n }\n </details>\n\n <!-- similar documents -->\n @if (similarDocuments().length > 0) {\n <details class=\"group border-b border-neutral-300\" name=\"advanced-search-panels\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-tags\"></i>\n {{ 'drawers.similarDocuments' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n <div>\n <ul class=\"mb-2 mt-4 flex flex-col flex-wrap px-2\" role=\"list\">\n @for (document of similarDocuments(); track $index) {\n <li role=\"listitem\" selectArticleOnClick [article]=\"document\" strategy=\"stack\">\n <div class=\"text-primary flex size-[20px] items-center justify-center rounded-full bg-neutral-50\">\n <source [collection]=\"article().collection\" [connector]=\"article().connector\" class=\"text-xs\" />\n </div>\n\n <span>{{ document.displayTitle ?? document.title }}</span>\n </li>\n }\n </ul>\n </div>\n </details>\n }\n </div>\n}\n\n<!-- entities's template -->\n<ng-template #metadataPanel let-metadata=\"metadata\" let-name=\"name\" let-iconClass=\"iconClass\" let-entity=\"entity\">\n <details name=\"advanced-search-entities\" class=\"group/entities px-3 pb-3\">\n <summary class=\"sticky top-8 flex cursor-pointer select-none items-baseline justify-between bg-white\">\n <p class=\"flex items-baseline gap-2 font-semibold capitalize\">\n <i class=\"fa-fw {{ iconClass || 'far fa-list' }}\"></i>\n {{ name | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open/entities:rotate-180\"></i>\n </summary>\n\n <ul role=\"list\">\n @for (data of metadata; track $index) {\n <li role=\"listitem\" class=\"flex justify-between py-1 pl-2\" (mouseenter)=\"hovering.set(data.value)\" (mouseleave)=\"hovering.set(undefined)\">\n <!-- shrink w-1/2 grow truncate ovoid the overlap when hovering the row -->\n <p class=\"w-1/2 shrink grow truncate\">{{ data.display }}</p>\n\n <p class=\"flex items-center gap-2\">\n @if (hovering() === data.value) {\n <i class=\"fa-light fa-chevron-left\" aria-label=\"previous entity\" role=\"button\" (click)=\"navigatePrev(entity, data)\"></i>\n\n <span>{{ hoverIndex() }} / {{ data.count }}</span>\n\n <i class=\"fa-light fa-chevron-right\" aria-label=\"next entity\" role=\"button\" (click)=\"navigateNext(entity, data)\"></i>\n } @else {\n {{ data.count }}\n }\n </p>\n </li>\n }\n </ul>\n </details>\n</ng-template>\n", styles: [":host{--panel-max-height: none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MetadataComponent, selector: "Metadata, metadata", inputs: ["class", "variant", "metadata", "article", "limit"], outputs: ["click"], exportAs: ["metadata"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: SelectArticleOnClickDirective, selector: "[appSelectArticleOnClick],[selectArticleOnClick]", inputs: ["article", "strategy"] }] });
10761
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10762
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: AdvancedSearchComponent, isStandalone: true, selector: "advanced-search", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, providers: [provideTranslocoScope('drawers')], ngImport: i0, template: "@if (article()) {\n <div class=\"scroll-stable flex h-screen flex-col overflow-y-auto pb-6 pl-6 pr-3\">\n <section class=\"mb-4 mt-6 flex w-full flex-col gap-6\">\n <header\n id=\"panel-control\"\n class=\"focus-within:outline-primary group flex rounded focus-within:outline hover:outline [&:not(:focus-within)]:hover:outline-neutral-300\">\n <div class=\"flex grow items-center gap-2 rounded-e-none rounded-s bg-neutral-50 pl-2 group-hover:bg-white\">\n <input\n id=\"advanced-search-input\"\n type=\"search\"\n class=\"grow bg-neutral-50 focus:outline-none group-hover:bg-white\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.placeholder]=\"'drawers.inputPlaceholder' | transloco\"\n [attr.aria-label]=\"'drawers.inputPlaceholder' | transloco\"\n [ngModel]=\"input()\"\n (ngModelChange)=\"input.set($event)\"\n (keydown.enter)=\"executeSearch()\" />\n\n @if (input() !== '') {\n <button\n variant=\"icon\"\n size=\"icon\"\n [attr.title]=\"'clear' | transloco\"\n [attr.aria-label]=\"'clear' | transloco\"\n (click)=\"clearInput()\"\n (keydown.enter)=\"clearInput()\">\n <i class=\"fa-fw far fa-circle-xmark\"></i>\n </button>\n }\n </div>\n\n <button\n size=\"icon\"\n class=\"rounded-e rounded-s-none group-focus-within:rounded-br-none\"\n [disabled]=\"input() === '' || null\"\n [attr.title]=\"'search' | transloco\"\n [attr.aria-label]=\"'search' | transloco\"\n (click)=\"executeSearch()\">\n <i class=\"fa-fw far fa-magnifying-glass\"></i>\n </button>\n </header>\n </section>\n\n <!-- the same name is used everywhere to simulate an accordion -->\n <!-- extracts -->\n <details name=\"advanced-search-panels\" class=\"group border-b border-neutral-300\" open>\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-magnifying-glass\"></i>\n {{ 'extracts' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n @if (loading()) {\n <div class=\"flex h-32 items-center justify-center\">\n <i class=\"fa-fw far fa-spinner-third fa-spin text-primary\"></i>\n </div>\n } @else {\n <ul>\n @for (extract of extracts(); track $index) {\n <li class=\"hover:bg-highlight mr-2 rounded px-2 py-1\" [id]=\"extract.id\" [attr.data-id]=\"extract.textIndex\">\n <p class=\"cursor-pointer\" role=\"button\" [innerHTML]=\"extract.text\" (click)=\"scrollTo(undefined, extract.textIndex, true)\"></p>\n </li>\n\n <li class=\"mr-2 h-[1px] bg-neutral-200 px-2\"></li>\n } @empty {\n <li class=\"text-slate-300\">{{ 'drawers.noRelevantExtracts' | transloco }}</li>\n }\n </ul>\n }\n </details>\n\n <!-- labels -->\n @if (hasLabels()) {\n <details class=\"group border-b border-neutral-300\" name=\"advanced-search-panels\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-tags\"></i>\n {{ 'labels' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n <div>\n <ul class=\"mt-4 flex flex-col flex-wrap gap-2\">\n <li>\n <Metadata variant=\"outline\" [article]=\"article()!\" [metadata]=\"labels.public\" />\n </li>\n\n <li>\n <Metadata variant=\"outline\" [article]=\"article()!\" [metadata]=\"labels.private\" />\n </li>\n </ul>\n </div>\n </details>\n }\n\n <!-- entities -->\n <details name=\"advanced-search-panels\" class=\"group border-b border-neutral-300\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold capitalize\">\n <i class=\"fa-fw far fa-highlighter\"></i>\n {{ 'entities' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n @for (highlight of previewHighlights(); track $index) {\n @if (highlight.metadata) {\n <ng-container *ngTemplateOutlet=\"metadataPanel; context: highlight\" />\n }\n }\n </details>\n\n <!-- similar documents -->\n @if (similarDocuments().length > 0) {\n <details class=\"group border-b border-neutral-300\" name=\"advanced-search-panels\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-tags\"></i>\n {{ 'drawers.similarDocuments' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n <div>\n <ul class=\"mb-2 mt-4 flex flex-col flex-wrap px-2\" role=\"list\">\n @for (document of similarDocuments(); track $index) {\n <li role=\"listitem\" selectArticleOnClick [article]=\"document\" strategy=\"stack\">\n <div class=\"text-primary flex size-[20px] items-center justify-center rounded-full bg-neutral-50\">\n <source [collection]=\"article().collection\" [connector]=\"article().connector\" class=\"text-xs\" />\n </div>\n\n <span>{{ document.displayTitle ?? document.title }}</span>\n </li>\n }\n </ul>\n </div>\n </details>\n }\n </div>\n}\n\n<!-- entities's template -->\n<ng-template #metadataPanel let-metadata=\"metadata\" let-name=\"name\" let-iconClass=\"iconClass\" let-entity=\"entity\">\n <details name=\"advanced-search-entities\" class=\"group/entities px-3 pb-3\">\n <summary class=\"sticky top-8 flex cursor-pointer select-none items-baseline justify-between bg-white\">\n <p class=\"flex items-baseline gap-2 font-semibold capitalize\">\n <i class=\"fa-fw {{ iconClass || 'far fa-list' }}\"></i>\n {{ name | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open/entities:rotate-180\"></i>\n </summary>\n\n <ul role=\"list\">\n @for (data of metadata; track $index) {\n <li role=\"listitem\" class=\"flex justify-between py-1 pl-2\" (mouseenter)=\"hovering.set(data.value)\" (mouseleave)=\"hovering.set(undefined)\">\n <!-- shrink w-1/2 grow truncate ovoid the overlap when hovering the row -->\n <p class=\"w-1/2 shrink grow truncate\">{{ data.display }}</p>\n\n <p class=\"flex items-center gap-2\">\n @if (hovering() === data.value) {\n <i class=\"fa-light fa-chevron-left\" aria-label=\"previous entity\" role=\"button\" (click)=\"navigatePrev(entity, data)\"></i>\n\n <span>{{ hoverIndex() }} / {{ data.count }}</span>\n\n <i class=\"fa-light fa-chevron-right\" aria-label=\"next entity\" role=\"button\" (click)=\"navigateNext(entity, data)\"></i>\n } @else {\n {{ data.count }}\n }\n </p>\n </li>\n }\n </ul>\n </details>\n</ng-template>\n", styles: [":host{--panel-max-height: none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MetadataComponent, selector: "Metadata, metadata", inputs: ["class", "variant", "metadata", "article", "limit"], outputs: ["click"], exportAs: ["metadata"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: SelectArticleOnClickDirective, selector: "[appSelectArticleOnClick],[selectArticleOnClick]", inputs: ["article", "strategy"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
10751
10763
  }
10752
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
10764
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
10753
10765
  type: Component,
10754
10766
  args: [{ selector: 'advanced-search', standalone: true, providers: [provideTranslocoScope('drawers')], imports: [NgTemplateOutlet, FormsModule, ButtonComponent, MetadataComponent, ListItemComponent, TranslocoPipe, SourceComponent, SelectArticleOnClickDirective], template: "@if (article()) {\n <div class=\"scroll-stable flex h-screen flex-col overflow-y-auto pb-6 pl-6 pr-3\">\n <section class=\"mb-4 mt-6 flex w-full flex-col gap-6\">\n <header\n id=\"panel-control\"\n class=\"focus-within:outline-primary group flex rounded focus-within:outline hover:outline [&:not(:focus-within)]:hover:outline-neutral-300\">\n <div class=\"flex grow items-center gap-2 rounded-e-none rounded-s bg-neutral-50 pl-2 group-hover:bg-white\">\n <input\n id=\"advanced-search-input\"\n type=\"search\"\n class=\"grow bg-neutral-50 focus:outline-none group-hover:bg-white\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.placeholder]=\"'drawers.inputPlaceholder' | transloco\"\n [attr.aria-label]=\"'drawers.inputPlaceholder' | transloco\"\n [ngModel]=\"input()\"\n (ngModelChange)=\"input.set($event)\"\n (keydown.enter)=\"executeSearch()\" />\n\n @if (input() !== '') {\n <button\n variant=\"icon\"\n size=\"icon\"\n [attr.title]=\"'clear' | transloco\"\n [attr.aria-label]=\"'clear' | transloco\"\n (click)=\"clearInput()\"\n (keydown.enter)=\"clearInput()\">\n <i class=\"fa-fw far fa-circle-xmark\"></i>\n </button>\n }\n </div>\n\n <button\n size=\"icon\"\n class=\"rounded-e rounded-s-none group-focus-within:rounded-br-none\"\n [disabled]=\"input() === '' || null\"\n [attr.title]=\"'search' | transloco\"\n [attr.aria-label]=\"'search' | transloco\"\n (click)=\"executeSearch()\">\n <i class=\"fa-fw far fa-magnifying-glass\"></i>\n </button>\n </header>\n </section>\n\n <!-- the same name is used everywhere to simulate an accordion -->\n <!-- extracts -->\n <details name=\"advanced-search-panels\" class=\"group border-b border-neutral-300\" open>\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-magnifying-glass\"></i>\n {{ 'extracts' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n @if (loading()) {\n <div class=\"flex h-32 items-center justify-center\">\n <i class=\"fa-fw far fa-spinner-third fa-spin text-primary\"></i>\n </div>\n } @else {\n <ul>\n @for (extract of extracts(); track $index) {\n <li class=\"hover:bg-highlight mr-2 rounded px-2 py-1\" [id]=\"extract.id\" [attr.data-id]=\"extract.textIndex\">\n <p class=\"cursor-pointer\" role=\"button\" [innerHTML]=\"extract.text\" (click)=\"scrollTo(undefined, extract.textIndex, true)\"></p>\n </li>\n\n <li class=\"mr-2 h-[1px] bg-neutral-200 px-2\"></li>\n } @empty {\n <li class=\"text-slate-300\">{{ 'drawers.noRelevantExtracts' | transloco }}</li>\n }\n </ul>\n }\n </details>\n\n <!-- labels -->\n @if (hasLabels()) {\n <details class=\"group border-b border-neutral-300\" name=\"advanced-search-panels\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-tags\"></i>\n {{ 'labels' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n <div>\n <ul class=\"mt-4 flex flex-col flex-wrap gap-2\">\n <li>\n <Metadata variant=\"outline\" [article]=\"article()!\" [metadata]=\"labels.public\" />\n </li>\n\n <li>\n <Metadata variant=\"outline\" [article]=\"article()!\" [metadata]=\"labels.private\" />\n </li>\n </ul>\n </div>\n </details>\n }\n\n <!-- entities -->\n <details name=\"advanced-search-panels\" class=\"group border-b border-neutral-300\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold capitalize\">\n <i class=\"fa-fw far fa-highlighter\"></i>\n {{ 'entities' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n @for (highlight of previewHighlights(); track $index) {\n @if (highlight.metadata) {\n <ng-container *ngTemplateOutlet=\"metadataPanel; context: highlight\" />\n }\n }\n </details>\n\n <!-- similar documents -->\n @if (similarDocuments().length > 0) {\n <details class=\"group border-b border-neutral-300\" name=\"advanced-search-panels\">\n <summary class=\"sticky top-0 flex cursor-pointer select-none items-baseline justify-between bg-white p-3\">\n <p class=\"flex items-baseline gap-2 font-semibold\">\n <i class=\"fa-fw far fa-tags\"></i>\n {{ 'drawers.similarDocuments' | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open:rotate-180\"></i>\n </summary>\n\n <div>\n <ul class=\"mb-2 mt-4 flex flex-col flex-wrap px-2\" role=\"list\">\n @for (document of similarDocuments(); track $index) {\n <li role=\"listitem\" selectArticleOnClick [article]=\"document\" strategy=\"stack\">\n <div class=\"text-primary flex size-[20px] items-center justify-center rounded-full bg-neutral-50\">\n <source [collection]=\"article().collection\" [connector]=\"article().connector\" class=\"text-xs\" />\n </div>\n\n <span>{{ document.displayTitle ?? document.title }}</span>\n </li>\n }\n </ul>\n </div>\n </details>\n }\n </div>\n}\n\n<!-- entities's template -->\n<ng-template #metadataPanel let-metadata=\"metadata\" let-name=\"name\" let-iconClass=\"iconClass\" let-entity=\"entity\">\n <details name=\"advanced-search-entities\" class=\"group/entities px-3 pb-3\">\n <summary class=\"sticky top-8 flex cursor-pointer select-none items-baseline justify-between bg-white\">\n <p class=\"flex items-baseline gap-2 font-semibold capitalize\">\n <i class=\"fa-fw {{ iconClass || 'far fa-list' }}\"></i>\n {{ name | transloco }}\n </p>\n\n <i class=\"fa-fw far fa-chevron-down group-open/entities:rotate-180\"></i>\n </summary>\n\n <ul role=\"list\">\n @for (data of metadata; track $index) {\n <li role=\"listitem\" class=\"flex justify-between py-1 pl-2\" (mouseenter)=\"hovering.set(data.value)\" (mouseleave)=\"hovering.set(undefined)\">\n <!-- shrink w-1/2 grow truncate ovoid the overlap when hovering the row -->\n <p class=\"w-1/2 shrink grow truncate\">{{ data.display }}</p>\n\n <p class=\"flex items-center gap-2\">\n @if (hovering() === data.value) {\n <i class=\"fa-light fa-chevron-left\" aria-label=\"previous entity\" role=\"button\" (click)=\"navigatePrev(entity, data)\"></i>\n\n <span>{{ hoverIndex() }} / {{ data.count }}</span>\n\n <i class=\"fa-light fa-chevron-right\" aria-label=\"next entity\" role=\"button\" (click)=\"navigateNext(entity, data)\"></i>\n } @else {\n {{ data.count }}\n }\n </p>\n </li>\n }\n </ul>\n </details>\n</ng-template>\n", styles: [":host{--panel-max-height: none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"] }]
10755
10767
  }], ctorParameters: () => [] });
@@ -10778,14 +10790,14 @@ class DrawerPreviewComponent extends DrawerComponent {
10778
10790
  const { queryText } = getState(this.selectionStore);
10779
10791
  const { text } = getState(this.queryParamsStore);
10780
10792
  return queryText ?? text;
10781
- });
10782
- articleId = input.required();
10783
- previewData = signal(undefined);
10784
- article = computed(() => this.previewData()?.record);
10785
- inputs = computed(() => ({ previewData: this.previewData() }));
10793
+ }, ...(ngDevMode ? [{ debugName: "queryText" }] : []));
10794
+ articleId = input.required(...(ngDevMode ? [{ debugName: "articleId" }] : []));
10795
+ previewData = signal(undefined, ...(ngDevMode ? [{ debugName: "previewData" }] : []));
10796
+ article = computed(() => this.previewData()?.record, ...(ngDevMode ? [{ debugName: "article" }] : []));
10797
+ inputs = computed(() => ({ previewData: this.previewData() }), ...(ngDevMode ? [{ debugName: "inputs" }] : []));
10786
10798
  previewType = computed(() => {
10787
10799
  return this.getComponentsForDocumentType(this.article()?.docformat || '').previewComponent;
10788
- });
10800
+ }, ...(ngDevMode ? [{ debugName: "previewType" }] : []));
10789
10801
  constructor(globalQueryName, destroyRef) {
10790
10802
  super();
10791
10803
  this.globalQueryName = globalQueryName;
@@ -10825,10 +10837,10 @@ class DrawerPreviewComponent extends DrawerComponent {
10825
10837
  });
10826
10838
  });
10827
10839
  }
10828
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerPreviewComponent, deps: [{ token: GLOBAL_QUERY_NAME }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
10829
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DrawerPreviewComponent, isStandalone: true, selector: "app-drawer-preview", inputs: { articleId: { classPropertyName: "articleId", publicName: "articleId", isSignal: true, isRequired: true, transformFunction: null } }, providers: [DrawerService, PreviewService], usesInheritance: true, ngImport: i0, template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex overflow-auto bg-white\">\n <div\n #drawerHandle\n class=\"fixed h-full w-[5px] select-none hover:cursor-ew-resize hover:bg-orange-300\"\n [ngClass]=\"{ hidden: (drawer.isExtended | async) === false }\"></div>\n\n @if (previewType()) {\n <ng-container *ngComponentOutlet=\"previewType()!; inputs: inputs()\" />\n }\n</div>\n\n@if (article()) {\n <div class=\"flex flex-col border-l border-gray-200 bg-white\">\n <div class=\"relative flex grow flex-col\">\n <advanced-search class=\"absolute h-full w-full overflow-y-auto\" [article]=\"article()!\" (close)=\"drawer.collapse()\" />\n </div>\n </div>\n}\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;height:100%;top:0;right:-100%;justify-content:flex-end;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{right:0;width:100vw;grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: AdvancedSearchComponent, selector: "advanced-search", inputs: ["article"] }] });
10840
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerPreviewComponent, deps: [{ token: GLOBAL_QUERY_NAME }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
10841
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: DrawerPreviewComponent, isStandalone: true, selector: "app-drawer-preview", inputs: { articleId: { classPropertyName: "articleId", publicName: "articleId", isSignal: true, isRequired: true, transformFunction: null } }, providers: [DrawerService, PreviewService], usesInheritance: true, ngImport: i0, template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex overflow-auto bg-white\">\n <div\n #drawerHandle\n class=\"fixed h-full w-[5px] select-none hover:cursor-ew-resize hover:bg-orange-300\"\n [ngClass]=\"{ hidden: (drawer.isExtended | async) === false }\"></div>\n\n @if (previewType()) {\n <ng-container *ngComponentOutlet=\"previewType()!; inputs: inputs()\" />\n }\n</div>\n\n@if (article()) {\n <div class=\"flex flex-col border-l border-gray-200 bg-white\">\n <div class=\"relative flex grow flex-col\">\n <advanced-search class=\"absolute h-full w-full overflow-y-auto\" [article]=\"article()!\" (close)=\"drawer.collapse()\" />\n </div>\n </div>\n}\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;height:100%;top:0;right:-100%;justify-content:flex-end;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{right:0;width:100vw;grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AdvancedSearchComponent, selector: "advanced-search", inputs: ["article"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
10830
10842
  }
10831
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DrawerPreviewComponent, decorators: [{
10843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: DrawerPreviewComponent, decorators: [{
10832
10844
  type: Component,
10833
10845
  args: [{ selector: 'app-drawer-preview', standalone: true, imports: [NgClass, NgComponentOutlet, AsyncPipe, AdvancedSearchComponent], providers: [DrawerService, PreviewService], template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex overflow-auto bg-white\">\n <div\n #drawerHandle\n class=\"fixed h-full w-[5px] select-none hover:cursor-ew-resize hover:bg-orange-300\"\n [ngClass]=\"{ hidden: (drawer.isExtended | async) === false }\"></div>\n\n @if (previewType()) {\n <ng-container *ngComponentOutlet=\"previewType()!; inputs: inputs()\" />\n }\n</div>\n\n@if (article()) {\n <div class=\"flex flex-col border-l border-gray-200 bg-white\">\n <div class=\"relative flex grow flex-col\">\n <advanced-search class=\"absolute h-full w-full overflow-y-auto\" [article]=\"article()!\" (close)=\"drawer.collapse()\" />\n </div>\n </div>\n}\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;height:100%;top:0;right:-100%;justify-content:flex-end;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{right:0;width:100vw;grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"] }]
10834
10846
  }], ctorParameters: () => [{ type: undefined, decorators: [{