@sinequa/atomic-angular 1.7.2 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as rxjs from 'rxjs';
4
4
  import { BehaviorSubject, Observable, Subject } from 'rxjs';
5
5
  import * as _ngrx_signals from '@ngrx/signals';
6
6
  import * as _sinequa_atomic from '@sinequa/atomic';
7
- import { Article as Article$1, LegacyFilter, KeyOf, Query, QueryParams as QueryParams$1, AggregationItem, TreeAggregationNode, Aggregation, TreeAggregation, Conversion, CCApp, CCColumn, CCQuery, CCWebService, Principal, SpellingCorrectionMode, AuditEvents, CustomHighlights, Result, AuditEventType, AuditEventTypeValues, Suggestion, PreviewData, TextLocation, TextChunk, UserProfile, CCSortingChoice, LinkResult, ExportQueryModel, ExportOutputFormat, FilterOperator } from '@sinequa/atomic';
7
+ import { Article as Article$1, LegacyFilter, KeyOf, Query, QueryParams as QueryParams$1, AggregationItem, TreeAggregationNode, Aggregation, TreeAggregation, Conversion, CCApp, CCColumn, CCQuery, CCWebService, Principal, SpellingCorrectionMode, AuditEvents, CustomHighlights, Result, AuditEventType, AuditEventTypeValues, Suggestion, Filter as Filter$2, PreviewData, TextLocation, TextChunk, UserProfile, CCSortingChoice, LinkResult, ExportQueryModel, ExportOutputFormat, FilterOperator } from '@sinequa/atomic';
8
8
  import { Router, Params, Route, NavigationEnd, CanActivateFn, ResolveFn } from '@angular/router';
9
9
  import * as _sinequa_atomic_angular from '@sinequa/atomic-angular';
10
10
  import * as _sinequa_ui from '@sinequa/ui';
@@ -397,7 +397,7 @@ declare class MissingTermsComponent {
397
397
  }
398
398
 
399
399
  declare const multiSelectionToolbarVariants: (props?: ({
400
- variant?: "dark" | "light" | "glassy" | null | undefined;
400
+ variant?: "light" | "dark" | "glassy" | null | undefined;
401
401
  } & class_variance_authority_types.ClassProp) | undefined) => string;
402
402
  type MultiSelectionToolbarVariants = VariantProps<typeof multiSelectionToolbarVariants>;
