{"version":3,"file":"taiga-ui-addon-table-directives-table-filters.mjs","sources":["../../../projects/addon-table/directives/table-filters/abstract-table-filter.ts","../../../projects/addon-table/directives/table-filters/generic-filter.directive.ts","../../../projects/addon-table/directives/table-filters/table-filters.directive.ts","../../../projects/addon-table/directives/table-filters/table-filter.directive.ts","../../../projects/addon-table/directives/table-filters/table-filters.pipe.ts","../../../projects/addon-table/directives/table-filters/table-filters.ts","../../../projects/addon-table/directives/table-filters/taiga-ui-addon-table-directives-table-filters.ts"],"sourcesContent":["import {type Signal} from '@angular/core';\n\nexport abstract class AbstractTuiTableFilter<T, G> {\n    public abstract filter: Signal<(item: T, value: G) => boolean>;\n}\n","import {Directive, input} from '@angular/core';\nimport {TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {AbstractTuiTableFilter} from './abstract-table-filter';\n\n@Directive({\n    selector: '[tuiGenericFilter]',\n    providers: [tuiProvide(AbstractTuiTableFilter, TuiGenericFilter)],\n})\nexport class TuiGenericFilter<T, G> extends AbstractTuiTableFilter<T, G> {\n    public readonly filter = input<(item: T, value: G) => boolean>(TUI_TRUE_HANDLER, {\n        alias: 'tuiGenericFilter',\n    });\n}\n","import {Directive} from '@angular/core';\nimport {\n    identity,\n    map,\n    merge,\n    type Observable,\n    ReplaySubject,\n    startWith,\n    switchMap,\n} from 'rxjs';\n\nimport {type TuiTableFilter} from './table-filter';\n\n@Directive({selector: '[tuiTableFilters]'})\nexport class TuiTableFiltersDirective<T> {\n    private readonly refresh$ = new ReplaySubject<Observable<unknown>>(1);\n\n    private filters: ReadonlyArray<TuiTableFilter<T>> = [];\n\n    public register(filter: TuiTableFilter<T>): void {\n        this.filters = this.filters.concat(filter);\n        this.update();\n    }\n\n    public unregister(filter: TuiTableFilter<T>): void {\n        this.filters = this.filters.filter((item) => item !== filter);\n        this.update();\n    }\n\n    public filter(items: readonly T[]): Observable<readonly T[]> {\n        return this.refresh$.pipe(\n            switchMap(identity),\n            startWith(null),\n            map(() => items.filter((item) => this.check(item))),\n        );\n    }\n\n    private check(item: T): boolean {\n        return this.filters.every((filter) => filter.filter(item));\n    }\n\n    private update(): void {\n        this.refresh$.next(merge(...this.filters.map(({refresh$}) => refresh$)));\n    }\n}\n","import {\n    computed,\n    Directive,\n    inject,\n    input,\n    type OnDestroy,\n    type OnInit,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TuiTableHead} from '@taiga-ui/addon-table/components/table';\nimport {defer, distinctUntilChanged, EMPTY, merge} from 'rxjs';\n\nimport {AbstractTuiTableFilter} from './abstract-table-filter';\nimport {type TuiTableFilter} from './table-filter';\nimport {TuiTableFiltersDirective} from './table-filters.directive';\n\n@Directive({selector: '[tuiTableFilter]'})\nexport class TuiTableFilterDirective<T> implements OnInit, OnDestroy, TuiTableFilter<T> {\n    private readonly head = inject(TuiTableHead<T>, {optional: true});\n    private readonly delegate = inject(AbstractTuiTableFilter<T[keyof T], unknown>);\n    private readonly control = inject(NgControl);\n    protected readonly filters = inject(TuiTableFiltersDirective<T>);\n    protected readonly key = computed<string | keyof T | undefined>(\n        () => this.tuiTableFilter() || this.head?.tuiHead(),\n    );\n\n    public readonly tuiTableFilter = input<keyof T>();\n\n    public readonly refresh$ = defer(() =>\n        merge(\n            this.control.valueChanges || EMPTY,\n            this.control.statusChanges?.pipe(distinctUntilChanged()) || EMPTY,\n        ),\n    );\n\n    public ngOnInit(): void {\n        this.filters.register(this);\n    }\n\n    public ngOnDestroy(): void {\n        this.filters.unregister(this);\n    }\n\n    public filter(item: T): boolean {\n        const {disabled, value} = this.control;\n\n        return (\n            !!disabled ||\n            !this.key() ||\n            this.delegate.filter()(item[this.key() as keyof T], value)\n        );\n    }\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {type Observable} from 'rxjs';\n\nimport {TuiTableFiltersDirective} from './table-filters.directive';\n\n@Pipe({name: 'tuiTableFilters'})\nexport class TuiTableFiltersPipe<T> implements PipeTransform {\n    private readonly filters = inject(TuiTableFiltersDirective<T>);\n\n    public transform<T>(items: readonly T[]): Observable<readonly T[]> {\n        return this.filters.filter(items);\n    }\n}\n","import {TuiGenericFilter} from './generic-filter.directive';\nimport {TuiTableFilterDirective} from './table-filter.directive';\nimport {TuiTableFiltersDirective} from './table-filters.directive';\nimport {TuiTableFiltersPipe} from './table-filters.pipe';\n\nexport const TuiTableFilters = [\n    TuiTableFiltersDirective,\n    TuiTableFilterDirective,\n    TuiTableFiltersPipe,\n    TuiGenericFilter,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}