{"version":3,"file":"taiga-ui-kit-components-input-date-multi.mjs","sources":["../../../projects/kit/components/input-date-multi/input-date-multi.options.ts","../../../projects/kit/components/input-date-multi/input-date-multi.directive.ts","../../../projects/kit/components/input-date-multi/input-date-multi.ts","../../../projects/kit/components/input-date-multi/taiga-ui-kit-components-input-date-multi.ts"],"sourcesContent":["import {type FactoryProvider, inject, InjectionToken} from '@angular/core';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {type TuiDay} from '@taiga-ui/cdk/date-time';\nimport {\n    TUI_INPUT_DATE_OPTIONS,\n    type TuiInputDateOptions,\n} from '@taiga-ui/kit/components/input-date';\n\nexport interface TuiInputDateMultiOptions extends Omit<\n    TuiInputDateOptions,\n    'valueTransformer'\n> {\n    readonly valueTransformer: TuiValueTransformer<TuiDay[]>;\n}\n\nexport const TUI_INPUT_DATE_MULTI_OPTIONS = new InjectionToken<TuiInputDateMultiOptions>(\n    ngDevMode ? 'TUI_INPUT_DATE_MULTI_OPTIONS' : '',\n);\n\nexport function tuiInputDateMultiOptionsFactory(): TuiInputDateMultiOptions {\n    const options = inject(TUI_INPUT_DATE_OPTIONS);\n\n    return {\n        ...options,\n        valueTransformer: {\n            fromControlValue: (value: unknown): TuiDay[] =>\n                Array.isArray(value)\n                    ? value\n                          .map((item) => options.valueTransformer.fromControlValue(item))\n                          .filter((item): item is TuiDay => item !== null)\n                    : [],\n            toControlValue: (value: TuiDay[]): unknown =>\n                value.map((item) => options.valueTransformer.toControlValue(item)),\n        },\n    };\n}\n\nexport function tuiInjectInputDateMultiOptions(): TuiInputDateMultiOptions {\n    return (\n        inject(TUI_INPUT_DATE_MULTI_OPTIONS, {optional: true, skipSelf: true}) ??\n        tuiInputDateMultiOptionsFactory()\n    );\n}\n\nexport const tuiInputDateMultiOptionsProvider = (\n    options: Partial<TuiInputDateMultiOptions>,\n): FactoryProvider => ({\n    provide: TUI_INPUT_DATE_MULTI_OPTIONS,\n    useFactory: (): TuiInputDateMultiOptions => ({\n        ...tuiInjectInputDateMultiOptions(),\n        ...options,\n    }),\n});\n","import {computed, Directive, effect, inject, input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {maskitoDate} from '@maskito/kit';\nimport {tuiAsControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {\n    DATE_FILLER_LENGTH,\n    TUI_FIRST_DAY,\n    TUI_LAST_DAY,\n    TuiDay,\n} from '@taiga-ui/cdk/date-time';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {tuiArrayToggle, tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {\n    tuiAsTextfieldAccessor,\n    tuiInjectAuxiliary,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiIconEnd} from '@taiga-ui/core/directives/icons';\nimport {TuiItemsHandlersDirective} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiDropdownAuto} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_DATE_FORMAT} from '@taiga-ui/core/tokens';\nimport {TuiInputChipDirective} from '@taiga-ui/kit/components/input-chip';\nimport {tuiWithDateFiller} from '@taiga-ui/kit/components/input-date';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {\n    TUI_INPUT_DATE_MULTI_OPTIONS,\n    tuiInjectInputDateMultiOptions,\n} from './input-date-multi.options';\n\n@Directive({\n    selector: 'input[tuiInputDateMulti]',\n    providers: [\n        tuiAsControl(TuiInputDateMultiDirective),\n        tuiFallbackValueProvider([]),\n        tuiAsTextfieldAccessor(TuiInputDateMultiDirective),\n        {\n            provide: TuiAppearance,\n            useFactory: () => inject(TuiAppearance, {skipSelf: true}),\n        },\n        {\n            provide: TUI_INPUT_DATE_MULTI_OPTIONS,\n            useFactory: tuiInjectInputDateMultiOptions,\n        },\n        tuiValueTransformerFrom(TUI_INPUT_DATE_MULTI_OPTIONS),\n    ],\n    hostDirectives: [TuiDropdownAuto, MaskitoDirective],\n    host: {'(keydown.enter.prevent)': '0'},\n})\nexport class TuiInputDateMultiDirective extends TuiInputChipDirective<TuiDay> {\n    private readonly dateMultiOptions = inject(TUI_INPUT_DATE_MULTI_OPTIONS);\n\n    protected readonly icon = tuiIconEnd(this.dateMultiOptions.icon);\n    protected readonly filler = tuiWithDateFiller();\n    protected readonly format = inject(TUI_DATE_FORMAT);\n\n    protected readonly stringify = tuiDirectiveBinding(\n        TuiItemsHandlersDirective,\n        'stringify',\n        (item) => item?.toString(this.format().mode, this.format().separator) ?? '',\n        {},\n    );\n\n    protected readonly mask = tuiMaskito(\n        computed(() =>\n            maskitoDate({\n                separator: this.format().separator,\n                mode: this.format().mode,\n                min: (this.min() ?? this.dateMultiOptions.min).toLocalNativeDate(),\n                max: (this.max() ?? this.dateMultiOptions.max).toLocalNativeDate(),\n            }),\n        ),\n    );\n\n    protected readonly calendar = tuiInjectAuxiliary<AbstractTuiCalendar>(\n        (x) => x instanceof AbstractTuiCalendar,\n    );\n\n    protected readonly calendarIn = effect(() => {\n        const calendar = this.calendar();\n\n        if (calendar) {\n            this.processCalendar(calendar);\n        }\n    });\n\n    protected readonly calendarOut = effect(() => {\n        const value = this.calendar()?.value();\n\n        if (value instanceof TuiDay) {\n            this.updateValue(value);\n        }\n    });\n\n    /**\n     * TODO(v6): check https://github.com/angular/angular/issues/70600 status:\n     * Solved? Drop `readonly TuiDay[] | undefined` workaround from `transform`\n     */\n    public readonly min = input(this.dateMultiOptions.min ?? TUI_FIRST_DAY, {\n        transform: (min: TuiDay | readonly TuiDay[] | null | undefined): TuiDay =>\n            min instanceof TuiDay ? min : (this.dateMultiOptions.min ?? TUI_FIRST_DAY),\n    });\n\n    /**\n     * TODO(v6): check https://github.com/angular/angular/issues/70600 status:\n     * Solved? Drop `readonly TuiDay[] | undefined` workaround from `transform`\n     */\n    public readonly max = input(this.dateMultiOptions.max ?? TUI_LAST_DAY, {\n        transform: (max: TuiDay | readonly TuiDay[] | null | undefined): TuiDay =>\n            max instanceof TuiDay ? max : (this.dateMultiOptions.max ?? TUI_LAST_DAY),\n    });\n\n    protected processCalendar(calendar: AbstractTuiCalendar): void {\n        tuiSetSignal(calendar.value, this.value());\n        tuiSetSignal(calendar.min, this.min());\n        tuiSetSignal(calendar.max, this.max());\n        calendar.month.update((m) => this.value()?.[this.value().length - 1] ?? m);\n    }\n\n    protected onClick(): void {\n        this.open.update((open) => !open);\n    }\n\n    protected onValueChange(value: string): void {\n        const newValue =\n            value.length === DATE_FILLER_LENGTH\n                ? TuiDay.normalizeParse(value, this.format().mode)\n                : null;\n\n        if (newValue && !this.handlers.disabledItemHandler()(newValue)) {\n            this.updateValue(newValue);\n        }\n    }\n\n    protected override onEnter(): void {\n        this.onValueChange(this.textfield.value().trim());\n        this.scrollTo();\n    }\n\n    private updateValue(day: TuiDay): void {\n        this.setValue(tuiArrayToggle(this.value(), day, (a, b) => a.daySame(b)));\n    }\n}\n","import {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TuiInputChip} from '@taiga-ui/kit/components/input-chip';\n\nimport {TuiInputDateMultiDirective} from './input-date-multi.directive';\n\nexport const TuiInputDateMulti = [\n    TuiInputDateMultiDirective,\n    TuiCalendar,\n    ...TuiInputChip,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}