@taiga-ui/kit
Version:
Taiga UI Angular main components kit
1 lines • 4.02 kB
Source Map (JSON)
{"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;;;;"}