import { OnInit } from '@angular/core'; import type { FilterValueType, FilterBarLabels, FilterOption, FilterOptionsLoader, FilterContext, TreeNode, SliderConfig } from './filter-bar.models'; import * as i0 from "@angular/core"; /** * Filter Value Selector Component * * IMPORTANT: Range Filter Emit Logic (for number-range and number-range-slider types) * ================================================================================== * * This component emits values in NESTED ARRAY FORMAT for range filters to distinguish * between range boundaries and discrete values: * * EMIT PATTERNS: * -------------- * 1. Range only (active range, no discrete): * Emits: [[from, to]] * Example: [[38, 100]] → range from 38 to 100 * * 2. Range + discrete values: * Emits: [[from, to], discrete1, discrete2, ...] * Example: [[38, 100], 45, 63] → range 38-100 AND discrete values 45, 63 * * 3. Discrete only (no active range): * Emits: [discrete1, discrete2, ...] * Example: [45, 63] → discrete values 45 and 63 only (NO range) * * ACTIVE RANGE DETECTION: * ----------------------- * A range is considered "active" when it's NOT at default boundaries: * hasActiveRange = (rangeMin !== min) || (rangeMax !== max) * * If hasActiveRange = false: * - Range is at default boundaries (e.g., 0-100) * - Only discrete values are emitted (no range tuple) * - This prevents unwanted full-range queries in Elasticsearch * * DUAL-MODE SUPPORT (IN/EX Toggle): * ---------------------------------- * Range filters support both include and exclude modes via rangeMode property: * - rangeMode = 'include': emits included range/discrete values * - rangeMode = 'exclude': emits excluded range/discrete values * * The component maintains separate discrete value arrays: * - discreteIncluded: discrete values for IN mode * - discreteExcluded: discrete values for EX mode * * NESTED ARRAY RATIONALE: * ----------------------- * Using nested arrays [[from, to], discrete...] allows filter-chip to distinguish: * - [[45, 63]] → range from 45 to 63 * - [45, 63] → two discrete values: 45 and 63 * * Without nested arrays, both cases would look identical and be ambiguous! * * @see filter-chip.component.ts for parsing logic * @see filter-bar.models.ts for extractRange() and extractDiscreteValues() helpers */ export declare class FilterValueSelectorComponent implements OnInit { readonly showHeader: import("@angular/core").InputSignal; readonly showFooter: import("@angular/core").InputSignal; readonly headerLabel: import("@angular/core").InputSignal; readonly headerBadge: import("@angular/core").InputSignal; readonly headerBadgeColor: import("@angular/core").InputSignal; readonly showModeToggle: import("@angular/core").InputSignal; readonly valueType: import("@angular/core").InputSignal; readonly loading: import("@angular/core").InputSignal; readonly options: import("@angular/core").InputSignal; readonly displayOptions: import("@angular/core").InputSignal; readonly selected: import("@angular/core").InputSignal; readonly selectedExcluded: import("@angular/core").InputSignal<(string | number)[]>; readonly editingMode: import("@angular/core").InputSignal<"include" | "exclude">; readonly min: import("@angular/core").InputSignal; readonly max: import("@angular/core").InputSignal; readonly step: import("@angular/core").InputSignal; readonly labels: import("@angular/core").InputSignal; readonly placeholder: import("@angular/core").InputSignal; readonly optionsLoader: import("@angular/core").InputSignal; readonly filterContext: import("@angular/core").InputSignal; readonly enableVirtualScroll: import("@angular/core").InputSignal; readonly virtualScrollItemSize: import("@angular/core").InputSignal; readonly virtualScrollThreshold: import("@angular/core").InputSignal; readonly sliderConfig: import("@angular/core").InputSignal; readonly treeNodes: import("@angular/core").InputSignal; readonly dateFormat: import("@angular/core").InputSignal; readonly showTime: import("@angular/core").InputSignal; readonly hasClearButton: import("@angular/core").InputSignal; readonly cancelEvent: import("@angular/core").OutputEmitterRef; readonly applyEvent: import("@angular/core").OutputEmitterRef<(string | number | boolean)[]>; readonly modeChanged: import("@angular/core").OutputEmitterRef<"include" | "exclude">; readonly searchQuery: import("@angular/core").WritableSignal; selectAll: boolean; rangeMode: 'include' | 'exclude'; readonly isLoading: import("@angular/core").WritableSignal; readonly hasError: import("@angular/core").WritableSignal; private readonly internalSelected; private readonly loadedOptions; dateFrom: Date | null; dateTo: Date | null; rangeMin: number; rangeMax: number; rangeValues: number[]; sliderValues: number[]; discreteIncluded: (string | number)[]; discreteExcluded: (string | number)[]; radioValue: string | number | boolean | null; textValue: string; numberValue: number | null; toggleValue: boolean; queryValue: string | number | boolean | null; treeSelectedNodes: any; autocompleteValue: string[]; selectedListboxValues: (string | number | boolean)[]; readonly autocompleteSuggestions: import("@angular/core").WritableSignal; readonly effectiveOptions: import("@angular/core").Signal; readonly showSearch: import("@angular/core").Signal; readonly rangeFloor: import("@angular/core").Signal; readonly rangeCeil: import("@angular/core").Signal; readonly rangeStep: import("@angular/core").Signal; readonly sliderMin: import("@angular/core").Signal; readonly sliderMax: import("@angular/core").Signal; readonly sliderStep: import("@angular/core").Signal; readonly sliderUnit: import("@angular/core").Signal; readonly filteredDisplayOptions: import("@angular/core").Signal; readonly allSelected: import("@angular/core").Signal; readonly selectedValues: import("@angular/core").Signal; constructor(); private _selectedEffect; ngOnInit(): void; private _initializeFromSelected; isOptionSelected(value: string | number | boolean): boolean; onAddOption(option: string): void; onRemoveOption(option: string): void; onSelectAll(): void; onDeselectAll(): void; onRemoveDiscreteIncluded(value: string | number): void; onRemoveDiscreteExcluded(value: string | number): void; onToggleModeFromHeader(mode: 'include' | 'exclude'): void; syncSliderFromInputs(): void; syncInputsFromSlider(): void; validateDateRange(): void; validateSliderRange(): void; onAutocompleteSearch(event: any): void; onClear(): void; onApply(): void; private _getEffectiveOptions; private _loadAsyncOptions; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }