{"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 {maskitoDateOptionsGenerator} from '@maskito/kit';\nimport {tuiAsControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {DATE_FILLER_LENGTH, TuiDay, TuiMonth} 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 {TuiCalendar} 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    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) =>\n            this.dateMultiOptions.valueTransformer\n                .fromControlValue([item])[0]\n                ?.toString(this.format().mode, this.format().separator) ?? '',\n        {},\n    );\n\n    protected readonly mask = tuiMaskito(\n        computed(() =>\n            maskitoDateOptionsGenerator({\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<TuiCalendar>(\n        (x) => x instanceof TuiCalendar,\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((onCleanup) => {\n        const subscription = this.calendar()?.dayClick.subscribe((day) => {\n            this.updateValue(day);\n        });\n\n        onCleanup(() => subscription?.unsubscribe());\n    });\n\n    public readonly min = input<TuiDay | null>(this.dateMultiOptions.min);\n    public readonly max = input<TuiDay | null>(this.dateMultiOptions.max);\n\n    protected processCalendar(calendar: TuiCalendar): void {\n        tuiSetSignal(calendar.value, this.value());\n        tuiSetSignal(calendar.min, this.min());\n        tuiSetSignal(calendar.max, this.max());\n        calendar.month.set(\n            this.value()?.[this.value().length - 1] ?? TuiMonth.currentLocal(),\n        );\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":";;;;;;;;;;;;;;;;;;;;;;AAeO,MAAM,4BAA4B,GAAG,IAAI,cAAc,CAC1D,SAAS,GAAG,8BAA8B,GAAG,EAAE;SAGnC,+BAA+B,GAAA;AAC3C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,sBAAsB,CAAC;IAE9C,OAAO;AACH,QAAA,GAAG,OAAO;AACV,QAAA,gBAAgB,EAAE;YACd,gBAAgB,EAAE,CAAC,KAAc,KAC7B,KAAK,CAAC,OAAO,CAAC,KAAK;AACf,kBAAE;AACK,qBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC;qBAC7D,MAAM,CAAC,CAAC,IAAI,KAAqB,IAAI,KAAK,IAAI;AACrD,kBAAE,EAAE;YACZ,cAAc,EAAE,CAAC,KAAe,KAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACzE,SAAA;KACJ;AACL;SAEgB,8BAA8B,GAAA;AAC1C,IAAA,QACI,MAAM,CAAC,4BAA4B,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;QACtE,+BAA+B,EAAE;AAEzC;MAEa,gCAAgC,GAAG,CAC5C,OAA0C,MACvB;AACnB,IAAA,OAAO,EAAE,4BAA4B;AACrC,IAAA,UAAU,EAAE,OAAiC;AACzC,QAAA,GAAG,8BAA8B,EAAE;AACnC,QAAA,GAAG,OAAO;KACb,CAAC;AACL,CAAA;;ACNK,MAAO,0BAA2B,SAAQ,qBAA6B,CAAA;AAnB7E,IAAA,WAAA,GAAA;;AAoBqB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,4BAA4B,CAAC;QACrD,IAAA,CAAA,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7C,IAAA,CAAA,MAAM,GAAG,iBAAiB,EAAE;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAG,mBAAmB,CAC9C,yBAAyB,EACzB,WAAW,EACX,CAAC,IAAI,KACD,IAAI,CAAC,gBAAgB,CAAC;AACjB,aAAA,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;cACzB,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EACrE,EAAE,CACL;QAEkB,IAAA,CAAA,IAAI,GAAG,UAAU,CAChC,QAAQ,CAAC,MACL,2BAA2B,CAAC;AACxB,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS;AAClC,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI;AACxB,YAAA,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE;AAClE,YAAA,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE;SACrE,CAAC,CACL,CACJ;AAEkB,QAAA,IAAA,CAAA,QAAQ,GAAG,kBAAkB,CAC5C,CAAC,CAAC,KAAK,CAAC,YAAY,WAAW,CAClC;AAEkB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAK;AACxC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAEhC,IAAI,QAAQ,EAAE;AACV,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAClC;AACJ,QAAA,CAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,CAAC,SAAS,KAAI;AAClD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAC7D,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACzB,YAAA,CAAC,CAAC;YAEF,SAAS,CAAC,MAAM,YAAY,EAAE,WAAW,EAAE,CAAC;AAChD,QAAA,CAAC,CAAC;QAEc,IAAA,CAAA,GAAG,GAAG,KAAK,CAAgB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACrD,IAAA,CAAA,GAAG,GAAG,KAAK,CAAgB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAkCxE,IAAA;AAhCa,IAAA,eAAe,CAAC,QAAqB,EAAA;QAC3C,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1C,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,QAAQ,CAAC,KAAK,CAAC,GAAG,CACd,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,YAAY,EAAE,CACrE;IACL;IAEU,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;IACrC;AAEU,IAAA,aAAa,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,QAAQ,GACV,KAAK,CAAC,MAAM,KAAK;AACb,cAAE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI;cAC/C,IAAI;AAEd,QAAA,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC9B;IACJ;IAEmB,OAAO,GAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE;IACnB;AAEQ,IAAA,WAAW,CAAC,GAAW,EAAA;QAC3B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E;+GAjFS,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,GAAA,EAAA,EAAA,EAAA,SAAA,EAjBxB;YACP,YAAY,CAAC,0BAA0B,CAAC;YACxC,wBAAwB,CAAC,EAAE,CAAC;YAC5B,sBAAsB,CAAC,0BAA0B,CAAC;AAClD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,UAAU,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC5D,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,UAAU,EAAE,8BAA8B;AAC7C,aAAA;YACD,uBAAuB,CAAC,4BAA4B,CAAC;AACxD,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAIQ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAnBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,SAAS,EAAE;AACP,wBAAA,YAAY,CAAA,0BAAA,CAA4B;wBACxC,wBAAwB,CAAC,EAAE,CAAC;AAC5B,wBAAA,sBAAsB,CAAA,0BAAA,CAA4B;AAClD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,UAAU,EAAE,MAAM,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC5D,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,UAAU,EAAE,8BAA8B;AAC7C,yBAAA;wBACD,uBAAuB,CAAC,4BAA4B,CAAC;AACxD,qBAAA;AACD,oBAAA,cAAc,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;AACnD,oBAAA,IAAI,EAAE,EAAC,yBAAyB,EAAE,GAAG,EAAC;AACzC,iBAAA;;;ACxCM,MAAM,iBAAiB,GAAG;IAC7B,0BAA0B;IAC1B,WAAW;AACX,IAAA,GAAG,YAAY;;;ACRnB;;AAEG;;;;"}