{"version":3,"file":"taiga-ui-core-directives-items-handlers.mjs","sources":["../../../projects/core/directives/items-handlers/items-handlers.tokens.ts","../../../projects/core/directives/items-handlers/items-handlers.directive.ts","../../../projects/core/directives/items-handlers/items-handlers.validator.ts","../../../projects/core/directives/items-handlers/taiga-ui-core-directives-items-handlers.ts"],"sourcesContent":["import {\n    InjectionToken,\n    Optional,\n    type Provider,\n    type Signal,\n    signal,\n    SkipSelf,\n} from '@angular/core';\nimport {TUI_DEFAULT_IDENTITY_MATCHER, TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n    type TuiBooleanHandler,\n    type TuiIdentityMatcher,\n    type TuiStringHandler,\n} from '@taiga-ui/cdk/types';\n\nexport interface TuiItemsHandlers<T> {\n    readonly disabledItemHandler: Signal<TuiBooleanHandler<T>>;\n    readonly identityMatcher: Signal<TuiIdentityMatcher<T>>;\n    readonly stringify: Signal<TuiStringHandler<T>>;\n}\n\nexport const TUI_DEFAULT_ITEMS_HANDLERS: TuiItemsHandlers<unknown> = {\n    stringify: signal(String),\n    identityMatcher: signal(TUI_DEFAULT_IDENTITY_MATCHER),\n    disabledItemHandler: signal(TUI_FALSE_HANDLER),\n};\n\n/**\n * Default items handlers for components\n */\nexport const TUI_ITEMS_HANDLERS = new InjectionToken(\n    ngDevMode ? 'TUI_ITEMS_HANDLERS' : '',\n    {factory: () => TUI_DEFAULT_ITEMS_HANDLERS},\n);\n\nexport function tuiItemsHandlersProvider<T>(\n    options: Partial<TuiItemsHandlers<T>>,\n): Provider {\n    return {\n        provide: TUI_ITEMS_HANDLERS,\n        deps: [[new Optional(), new SkipSelf(), TUI_ITEMS_HANDLERS]],\n        useFactory: (parent: TuiItemsHandlers<T> | null): TuiItemsHandlers<T> => ({\n            stringify: signal(\n                parent?.stringify() ?? TUI_DEFAULT_ITEMS_HANDLERS.stringify(),\n            ),\n            identityMatcher: signal(\n                parent?.identityMatcher() ?? TUI_DEFAULT_ITEMS_HANDLERS.identityMatcher(),\n            ),\n            disabledItemHandler: signal(\n                parent?.disabledItemHandler() ??\n                    TUI_DEFAULT_ITEMS_HANDLERS.disabledItemHandler(),\n            ),\n            ...options,\n        }),\n    };\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_ITEMS_HANDLERS, type TuiItemsHandlers} from './items-handlers.tokens';\n\n@Directive({providers: [tuiProvide(TUI_ITEMS_HANDLERS, TuiItemsHandlersDirective)]})\nexport class TuiItemsHandlersDirective<T> implements TuiItemsHandlers<T> {\n    private readonly handlers = inject<TuiItemsHandlers<T>>(TUI_ITEMS_HANDLERS, {\n        skipSelf: true,\n    });\n\n    public readonly stringify = input(this.handlers.stringify());\n    public readonly identityMatcher = input(this.handlers.identityMatcher());\n    public readonly disabledItemHandler = input(this.handlers.disabledItemHandler());\n}\n\n@Directive({\n    hostDirectives: [\n        {\n            directive: TuiItemsHandlersDirective,\n            inputs: ['stringify', 'identityMatcher', 'disabledItemHandler'],\n        },\n    ],\n})\nexport class TuiWithItemsHandlers {}\n","import {Directive, effect, inject} from '@angular/core';\nimport {NG_VALIDATORS, type ValidatorFn} from '@angular/forms';\nimport {TuiValidator} from '@taiga-ui/cdk/directives/validator';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TuiItemsHandlersDirective} from './items-handlers.directive';\n\n@Directive({providers: [tuiProvide(NG_VALIDATORS, TuiItemsHandlersValidator, true)]})\nexport class TuiItemsHandlersValidator extends TuiValidator {\n    private readonly handlers = inject(TuiItemsHandlersDirective);\n    private initialized = false;\n\n    protected readonly update = effect(() => {\n        this.handlers.disabledItemHandler();\n\n        if (this.initialized) {\n            this.onChange();\n        } else {\n            this.initialized = true;\n        }\n    });\n\n    public disabledItemHandler: TuiBooleanHandler<any> = (value) =>\n        Array.isArray(value)\n            ? value.some((item) => this.handlers.disabledItemHandler()(item))\n            : Boolean(value) && this.handlers.disabledItemHandler()(value);\n\n    public override validate: ValidatorFn = ({value}) =>\n        this.disabledItemHandler(value) ? {tuiDisabledItem: value} : null;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}