{"version":3,"file":"taiga-ui-kit-pipes-hide-selected.mjs","sources":["../../../projects/kit/pipes/hide-selected/hide-selected.pipe.ts","../../../projects/kit/pipes/hide-selected/taiga-ui-kit-pipes-hide-selected.ts"],"sourcesContent":["import {\n    computed,\n    inject,\n    Pipe,\n    type PipeTransform,\n    signal,\n    untracked,\n} from '@angular/core';\nimport {type TuiIdentityMatcher} from '@taiga-ui/cdk/types';\nimport {tuiIsFlat} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiTextfieldMultiComponent} from '@taiga-ui/core/components/textfield';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\n\n@Pipe({name: 'tuiHideSelected', pure: false})\nexport class TuiHideSelectedPipe implements PipeTransform {\n    private readonly textfield = inject(TuiTextfieldMultiComponent);\n    private readonly handlers = inject(TUI_ITEMS_HANDLERS);\n    private readonly items = signal<readonly any[] | null>([]);\n\n    private readonly filtered = computed(() => {\n        const items = this.items();\n        const value = this.textfield.cva()?.value() || [];\n\n        if (!items) {\n            return null;\n        }\n\n        return tuiIsFlat(items)\n            ? this.filter(items, value, this.handlers.identityMatcher())\n            : this.filter2d(items, value, this.handlers.identityMatcher());\n    });\n\n    public transform<T>(items: readonly T[] | null): readonly T[] | null;\n    public transform<T>(\n        items: ReadonlyArray<readonly T[]> | null,\n    ): ReadonlyArray<readonly T[]> | null;\n    public transform<T>(\n        items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n    ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n        untracked(() => {\n            this.items.set(items);\n        });\n\n        return this.filtered() as ReadonlyArray<readonly T[]> | readonly T[] | null;\n    }\n\n    private filter2d<T>(\n        items: ReadonlyArray<readonly T[]>,\n        value: readonly T[],\n        matcher: TuiIdentityMatcher<T>,\n    ): ReadonlyArray<readonly T[]> {\n        return items.map((subItems) => this.filter(subItems, value, matcher));\n    }\n\n    private filter<T>(\n        items: readonly T[],\n        value: readonly T[],\n        matcher: TuiIdentityMatcher<T>,\n    ): readonly T[] {\n        return items.filter((item) =>\n            value.every((selected) => !matcher(selected, item)),\n        );\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAca,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC9C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAwB,EAAE,CAAC;AAEzC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YAEjD,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,OAAO,IAAI;YACf;YAEA,OAAO,SAAS,CAAC,KAAK;AAClB,kBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC3D,kBAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;AACtE,QAAA,CAAC,CAAC;AAiCL,IAAA;AA3BU,IAAA,SAAS,CACZ,KAAwD,EAAA;QAExD,SAAS,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAuD;IAC/E;AAEQ,IAAA,QAAQ,CACZ,KAAkC,EAClC,KAAmB,EACnB,OAA8B,EAAA;QAE9B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzE;AAEQ,IAAA,MAAM,CACV,KAAmB,EACnB,KAAmB,EACnB,OAA8B,EAAA;QAE9B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KACrB,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CACtD;IACL;+GAhDS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAC;;;ACb5C;;AAEG;;;;"}