react-querybuilder
Version:
React Query Builder component for constructing queries and filters, with utilities for executing them in various database and evaluation contexts
119 lines (118 loc) • 4.33 kB
text/typescript
import type { BaseOption, BaseOptionMap, FlexibleOption, FlexibleOptionGroup, FlexibleOptionList, FullOption, FullOptionList, GetOptionIdentifierType, Option, OptionGroup, OptionList, RequireAtLeastOne, ToFullOption, WithUnknownIndex } from "../types/index.noReact.mjs";
/**
* Converts an {@link Option} or {@link ValueOption} (i.e., {@link BaseOption})
* into a {@link FullOption}. Full options are left unchanged.
*
* @group Option Lists
*/
export declare function toFullOption<Opt extends BaseOption>(opt: Opt, baseProperties?: Record<string, unknown>): ToFullOption<Opt>;
/**
* Converts an {@link OptionList} or {@link FlexibleOptionList} into a {@link FullOptionList}.
* Lists of full options are left unchanged.
*
* @group Option Lists
*/
export declare function toFullOptionList<
Opt extends BaseOption,
OptList extends FlexibleOptionList<Opt>
>(optList: OptList, baseProperties?: Record<string, unknown>): FullOptionList<Opt>;
/**
* Converts a {@link FlexibleOptionList} into a {@link FullOptionList}.
* Lists of full options are left unchanged.
*
* @group Option Lists
*/
export declare function toFullOptionMap<OptMap extends BaseOptionMap>(optMap: OptMap, baseProperties?: Record<string, unknown>): OptMap extends BaseOptionMap<infer V, infer K> ? Partial<Record<K, ToFullOption<V>>> : never;
/**
* @deprecated Renamed to {@link uniqByIdentifier}.
*
* @group Option Lists
*/
export declare const uniqByName: <T extends {
name: string
value?: string
} | {
name?: string
value: string
}>(originalArray: T[]) => T[];
/**
* Generates a new array of objects with duplicates removed based
* on the identifying property (`value` or `name`)
*
* @group Option Lists
*/
export declare const uniqByIdentifier: <T extends RequireAtLeastOne<{
name: string
value: string
}, "name" | "value">>(originalArray: T[]) => T[];
/**
* Determines if an {@link OptionList} is an {@link OptionGroup} array.
*
* @group Option Lists
*/
export declare const isOptionGroupArray: (arr: any) => arr is OptionGroup<BaseOption>[];
/**
* Determines if an array is a flat array of {@link FlexibleOption}.
*
* @group Option Lists
*/
export declare const isFlexibleOptionArray: (arr: any) => arr is FlexibleOption[];
/**
* Determines if an array is a flat array of {@link FullOption}.
*
* @group Option Lists
*/
export declare const isFullOptionArray: (arr: any) => arr is FullOption[];
/**
* Determines if a {@link FlexibleOptionList} is a {@link FlexibleOptionGroup} array.
*
* @group Option Lists
*/
export declare const isFlexibleOptionGroupArray: (arr: any, { allowEmpty }?: {
allowEmpty?: boolean
}) => arr is FlexibleOptionGroup[];
/**
* Determines if a {@link FlexibleOptionList} is a {@link OptionGroup} array of {@link FullOption}.
*
* @group Option Lists
*/
export declare const isFullOptionGroupArray: (arr: any, { allowEmpty }?: {
allowEmpty?: boolean
}) => arr is OptionGroup<FullOption>[];
/**
* Gets the option from an {@link OptionList} with the given `name`. Handles
* {@link Option} arrays as well as {@link OptionGroup} arrays.
*
* @group Option Lists
*/
export declare const getOption: <OptType extends Option = Option>(arr: OptionList<OptType>, name: string) => OptType | undefined;
/**
* Gets the first option from an {@link OptionList}.
*
* @group Option Lists
*/
export declare const getFirstOption: <Opt extends BaseOption>(arr?: FlexibleOptionGroup<Opt>[] | Opt[]) => GetOptionIdentifierType<Opt> | null;
/**
* Flattens {@link FlexibleOptionGroup} arrays into {@link BaseOption} arrays.
* If the array is already flat, it is returned as is.
*
* @group Option Lists
*/
export declare const toFlatOptionArray: <
T extends FullOption,
OL extends FullOptionList<T>
>(arr: OL) => T[];
/**
* Generates a new {@link OptionGroup} array with duplicates
* removed based on the identifying property (`value` or `name`).
*
* @group Option Lists
*/
export declare const uniqOptGroups: <T extends BaseOption>(originalArray: FlexibleOptionGroup<T>[]) => OptionGroup<ToFullOption<T>>[];
/**
* Generates a new {@link Option} or {@link OptionGroup} array with duplicates
* removed based on the identifier property (`value` or `name`).
*
* @group Option Lists
*/
export declare const uniqOptList: <T extends BaseOption>(originalArray: FlexibleOptionList<T>) => WithUnknownIndex<BaseOption & FullOption>[] | OptionGroup<ToFullOption<T>>[];