403
403
  declare class MultiSelectionToolbarComponent {
@@ -786,7 +786,7 @@ declare class MultiSelectionToolbarComponent {
786
786
  feedback?: _sinequa_atomic_angular.CFeedback;
787
787
  } | undefined;
788
788
  readonly class: _angular_core.InputSignal<string>;
789
- readonly variant: _angular_core.InputSignal<"dark" | "light" | "glassy" | null | undefined>;
789
+ readonly variant: _angular_core.InputSignal<"light" | "dark" | "glassy" | null | undefined>;
790
790
  readonly updatedCollections: _angular_core.OutputEmitterRef<void>;
791
791
  readonly count: _angular_core.Signal<number>;
792
792
  readonly variants: _angular_core.Signal<string>;
@@ -1296,6 +1296,35 @@ type AggregationTreeEx = TreeAggregation & {
1296
1296
  items: AggregationListItem[];
1297
1297
  };
1298
1298
  type AggregationEx = AggregationListEx | AggregationTreeEx;
1299
+ /**
1300
+ * Controlled selection for the `<Aggregation>` family of components.
1301
+ *
1302
+ * - `values`: selected item values (list aggregations)
1303
+ * - `paths`: selected tree paths in the `"/A/B/*"` format — the same format used
1304
+ * by the `values` of the stored tree filters
1305
+ * - `option`: a selected date option (date aggregations) — the `value` of the
1306
+ * aggregation item (the real filter value, e.g. `"this-week"`), never its
1307
+ * `display`. The component re-selects that option directly, which is robust
1308
+ * across days for presets whose bounds are computed relative to today.
1309
+ * - `range`: a custom date range (date aggregations) — the `from`/`to` bounds.
1310
+ *
1311
+ * `option` and `range` are mutually exclusive: a date selection is either a
1312
+ * preset or a custom range, never both.
1313
+ */
1314
+ type AggregationSelection = {
1315
+ kind: "values";
1316
+ values: string[];
1317
+ } | {
1318
+ kind: "paths";
1319
+ paths: string[];
1320
+ } | {
1321
+ kind: "option";
1322
+ option: string;
1323
+ } | {
1324
+ kind: "range";
1325
+ from?: string;
1326
+ to?: string;
1327
+ };
1299
1328
 
1300
1329
  type Autocomplete = {
1301
1330
  bookmarks?: number;
@@ -2158,7 +2187,7 @@ declare const PrincipalStore: _angular_core.Type<{
2158
2187
  param9: _angular_core.Signal<string>;
2159
2188
  param10: _angular_core.Signal<string>;
2160
2189
  userOverrideActive: _angular_core.Signal<boolean>;
2161
- state: _angular_core.Signal<"error" | "initial" | "loading" | "loaded">;
2190
+ state: _angular_core.Signal<"initial" | "loading" | "loaded" | "error">;
2162
2191
  allowUserOverride: _angular_core.Signal<boolean>;
2163
2192
  isOverridingUser: _angular_core.Signal<boolean>;
2164
2193
  initials: _angular_core.Signal<string>;
@@ -2517,7 +2546,7 @@ declare const UserSettingsStore: _angular_core.Type<{
2517
2546
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
2518
2547
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
2519
2548
  language?: _angular_core.Signal<string | undefined> | undefined;
2520
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
2549
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
2521
2550
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
2522
2551
  isDebugMode: _angular_core.Signal<boolean>;
2523
2552
  isDarkMode: _angular_core.Signal<boolean>;
@@ -3159,10 +3188,25 @@ declare class AggregationsService {
3159
3188
  }>;
3160
3189
  nonSearchableColumns: string[];
3161
3190
  protected API_URL: string;
3162
- loadMore(query: Partial<Query>, aggregation: Aggregation, audit?: AuditEvents): Observable<Aggregation>;
3163
- open(query: Partial<Query>, aggregation: TreeAggregation, item: TreeAggregationNode): Observable<TreeAggregation>;
3191
+ loadMore(query: Partial<Query>, aggregation: Aggregation, audit?: AuditEvents, options?: {
3192
+ count?: number;
3193
+ }): Observable<Aggregation>;
3194
+ open(query: Partial<Query>, aggregation: TreeAggregation, item: TreeAggregationNode, options?: {
3195
+ guardFree?: boolean;
3196
+ }): Observable<TreeAggregation>;
3164
3197
  getAggregation(name: string, column: string | null): AggEx | null | undefined;
3165
3198
  processAggregation(name: string, column: string | null): AggEx | null | undefined;
3199
+ /**
3200
+ * Applies the app-level customization (custom JSON display/icon/hidden/searchable,
3201
+ * non-searchable columns) and marks the `$selected` items on the given aggregation.
3202
+ *
3203
+ * @param agg - The aggregation to enrich (mutated in place and returned).
3204
+ * @param selectionValues - Controlled selection: the selected values (list) or
3205
+ * `"/A/B/*"` paths (tree). When `undefined`, the selection is derived from the
3206
+ * shared `QueryParamsStore` filters (default behavior). An empty array means
3207
+ * "nothing selected" and skips the store read entirely.
3208
+ */
3209
+ enrichAggregation(agg: AggEx, selectionValues?: string[]): AggEx;
3166
3210
  /**
3167
3211
  * Converts an `AggregationItem` to a `LegacyFilter`.
3168
3212
  *
@@ -3206,6 +3250,17 @@ declare class AggregationsService {
3206
3250
  column: string;
3207
3251
  name: string;
3208
3252
  }[];
3253
+ /**
3254
+ * Removes the aggregations flagged `hidden: true` in the `filters` custom JSON
3255
+ * configuration (the administrator does not want them displayed).
3256
+ *
3257
+ * Exposed for consumers that build their own aggregation list without going through
3258
+ * {@link getAuthorizedFilters} (e.g. the aside filters drawer).
3259
+ *
3260
+ * @param aggregations - The aggregations to filter.
3261
+ * @returns The aggregations that are not flagged hidden.
3262
+ */
3263
+ rejectHidden(aggregations: Aggregation[]): Aggregation[];
3209
3264
  /**
3210
3265
  * Determines whether a custom JSON filter refers to the given aggregation.
3211
3266
  *
@@ -3220,6 +3275,7 @@ declare class AggregationsService {
3220
3275
  private getFilterCriteria;
3221
3276
  private getHomepageFilterCriteria;
3222
3277
  private getLeftOnlyFilterCriteria;
3278
+ private getHiddenFilterCriteria;
3223
3279
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationsService, never>;
3224
3280
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AggregationsService>;
3225
3281
  }
@@ -3272,7 +3328,7 @@ declare class ApplicationService {
3272
3328
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
3273
3329
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
3274
3330
  language?: _angular_core.Signal<string | undefined> | undefined;
3275
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
3331
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
3276
3332
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
3277
3333
  isDebugMode: _angular_core.Signal<boolean>;
3278
3334
  isDarkMode: _angular_core.Signal<boolean>;
@@ -3344,7 +3400,7 @@ declare class ApplicationService {
3344
3400
  param9: _angular_core.Signal<string>;
3345
3401
  param10: _angular_core.Signal<string>;
3346
3402
  userOverrideActive: _angular_core.Signal<boolean>;
3347
- state: _angular_core.Signal<"error" | "initial" | "loading" | "loaded">;
3403
+ state: _angular_core.Signal<"initial" | "loading" | "loaded" | "error">;
3348
3404
  allowUserOverride: _angular_core.Signal<boolean>;
3349
3405
  isOverridingUser: _angular_core.Signal<boolean>;
3350
3406
  initials: _angular_core.Signal<string>;
@@ -4139,7 +4195,7 @@ declare class AutocompleteService {
4139
4195
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
4140
4196
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
4141
4197
  language?: _angular_core.Signal<string | undefined> | undefined;
4142
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
4198
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
4143
4199
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
4144
4200
  isDebugMode: _angular_core.Signal<boolean>;
4145
4201
  isDarkMode: _angular_core.Signal<boolean>;
@@ -4617,6 +4673,23 @@ declare class InlineWorker {
4617
4673
  terminate(): void;
4618
4674
  }
4619
4675
 
4676
+ /**
4677
+ * Converts a `LegacyFilter` to the structured `Filter` model, built with the
4678
+ * `filter.*` helpers of `@sinequa/atomic`. The result is assignable as-is to
4679
+ * `query.filters` / `fetchQuery({ filters })`.
4680
+ *
4681
+ * Covers the shapes produced by the aggregation components when applying
4682
+ * filters (`toFilter`, `getFiltersForTree`, `getFormValueFilter`,
4683
+ * `buildAppliedFilter`): `in` values, `and`/`or` expression trees, `between`
4684
+ * ranges, scalar leaves (`eq`/`contains`/`gte`/`lte`/…) and the operator-less
4685
+ * `{ field, value }` form (treated as `eq`).
4686
+ *
4687
+ * Returns `undefined` for an absent filter or a degenerate shape (leaf without
4688
+ * `field`/`value`, empty combinator) — consistent with the `filter.and`/`or`
4689
+ * collapsing rules and with an absent `query.filters`.
4690
+ */
4691
+ declare function legacyFilterToFilter(legacy: LegacyFilter | undefined): Filter$2 | undefined;
4692
+
4620
4693
  /**
4621
4694
  * Retrieves the query name from the current route.
4622
4695
  *
@@ -5456,7 +5529,7 @@ declare class SavedSearchesService {
5456
5529
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
5457
5530
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
5458
5531
  language?: _angular_core.Signal<string | undefined> | undefined;
5459
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
5532
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
5460
5533
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
5461
5534
  isDebugMode: _angular_core.Signal<boolean>;
5462
5535
  isDarkMode: _angular_core.Signal<boolean>;
@@ -5766,7 +5839,7 @@ declare class SearchService {
5766
5839
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
5767
5840
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
5768
5841
  language?: _angular_core.Signal<string | undefined> | undefined;
5769
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
5842
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
5770
5843
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
5771
5844
  isDebugMode: _angular_core.Signal<boolean>;
5772
5845
  isDarkMode: _angular_core.Signal<boolean>;
@@ -6440,6 +6513,78 @@ declare class SourceComponent {
6440
6513
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SourceComponent, "source, Source", never, { "collection": { "alias": "collection"; "required": false; "isSignal": true; }; "connector": { "alias": "connector"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6441
6514
  }
6442
6515
 
6516
+ /**
6517
+ * Context of a projected `<ng-template aggregationItem>` — the content/label
6518
+ * region of a single item in `<aggregation-list>` / `<aggregation-tree>`.
6519
+ * The host owns only the content; the component keeps the checkbox,
6520
+ * click-to-select, count, virtualization and (tree) chevron/indentation/recursion.
6521
+ *
6522
+ * The `level` / `expanded` / `hasChildren` fields are **tree-only**: they are
6523
+ * populated by `<aggregation-tree>` and left `undefined` by `<aggregation-list>`
6524
+ * (hence optional — a single directive serves both). See {@link AggregationTreeItemContext}
6525
+ * for the tree-specialized (all-required) shape, if you prefer to annotate `let-*` manually.
6526
+ */
6527
+ interface AggregationItemContext {
6528
+ /** The aggregation item (list) or node (tree). */
6529
+ $implicit: AggregationListItem;
6530
+ /** The aggregation column. */
6531
+ field: string | null | undefined;
6532
+ /** Whether the item is currently selected. */
6533
+ selected: boolean;
6534
+ /** The item's document count. */
6535
+ count: number;
6536
+ /** The localized display label (`display || value`, run through `syslang`). */
6537
+ name: string;
6538
+ /** The current search-within-facet text — re-apply `highlightWord` with it if needed. */
6539
+ searchText: string;
6540
+ /** Tree only — depth level of the node (drives indentation in the default template). */
6541
+ level?: number;
6542
+ /** Tree only — whether the node is expanded. */
6543
+ expanded?: boolean;
6544
+ /** Tree only — whether the node has (or may lazily load) children. */
6545
+ hasChildren?: boolean;
6546
+ }
6547
+ /**
6548
+ * Tree-specialized context: same as {@link AggregationItemContext} but with the
6549
+ * structural fields required. `<aggregation-tree>` always populates them; use this
6550
+ * type to annotate `let-*` when you want them non-optional in a tree template.
6551
+ */
6552
+ interface AggregationTreeItemContext extends AggregationItemContext {
6553
+ level: number;
6554
+ expanded: boolean;
6555
+ hasChildren: boolean;
6556
+ }
6557
+ /**
6558
+ * Marker directive: project a custom template for the content/label region of
6559
+ * each aggregation item. Put it on an `<ng-template>` inside `<aggregation-list>`
6560
+ * or `<aggregation-tree>`:
6561
+ *
6562
+ * ```html
6563
+ * <aggregation-list name="Languages" column="language" [aggregation]="agg">
6564
+ * <ng-template aggregationItem let-item let-count="count" let-selected="selected">
6565
+ * <span>{{ item.display }}</span>
6566
+ * <span class="badge">{{ count }}</span>
6567
+ * </ng-template>
6568
+ * </aggregation-list>
6569
+ * ```
6570
+ *
6571
+ * When no template is projected, the component renders its default row content.
6572
+ * The `let-*` variables are typed under `strictTemplates` via
6573
+ * {@link AggregationItemDirective.ngTemplateContextGuard}; the host must import
6574
+ * this directive in its component `imports`.
6575
+ */
6576
+ declare class AggregationItemDirective {
6577
+ readonly template: TemplateRef<AggregationItemContext>;
6578
+ /**
6579
+ * Narrows the `let-*` of `<ng-template aggregationItem>` under `strictTemplates`.
6580
+ * Tree-only fields (`level`/`expanded`/`hasChildren`) are typed as optional; a tree
6581
+ * template can re-annotate them via {@link AggregationTreeItemContext} if desired.
6582
+ */
6583
+ static ngTemplateContextGuard(_dir: AggregationItemDirective, ctx: unknown): ctx is AggregationItemContext;
6584
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationItemDirective, never>;
6585
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AggregationItemDirective, "[aggregationItem]", never, {}, {}, never, never, true, never>;
6586
+ }
6587
+
6443
6588
  /**
6444
6589
  * Directive to mark a child element for special processing.
6445
6590
  * This can be used to apply specific styles or behaviors to child elements.
@@ -6523,7 +6668,7 @@ declare class ShowBookmarkDirective {
6523
6668
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
6524
6669
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
6525
6670
  language?: _angular_core.Signal<string | undefined> | undefined;
6526
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
6671
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
6527
6672
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
6528
6673
  isDebugMode: _angular_core.Signal<boolean>;
6529
6674
  isDarkMode: _angular_core.Signal<boolean>;
@@ -7571,16 +7716,61 @@ declare class AggregationDateComponent {
7571
7716
  * @default true
7572
7717
  */
7573
7718
  syncUrl: _angular_core.InputSignalWithTransform<boolean, unknown>;
7719
+ /**
7720
+ * Controlled query. When set, the component's own operations run against this
7721
+ * query instead of reading the shared `QueryParamsStore`. Use to target a query
7722
+ * not tied to the current app, without mutating the shared store or the URL.
7723
+ *
7724
+ * @default undefined — read `QueryParamsStore.getQuery()` (current behavior)
7725
+ */
7726
+ controlledQuery: _angular_core.InputSignal<Query | undefined>;
7727
+ /**
7728
+ * Controlled data. When set, the component renders this aggregation object
7729
+ * instead of reading it from the shared `AggregationsStore`.
7730
+ *
7731
+ * @default undefined — read `AggregationsStore` (current behavior)
7732
+ */
7733
+ controlledAggregation: _angular_core.InputSignal<Aggregation | undefined>;
7734
+ /**
7735
+ * Controlled selection. When set, the date form is derived from this value
7736
+ * instead of the shared `QueryParamsStore` filters:
7737
+ * `{ kind: "option", option }` re-selects the date option whose aggregation
7738
+ * item `value` matches (the real filter value, never the `display`);
7739
+ * `{ kind: "range", from, to }` fills the custom range from the bounds.
7740
+ * The two kinds are mutually exclusive — a date selection is either a preset
7741
+ * or a custom range.
7742
+ *
7743
+ * @default undefined — derive from `QueryParamsStore` filters (current behavior)
7744
+ */
7745
+ controlledSelection: _angular_core.InputSignal<AggregationSelection | undefined>;
7574
7746
  readonly title: _angular_core.InputSignal<AggregationTitle>;
7575
7747
  readonly displayEmptyDistributionIntervals: _angular_core.InputSignal<boolean>;
7576
7748
  onSelect: _angular_core.OutputEmitterRef<AggregationItem[]>;
7577
7749
  onApply: _angular_core.OutputEmitterRef<void>;
7578
7750
  onClear: _angular_core.OutputEmitterRef<void>;
7751
+ /**
7752
+ * Emits the new selection (`{ kind: "option" }` preset or `{ kind: "range" }`
7753
+ * custom range) in controlled mode. The counterpart of the `[selection]` input,
7754
+ * emitted before `filtersChange`. Date is a radio list, so this fires **live at
7755
+ * selection time** — picking a preset radio, or confirming a date in the custom
7756
+ * range picker — not on an apply click (the custom-range radio alone, with no
7757
+ * date picked, emits nothing). Also emitted on clear. In controlled mode this is
7758
+ * the only way changes surface: nothing is written to the shared stores or the URL.
7759
+ */
7760
+ selectionChange: _angular_core.OutputEmitterRef<AggregationSelection>;
7761
+ /**
7762
+ * Emits the selection as a structured `Filter` (the exact filter the default
7763
+ * mode would write to the store), ready for `fetchQuery({ filters })`.
7764
+ * `undefined` on clear. Controlled mode only — emitted right after
7765
+ * `selectionChange` (see its live-emission timing).
7766
+ */
7767
+ filtersChange: _angular_core.OutputEmitterRef<Filter$2 | undefined>;
7579
7768
  isCollapsed: _angular_core.WritableSignal<boolean>;
7580
7769
  expanded: _angular_core.Signal<"" | null>;
7581
7770
  protected readonly searchText: _angular_core.ModelSignal<string>;
7582
7771
  private readonly searchInput;
7583
7772
  private readonly base;
7773
+ readonly isControlled: _angular_core.Signal<boolean>;
7584
7774
  readonly aggregationsService: _sinequa_atomic_angular.AggregationsService;
7585
7775
  readonly queryParamsStore: {
7586
7776
  name?: _angular_core.Signal<string | undefined> | undefined;
@@ -7650,7 +7840,7 @@ declare class AggregationDateComponent {
7650
7840
  }) => Partial<LegacyFilter & {
7651
7841
  count: number;
7652
7842
  }> | null;
7653
- getQuery: () => _sinequa_atomic.Query;
7843
+ getQuery: () => Query;
7654
7844
  } & _ngrx_signals.StateSource<{
7655
7845
  name?: string | undefined;
7656
7846
  text?: string | undefined;
@@ -7689,6 +7879,13 @@ declare class AggregationDateComponent {
7689
7879
  readonly transloco: TranslocoService;
7690
7880
  protected readonly selection: _angular_core.WritableSignal<boolean>;
7691
7881
  protected readonly validSelection: _angular_core.WritableSignal<boolean>;
7882
+ /**
7883
+ * Guards live emission while the form is seeded programmatically from the
7884
+ * `[selection]` input (see the seeding effect below). `form.setValue`/`patchValue`
7885
+ * emit `valueChanges` synchronously; without this flag a controlled host that
7886
+ * re-feeds `[selection]` from `selectionChange` would loop indefinitely.
7887
+ */
7888
+ private seedingForm;
7692
7889
  readonly aggregation: _angular_core.Signal<AggEx | null>;
7693
7890
  readonly isEmpty: _angular_core.Signal<boolean>;
7694
7891
  readonly items: _angular_core.Signal<AggregationItem[]>;
@@ -7706,6 +7903,13 @@ declare class AggregationDateComponent {
7706
7903
  protected readonly customRangeFrom: _angular_core.Signal<string>;
7707
7904
  protected readonly customRangeTo: _angular_core.Signal<string>;
7708
7905
  constructor();
7906
+ /**
7907
+ * Emits the current form selection through `selectionChange` then `filtersChange`
7908
+ * (controlled mode). Shared by `apply()` and the live emission paths so both
7909
+ * produce identical payloads. Throws if the form is not a valid selection
7910
+ * (`getFormValueFilter`) — callers decide how to surface it.
7911
+ */
7912
+ private emitCurrentSelection;
7709
7913
  select(): void;
7710
7914
  apply(): void;
7711
7915
  clear(notify?: boolean): void;
@@ -7713,10 +7917,39 @@ declare class AggregationDateComponent {
7713
7917
  protected selectAndOpenDialog(): void;
7714
7918
  protected onRangeSelected(range: DateRange): void;
7715
7919
  private updateForm;
7920
+ /**
7921
+ * Derives the form from a controlled selection.
7922
+ * `{ kind: "option" }` re-selects the date option whose item `value` matches —
7923
+ * no operator/value matching, so presets whose bounds are computed relative to
7924
+ * today survive a round-trip across days; a value unknown to the aggregation
7925
+ * resets the form. `{ kind: "range" }` fills the custom range from the bounds.
7926
+ */
7927
+ private updateFormFromSelection;
7928
+ /**
7929
+ * The date option codes (what `form.option` holds) are the items' `display`
7930
+ * with a fallback on their `value` (see `translateAggregationToDateOptions`).
7931
+ * The controlled selection persists the item `value` — the real filter value —
7932
+ * so these two helpers convert between the option code and the item value.
7933
+ */
7934
+ private optionToItemValue;
7935
+ private itemValueToOption;
7936
+ /**
7937
+ * Converts a controlled `{ kind: "range" }` selection to the `LegacyFilter`
7938
+ * shape `updateForm` expects (which only reads `operator`/`value`/`filters`).
7939
+ * Returns `undefined` for an empty or non-range selection, which resets the form.
7940
+ */
7941
+ private rangeToLegacyFilter;
7942
+ /**
7943
+ * Converts the applied `LegacyFilter` to a `{ kind: "range" }` selection
7944
+ * (the shape emitted through `selectionChange` in controlled mode).
7945
+ * Mirrors the operator handling of `updateForm`. Presets whose operator is not
7946
+ * a range operator (e.g. `eq`) collapse to `from = to = value`.
7947
+ */
7948
+ private toRangeSelection;
7716
7949
  private toEndOfDay;
7717
7950
  private getFormValueFilter;
7718
7951
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationDateComponent, never>;
7719
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationDateComponent, "aggregation-date, AggregationDate, aggregationdate", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "displayEmptyDistributionIntervals": { "alias": "displayEmptyDistributionIntervals"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "searchText": "searchTextChange"; }, never, ["label"], true, never>;
7952
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationDateComponent, "aggregation-date, AggregationDate, aggregationdate", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "displayEmptyDistributionIntervals": { "alias": "displayEmptyDistributionIntervals"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; "searchText": "searchTextChange"; }, never, ["label"], true, never>;
7720
7953
  }
7721
7954
 
7722
7955
  /**
@@ -8581,7 +8814,7 @@ declare class SignedOutComponent {
8581
8814
  }
8582
8815
 
8583
8816
  declare class BookmarkButtonComponent {
8584
- variant: _angular_core.InputSignal<"default" | "icon" | "primary" | "secondary" | "destructive" | "ai" | "link" | "outline" | "accent" | "tertiary" | "ghost" | "light-accent" | "none" | null | undefined>;
8817
+ variant: _angular_core.InputSignal<"default" | "link" | "primary" | "secondary" | "outline" | "accent" | "tertiary" | "ghost" | "light-accent" | "destructive" | "icon" | "ai" | "none" | null | undefined>;
8585
8818
  size: _angular_core.InputSignal<"icon" | "xs" | "sm" | "md" | "lg" | null | undefined>;
8586
8819
  readonly article: _angular_core.InputSignal<Partial<Article$1>>;
8587
8820
  private readonly userSettingsStore;
@@ -10167,7 +10400,7 @@ declare class SearchFeedbackComponent {
10167
10400
  onClose: _angular_core.OutputEmitterRef<void>;
10168
10401
  readonly feedbackDialog: _angular_core.Signal<FeedbackDialogComponent | undefined>;
10169
10402
  pages: _angular_core.InputSignal<any>;
10170
- variant: _angular_core.InputSignal<"default" | "icon" | "primary" | "secondary" | "destructive" | "ai" | "link" | "outline" | "accent" | "tertiary" | "ghost" | "light-accent" | "none" | null | undefined>;
10403
+ variant: _angular_core.InputSignal<"default" | "link" | "primary" | "secondary" | "outline" | "accent" | "tertiary" | "ghost" | "light-accent" | "destructive" | "icon" | "ai" | "none" | null | undefined>;
10171
10404
  solid: _angular_core.InputSignal<boolean | null | undefined>;
10172
10405
  readonly auditService: AuditService;
10173
10406
  protected readonly queryParamsStore: {
@@ -10300,6 +10533,14 @@ declare class AggregationTreeComponent {
10300
10533
  collapsed: _angular_core.InputSignal<boolean>;
10301
10534
  searchable: _angular_core.InputSignal<boolean | undefined>;
10302
10535
  showFiltersCount: _angular_core.InputSignalWithTransform<boolean, unknown>;
10536
+ /**
10537
+ * Whether to render the per-node checkbox. When `false`, the checkbox is hidden
10538
+ * but selection still toggles on row click — pair it with a custom `aggregationItem`
10539
+ * template that reflects the `selected` context to convey selection.
10540
+ *
10541
+ * @default true
10542
+ */
10543
+ showCheckbox: _angular_core.InputSignalWithTransform<boolean, unknown>;
10303
10544
  expandedLevel: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
10304
10545
  /**
10305
10546
  * When `false`, applying or clearing filters updates the store without
@@ -10308,15 +10549,63 @@ declare class AggregationTreeComponent {
10308
10549
  * @default true
10309
10550
  */
10310
10551
  syncUrl: _angular_core.InputSignalWithTransform<boolean, unknown>;
10552
+ /**
10553
+ * Controlled query. When set, the component's own operations (load-more,
10554
+ * search-within-facet, tree-expand) run against this query instead of reading
10555
+ * the shared `QueryParamsStore`. Use to target a query not tied to the current
10556
+ * app, without mutating the shared store or the URL.
10557
+ *
10558
+ * @default undefined — read `QueryParamsStore.getQuery()` (current behavior)
10559
+ */
10560
+ controlledQuery: _angular_core.InputSignal<Query | undefined>;
10561
+ /**
10562
+ * Controlled data. When set, the component renders this aggregation object
10563
+ * instead of reading it from the shared `AggregationsStore`.
10564
+ *
10565
+ * @default undefined — read `AggregationsStore` (current behavior)
10566
+ */
10567
+ controlledAggregation: _angular_core.InputSignal<Aggregation | undefined>;
10568
+ /**
10569
+ * Controlled selection. When set, item `$selected` state is derived from this
10570
+ * value (`paths` in the `"/A/B/*"` format) instead of the shared
10571
+ * `QueryParamsStore` filters.
10572
+ *
10573
+ * @default undefined — derive from `QueryParamsStore` filters (current behavior)
10574
+ */
10575
+ controlledSelection: _angular_core.InputSignal<AggregationSelection | undefined>;
10311
10576
  onSelect: _angular_core.OutputEmitterRef<AggregationItem[]>;
10312
10577
  onApply: _angular_core.OutputEmitterRef<void>;
10313
10578
  onClear: _angular_core.OutputEmitterRef<void>;
10579
+ /**
10580
+ * Emits the new selection (`"/A/B/*"` paths) when the user applies or clears
10581
+ * filters in controlled mode. The counterpart of the `[selection]` input —
10582
+ * emitted before `filtersChange` and `onApply`/`onClear`. In controlled mode
10583
+ * this is the only way changes surface: nothing is written to the shared
10584
+ * stores or the URL.
10585
+ */
10586
+ selectionChange: _angular_core.OutputEmitterRef<AggregationSelection>;
10587
+ /**
10588
+ * Emits the applied selection as a structured `Filter` (the exact filter the
10589
+ * default mode would write to the store), ready for `fetchQuery({ filters })`.
10590
+ * `undefined` on clear. Controlled mode only — emitted after `selectionChange`,
10591
+ * before `onApply`/`onClear`.
10592
+ */
10593
+ filtersChange: _angular_core.OutputEmitterRef<Filter$2 | undefined>;
10314
10594
  virtualItems: _angular_core.Signal<readonly ElementRef<HTMLDivElement>[]>;
10315
10595
  scrollElement: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
10596
+ protected readonly itemDirective: _angular_core.Signal<AggregationItemDirective | undefined>;
10597
+ /**
10598
+ * Item content template relayed by the `<Aggregation>` wrapper (which cannot
10599
+ * project content into this component). Also usable directly as a `TemplateRef`
10600
+ * input. A directive projected straight onto this component takes precedence.
10601
+ */
10602
+ readonly itemTemplateInput: _angular_core.InputSignal<TemplateRef<AggregationItemContext> | undefined>;
10603
+ protected readonly resolvedItemTemplate: _angular_core.Signal<TemplateRef<AggregationItemContext> | undefined>;
10316
10604
  selection: _angular_core.WritableSignal<boolean>;
10317
10605
  isAllSelected: _angular_core.WritableSignal<boolean>;
10318
10606
  searchText: _angular_core.ModelSignal<string>;
10319
10607
  private readonly base;
10608
+ readonly isControlled: _angular_core.Signal<boolean>;
10320
10609
  readonly aggregationsStore: {
10321
10610
  aggregations: _angular_core.Signal<Aggregation[]>;
10322
10611
  update: (aggregations: Aggregation[]) => void;
@@ -10394,7 +10683,7 @@ declare class AggregationTreeComponent {
10394
10683
  }) => Partial<LegacyFilter & {
10395
10684
  count: number;
10396
10685
  }> | null;
10397
- getQuery: () => _sinequa_atomic.Query;
10686
+ getQuery: () => Query;
10398
10687
  } & _ngrx_signals.StateSource<{
10399
10688
  name?: string | undefined;
10400
10689
  text?: string | undefined;
@@ -10750,14 +11039,14 @@ declare class AggregationTreeComponent {
10750
11039
  readonly suggests: _angular_core.WritableSignal<_sinequa_atomic.Suggestion[]>;
10751
11040
  readonly hasFilters: _angular_core.Signal<boolean>;
10752
11041
  readonly filtersCount: _angular_core.Signal<number>;
10753
- readonly query: _sinequa_atomic.Query;
11042
+ readonly query: Query;
10754
11043
  readonly filters: _angular_core.WritableSignal<LegacyFilter[]>;
10755
11044
  readonly showCount: _angular_core.Signal<boolean>;
10756
11045
  readonly quickFilter: _angular_core.Signal<boolean | undefined>;
10757
11046
  readonly isDate: _angular_core.Signal<boolean>;
10758
11047
  readonly virtualizer: _tanstack_angular_virtual.AngularVirtualizer<HTMLDivElement, Element>;
10759
11048
  readonly linkChildren: _angular_core.Signal<boolean | undefined>;
10760
- aggregation: _angular_core.Signal<_sinequa_atomic_angular.AggEx | null>;
11049
+ aggregation: _angular_core.Signal<AggEx | null>;
10761
11050
  items: _angular_core.Signal<AggregationListItem[]>;
10762
11051
  isEmpty: _angular_core.Signal<boolean>;
10763
11052
  readonly searchedItems: _angular_core.Signal<TreeAggregationNode[] | {
@@ -10798,7 +11087,7 @@ declare class AggregationTreeComponent {
10798
11087
  private expandItems;
10799
11088
  private traverse;
10800
11089
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationTreeComponent, never>;
10801
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationTreeComponent, "AggregationTree, aggregation-tree, aggregationtree", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "expandedLevel": { "alias": "expandedLevel"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "searchText": "searchTextChange"; }, never, never, true, never>;
11090
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationTreeComponent, "AggregationTree, aggregation-tree, aggregationtree", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "expandedLevel": { "alias": "expandedLevel"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "itemTemplateInput": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; "searchText": "searchTextChange"; }, ["itemDirective"], never, true, never>;
10802
11091
  }
10803
11092
 
10804
11093
  declare class AggregationListComponent {
@@ -10811,6 +11100,14 @@ declare class AggregationListComponent {
10811
11100
  collapsed: _angular_core.InputSignal<boolean>;
10812
11101
  searchable: _angular_core.InputSignal<boolean | undefined>;
10813
11102
  showFiltersCount: _angular_core.InputSignalWithTransform<boolean | null, unknown>;
11103
+ /**
11104
+ * Whether to render the per-item checkbox. When `false`, the checkbox is hidden
11105
+ * but selection still toggles on row click — pair it with a custom `aggregationItem`
11106
+ * template that reflects the `selected` context to convey selection.
11107
+ *
11108
+ * @default true
11109
+ */
11110
+ showCheckbox: _angular_core.InputSignalWithTransform<boolean, unknown>;
10814
11111
  /**
10815
11112
  * When `false`, applying or clearing filters updates the store without
10816
11113
  * synchronizing the URL (no browser history entry, not shareable/restorable).
@@ -10818,14 +11115,61 @@ declare class AggregationListComponent {
10818
11115
  * @default true
10819
11116
  */
10820
11117
  syncUrl: _angular_core.InputSignalWithTransform<boolean, unknown>;
11118
+ /**
11119
+ * Controlled query. When set, the component's own operations (load-more,
11120
+ * search-within-facet) run against this query instead of reading the shared
11121
+ * `QueryParamsStore`. Use to target a query not tied to the current app,
11122
+ * without mutating the shared store or the URL.
11123
+ *
11124
+ * @default undefined — read `QueryParamsStore.getQuery()` (current behavior)
11125
+ */
11126
+ controlledQuery: _angular_core.InputSignal<Query | undefined>;
11127
+ /**
11128
+ * Controlled data. When set, the component renders this aggregation object
11129
+ * instead of reading it from the shared `AggregationsStore`.
11130
+ *
11131
+ * @default undefined — read `AggregationsStore` (current behavior)
11132
+ */
11133
+ controlledAggregation: _angular_core.InputSignal<Aggregation | undefined>;
11134
+ /**
11135
+ * Controlled selection. When set, item `$selected` state is derived from this
11136
+ * value instead of the shared `QueryParamsStore` filters.
11137
+ *
11138
+ * @default undefined — derive from `QueryParamsStore` filters (current behavior)
11139
+ */
11140
+ controlledSelection: _angular_core.InputSignal<AggregationSelection | undefined>;
10821
11141
  onSelect: _angular_core.OutputEmitterRef<AggregationItem[]>;
10822
11142
  onApply: _angular_core.OutputEmitterRef<void>;
10823
11143
  onClear: _angular_core.OutputEmitterRef<void>;
11144
+ /**
11145
+ * Emits the new selection (item values) when the user applies or clears
11146
+ * filters in controlled mode. The counterpart of the `[selection]` input —
11147
+ * emitted before `filtersChange` and `onApply`/`onClear`. In controlled mode
11148
+ * this is the only way changes surface: nothing is written to the shared
11149
+ * stores or the URL.
11150
+ */
11151
+ selectionChange: _angular_core.OutputEmitterRef<AggregationSelection>;
11152
+ /**
11153
+ * Emits the applied selection as a structured `Filter` (the exact filter the
11154
+ * default mode would write to the store), ready for `fetchQuery({ filters })`.
11155
+ * `undefined` on clear. Controlled mode only — emitted after `selectionChange`,
11156
+ * before `onApply`/`onClear`.
11157
+ */
11158
+ filtersChange: _angular_core.OutputEmitterRef<Filter$2 | undefined>;
10824
11159
  scrollElement: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
11160
+ protected readonly itemDirective: _angular_core.Signal<AggregationItemDirective | undefined>;
11161
+ /**
11162
+ * Item content template relayed by the `<Aggregation>` wrapper (which cannot
11163
+ * project content into this component). Also usable directly as a `TemplateRef`
11164
+ * input. A directive projected straight onto this component takes precedence.
11165
+ */
11166
+ readonly itemTemplateInput: _angular_core.InputSignal<TemplateRef<AggregationItemContext> | undefined>;
11167
+ protected readonly resolvedItemTemplate: _angular_core.Signal<TemplateRef<AggregationItemContext> | undefined>;
10825
11168
  selection: _angular_core.WritableSignal<boolean>;
10826
11169
  isAllSelected: _angular_core.WritableSignal<boolean>;
10827
11170
  searchText: _angular_core.ModelSignal<string>;
10828
11171
  private readonly base;
11172
+ readonly isControlled: _angular_core.Signal<boolean>;
10829
11173
  readonly aggregationsStore: {
10830
11174
  aggregations: _angular_core.Signal<Aggregation[]>;
10831
11175
  update: (aggregations: Aggregation[]) => void;
@@ -10903,7 +11247,7 @@ declare class AggregationListComponent {
10903
11247
  }) => Partial<LegacyFilter & {
10904
11248
  count: number;
10905
11249
  }> | null;
10906
- getQuery: () => _sinequa_atomic.Query;
11250
+ getQuery: () => Query;
10907
11251
  } & _ngrx_signals.StateSource<{
10908
11252
  name?: string | undefined;
10909
11253
  text?: string | undefined;
@@ -11257,14 +11601,14 @@ declare class AggregationListComponent {
11257
11601
  readonly suggests: _angular_core.WritableSignal<_sinequa_atomic.Suggestion[]>;
11258
11602
  readonly hasFilters: _angular_core.Signal<boolean>;
11259
11603
  readonly filtersCount: _angular_core.Signal<number>;
11260
- readonly query: _sinequa_atomic.Query;
11604
+ readonly query: Query;
11261
11605
  readonly filters: _angular_core.WritableSignal<LegacyFilter[]>;
11262
11606
  readonly showCount: _angular_core.Signal<boolean>;
11263
11607
  readonly quickFilter: _angular_core.Signal<boolean | undefined>;
11264
11608
  readonly isDate: _angular_core.Signal<boolean>;
11265
11609
  private readonly cdr;
11266
11610
  readonly virtualizer: _tanstack_angular_virtual.AngularVirtualizer<HTMLDivElement, Element>;
11267
- aggregation: _angular_core.Signal<_sinequa_atomic_angular.AggEx | null>;
11611
+ aggregation: _angular_core.Signal<AggEx | null>;
11268
11612
  items: _angular_core.Signal<AggregationListItem[]>;
11269
11613
  isEmpty: _angular_core.Signal<boolean>;
11270
11614
  searchedItems: _angular_core.Signal<AggregationItem[]>;
@@ -11282,7 +11626,7 @@ declare class AggregationListComponent {
11282
11626
  protected getFilters(): LegacyFilter[];
11283
11627
  private addCurrentFiltersToItems;
11284
11628
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationListComponent, never>;
11285
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationListComponent, "AggregationList, aggregation-list, aggregationlist", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "searchText": "searchTextChange"; }, never, never, true, never>;
11629
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationListComponent, "AggregationList, aggregation-list, aggregationlist", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "itemTemplateInput": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; "searchText": "searchTextChange"; }, ["itemDirective"], never, true, never>;
11286
11630
  }
11287
11631
 
11288
11632
  /**
@@ -11492,8 +11836,8 @@ declare class AggregationComponent {
11492
11836
  isDateColumn: (column: string) => boolean;
11493
11837
  isTabSearch: (queryName: string) => boolean;
11494
11838
  getAggregationCount: (queryName: string | undefined, aggregationName: string) => number;
11495
- getAuthorizedFilters: () => _sinequa_atomic.Aggregation[];
11496
- getAuthorized: (filters: Pick<_sinequa_atomic_angular.CFilter, "column" | "name">[]) => _sinequa_atomic.Aggregation[];
11839
+ getAuthorizedFilters: () => Aggregation[];
11840
+ getAuthorized: (filters: Pick<_sinequa_atomic_angular.CFilter, "column" | "name">[]) => Aggregation[];
11497
11841
  getNamedCustomizationJson: (name: string) => unknown | undefined;
11498
11842
  getAggregationIcon: (column: string) => string | undefined;
11499
11843
  getAggregationItemsCustomization: (column: string) => _sinequa_atomic_angular.CFilterItem[] | undefined;
@@ -11618,18 +11962,24 @@ declare class AggregationComponent {
11618
11962
  columnMap?: Record<string, _sinequa_atomic.CCColumn> | undefined;
11619
11963
  }>;
11620
11964
  aggregationsStore: {
11621
- aggregations: _angular_core.Signal<_sinequa_atomic.Aggregation[]>;
11622
- update: (aggregations: _sinequa_atomic.Aggregation[]) => void;
11623
- updateAggregation: (aggregation: _sinequa_atomic.Aggregation) => void;
11965
+ aggregations: _angular_core.Signal<Aggregation[]>;
11966
+ update: (aggregations: Aggregation[]) => void;
11967
+ updateAggregation: (aggregation: Aggregation) => void;
11624
11968
  clear: () => void;
11625
- getAggregation: (name: string, kind?: "column" | "name") => _sinequa_atomic.Aggregation | undefined;
11969
+ getAggregation: (name: string, kind?: "column" | "name") => Aggregation | undefined;
11626
11970
  } & _ngrx_signals.StateSource<{
11627
- aggregations: _sinequa_atomic.Aggregation[];
11971
+ aggregations: Aggregation[];
11628
11972
  }>;
11629
11973
  aggregationsService: AggregationsService;
11630
11974
  aggregationDate: _angular_core.Signal<AggregationDateComponent | undefined>;
11631
11975
  aggregationTree: _angular_core.Signal<AggregationTreeComponent | undefined>;
11632
11976
  aggregationList: _angular_core.Signal<AggregationListComponent | undefined>;
11977
+ /**
11978
+ * Host-projected `<ng-template aggregationItem>`, relayed to the active list/tree
11979
+ * sub-component (the wrapper has no `<ng-content>`, so the sub-component's own
11980
+ * `contentChild` cannot see it). See {@link AggregationItemDirective}.
11981
+ */
11982
+ protected readonly itemDirective: _angular_core.Signal<AggregationItemDirective | undefined>;
11633
11983
  class: _angular_core.InputSignal<string>;
11634
11984
  /**
11635
11985
  * The name of the <details> element. When you provide the same id, the component work as an accordion
@@ -11673,6 +12023,13 @@ declare class AggregationComponent {
11673
12023
  * "Undefined" and not "false" because this input overrides the custom json settings
11674
12024
  */
11675
12025
  searchable: _angular_core.InputSignal<undefined>;
12026
+ /**
12027
+ * Whether to render the per-item checkbox (list/tree). When `false`, the checkbox
12028
+ * is hidden but selection still toggles on row click. Ignored by the date variant.
12029
+ *
12030
+ * @default true
12031
+ */
12032
+ showCheckbox: _angular_core.InputSignalWithTransform<boolean, unknown>;
11676
12033
  expandedLevel: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
11677
12034
  /**
11678
12035
  * Controls whether applying or clearing a filter synchronizes the URL.
@@ -11684,12 +12041,64 @@ declare class AggregationComponent {
11684
12041
  * @default true
11685
12042
  */
11686
12043
  syncUrl: _angular_core.InputSignalWithTransform<boolean, unknown>;
12044
+ /**
12045
+ * Controlled query. When set, the aggregation's own operations (load-more,
12046
+ * search-within-facet, tree-expand) run against this query instead of reading
12047
+ * the shared `QueryParamsStore`. Use to target a query not tied to the current
12048
+ * app, without mutating the shared store or the URL.
12049
+ *
12050
+ * @default undefined — read `QueryParamsStore.getQuery()` (current behavior)
12051
+ */
12052
+ controlledQuery: _angular_core.InputSignal<Query | undefined>;
12053
+ /**
12054
+ * Controlled data. When set, the component renders this aggregation object
12055
+ * (name/column/items) instead of reading it from the shared `AggregationsStore`.
12056
+ *
12057
+ * @default undefined — read `AggregationsStore` (current behavior)
12058
+ */
12059
+ controlledAggregation: _angular_core.InputSignal<Aggregation | undefined>;
12060
+ /**
12061
+ * Controlled selection. When set, item `$selected` state is derived from this
12062
+ * value (list: item values; tree: `"/A/B/*"` paths; date: the range) instead
12063
+ * of the shared `QueryParamsStore` filters.
12064
+ *
12065
+ * @default undefined — derive from `QueryParamsStore` filters (current behavior)
12066
+ */
12067
+ controlledSelection: _angular_core.InputSignal<AggregationSelection | undefined>;
12068
+ /**
12069
+ * Which sub-component renders the aggregation.
12070
+ *
12071
+ * `"auto"` (default) keeps the current heuristic: a date column of the app
12072
+ * (`AppStore.isDateColumn`) renders `<AggregationDate>`, a tree aggregation
12073
+ * renders `<AggregationTree>`, anything else `<AggregationList>`. Set an
12074
+ * explicit value in controlled mode when the heuristic cannot apply — e.g. a
12075
+ * date facet of a query not attached to the current app, whose column is
12076
+ * unknown to the app's column map.
12077
+ *
12078
+ * @default "auto"
12079
+ */
12080
+ type: _angular_core.InputSignal<"auto" | "list" | "tree" | "date">;
11687
12081
  /**
11688
12082
  * An output event that emits an array of selected `AggregationItem` objects when the user selects items in the aggregation component. This allows parent components to listen for selection changes and react accordingly, such as applying filters or updating the UI based on the selected items.
11689
12083
  */
11690
12084
  onSelect: _angular_core.OutputEmitterRef<AggregationItem[]>;
11691
12085
  onApply: _angular_core.OutputEmitterRef<void>;
11692
12086
  onClear: _angular_core.OutputEmitterRef<void>;
12087
+ /**
12088
+ * Emits the new selection when the user applies or clears filters in
12089
+ * controlled mode (list: item values; tree: `"/A/B/*"` paths; date: option or
12090
+ * range). The counterpart of the `[selection]` input — emitted before
12091
+ * `filtersChange` and `onApply`/`onClear`. In controlled mode this is the only
12092
+ * way changes surface: nothing is written to the shared stores or the URL.
12093
+ */
12094
+ selectionChange: _angular_core.OutputEmitterRef<AggregationSelection>;
12095
+ /**
12096
+ * Emits the applied selection as a structured `Filter` (the exact filter the
12097
+ * default mode would write to the store), ready for `fetchQuery({ filters })`.
12098
+ * `undefined` on clear. Controlled mode only — emitted after `selectionChange`,
12099
+ * before `onApply`/`onClear`.
12100
+ */
12101
+ filtersChange: _angular_core.OutputEmitterRef<Filter$2 | undefined>;
11693
12102
  /**
11694
12103
  * A computed property that retrieves the items to be displayed in the aggregation component. It checks for the presence of date, tree, or list aggregation components and returns their respective items. If none of these components are present, it returns an empty array. This allows the component to dynamically display the appropriate items based on the type of aggregation being rendered.
11695
12104
  *
@@ -11702,7 +12111,12 @@ declare class AggregationComponent {
11702
12111
  * @returns An array of selected items from the aggregation component.
11703
12112
  */
11704
12113
  protected selectedItems: _angular_core.Signal<AggregationItem[]>;
11705
- protected aggregation: _angular_core.Signal<_sinequa_atomic_angular.AggEx | undefined>;
12114
+ protected aggregation: _angular_core.Signal<Aggregation | undefined>;
12115
+ /**
12116
+ * The sub-component to render: the explicit `type` input, or the current
12117
+ * date/tree/list heuristic when `type` is `"auto"`.
12118
+ */
12119
+ protected resolvedType: _angular_core.Signal<"list" | "tree" | "date">;
11706
12120
  /**
11707
12121
  * Checks if the specified column is a date filter.
11708
12122
  *
@@ -11711,7 +12125,7 @@ declare class AggregationComponent {
11711
12125
  */
11712
12126
  protected isDate(column: string | undefined): boolean;
11713
12127
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationComponent, never>;
11714
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationComponent, "Aggregation, aggregation", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "expandedLevel": { "alias": "expandedLevel"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; }, never, never, true, never>;
12128
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationComponent, "Aggregation, aggregation", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "expandedLevel": { "alias": "expandedLevel"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; }, ["itemDirective"], never, true, never>;
11715
12129
  }
11716
12130
 
11717
12131
  declare class AggregationPanelComponent {
@@ -11750,18 +12164,37 @@ declare class AggregationPanelComponent {
11750
12164
  declare class AsideFiltersComponent {
11751
12165
  cn: typeof cn;
11752
12166
  class: _angular_core.InputSignal<string | undefined>;
11753
- position: _angular_core.InputSignal<"left" | "both" | undefined>;
11754
- private readonly appStore;
11755
- asideFilters: _angular_core.Signal<Aggregation[]>;
11756
12167
  /**
11757
- * Checks if the specified column is a date filter.
12168
+ * Explicit, developer-defined list of aggregations to display.
11758
12169
  *
11759
- * @param column The column name to check.
11760
- * @returns True if the column is a date filter, false otherwise.
12170
+ * Each entry is an aggregation **name** (preferred) or **column** — e.g.
12171
+ * `['Authors', 'Sources', 'Geo']`. Although typed as `string[]`, this is the list of
12172
+ * aggregations to render, not a list of raw column keys.
12173
+ *
12174
+ * When provided, it fully bypasses the JSON `filters` configuration (neither
12175
+ * `position`, `getAuthorized`, nor the admin `hidden` rule are applied): the listed
12176
+ * aggregations are rendered as-is, in the given order, provided they exist in the
12177
+ * {@link AggregationsStore}. When empty (default), the component falls back to the
12178
+ * JSON-driven behavior (`position: 'left' | 'both'`, excluding `hidden` aggregations).
12179
+ *
12180
+ * Resolution tries by `name` first — the canonical, unambiguous identifier, since a
12181
+ * `column` can be shared by several aggregations with distinct names — then falls back
12182
+ * to the first aggregation matching the given column. Prefer passing names.
11761
12183
  */
11762
- protected isDate(column: string): boolean;
12184
+ aggregations: _angular_core.InputSignal<string[]>;
12185
+ /**
12186
+ * When `true` (default), every section shares the same `id`, producing a native
12187
+ * `<details name>` accordion where a single section is open at a time. When `false`,
12188
+ * each section gets a unique id (based on the aggregation `name`) and expands
12189
+ * independently — closer to a typical SBA v2 "Facets List".
12190
+ */
12191
+ exclusive: _angular_core.InputSignalWithTransform<boolean, unknown>;
12192
+ private readonly appStore;
12193
+ private readonly aggregationsStore;
12194
+ private readonly aggregationsService;
12195
+ asideFilters: _angular_core.Signal<Pick<Aggregation, "name" | "column">[]>;
11763
12196
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AsideFiltersComponent, never>;
11764
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AsideFiltersComponent, "aside-filters, AsideFilters, asidefilters", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12197
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AsideFiltersComponent, "aside-filters, AsideFilters, asidefilters", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "aggregations": { "alias": "aggregations"; "required": false; "isSignal": true; }; "exclusive": { "alias": "exclusive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11765
12198
  }
11766
12199
 
11767
12200
  type CFilterEx = CFilter & {
@@ -11779,7 +12212,7 @@ declare class FilterButtonComponent {
11779
12212
  position: _angular_core.InputSignal<Placement>;
11780
12213
  offset: _angular_core.InputSignal<number>;
11781
12214
  expandedLevel: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
11782
- protected variant: _angular_core.WritableSignal<"default" | "icon" | "primary" | "secondary" | "destructive" | "ai" | "link" | "outline" | "accent" | "tertiary" | "ghost" | "light-accent" | "none" | null | undefined>;
12215
+ protected variant: _angular_core.WritableSignal<"default" | "link" | "primary" | "secondary" | "outline" | "accent" | "tertiary" | "ghost" | "light-accent" | "destructive" | "icon" | "ai" | "none" | null | undefined>;
11783
12216
  protected filter: _angular_core.WritableSignal<CFilterEx>;
11784
12217
  popoverRef: _angular_core.Signal<PopoverComponent | undefined>;
11785
12218
  protected nativeElement: any;
@@ -13231,465 +13664,26 @@ declare class FiltersBarComponent {
13231
13664
  }
13232
13665
 
13233
13666
  declare class MoreComponent {
13234
- cn: typeof cn;
13235
13667
  count: _angular_core.InputSignal<number>;
13236
13668
  includedFilters: _angular_core.InputSignal<string[]>;
13237
13669
  excludedFilters: _angular_core.InputSignal<string[]>;
13238
13670
  aggregations: _angular_core.InputSignal<Aggregation[] | undefined>;
13239
13671
  homepage: _angular_core.InputSignalWithTransform<boolean, unknown>;
13240
- appStore: {
13241
- name: _angular_core.Signal<string>;
13242
- description?: _angular_core.Signal<string | undefined> | undefined;
13243
- versionId: _angular_core.Signal<string>;
13244
- queries: _angular_core.Signal<Record<string, _sinequa_atomic.CCQuery>>;
13245
- rfms: _angular_core.Signal<Record<string, _sinequa_atomic.CCRFM>>;
13246
- indexes: _angular_core.Signal<{
13247
- _: _sinequa_atomic.CCIndex;
13248
- } & Record<string, _sinequa_atomic.CCIndex>>;
13249
- lists: _angular_core.Signal<Record<string, _sinequa_atomic.CCList>>;
13250
- webServices: _angular_core.Signal<Record<string, _sinequa_atomic.CCWebService>>;
13251
- queryNames: _angular_core.Signal<string>;
13252
- labels: _angular_core.Signal<string>;
13253
- preview: _angular_core.Signal<string>;
13254
- autocomplete: _angular_core.Signal<string>;
13255
- sponsoredLinks: _angular_core.Signal<string>;
13256
- queryExport: _angular_core.Signal<string>;
13257
- queryRssEnabled: _angular_core.Signal<boolean>;
13258
- data: _angular_core.Signal<Record<string, unknown> & _sinequa_atomic_angular.CJson & {
13259
- filters?: _sinequa_atomic_angular.CAggregation[];
13260
- autocomplete?: _sinequa_atomic_angular.Autocomplete;
13261
- tabs?: Record<string, {
13262
- filters: string[];
13263
- overviews?: Record<string, {
13264
- minRelevance: number;
13265
- }>;
13266
- }>;
13267
- sources?: _sinequa_atomic_angular.CSources;
13268
- features?: {
13269
- [key: string]: boolean | {
13270
- [key: string]: string | boolean | string[] | undefined;
13271
- } | undefined;
13272
- allowChangePassword?: boolean;
13273
- editablepartition?: boolean;
13274
- advancedSearch?: boolean;
13275
- allowChatDrawer?: boolean;
13276
- filterLinkChildren?: boolean;
13277
- expandPreview?: boolean;
13278
- quickFilter?: boolean;
13279
- showAggregationItemCount?: boolean;
13280
- assistant?: {
13281
- usePrefixName?: boolean;
13282
- };
13283
- filters?: {
13284
- homepage?: boolean;
13285
- };
13286
- userProfile?: {
13287
- enabled?: boolean;
13288
- data?: string[];
13289
- customData?: string[];
13290
- };
13291
- previewMultiConversion?: boolean;
13292
- persistFiltersAcrossTabs?: boolean;
13293
- };
13294
- allowAdvancedFilters?: boolean;
13295
- general?: {
13296
- name?: string;
13297
- logo?: {
13298
- alt?: string;
13299
- light?: {
13300
- small?: string;
13301
- large?: string;
13302
- sidebar?: string;
13303
- };
13304
- dark?: {
13305
- small?: string;
13306
- large?: string;
13307
- sidebar?: string;
13308
- };
13309
- };
13310
- features?: {
13311
- [key: string]: boolean | {
13312
- [key: string]: string | boolean | string[] | undefined;
13313
- } | undefined;
13314
- allowChangePassword?: boolean;
13315
- editablepartition?: boolean;
13316
- advancedSearch?: boolean;
13317
- allowChatDrawer?: boolean;
13318
- filterLinkChildren?: boolean;
13319
- expandPreview?: boolean;
13320
- quickFilter?: boolean;
13321
- showAggregationItemCount?: boolean;
13322
- assistant?: {
13323
- usePrefixName?: boolean;
13324
- };
13325
- filters?: {
13326
- homepage?: boolean;
13327
- };
13328
- userProfile?: {
13329
- enabled?: boolean;
13330
- data?: string[];
13331
- customData?: string[];
13332
- };
13333
- previewMultiConversion?: boolean;
13334
- persistFiltersAcrossTabs?: boolean;
13335
- };
13336
- converters?: _sinequa_atomic_angular.CConverter[];
13337
- feedback?: _sinequa_atomic_angular.CFeedback;
13338
- };
13339
- documentsUploadSettings?: {
13340
- enabled?: boolean;
13341
- };
13342
- }>;
13343
- customJSONs: _angular_core.Signal<{
13344
- name: string;
13345
- data: Record<string, unknown>;
13346
- }[] & _sinequa_atomic_angular.SideCJson[]>;
13347
- apiVersion: _angular_core.Signal<string>;
13348
- workspaceApp: _angular_core.Signal<string>;
13349
- defaultQueryName: _angular_core.Signal<string>;
13350
- auditEnabled?: _angular_core.Signal<boolean | undefined> | undefined;
13351
- dataSets?: _angular_core.Signal<string | undefined> | undefined;
13352
- revision?: _angular_core.Signal<number | undefined> | undefined;
13353
- runnableModels?: _angular_core.Signal<string | undefined> | undefined;
13354
- authorizationLevel?: _angular_core.Signal<string | undefined> | undefined;
13355
- columnMap?: _angular_core.Signal<Record<string, _sinequa_atomic.CCColumn> | undefined> | undefined;
13356
- customizationJson: _angular_core.Signal<_sinequa_atomic_angular.CJsonMint>;
13357
- sources: _angular_core.Signal<_sinequa_atomic_angular.CSources>;
13358
- filters: _angular_core.Signal<CFilter[]>;
13359
- general: _angular_core.Signal<{
13360
- name?: string;
13361
- logo?: {
13362
- alt?: string;
13363
- light?: {
13364
- small?: string;
13365
- large?: string;
13366
- sidebar?: string;
13367
- };
13368
- dark?: {
13369
- small?: string;
13370
- large?: string;
13371
- sidebar?: string;
13372
- };
13373
- };
13374
- features?: {
13375
- [key: string]: boolean | {
13376
- [key: string]: string | boolean | string[] | undefined;
13377
- } | undefined;
13378
- allowChangePassword?: boolean;
13379
- editablepartition?: boolean;
13380
- advancedSearch?: boolean;
13381
- allowChatDrawer?: boolean;
13382
- filterLinkChildren?: boolean;
13383
- expandPreview?: boolean;
13384
- quickFilter?: boolean;
13385
- showAggregationItemCount?: boolean;
13386
- assistant?: {
13387
- usePrefixName?: boolean;
13388
- };
13389
- filters?: {
13390
- homepage?: boolean;
13391
- };
13392
- userProfile?: {
13393
- enabled?: boolean;
13394
- data?: string[];
13395
- customData?: string[];
13396
- };
13397
- previewMultiConversion?: boolean;
13398
- persistFiltersAcrossTabs?: boolean;
13399
- };
13400
- converters?: _sinequa_atomic_angular.CConverter[];
13401
- feedback?: _sinequa_atomic_angular.CFeedback;
13402
- } | undefined>;
13403
- assistants: _angular_core.Signal<{
13404
- [x: string]: _sinequa_atomic_angular.AssistantDetails;
13405
- }>;
13406
- agents: _angular_core.Signal<{
13407
- [x: string]: {
13408
- defaultAgent: string;
13409
- };
13410
- }>;
13411
- initialize: () => Promise<void>;
13412
- initializeWithAppName: (appName: string) => Promise<void>;
13413
- update: (app: Partial<_sinequa_atomic_angular.CCAppState>) => void;
13414
- getWebServiceByType: (type: _sinequa_atomic.CCWebService["webServiceType"]) => _sinequa_atomic.CCWebService | undefined;
13415
- getLabels: () => {
13416
- private: string;
13417
- public: string;
13418
- };
13419
- getQueryByName: (name: string) => _sinequa_atomic.CCQuery | undefined;
13420
- getQueryByIndex: (index: number) => _sinequa_atomic.CCQuery | undefined;
13421
- getDefaultQuery: () => _sinequa_atomic.CCQuery | undefined;
13422
- allowEmptySearch: (queryName: string) => boolean;
13423
- enableFieldedSearch: (queryName: string) => boolean;
13424
- allowLabels: () => boolean;
13425
- getColumnAlias: (column: string) => string;
13426
- getColumn: (columnOrAlias: string) => _sinequa_atomic.CCColumn | undefined;
13427
- isDateColumn: (column: string) => boolean;
13428
- isTabSearch: (queryName: string) => boolean;
13429
- getAggregationCount: (queryName: string | undefined, aggregationName: string) => number;
13430
- getAuthorizedFilters: () => Aggregation[];
13431
- getAuthorized: (filters: Pick<CFilter, "column" | "name">[]) => Aggregation[];
13432
- getNamedCustomizationJson: (name: string) => unknown | undefined;
13433
- getAggregationIcon: (column: string) => string | undefined;
13434
- getAggregationItemsCustomization: (column: string) => _sinequa_atomic_angular.CFilterItem[] | undefined;
13435
- getAggregationCustomization: (aggColumn: string, aggName?: string) => CFilter | undefined;
13436
- isAssistantAllowed: (assistantName: string) => boolean;
13437
- isAgentAllowed: (agentName: string) => boolean;
13438
- } & _ngrx_signals.StateSource<{
13439
- name: string;
13440
- description?: string | undefined;
13441
- versionId: string;
13442
- queries: Record<string, _sinequa_atomic.CCQuery>;
13443
- rfms: Record<string, _sinequa_atomic.CCRFM>;
13444
- indexes: {
13445
- _: _sinequa_atomic.CCIndex;
13446
- } & Record<string, _sinequa_atomic.CCIndex>;
13447
- lists: Record<string, _sinequa_atomic.CCList>;
13448
- webServices: Record<string, _sinequa_atomic.CCWebService>;
13449
- queryNames: string;
13450
- labels: string;
13451
- preview: string;
13452
- autocomplete: string;
13453
- sponsoredLinks: string;
13454
- queryExport: string;
13455
- queryRssEnabled: boolean;
13456
- data: Record<string, unknown> & _sinequa_atomic_angular.CJson & {
13457
- filters?: _sinequa_atomic_angular.CAggregation[];
13458
- autocomplete?: _sinequa_atomic_angular.Autocomplete;
13459
- tabs?: Record<string, {
13460
- filters: string[];
13461
- overviews?: Record<string, {
13462
- minRelevance: number;
13463
- }>;
13464
- }>;
13465
- sources?: _sinequa_atomic_angular.CSources;
13466
- features?: {
13467
- [key: string]: boolean | {
13468
- [key: string]: string | boolean | string[] | undefined;
13469
- } | undefined;
13470
- allowChangePassword?: boolean;
13471
- editablepartition?: boolean;
13472
- advancedSearch?: boolean;
13473
- allowChatDrawer?: boolean;
13474
- filterLinkChildren?: boolean;
13475
- expandPreview?: boolean;
13476
- quickFilter?: boolean;
13477
- showAggregationItemCount?: boolean;
13478
- assistant?: {
13479
- usePrefixName?: boolean;
13480
- };
13481
- filters?: {
13482
- homepage?: boolean;
13483
- };
13484
- userProfile?: {
13485
- enabled?: boolean;
13486
- data?: string[];
13487
- customData?: string[];
13488
- };
13489
- previewMultiConversion?: boolean;
13490
- persistFiltersAcrossTabs?: boolean;
13491
- };
13492
- allowAdvancedFilters?: boolean;
13493
- general?: {
13494
- name?: string;
13495
- logo?: {
13496
- alt?: string;
13497
- light?: {
13498
- small?: string;
13499
- large?: string;
13500
- sidebar?: string;
13501
- };
13502
- dark?: {
13503
- small?: string;
13504
- large?: string;
13505
- sidebar?: string;
13506
- };
13507
- };
13508
- features?: {
13509
- [key: string]: boolean | {
13510
- [key: string]: string | boolean | string[] | undefined;
13511
- } | undefined;
13512
- allowChangePassword?: boolean;
13513
- editablepartition?: boolean;
13514
- advancedSearch?: boolean;
13515
- allowChatDrawer?: boolean;
13516
- filterLinkChildren?: boolean;
13517
- expandPreview?: boolean;
13518
- quickFilter?: boolean;
13519
- showAggregationItemCount?: boolean;
13520
- assistant?: {
13521
- usePrefixName?: boolean;
13522
- };
13523
- filters?: {
13524
- homepage?: boolean;
13525
- };
13526
- userProfile?: {
13527
- enabled?: boolean;
13528
- data?: string[];
13529
- customData?: string[];
13530
- };
13531
- previewMultiConversion?: boolean;
13532
- persistFiltersAcrossTabs?: boolean;
13533
- };
13534
- converters?: _sinequa_atomic_angular.CConverter[];
13535
- feedback?: _sinequa_atomic_angular.CFeedback;
13536
- };
13537
- documentsUploadSettings?: {
13538
- enabled?: boolean;
13539
- };
13540
- };
13541
- customJSONs: {
13542
- name: string;
13543
- data: Record<string, unknown>;
13544
- }[] & _sinequa_atomic_angular.SideCJson[];
13545
- apiVersion: string;
13546
- workspaceApp: string;
13547
- defaultQueryName: string;
13548
- auditEnabled?: boolean | undefined;
13549
- dataSets?: string | undefined;
13550
- revision?: number | undefined;
13551
- runnableModels?: string | undefined;
13552
- authorizationLevel?: string | undefined;
13553
- columnMap?: Record<string, _sinequa_atomic.CCColumn> | undefined;
13554
- }>;
13555
- aggregationsStore: {
13556
- aggregations: _angular_core.Signal<Aggregation[]>;
13557
- update: (aggregations: Aggregation[]) => void;
13558
- updateAggregation: (aggregation: Aggregation) => void;
13559
- clear: () => void;
13560
- getAggregation: (name: string, kind?: "column" | "name") => Aggregation | undefined;
13561
- } & _ngrx_signals.StateSource<{
13562
- aggregations: Aggregation[];
13563
- }>;
13564
- queryParamsStore: {
13565
- name?: _angular_core.Signal<string | undefined> | undefined;
13566
- text?: _angular_core.Signal<string | undefined> | undefined;
13567
- action?: _angular_core.Signal<"" | "open" | "search" | "aggregate" | undefined> | undefined;
13568
- select?: _angular_core.Signal<_sinequa_atomic.Select[] | undefined> | undefined;
13569
- open?: _angular_core.Signal<_sinequa_atomic.Open[] | undefined> | undefined;
13570
- page?: _angular_core.Signal<number | undefined> | undefined;
13571
- pageSize?: _angular_core.Signal<number | undefined> | undefined;
13572
- tab?: _angular_core.Signal<string | undefined> | undefined;
13573
- scope?: _angular_core.Signal<string | undefined> | undefined;
13574
- sort?: _angular_core.Signal<string | undefined> | undefined;
13575
- basket?: _angular_core.Signal<string | undefined> | undefined;
13576
- isFirstPage?: _angular_core.Signal<boolean | undefined> | undefined;
13577
- strictRefine?: _angular_core.Signal<boolean | undefined> | undefined;
13578
- globalRelevance?: _angular_core.Signal<number | undefined> | undefined;
13579
- questionLanguage?: _angular_core.Signal<string | undefined> | undefined;
13580
- questionDefaultLanguage?: _angular_core.Signal<string | undefined> | undefined;
13581
- spellingCorrectionMode?: _angular_core.Signal<_sinequa_atomic.SpellingCorrectionMode | undefined> | undefined;
13582
- spellingCorrectionFilter?: _angular_core.Signal<string | undefined> | undefined;
13583
- documentWeight?: _angular_core.Signal<string | undefined> | undefined;
13584
- textPartWeights?: _angular_core.Signal<string | undefined> | undefined;
13585
- relevanceTransforms?: _angular_core.Signal<string | undefined> | undefined;
13586
- removeDuplicates?: _angular_core.Signal<boolean | undefined> | undefined;
13587
- queryId?: _angular_core.Signal<string | undefined> | undefined;
13588
- aggregations?: _angular_core.Signal<string[] | Record<string, _sinequa_atomic.AggregationOptions> | undefined> | undefined;
13589
- orderBy?: _angular_core.Signal<string | undefined> | undefined;
13590
- groupBy?: _angular_core.Signal<string | undefined> | undefined;
13591
- neuralSearch?: _angular_core.Signal<boolean | undefined> | undefined;
13592
- path?: _angular_core.Signal<string | undefined> | undefined;
13593
- filters: _angular_core.Signal<_sinequa_atomic.LegacyFilter[]>;
13594
- id?: _angular_core.Signal<string | undefined> | undefined;
13595
- setFromUrl: (href: string) => void;
13596
- getQueryParams: () => {
13597
- f?: string;
13598
- p?: number;
13599
- s?: string;
13600
- t?: string;
13601
- q?: string;
13602
- b?: string;
13603
- n?: string;
13604
- };
13605
- addFilter: (filter: _sinequa_atomic.LegacyFilter, audit?: _sinequa_atomic.AuditEvents, options?: {
13606
- syncUrl?: boolean;
13607
- }) => void;
13608
- updateFilter: (newFilter: _sinequa_atomic.LegacyFilter, audit?: _sinequa_atomic.AuditEvents, options?: {
13609
- syncUrl?: boolean;
13610
- }) => void;
13611
- removeFilter: (field?: string, options?: {
13612
- syncUrl?: boolean;
13613
- }) => void;
13614
- removeFilterByName: (name?: string, column?: string, options?: {
13615
- syncUrl?: boolean;
13616
- }) => void;
13617
- clearFilters: (options?: {
13618
- syncUrl?: boolean;
13619
- }) => void;
13620
- clearBasket: (options?: {
13621
- syncUrl?: boolean;
13622
- }) => void;
13623
- patch: (params: Partial<_sinequa_atomic.QueryParams>, audit?: _sinequa_atomic.AuditEvents, options?: {
13624
- syncUrl?: boolean;
13625
- }) => void;
13626
- getFilter: ({ field, name }: {
13627
- field: string | undefined;
13628
- name: string | undefined;
13629
- }) => Partial<_sinequa_atomic.LegacyFilter & {
13630
- count: number;
13631
- }> | null;
13632
- getQuery: () => _sinequa_atomic.Query;
13633
- } & _ngrx_signals.StateSource<{
13634
- name?: string | undefined;
13635
- text?: string | undefined;
13636
- action?: "" | "search" | "open" | "aggregate" | undefined;
13637
- select?: _sinequa_atomic.Select[] | undefined;
13638
- open?: _sinequa_atomic.Open[] | undefined;
13639
- page?: number | undefined;
13640
- pageSize?: number | undefined;
13641
- tab?: string | undefined;
13642
- scope?: string | undefined;
13643
- sort?: string | undefined;
13644
- basket?: string | undefined;
13645
- isFirstPage?: boolean | undefined;
13646
- strictRefine?: boolean | undefined;
13647
- globalRelevance?: number | undefined;
13648
- questionLanguage?: string | undefined;
13649
- questionDefaultLanguage?: string | undefined;
13650
- spellingCorrectionMode?: _sinequa_atomic.SpellingCorrectionMode | undefined;
13651
- spellingCorrectionFilter?: string | undefined;
13652
- documentWeight?: string | undefined;
13653
- textPartWeights?: string | undefined;
13654
- relevanceTransforms?: string | undefined;
13655
- removeDuplicates?: boolean | undefined;
13656
- queryId?: string | undefined;
13657
- aggregations?: (Record<string, _sinequa_atomic.AggregationOptions> | string[]) | undefined;
13658
- orderBy?: string | undefined;
13659
- groupBy?: string | undefined;
13660
- neuralSearch?: boolean | undefined;
13661
- path?: string | undefined;
13662
- filters: _sinequa_atomic.LegacyFilter[];
13663
- id?: string | undefined;
13664
- }>;
13665
13672
  aggregationsService: AggregationsService;
13666
13673
  /**
13667
- * Signal containing an array of extended filter objects.
13674
+ * The overflow filters rendered as accordions: the authorized filters beyond the
13675
+ * first `count` (which are already shown in the bar).
13668
13676
  *
13669
13677
  * @remarks
13670
- * This signal holds the current state of filters that can be applied to data.
13671
- * The filters are of type CFilterEx[], which extends the base filter functionality.
13672
- *
13678
+ * Pure display wiring — authorization (and the admin `hidden` rule) is handled by
13679
+ * {@link AggregationsService.getAuthorizedFilters}; `toSpliced` just drops the
13680
+ * filters already shown in the bar.
13673
13681
  */
13674
- filters: _angular_core.WritableSignal<CFilterEx[]>;
13675
- /**
13676
- * Computed property that returns an array of filters that are currently visible.
13677
- * Filters out any filters where the `hidden` property is set to true.
13678
- *
13679
- * @returns An array of filters that are not hidden
13680
- */
13681
- visibleFilters: _angular_core.Signal<CFilterEx[]>;
13682
- constructor();
13683
- clearFilter(field: string): void;
13684
- updateFilters(): void;
13685
- /**
13686
- * Checks whether there are active filters for the current aggregation column.
13687
- *
13688
- * if True, the clear button is shown.
13689
- *
13690
- * @returns {boolean} `true` if the filter count for the aggregation column is greater than 0, otherwise `false`.
13691
- */
13692
- hasFilters(aggregation: Aggregation): boolean;
13682
+ filters: _angular_core.Signal<{
13683
+ field: string;
13684
+ column: string;
13685
+ name: string;
13686
+ }[]>;
13693
13687
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoreComponent, never>;
13694
13688
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MoreComponent, "more, More", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "includedFilters": { "alias": "includedFilters"; "required": false; "isSignal": true; }; "excludedFilters": { "alias": "excludedFilters"; "required": false; "isSignal": true; }; "aggregations": { "alias": "aggregations"; "required": false; "isSignal": true; }; "homepage": { "alias": "homepage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
13695
13689
  }
@@ -14208,7 +14202,7 @@ declare class RecentSearchesComponent {
14208
14202
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
14209
14203
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
14210
14204
  language?: _angular_core.Signal<string | undefined> | undefined;
14211
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
14205
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
14212
14206
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
14213
14207
  isDebugMode: _angular_core.Signal<boolean>;
14214
14208
  isDarkMode: _angular_core.Signal<boolean>;
@@ -14397,7 +14391,7 @@ declare class SavedSearchesComponent {
14397
14391
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
14398
14392
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
14399
14393
  language?: _angular_core.Signal<string | undefined> | undefined;
14400
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
14394
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
14401
14395
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
14402
14396
  isDebugMode: _angular_core.Signal<boolean>;
14403
14397
  isDarkMode: _angular_core.Signal<boolean>;
@@ -14492,7 +14486,7 @@ declare class UserProfileFormComponent {
14492
14486
  param9: _angular_core.Signal<string>;
14493
14487
  param10: _angular_core.Signal<string>;
14494
14488
  userOverrideActive: _angular_core.Signal<boolean>;
14495
- state: _angular_core.Signal<"error" | "initial" | "loading" | "loaded">;
14489
+ state: _angular_core.Signal<"initial" | "loading" | "loaded" | "error">;
14496
14490
  allowUserOverride: _angular_core.Signal<boolean>;
14497
14491
  isOverridingUser: _angular_core.Signal<boolean>;
14498
14492
  initials: _angular_core.Signal<string>;
@@ -14536,7 +14530,7 @@ declare class UserProfileFormComponent {
14536
14530
  alerts: _angular_core.Signal<_sinequa_atomic_angular.Alert[]>;
14537
14531
  collapseAssistant?: _angular_core.Signal<boolean | undefined> | undefined;
14538
14532
  language?: _angular_core.Signal<string | undefined> | undefined;
14539
- userTheme: _angular_core.Signal<"dark" | "light" | "system" | undefined>;
14533
+ userTheme: _angular_core.Signal<"light" | "dark" | "system" | undefined>;
14540
14534
  agents: _angular_core.Signal<_sinequa_atomic_angular.AgentUserSettings | undefined>;
14541
14535
  isDebugMode: _angular_core.Signal<boolean>;
14542
14536
  isDarkMode: _angular_core.Signal<boolean>;
@@ -15499,5 +15493,5 @@ type AppFeatures = {
15499
15493
  */
15500
15494
  declare const APP_FEATURES: InjectionToken<AppFeatures>;
15501
15495
 
15502
- export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedFiltersComponent, AdvancedSearch, AdvancedSearchComponent, AggregationComponent, AggregationDateComponent, AggregationDateRangeDialogComponent, AggregationListComponent, AggregationPanelComponent, AggregationTreeComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, ArticleEntities, ArticleExtracts, ArticleLabels, ArticleSimilarDocuments, AsideFiltersComponent, AuditFeedbackType, AuditService, AuthGuard, AuthPageComponent, AutocompleteService, BOOKMARKS_CONFIG, BOOKMARKS_OPTIONS, BackdropComponent, BackdropService, BookmarkButtonComponent, BookmarksComponent, COLLECTIONS_CONFIG, COLLECTIONS_OPTIONS, COMPONENTS_FOR_DOCUMENT_TYPE, ChangePasswordComponent, ChildMarkerDirective, CollectionsComponent, CollectionsDialog, DRAWER_COMPONENT, DRAWER_STACK_MAX_COUNT, DateComponent, DeleteCollectionDialog, DidYouMeanComponent, DocumentLocatorComponent, DrawerAdvancedFiltersComponent, DrawerComponent, DrawerNavbarComponent, DrawerPreviewComponent, DrawerService, DrawerStackComponent, DrawerStackService, DropdownInputComponent, DropdownListComponent, ErrorComponent, ExportDialog, ExportService, FILTERS_BREAKPOINT, FILTER_DATE_ALLOW_CUSTOM_RANGE, FeatureFlagsDialogComponent, FeedbackDialogComponent, FileSizePipe, FilterButtonComponent, FiltersBarComponent, HIGHLIGHTS, HighlightWordPipe, InfinityScrollDirective, InlineWorker, JsonMethodPluginService, KeyboardNavigatorDirective, LabelService, LabelsEditDialog, LoadingComponent, MetadataComponent, MissingTermsComponent, MoreButtonComponent, MoreComponent, MultiSelectLabelsComponent, MultiSelectionToolbarComponent, NON_SEARCHABLE_COLUMNS, NON_SEARCHABLE_DEFAULTS, NavbarTabsComponent, NavigationService, NoResultComponent, OpenArticleOnCtrlEnterDirective, OperatorPipe, OverflowItemDirective, OverflowManagerDirective, OverflowStopDirective, OverrideUserDialogComponent, PREVIEW_CONFIG, PagerComponent, PreviewNavigator, PreviewService, PrincipalService, PrincipalStore, QueryParamsStore, QueryService, RECENT_SEARCHES_CONFIG, RECENT_SEARCHES_OPTIONS, ROUTE_COMPONENTS, RecentSearchesComponent, ResetUserSettingsDialogComponent, SAVED_SEARCHES_CONFIG, SAVED_SEARCHES_OPTIONS, SavedSearchDialog, SavedSearchesComponent, SavedSearchesService, SearchFeedbackComponent, SearchInputFooter, SearchService, SelectArticleDirective, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SidebarNavComponent, SignInComponent, SignedOutComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserProfileDialog, UserProfileFormComponent, UserProfileService, UserSettingsStore, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, bootstrapApp, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, injectRouteNavigation, processCssVars, queryNameResolver, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures, withAppFeatures, withApplicationFeatures, withAssistantFeatures, withBasketsFeatures, withBookmarkFeatures, withBootstrapApp, withExtractsFeatures, withFetch, withMultiSelectionFeatures, withPrincipalFeatures, withQueryParamsFeatures, withRecentSearchesFeatures, withSavedSearchesFeatures, withSelectionFeatures, withThemeBodyHook, withThemes, withThemesFeatures, withUserSettingsFeatures };
15503
- export type { AgentUserSettings, AggEx, AggregationEx, AggregationListEx, AggregationListItem, AggregationTitle, AggregationTreeEx, AggregationsState, AppCJson, AppFeatures, ApplicationState, ArticleMetadata, AssistantDetails, Autocomplete, Basket, Bookmark, BookmarksConfig, CAggregation, CAggregationItem, CCAppState, CCWebServiceLabels, CConverter, CFeedback, CFilter, CFilterEx, CFilterItem, CJ, CJson, CJsonMint, CSources, CollectionsConfig, ComponentMapping, CssVars, DateRange, DocumentOffsets, DocumentPages, DocumentTypeMap, DropdownItem, ExportQueryOptions, Extract, FilterDropdown, KeyboardNavigationOnSelectionHandlers, KeyboardNavigatorOptions, LabelsConfig, MultiSelectionState, MultiSelectionToolbarVariants, NavRouteTab, PageConfiguration, PreviewEvents, PreviewHighlight, PreviewHighlightName, PreviewHighlights, PrincipalState, SearchItem, SearchOptions, SearchesConfig, SelectionHistoryEvent, SelectionState, SelectionStrategy, SideCJson, SortingChoice, Theme, ThemeBodyHookParameters, ThemeScope, ThemeStoreState, UserSettingsState };
15496
+ export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedFiltersComponent, AdvancedSearch, AdvancedSearchComponent, AggregationComponent, AggregationDateComponent, AggregationDateRangeDialogComponent, AggregationItemDirective, AggregationListComponent, AggregationPanelComponent, AggregationTreeComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, ArticleEntities, ArticleExtracts, ArticleLabels, ArticleSimilarDocuments, AsideFiltersComponent, AuditFeedbackType, AuditService, AuthGuard, AuthPageComponent, AutocompleteService, BOOKMARKS_CONFIG, BOOKMARKS_OPTIONS, BackdropComponent, BackdropService, BookmarkButtonComponent, BookmarksComponent, COLLECTIONS_CONFIG, COLLECTIONS_OPTIONS, COMPONENTS_FOR_DOCUMENT_TYPE, ChangePasswordComponent, ChildMarkerDirective, CollectionsComponent, CollectionsDialog, DRAWER_COMPONENT, DRAWER_STACK_MAX_COUNT, DateComponent, DeleteCollectionDialog, DidYouMeanComponent, DocumentLocatorComponent, DrawerAdvancedFiltersComponent, DrawerComponent, DrawerNavbarComponent, DrawerPreviewComponent, DrawerService, DrawerStackComponent, DrawerStackService, DropdownInputComponent, DropdownListComponent, ErrorComponent, ExportDialog, ExportService, FILTERS_BREAKPOINT, FILTER_DATE_ALLOW_CUSTOM_RANGE, FeatureFlagsDialogComponent, FeedbackDialogComponent, FileSizePipe, FilterButtonComponent, FiltersBarComponent, HIGHLIGHTS, HighlightWordPipe, InfinityScrollDirective, InlineWorker, JsonMethodPluginService, KeyboardNavigatorDirective, LabelService, LabelsEditDialog, LoadingComponent, MetadataComponent, MissingTermsComponent, MoreButtonComponent, MoreComponent, MultiSelectLabelsComponent, MultiSelectionToolbarComponent, NON_SEARCHABLE_COLUMNS, NON_SEARCHABLE_DEFAULTS, NavbarTabsComponent, NavigationService, NoResultComponent, OpenArticleOnCtrlEnterDirective, OperatorPipe, OverflowItemDirective, OverflowManagerDirective, OverflowStopDirective, OverrideUserDialogComponent, PREVIEW_CONFIG, PagerComponent, PreviewNavigator, PreviewService, PrincipalService, PrincipalStore, QueryParamsStore, QueryService, RECENT_SEARCHES_CONFIG, RECENT_SEARCHES_OPTIONS, ROUTE_COMPONENTS, RecentSearchesComponent, ResetUserSettingsDialogComponent, SAVED_SEARCHES_CONFIG, SAVED_SEARCHES_OPTIONS, SavedSearchDialog, SavedSearchesComponent, SavedSearchesService, SearchFeedbackComponent, SearchInputFooter, SearchService, SelectArticleDirective, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SidebarNavComponent, SignInComponent, SignedOutComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserProfileDialog, UserProfileFormComponent, UserProfileService, UserSettingsStore, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, bootstrapApp, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, injectRouteNavigation, legacyFilterToFilter, processCssVars, queryNameResolver, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures, withAppFeatures, withApplicationFeatures, withAssistantFeatures, withBasketsFeatures, withBookmarkFeatures, withBootstrapApp, withExtractsFeatures, withFetch, withMultiSelectionFeatures, withPrincipalFeatures, withQueryParamsFeatures, withRecentSearchesFeatures, withSavedSearchesFeatures, withSelectionFeatures, withThemeBodyHook, withThemes, withThemesFeatures, withUserSettingsFeatures };
15497
+ export type { AgentUserSettings, AggEx, AggregationEx, AggregationItemContext, AggregationListEx, AggregationListItem, AggregationSelection, AggregationTitle, AggregationTreeEx, AggregationTreeItemContext, AggregationsState, AppCJson, AppFeatures, ApplicationState, ArticleMetadata, AssistantDetails, Autocomplete, Basket, Bookmark, BookmarksConfig, CAggregation, CAggregationItem, CCAppState, CCWebServiceLabels, CConverter, CFeedback, CFilter, CFilterEx, CFilterItem, CJ, CJson, CJsonMint, CSources, CollectionsConfig, ComponentMapping, CssVars, DateRange, DocumentOffsets, DocumentPages, DocumentTypeMap, DropdownItem, ExportQueryOptions, Extract, FilterDropdown, KeyboardNavigationOnSelectionHandlers, KeyboardNavigatorOptions, LabelsConfig, MultiSelectionState, MultiSelectionToolbarVariants, NavRouteTab, PageConfiguration, PreviewEvents, PreviewHighlight, PreviewHighlightName, PreviewHighlights, PrincipalState, SearchItem, SearchOptions, SearchesConfig, SelectionHistoryEvent, SelectionState, SelectionStrategy, SideCJson, SortingChoice, Theme, ThemeBodyHookParameters, ThemeScope, ThemeStoreState, UserSettingsState };