import { PropertyFilterOperation, PropertyFilterOperator, PropertyFilterOperatorForm, PropertyFilterProperty, PropertyFilterTokenType } from '@cloudscape-design/collection-hooks'; import { ComparisonOperator, PropertyFilterTextOperatorExtended } from './interfaces'; export interface InternalFilteringProperty { propertyKey: string; propertyLabel: string; groupValuesLabel: string; propertyGroup?: string; operators: readonly PropertyFilterOperator[]; defaultOperator: PropertyFilterOperator; getTokenType: (operator?: PropertyFilterOperator) => PropertyFilterTokenType; getValueFormatter: (operator?: PropertyFilterOperator) => null | ((value: any) => string); getValueFormRenderer: (operator?: PropertyFilterOperator) => null | PropertyFilterOperatorForm; getOperatorDescription: (operator?: PropertyFilterOperator) => string | null; externalProperty: PropertyFilterProperty; } export interface InternalFilteringOption { property: null | InternalFilteringProperty; value: string; label: string; tags?: ReadonlyArray; filteringTags?: ReadonlyArray; } export interface InternalFreeTextFiltering { disabled: boolean; operators: readonly (PropertyFilterOperator | PropertyFilterTextOperatorExtended)[]; defaultOperator: PropertyFilterOperator; } export interface InternalToken { standaloneIndex?: number; property: null | InternalFilteringProperty; operator: PropertyFilterOperator; value: TokenValue; } export interface InternalTokenGroup { operation: PropertyFilterOperation; tokens: readonly (InternalToken | InternalTokenGroup)[]; } export type InternalQuery = InternalTokenGroup; export type ParsedText = { step: 'property'; property: InternalFilteringProperty; operator: ComparisonOperator; value: string; } | { step: 'operator'; property: InternalFilteringProperty; operatorPrefix: string; } | { step: 'free-text'; operator?: ComparisonOperator; value: string; };