UNPKG

@mcabreradev/filter

Version:

A powerful, SQL-like array filtering library for TypeScript and JavaScript with advanced pattern matching, MongoDB-style operators, deep object comparison, and zero dependencies

54 lines (53 loc) 1.91 kB
import { Signal, PipeTransform } from '@angular/core'; import { filter } from '../../core/filter/filter'; import type { Expression, FilterOptions } from '../../types'; export declare class FilterService<T> { private dataSignal; private expressionSignal; private optionsSignal; readonly filtered: Signal<T[]>; readonly isFiltering: Signal<boolean>; setData: (data: T[]) => void; setExpression: (expr: Expression<T> | null) => void; setOptions: (opts: FilterOptions) => void; reset: () => void; } export declare class FilterPipe implements PipeTransform { transform<T>(data: T[] | null | undefined, expr: Expression<T>, opts?: FilterOptions): T[]; } export declare class DebouncedFilterService<T> { private dataSignal; private expressionSignal; private optionsSignal; private timer; private pendingSignal; readonly filtered: Signal<T[]>; readonly isFiltering: Signal<boolean>; readonly isPending: Signal<boolean>; setData: (data: T[]) => void; setOptions: (opts: FilterOptions) => void; setExpressionDebounced: (expr: Expression<T> | null, delay?: number) => void; reset: () => void; } export declare class PaginatedFilterService<T> { private dataSignal; private expressionSignal; private optionsSignal; private pageSignal; private pageSizeSignal; readonly filtered: Signal<T[]>; readonly isFiltering: Signal<boolean>; readonly currentPage: Signal<number>; readonly pageSize: Signal<number>; readonly paginatedResults: Signal<T[]>; readonly totalPages: Signal<number>; setData: (data: T[]) => void; setExpression: (expr: Expression<T> | null) => void; setOptions: (opts: FilterOptions) => void; setPage: (page: number) => void; setPageSize: (size: number) => void; nextPage: () => void; prevPage: () => void; reset: () => void; } export { filter };