@taiga-ui/core 5.0.0-rc.4 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/calendar/calendar-sheet.component.d.ts +1 -9
- package/components/calendar/calendar.component.d.ts +11 -21
- package/components/carousel/carousel.component.d.ts +20 -0
- package/components/carousel/carousel.d.ts +4 -0
- package/components/carousel/carousel.directive.d.ts +11 -0
- package/components/carousel/index.d.ts +3 -0
- package/components/error/error.directive.d.ts +1 -1
- package/components/index.d.ts +1 -0
- package/components/notification/notification.directive.d.ts +1 -2
- package/directives/appearance/appearance.options.d.ts +1 -1
- package/fesm2022/taiga-ui-core-classes.mjs +3 -3
- package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-button.mjs +8 -8
- package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-calendar.mjs +51 -107
- package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-carousel.mjs +100 -0
- package/fesm2022/taiga-ui-core-components-carousel.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-components-cell.mjs +9 -7
- package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-checkbox.mjs +4 -4
- package/fesm2022/taiga-ui-core-components-checkbox.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-data-list.mjs +23 -20
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-error.mjs +10 -10
- package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-expand.mjs +5 -5
- package/fesm2022/taiga-ui-core-components-expand.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-icon.mjs +8 -7
- package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-input.mjs +6 -6
- package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-label.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-link.mjs +8 -8
- package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-loader.mjs +4 -4
- package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-notification.mjs +18 -18
- package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-radio.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-radio.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-root.mjs +4 -4
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +24 -24
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-slider.mjs +17 -17
- package/fesm2022/taiga-ui-core-components-slider.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-spin-button.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +57 -29
- package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-title.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components.mjs +1 -0
- package/fesm2022/taiga-ui-core-components.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +10 -10
- package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-button-x.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-button-x.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-date-format.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-date-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-group.mjs +7 -7
- package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-icons.mjs +10 -10
- package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +9 -9
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-number-format.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-number-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-pipes-filter-by-input.mjs +55 -0
- package/fesm2022/taiga-ui-core-pipes-filter-by-input.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-pipes-format-number.mjs +3 -3
- package/fesm2022/taiga-ui-core-pipes-format-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-pipes.mjs +1 -0
- package/fesm2022/taiga-ui-core-pipes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-alert.mjs +12 -10
- package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-dialog.mjs +16 -15
- package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs +236 -223
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-hint.mjs +38 -38
- package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-modal.mjs +21 -16
- package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-popup.mjs +10 -10
- package/fesm2022/taiga-ui-core-portals-popup.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-services.mjs +6 -6
- package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +4 -2
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-dom.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
- package/package.json +37 -15
- package/pipes/filter-by-input/filter-by-input.options.d.ts +6 -0
- package/pipes/filter-by-input/filter-by-input.pipe.d.ts +19 -0
- package/pipes/filter-by-input/index.d.ts +2 -0
- package/pipes/index.d.ts +1 -0
- package/portals/dropdown/dropdown-a11y.directive.d.ts +2 -2
- package/portals/dropdown/dropdown-open.directive.d.ts +6 -6
- package/portals/dropdown/dropdown.directive.d.ts +3 -3
- package/portals/dropdown/dropdown.providers.d.ts +2 -1
- package/portals/dropdown/index.d.ts +1 -1
- package/portals/modal/modal.component.d.ts +1 -2
- package/tokens/index.d.ts +1 -0
- package/tokens/textfield.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-calendar.mjs","sources":["../../../projects/core/components/calendar/calendar.options.ts","../../../projects/core/components/calendar/calendar-sheet.options.ts","../../../projects/core/components/calendar/calendar-sheet.pipe.ts","../../../projects/core/components/calendar/order-week-days.pipe.ts","../../../projects/core/components/calendar/calendar-sheet.component.ts","../../../projects/core/components/calendar/calendar-sheet.template.html","../../../projects/core/components/calendar/calendar-spin.component.ts","../../../projects/core/components/calendar/calendar-spin.template.html","../../../projects/core/components/calendar/calendar-year.component.ts","../../../projects/core/components/calendar/calendar-year.template.html","../../../projects/core/components/calendar/calendar.component.ts","../../../projects/core/components/calendar/calendar.template.html","../../../projects/core/components/calendar/taiga-ui-core-components-calendar.ts"],"sourcesContent":["import {type Signal, signal} from '@angular/core';\nimport {type TuiDay, TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarOptions {\n readonly dayType: TuiHandler<TuiDay, string>;\n readonly weekStart: Signal<0 | 1 | 2 | 3 | 4 | 5 | 6>;\n}\n\nexport const TUI_CALENDAR_DEFAULT_OPTIONS: TuiCalendarOptions = {\n dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),\n weekStart: signal(TuiDayOfWeek.Monday),\n};\n\nexport const [TUI_CALENDAR_OPTIONS, tuiCalendarOptionsProvider] = tuiCreateOptions(\n TUI_CALENDAR_DEFAULT_OPTIONS,\n);\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarSheetOptions {\n readonly rangeMode: boolean;\n}\n\nexport const TUI_CALENDAR_SHEET_DEFAULT_OPTIONS: TuiCalendarSheetOptions = {\n rangeMode: false,\n};\n\nexport const [TUI_CALENDAR_SHEET_OPTIONS, tuiCalendarSheetOptionsProvider] =\n tuiCreateOptions(TUI_CALENDAR_SHEET_DEFAULT_OPTIONS);\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({name: 'tuiCalendarSheet'})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n private currentMonth: TuiMonth | null = null;\n private currentSheet: ReadonlyArray<readonly TuiDay[]> = [];\n\n public transform(\n month: TuiMonth,\n showAdjacentDays = false,\n ): ReadonlyArray<readonly TuiDay[]> {\n if (this.currentMonth?.monthSame(month)) {\n return this.currentSheet;\n }\n\n const sheet: Array<readonly TuiDay[]> = [];\n\n for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n const row: TuiDay[] = [];\n\n for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n const day = getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek: this.options.weekStart(),\n });\n\n const isPrevMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n const isNextMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n if (isPrevMonthDay(day) && !showAdjacentDays) {\n continue;\n }\n\n if (isNextMonthDay(day) && !showAdjacentDays) {\n break;\n }\n\n row.push(day);\n }\n\n sheet.push(row);\n }\n\n this.currentSheet = sheet.filter((row) => row.length);\n this.currentMonth = month;\n\n return this.currentSheet;\n }\n}\n\n/**\n * Computes day of week offset of the beginning of the month\n */\nfunction getMonthStartDaysOffset(\n month: TuiMonth,\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n): number {\n const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n return startMonthOffsetFromSunday >= firstDayOfWeek\n ? startMonthOffsetFromSunday - firstDayOfWeek\n : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n}\n\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nfunction getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek,\n}: {\n /**\n * column in a calendar\n */\n colIndex: number;\n /**\n * first day of the week index (Sunday - 0, Saturday - 6)\n */\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n month: TuiMonth;\n /**\n * row in a calendar\n */\n rowIndex: number;\n}): TuiDay {\n ngDevMode && console.assert(Number.isInteger(rowIndex));\n ngDevMode && console.assert(tuiInRange(rowIndex, 0, 6));\n ngDevMode && console.assert(Number.isInteger(colIndex));\n ngDevMode && console.assert(tuiInRange(colIndex, 0, DAYS_IN_WEEK));\n\n let day =\n rowIndex * DAYS_IN_WEEK +\n colIndex -\n getMonthStartDaysOffset(month, firstDayOfWeek) +\n 1;\n\n if (day > month.daysCount) {\n day -= month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {map, type Observable} from 'rxjs';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nfunction convertToSundayFirstWeekFormat(\n weekDaysNames: readonly string[],\n): readonly string[] {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [weekDaysNames[sundayIndex] || '', ...weekDaysNames.slice(0, sundayIndex)];\n}\n\n@Pipe({name: 'tuiOrderWeekDays'})\nexport class TuiOrderWeekDaysPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n\n public transform(\n mondayFirstWeekDays$: Observable<readonly string[]>,\n ): Observable<readonly string[]> {\n return mondayFirstWeekDays$.pipe(\n map(convertToSundayFirstWeekFormat),\n map((weekDays) => [\n ...weekDays.slice(this.options.weekStart()),\n ...weekDays.slice(0, this.options.weekStart()),\n ]),\n );\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n input,\n model,\n output,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\nimport {TuiOrderWeekDaysPipe} from './order-week-days.pipe';\n\nexport type TuiMarkerHandler = TuiHandler<TuiDay, [] | [string, string] | [string]>;\n\n@Component({\n selector: 'tui-calendar-sheet',\n imports: [\n AsyncPipe,\n TuiCalendarSheetPipe,\n TuiHovered,\n TuiMapperPipe,\n TuiOrderWeekDaysPipe,\n ],\n templateUrl: './calendar-sheet.template.html',\n styleUrl: './calendar-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[class._picking]': 'isRangePicking'},\n})\nexport class TuiCalendarSheet {\n private readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n private readonly today = TuiDay.currentLocal();\n\n protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n protected readonly dayType = inject(TUI_CALENDAR_OPTIONS).dayType;\n\n public readonly month = input(TuiMonth.currentLocal());\n public readonly disabledItemHandler =\n input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n public readonly value = input<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n public readonly showAdjacent = input(true);\n public readonly hoveredItem = model<TuiDay | null>(null);\n\n public readonly dayClick = output<TuiDay>();\n\n /**\n * @deprecated use static DI options instead\n * ```\n * tuiCalendarSheetOptionsProvider({rangeMode: true})\n * ```\n * TODO(v5): delete it\n */\n @Input()\n public single = true;\n\n public onItemHovered(item: TuiDay | false): void {\n this.updateHoveredItem(item || null);\n }\n\n public getItemRange(item: TuiDay): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n\n if (!value) {\n return null;\n }\n\n if (value instanceof TuiDay && !this.computedRangeMode) {\n return value.daySame(item) ? 'active' : null;\n }\n\n if (value instanceof TuiDayRange && value.isSingleDay) {\n return value.from.daySame(item) ? 'active' : null;\n }\n\n if (!(value instanceof TuiDay) && !(value instanceof TuiDayRange)) {\n return value.find((day) => day.daySame(item)) ? 'active' : null;\n }\n\n const range = this.getRange(value, this.hoveredItem());\n\n if (range.isSingleDay && range.from.daySame(item)) {\n return 'active';\n }\n\n if (range.from.daySame(item)) {\n return 'start';\n }\n\n if (range.to.daySame(item)) {\n return 'end';\n }\n\n return range.from.dayBefore(item) && range.to.dayAfter(item) ? 'middle' : null;\n }\n\n protected get computedRangeMode(): boolean {\n return !this.single || this.options.rangeMode;\n }\n\n protected get isRangePicking(): boolean {\n const value = this.value();\n\n return this.computedRangeMode\n ? value instanceof TuiDay\n : /**\n * Only for backward compatibility!\n * TODO(v5): replace with `this.options.rangeMode && this.value instanceof TuiDay`\n */\n value instanceof TuiDayRange && value.isSingleDay;\n }\n\n protected readonly toMarkers = (\n day: TuiDay,\n today: boolean,\n range: string | null,\n markerHandler: TuiMarkerHandler | null,\n ): [string, string] | [string] | null => {\n if (today || ['active', 'end', 'start'].includes(range || '')) {\n return null;\n }\n\n const markers = markerHandler?.(day);\n\n return markers?.length ? markers : null;\n };\n\n protected itemIsToday(item: TuiDay): boolean {\n return this.today.daySame(item);\n }\n\n protected itemIsUnavailable(item: TuiDay): boolean {\n return !this.month().monthSame(item);\n }\n\n private getRange(\n value: TuiDay | TuiDayRange,\n hoveredItem: TuiDay | null,\n ): TuiDayRange {\n if (value instanceof TuiDay) {\n return TuiDayRange.sort(value, hoveredItem ?? value);\n }\n\n return value.isSingleDay\n ? TuiDayRange.sort(value.from, hoveredItem ?? value.to)\n : value;\n }\n\n private updateHoveredItem(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem.set(day);\n }\n}\n","<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month() | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent())) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayType\"\n [class.t-cell_disabled]=\"disabledItemHandler()(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"dayClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n @if (\n item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler();\n as markers\n ) {\n <div class=\"t-dots\">\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n @if (markers.length > 1) {\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiMonth,\n type TuiMonthLike,\n type TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-calendar-spin',\n imports: [TuiLink, TuiSpinButton],\n templateUrl: './calendar-spin.template.html',\n styleUrl: './calendar-spin.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiCalendarSpin {\n protected readonly months = inject(TUI_MONTHS);\n\n public readonly value = model(TuiMonth.currentLocal());\n public readonly min = input<TuiMonth>(TUI_FIRST_DAY);\n public readonly max = input<TuiMonth>(TUI_LAST_DAY);\n\n public readonly yearClick = output<TuiYear>();\n\n protected append(date: TuiMonthLike): void {\n const value = this.value().append(date);\n const min = this.min();\n const max = this.max();\n\n if (min.monthSameOrAfter(value)) {\n this.updateValue(min);\n } else {\n this.updateValue(max.monthSameOrBefore(value) ? max : value);\n }\n }\n\n private updateValue(value: TuiMonth): void {\n if (this.value().monthSame(value)) {\n return;\n }\n\n this.value.set(value);\n }\n}\n","<tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"value().monthSameOrBefore(min())\"\n [rightDisabled]=\"value().monthSameOrAfter(max())\"\n (leftClick)=\"append({month: -1})\"\n (rightClick)=\"append({month: 1})\"\n>\n {{ months()[value().month] }}\n @if (min().year === max().year) {\n {{ value().formattedYear }}\n } @else {\n <button\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"yearClick.emit(value())\"\n >\n {{ value().formattedYear }}\n </button>\n }\n</tui-spin-button>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n MAX_YEAR,\n MIN_YEAR,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n TuiMonthRange,\n TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollIntoView} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nconst LIMIT = 100;\nconst ITEMS_IN_ROW = 4;\nconst CURRENT_YEAR = TuiMonth.currentLocal().year;\n\n@Component({\n selector: 'tui-calendar-year',\n imports: [TuiHovered, TuiScrollIntoView],\n templateUrl: './calendar-year.template.html',\n styleUrl: './calendar-year.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendarYear)],\n host: {'[class._picking]': 'isRangePicking()'},\n})\nexport class TuiCalendarYear {\n private readonly hoveredItem = signal<number | null>(null);\n private readonly calculatedMin = computed(() => {\n const initial = this.initialItem() - LIMIT;\n const min = this.min() ?? MIN_YEAR;\n\n return min > initial ? min : initial;\n });\n\n private readonly calculatedMax = computed(() => {\n const initial = this.initialItem() + LIMIT;\n const max = this.max() ?? MAX_YEAR;\n\n return max < initial ? max + 1 : initial;\n });\n\n protected readonly isRangePicking = computed(\n (x = this.value()) =>\n this.rangeMode() && (x instanceof TuiDay || x instanceof TuiMonth),\n );\n\n protected readonly rows = computed(() =>\n Math.ceil((this.calculatedMax() - this.calculatedMin()) / ITEMS_IN_ROW),\n );\n\n public readonly rangeMode = input(false);\n public readonly disabledItemHandler = input<TuiBooleanHandler<number>>(\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n );\n\n public readonly value = input<\n TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null\n >(null);\n\n public readonly min = input(MIN_YEAR, {\n transform: (x: number | null) => x ?? MIN_YEAR,\n });\n\n public readonly max = input(MAX_YEAR, {\n transform: (x: number | null) => x ?? MAX_YEAR,\n });\n\n public readonly initialItem = input(CURRENT_YEAR, {\n transform: (x: number | null) => x ?? CURRENT_YEAR,\n });\n\n public readonly yearClick = output<number>();\n\n public isDisabled(item: number): boolean {\n return (\n (this.max() && this.max() < item) ||\n (this.min() && this.min() > item) ||\n this.disabledItemHandler()(item)\n );\n }\n\n public getItemRange(item: number): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n const hoveredItem = this.hoveredItem();\n\n if (value instanceof TuiYear && value.year === item) {\n return 'active';\n }\n\n if (tuiIsNumber(value)) {\n return value === item ? 'active' : null;\n }\n\n if (!(value instanceof TuiMonthRange) && !(value instanceof TuiYear)) {\n return value?.find((day) => day.year === item) ? 'active' : null;\n }\n\n const hovered = this.isRangePicking() ? hoveredItem : null;\n const from = 'from' in value ? value.from?.year : value.year;\n const to = 'from' in value ? value.to.year : value.year;\n\n const min = Math.min(from, hovered ?? to);\n const max = Math.max(from, hovered ?? to);\n\n if (min === max && from === to && from === item) {\n return 'active';\n }\n\n if (min === item) {\n return 'start';\n }\n\n if (max === item) {\n return 'end';\n }\n\n return min < item && item < max ? 'middle' : null;\n }\n\n public onItemHovered(hovered: boolean, item: number): void {\n this.hoveredItem.set(hovered ? item : null);\n }\n\n protected scrollItemIntoView(item: number): boolean {\n return this.initialItem() === item;\n }\n\n protected getItem(rowIndex: number, colIndex: number): number {\n return rowIndex * ITEMS_IN_ROW + colIndex + this.calculatedMin();\n }\n\n protected itemIsToday(item: number): boolean {\n return CURRENT_YEAR === item;\n }\n}\n","@for (_ of '-'.repeat(rows()); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n inject,\n Input,\n input,\n Output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TUI_LAST_DISPLAYED_DAY,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {Subject} from 'rxjs';\n\nimport {TuiCalendarSheet, type TuiMarkerHandler} from './calendar-sheet.component';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSpin} from './calendar-spin.component';\nimport {TuiCalendarYear} from './calendar-year.component';\n\n@Component({\n selector: 'tui-calendar',\n imports: [\n TuiCalendarSheet,\n TuiCalendarSpin,\n TuiCalendarYear,\n TuiMapperPipe,\n TuiScrollbar,\n ],\n templateUrl: './calendar.template.html',\n styleUrl: './calendar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendar)],\n host: {'(pointerdown.prevent.zoneless)': '0'},\n})\nexport class TuiCalendar {\n private readonly cdr = inject(ChangeDetectorRef);\n private day: TuiDay | TuiDayRange | readonly TuiDay[] | null = null;\n private view: 'month' | 'year' = 'month';\n protected readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n\n @Input()\n public month: TuiMonth = TuiMonth.currentLocal();\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiDay> =\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler();\n\n public readonly min = input(TUI_FIRST_DAY, {\n transform: (x: TuiDay | null) => x ?? TUI_FIRST_DAY,\n });\n\n public readonly max = input(TUI_LAST_DAY, {\n transform: (x: TuiDay | null) => x ?? TUI_LAST_DAY,\n });\n\n public readonly minViewedMonth = input<TuiMonth | null>(TUI_FIRST_DAY);\n public readonly maxViewedMonth = input<TuiMonth | null>(TUI_LAST_DAY);\n\n protected readonly computedMinViewedMonth = computed(() => {\n const min = this.min();\n const minViewed = this.minViewedMonth() ?? TUI_FIRST_DAY;\n\n return minViewed.monthSameOrAfter(min) ? minViewed : min;\n });\n\n protected readonly computedMaxViewedMonth = computed(() => {\n const max = this.max();\n const maxViewed = this.maxViewedMonth() ?? TUI_LAST_DAY;\n\n return maxViewed.monthSameOrBefore(max) ? maxViewed : max;\n });\n\n @Input()\n public hoveredItem: TuiDay | null = null;\n\n @Input()\n public showAdjacent = true;\n\n @Input()\n public markerHandler: TuiMarkerHandler | null = null;\n\n @Output()\n public readonly dayClick = new EventEmitter<TuiDay>();\n\n @Output()\n public readonly monthChange = new EventEmitter<TuiMonth>();\n\n @Output()\n public readonly hoveredItemChange = new EventEmitter<TuiDay | null>();\n\n /** @deprecated for private use only until Calendars are refactored */\n public readonly valueChange = new Subject<TuiDay>();\n\n @Input()\n public set value(value: TuiDay | TuiDayRange | readonly TuiDay[] | null) {\n this.cdr.markForCheck();\n this.day = value;\n\n if (\n this.showAdjacent &&\n value instanceof TuiDay &&\n value.daySameOrBefore(TUI_LAST_DISPLAYED_DAY)\n ) {\n this.month = value;\n }\n }\n\n @Input()\n public set initialView(view: 'month' | 'year') {\n this.view = view;\n }\n\n public get value(): TuiDay | TuiDayRange | readonly TuiDay[] | null {\n return this.day;\n }\n\n public onPaginationValueChange(month: TuiMonth): void {\n this.updateViewedMonth(month);\n }\n\n public onDayClick(day: TuiDay): void {\n this.dayClick.emit(day);\n this.valueChange.next(day);\n }\n\n public onHoveredItemChange(day: TuiDay | null): void {\n this.updateHoveredDay(day);\n }\n\n protected get isInYearView(): boolean {\n return this.view === 'year';\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) || item.dayAfter(max) || disabledItemHandler(item);\n\n protected onPaginationYearClick(): void {\n this.view = 'year';\n }\n\n protected onPickerYearClick(year: number): void {\n this.view = 'month';\n this.updateViewedMonth(new TuiMonth(year, this.month.month));\n }\n\n private updateViewedMonth(month: TuiMonth): void {\n if (this.month.monthSame(month)) {\n return;\n }\n\n this.month = month;\n this.monthChange.emit(month);\n }\n\n private updateHoveredDay(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem, day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem = day;\n this.hoveredItemChange.emit(day);\n }\n}\n","@if (isInYearView) {\n <tui-scrollbar\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n >\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month.year\"\n [max]=\"max().year\"\n [min]=\"min().year\"\n [rangeMode]=\"options.rangeMode\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n </tui-scrollbar>\n} @else {\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth()\"\n [min]=\"computedMinViewedMonth()\"\n [value]=\"month\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"onPaginationYearClick()\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [hoveredItem]=\"hoveredItem\"\n [markerHandler]=\"markerHandler\"\n [month]=\"month\"\n [showAdjacent]=\"showAdjacent\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-calendar.mjs","sources":["../../../projects/core/components/calendar/calendar.options.ts","../../../projects/core/components/calendar/calendar-sheet.options.ts","../../../projects/core/components/calendar/calendar-sheet.pipe.ts","../../../projects/core/components/calendar/order-week-days.pipe.ts","../../../projects/core/components/calendar/calendar-sheet.component.ts","../../../projects/core/components/calendar/calendar-sheet.template.html","../../../projects/core/components/calendar/calendar-spin.component.ts","../../../projects/core/components/calendar/calendar-spin.template.html","../../../projects/core/components/calendar/calendar-year.component.ts","../../../projects/core/components/calendar/calendar-year.template.html","../../../projects/core/components/calendar/calendar.component.ts","../../../projects/core/components/calendar/calendar.template.html","../../../projects/core/components/calendar/taiga-ui-core-components-calendar.ts"],"sourcesContent":["import {type Signal, signal} from '@angular/core';\nimport {type TuiDay, TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarOptions {\n readonly dayType: TuiHandler<TuiDay, string>;\n readonly weekStart: Signal<0 | 1 | 2 | 3 | 4 | 5 | 6>;\n}\n\nexport const TUI_CALENDAR_DEFAULT_OPTIONS: TuiCalendarOptions = {\n dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),\n weekStart: signal(TuiDayOfWeek.Monday),\n};\n\nexport const [TUI_CALENDAR_OPTIONS, tuiCalendarOptionsProvider] = tuiCreateOptions(\n TUI_CALENDAR_DEFAULT_OPTIONS,\n);\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarSheetOptions {\n readonly rangeMode: boolean;\n}\n\nexport const TUI_CALENDAR_SHEET_DEFAULT_OPTIONS: TuiCalendarSheetOptions = {\n rangeMode: false,\n};\n\nexport const [TUI_CALENDAR_SHEET_OPTIONS, tuiCalendarSheetOptionsProvider] =\n tuiCreateOptions(TUI_CALENDAR_SHEET_DEFAULT_OPTIONS);\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({name: 'tuiCalendarSheet'})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n private currentMonth: TuiMonth | null = null;\n private currentSheet: ReadonlyArray<readonly TuiDay[]> = [];\n\n public transform(\n month: TuiMonth,\n showAdjacentDays = false,\n ): ReadonlyArray<readonly TuiDay[]> {\n if (this.currentMonth?.monthSame(month)) {\n return this.currentSheet;\n }\n\n const sheet: Array<readonly TuiDay[]> = [];\n\n for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n const row: TuiDay[] = [];\n\n for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n const day = getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek: this.options.weekStart(),\n });\n\n const isPrevMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n const isNextMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n if (isPrevMonthDay(day) && !showAdjacentDays) {\n continue;\n }\n\n if (isNextMonthDay(day) && !showAdjacentDays) {\n break;\n }\n\n row.push(day);\n }\n\n sheet.push(row);\n }\n\n this.currentSheet = sheet.filter((row) => row.length);\n this.currentMonth = month;\n\n return this.currentSheet;\n }\n}\n\n/**\n * Computes day of week offset of the beginning of the month\n */\nfunction getMonthStartDaysOffset(\n month: TuiMonth,\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n): number {\n const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n return startMonthOffsetFromSunday >= firstDayOfWeek\n ? startMonthOffsetFromSunday - firstDayOfWeek\n : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n}\n\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nfunction getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek,\n}: {\n /**\n * column in a calendar\n */\n colIndex: number;\n /**\n * first day of the week index (Sunday - 0, Saturday - 6)\n */\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n month: TuiMonth;\n /**\n * row in a calendar\n */\n rowIndex: number;\n}): TuiDay {\n ngDevMode && console.assert(Number.isInteger(rowIndex));\n ngDevMode && console.assert(tuiInRange(rowIndex, 0, 6));\n ngDevMode && console.assert(Number.isInteger(colIndex));\n ngDevMode && console.assert(tuiInRange(colIndex, 0, DAYS_IN_WEEK));\n\n let day =\n rowIndex * DAYS_IN_WEEK +\n colIndex -\n getMonthStartDaysOffset(month, firstDayOfWeek) +\n 1;\n\n if (day > month.daysCount) {\n day -= month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {map, type Observable} from 'rxjs';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nfunction convertToSundayFirstWeekFormat(\n weekDaysNames: readonly string[],\n): readonly string[] {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [weekDaysNames[sundayIndex] || '', ...weekDaysNames.slice(0, sundayIndex)];\n}\n\n@Pipe({name: 'tuiOrderWeekDays'})\nexport class TuiOrderWeekDaysPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n\n public transform(\n mondayFirstWeekDays$: Observable<readonly string[]>,\n ): Observable<readonly string[]> {\n return mondayFirstWeekDays$.pipe(\n map(convertToSundayFirstWeekFormat),\n map((weekDays) => [\n ...weekDays.slice(this.options.weekStart()),\n ...weekDays.slice(0, this.options.weekStart()),\n ]),\n );\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\nimport {TuiOrderWeekDaysPipe} from './order-week-days.pipe';\n\nexport type TuiMarkerHandler = TuiHandler<TuiDay, [] | [string, string] | [string]>;\n\n@Component({\n selector: 'tui-calendar-sheet',\n imports: [\n AsyncPipe,\n TuiCalendarSheetPipe,\n TuiHovered,\n TuiMapperPipe,\n TuiOrderWeekDaysPipe,\n ],\n templateUrl: './calendar-sheet.template.html',\n styleUrl: './calendar-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[class._picking]': 'isRangePicking'},\n})\nexport class TuiCalendarSheet {\n private readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n private readonly today = TuiDay.currentLocal();\n\n protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n protected readonly dayType = inject(TUI_CALENDAR_OPTIONS).dayType;\n\n public readonly month = input(TuiMonth.currentLocal());\n public readonly disabledItemHandler =\n input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n public readonly value = input<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n public readonly showAdjacent = input(true);\n public readonly hoveredItem = model<TuiDay | null>(null);\n\n public readonly dayClick = output<TuiDay>();\n\n public onItemHovered(item: TuiDay | false): void {\n this.updateHoveredItem(item || null);\n }\n\n public getItemRange(item: TuiDay): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n\n if (!value) {\n return null;\n }\n\n if (value instanceof TuiDay && !this.computedRangeMode) {\n return value.daySame(item) ? 'active' : null;\n }\n\n if (value instanceof TuiDayRange && value.isSingleDay) {\n return value.from.daySame(item) ? 'active' : null;\n }\n\n if (!(value instanceof TuiDay) && !(value instanceof TuiDayRange)) {\n return value.find((day) => day.daySame(item)) ? 'active' : null;\n }\n\n const range = this.getRange(value, this.hoveredItem());\n\n if (range.isSingleDay && range.from.daySame(item)) {\n return 'active';\n }\n\n if (range.from.daySame(item)) {\n return 'start';\n }\n\n if (range.to.daySame(item)) {\n return 'end';\n }\n\n return range.from.dayBefore(item) && range.to.dayAfter(item) ? 'middle' : null;\n }\n\n protected get computedRangeMode(): boolean {\n return this.options.rangeMode;\n }\n\n protected get isRangePicking(): boolean {\n return this.options.rangeMode && this.value() instanceof TuiDay;\n }\n\n protected readonly toMarkers = (\n day: TuiDay,\n today: boolean,\n range: string | null,\n markerHandler: TuiMarkerHandler | null,\n ): [string, string] | [string] | null => {\n if (today || ['active', 'end', 'start'].includes(range || '')) {\n return null;\n }\n\n const markers = markerHandler?.(day);\n\n return markers?.length ? markers : null;\n };\n\n protected itemIsToday(item: TuiDay): boolean {\n return this.today.daySame(item);\n }\n\n protected itemIsUnavailable(item: TuiDay): boolean {\n return !this.month().monthSame(item);\n }\n\n private getRange(\n value: TuiDay | TuiDayRange,\n hoveredItem: TuiDay | null,\n ): TuiDayRange {\n if (value instanceof TuiDay) {\n return TuiDayRange.sort(value, hoveredItem ?? value);\n }\n\n return value.isSingleDay\n ? TuiDayRange.sort(value.from, hoveredItem ?? value.to)\n : value;\n }\n\n private updateHoveredItem(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem.set(day);\n }\n}\n","<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month() | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent())) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayType\"\n [class.t-cell_disabled]=\"disabledItemHandler()(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"dayClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n @if (\n item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler();\n as markers\n ) {\n <div class=\"t-dots\">\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n @if (markers.length > 1) {\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiMonth,\n type TuiMonthLike,\n type TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-calendar-spin',\n imports: [TuiLink, TuiSpinButton],\n templateUrl: './calendar-spin.template.html',\n styleUrl: './calendar-spin.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiCalendarSpin {\n protected readonly months = inject(TUI_MONTHS);\n\n public readonly value = model(TuiMonth.currentLocal());\n public readonly min = input<TuiMonth>(TUI_FIRST_DAY);\n public readonly max = input<TuiMonth>(TUI_LAST_DAY);\n\n public readonly yearClick = output<TuiYear>();\n\n protected append(date: TuiMonthLike): void {\n const value = this.value().append(date);\n const min = this.min();\n const max = this.max();\n\n if (min.monthSameOrAfter(value)) {\n this.updateValue(min);\n } else {\n this.updateValue(max.monthSameOrBefore(value) ? max : value);\n }\n }\n\n private updateValue(value: TuiMonth): void {\n if (this.value().monthSame(value)) {\n return;\n }\n\n this.value.set(value);\n }\n}\n","<tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"value().monthSameOrBefore(min())\"\n [rightDisabled]=\"value().monthSameOrAfter(max())\"\n (leftClick)=\"append({month: -1})\"\n (rightClick)=\"append({month: 1})\"\n>\n {{ months()[value().month] }}\n @if (min().year === max().year) {\n {{ value().formattedYear }}\n } @else {\n <button\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"yearClick.emit(value())\"\n >\n {{ value().formattedYear }}\n </button>\n }\n</tui-spin-button>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n MAX_YEAR,\n MIN_YEAR,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n TuiMonthRange,\n TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollIntoView} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nconst LIMIT = 100;\nconst ITEMS_IN_ROW = 4;\nconst CURRENT_YEAR = TuiMonth.currentLocal().year;\n\n@Component({\n selector: 'tui-calendar-year',\n imports: [TuiHovered, TuiScrollIntoView],\n templateUrl: './calendar-year.template.html',\n styleUrl: './calendar-year.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendarYear)],\n host: {'[class._picking]': 'isRangePicking()'},\n})\nexport class TuiCalendarYear {\n private readonly hoveredItem = signal<number | null>(null);\n private readonly calculatedMin = computed(() => {\n const initial = this.initialItem() - LIMIT;\n const min = this.min() ?? MIN_YEAR;\n\n return min > initial ? min : initial;\n });\n\n private readonly calculatedMax = computed(() => {\n const initial = this.initialItem() + LIMIT;\n const max = this.max() ?? MAX_YEAR;\n\n return max < initial ? max + 1 : initial;\n });\n\n protected readonly isRangePicking = computed(\n (x = this.value()) =>\n this.rangeMode() && (x instanceof TuiDay || x instanceof TuiMonth),\n );\n\n protected readonly rows = computed(() =>\n Math.ceil((this.calculatedMax() - this.calculatedMin()) / ITEMS_IN_ROW),\n );\n\n public readonly rangeMode = input(false);\n public readonly disabledItemHandler = input<TuiBooleanHandler<number>>(\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n );\n\n public readonly value = input<\n TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null\n >(null);\n\n public readonly min = input(MIN_YEAR, {\n transform: (x: number | null) => x ?? MIN_YEAR,\n });\n\n public readonly max = input(MAX_YEAR, {\n transform: (x: number | null) => x ?? MAX_YEAR,\n });\n\n public readonly initialItem = input(CURRENT_YEAR, {\n transform: (x: number | null) => x ?? CURRENT_YEAR,\n });\n\n public readonly yearClick = output<number>();\n\n public isDisabled(item: number): boolean {\n return (\n (this.max() && this.max() < item) ||\n (this.min() && this.min() > item) ||\n this.disabledItemHandler()(item)\n );\n }\n\n public getItemRange(item: number): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n const hoveredItem = this.hoveredItem();\n\n if (value instanceof TuiYear && value.year === item) {\n return 'active';\n }\n\n if (tuiIsNumber(value)) {\n return value === item ? 'active' : null;\n }\n\n if (!(value instanceof TuiMonthRange) && !(value instanceof TuiYear)) {\n return value?.find((day) => day.year === item) ? 'active' : null;\n }\n\n const hovered = this.isRangePicking() ? hoveredItem : null;\n const from = 'from' in value ? value.from?.year : value.year;\n const to = 'from' in value ? value.to.year : value.year;\n\n const min = Math.min(from, hovered ?? to);\n const max = Math.max(from, hovered ?? to);\n\n if (min === max && from === to && from === item) {\n return 'active';\n }\n\n if (min === item) {\n return 'start';\n }\n\n if (max === item) {\n return 'end';\n }\n\n return min < item && item < max ? 'middle' : null;\n }\n\n public onItemHovered(hovered: boolean, item: number): void {\n this.hoveredItem.set(hovered ? item : null);\n }\n\n protected scrollItemIntoView(item: number): boolean {\n return this.initialItem() === item;\n }\n\n protected getItem(rowIndex: number, colIndex: number): number {\n return rowIndex * ITEMS_IN_ROW + colIndex + this.calculatedMin();\n }\n\n protected itemIsToday(item: number): boolean {\n return CURRENT_YEAR === item;\n }\n}\n","@for (_ of '-'.repeat(rows()); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TUI_LAST_DISPLAYED_DAY,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nimport {TuiCalendarSheet, type TuiMarkerHandler} from './calendar-sheet.component';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSpin} from './calendar-spin.component';\nimport {TuiCalendarYear} from './calendar-year.component';\n\n@Component({\n selector: 'tui-calendar',\n imports: [\n TuiCalendarSheet,\n TuiCalendarSpin,\n TuiCalendarYear,\n TuiMapperPipe,\n TuiScrollbar,\n ],\n templateUrl: './calendar.template.html',\n styleUrl: './calendar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendar)],\n host: {'(pointerdown.prevent.zoneless)': '0'},\n})\nexport class TuiCalendar {\n protected readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n\n public readonly disabledItemHandler = input<TuiBooleanHandler<TuiDay>>(\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n );\n\n public readonly min = input(TUI_FIRST_DAY, {\n transform: (x: TuiDay | null) => x ?? TUI_FIRST_DAY,\n });\n\n public readonly max = input(TUI_LAST_DAY, {\n transform: (x: TuiDay | null) => x ?? TUI_LAST_DAY,\n });\n\n public readonly minViewedMonth = input<TuiMonth | null>(TUI_FIRST_DAY);\n public readonly maxViewedMonth = input<TuiMonth | null>(TUI_LAST_DAY);\n public readonly showAdjacent = input(true);\n public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n public readonly initialView = input<'month' | 'year'>('month');\n\n public readonly month = model(TuiMonth.currentLocal());\n public readonly hoveredItem = model<TuiDay | null>(null);\n public readonly value = model<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n\n public readonly dayClick = output<TuiDay>();\n\n protected readonly computedMinViewedMonth = computed(() => {\n const min = this.min();\n const minViewed = this.minViewedMonth() ?? TUI_FIRST_DAY;\n\n return minViewed.monthSameOrAfter(min) ? minViewed : min;\n });\n\n protected readonly computedMaxViewedMonth = computed(() => {\n const max = this.max();\n const maxViewed = this.maxViewedMonth() ?? TUI_LAST_DAY;\n\n return maxViewed.monthSameOrBefore(max) ? maxViewed : max;\n });\n\n protected readonly view = linkedSignal(() => this.initialView());\n\n protected readonly syncMonthFromValue = effect(() => {\n const value = this.value();\n\n if (\n this.showAdjacent() &&\n value instanceof TuiDay &&\n value.daySameOrBefore(TUI_LAST_DISPLAYED_DAY)\n ) {\n this.month.set(value);\n }\n });\n\n public onPaginationValueChange(month: TuiMonth): void {\n this.updateViewedMonth(month);\n }\n\n public onDayClick(day: TuiDay): void {\n this.dayClick.emit(day);\n this.value.set(day);\n }\n\n public onHoveredItemChange(day: TuiDay | null): void {\n this.updateHoveredDay(day);\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) || item.dayAfter(max) || disabledItemHandler(item);\n\n protected onPickerYearClick(year: number): void {\n this.view.set('month');\n this.updateViewedMonth(new TuiMonth(year, this.month().month));\n }\n\n private updateViewedMonth(month: TuiMonth): void {\n if (this.month().monthSame(month)) {\n return;\n }\n\n this.month.set(month);\n }\n\n private updateHoveredDay(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem.set(day);\n }\n}\n","@if (view() === 'year') {\n <tui-scrollbar\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n >\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month().year\"\n [max]=\"max().year\"\n [min]=\"min().year\"\n [rangeMode]=\"options.rangeMode\"\n [value]=\"value()\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n </tui-scrollbar>\n} @else {\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth()\"\n [min]=\"computedMinViewedMonth()\"\n [value]=\"month()\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"view.set('year')\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [hoveredItem]=\"hoveredItem()\"\n [markerHandler]=\"markerHandler()\"\n [month]=\"month()\"\n [showAdjacent]=\"showAdjacent()\"\n [value]=\"value()\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAUO,MAAM,4BAA4B,GAAuB;AAC5D,IAAA,OAAO,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AACzD,IAAA,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;;AAGnC,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,GAAG,gBAAgB,CAC9E,4BAA4B;;ACVzB,MAAM,kCAAkC,GAA4B;AACvE,IAAA,SAAS,EAAE,KAAK;;AAGb,MAAM,CAAC,0BAA0B,EAAE,+BAA+B,CAAC,GACtE,gBAAgB,CAAC,kCAAkC;;ACXvD;AAOA,MAAM,mBAAmB,GAAG,CAAC;MAGhB,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAC/C,IAAA,CAAA,YAAY,GAAoB,IAAI;QACpC,IAAA,CAAA,YAAY,GAAqC,EAAE;AAgD9D,IAAA;AA9CU,IAAA,SAAS,CACZ,KAAe,EACf,gBAAgB,GAAG,KAAK,EAAA;QAExB,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,YAAY;QAC5B;QAEA,MAAM,KAAK,GAA6B,EAAE;AAE1C,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,mBAAmB,EAAE,QAAQ,EAAE,EAAE;YAC/D,MAAM,GAAG,GAAa,EAAE;AAExB,YAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,QAAQ,EAAE,EAAE;gBACxD,MAAM,GAAG,GAAG,qBAAqB,CAAC;oBAC9B,KAAK;oBACL,QAAQ;oBACR,QAAQ;AACR,oBAAA,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC3C,iBAAA,CAAC;gBAEF,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,eAAe,GAAG,KAAK,KACxD,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK;gBAExE,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,eAAe,GAAG,KAAK,KACxD,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK;gBAExE,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAC1C;gBACJ;gBAEA,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAC1C;gBACJ;AAEA,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YACjB;AAEA,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,OAAO,IAAI,CAAC,YAAY;IAC5B;+GAlDS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,IAAI;mBAAC,EAAC,IAAI,EAAE,kBAAkB,EAAC;;AAsDhC;;AAEG;AACH,SAAS,uBAAuB,CAC5B,KAAe,EACf,cAAyC,EAAA;AAEzC,IAAA,MAAM,0BAA0B,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;IAEhF,OAAO,0BAA0B,IAAI;UAC/B,0BAA0B,GAAG;UAC7B,YAAY,IAAI,cAAc,GAAG,0BAA0B,CAAC;AACtE;AAEA;;;AAGG;AACH,SAAS,qBAAqB,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,GAejB,EAAA;AACG,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAElE,IAAA,IAAI,GAAG,GACH,QAAQ,GAAG,YAAY;QACvB,QAAQ;AACR,QAAA,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC;AAC9C,QAAA,CAAC;AAEL,IAAA,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE;AACvB,QAAA,GAAG,IAAI,KAAK,CAAC,SAAS;QACtB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC;IACpC;AAEA,IAAA,IAAI,GAAG,IAAI,CAAC,EAAE;AACV,QAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,EAAC,CAAC;AACjC,QAAA,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,GAAG;IAC/B;AAEA,IAAA,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AACnD;;ACtHA,SAAS,8BAA8B,CACnC,aAAgC,EAAA;AAEhC,IAAA,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;AAE5C,IAAA,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACrF;MAGa,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAa1D,IAAA;AAXU,IAAA,SAAS,CACZ,oBAAmD,EAAA;AAEnD,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAC5B,GAAG,CAAC,8BAA8B,CAAC,EACnC,GAAG,CAAC,CAAC,QAAQ,KAAK;YACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC3C,YAAA,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACjD,SAAA,CAAC,CACL;IACL;+GAbS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,IAAI;mBAAC,EAAC,IAAI,EAAE,kBAAkB,EAAC;;;MC0BnB,gBAAgB,CAAA;AAd7B,IAAA,WAAA,GAAA;AAeqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC5C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE;QAE3B,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,OAAO;QAEjD,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,mBAAmB,GAC/B,KAAK,CAA4B,iBAAiB,CAAC;AAEvC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA0B,IAAI,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkD,IAAI,CAAC;AACpE,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,IAAI,CAAC;QAExC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAU;QAkDxB,IAAA,CAAA,SAAS,GAAG,CAC3B,GAAW,EACX,KAAc,EACd,KAAoB,EACpB,aAAsC,KACF;AACpC,YAAA,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;AAC3D,gBAAA,OAAO,IAAI;YACf;AAEA,YAAA,MAAM,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;YAEpC,OAAO,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;AAC3C,QAAA,CAAC;AA8BJ,IAAA;AA3FU,IAAA,aAAa,CAAC,IAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,IAAI,CAAC;IACxC;AAEO,IAAA,YAAY,CAAC,IAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAE1B,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,IAAI;QACf;QAEA,IAAI,KAAK,YAAY,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACpD,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;QAChD;QAEA,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE;AACnD,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;QACrD;AAEA,QAAA,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,IAAI,EAAE,KAAK,YAAY,WAAW,CAAC,EAAE;YAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI;QACnE;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAEtD,QAAA,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,YAAA,OAAO,QAAQ;QACnB;QAEA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,OAAO,OAAO;QAClB;QAEA,IAAI,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxB,YAAA,OAAO,KAAK;QAChB;QAEA,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;IAClF;AAEA,IAAA,IAAc,iBAAiB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;IACjC;AAEA,IAAA,IAAc,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,MAAM;IACnE;AAiBU,IAAA,WAAW,CAAC,IAAY,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC;AAEU,IAAA,iBAAiB,CAAC,IAAY,EAAA;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;IACxC;IAEQ,QAAQ,CACZ,KAA2B,EAC3B,WAA0B,EAAA;AAE1B,QAAA,IAAI,KAAK,YAAY,MAAM,EAAE;YACzB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC;QACxD;QAEA,OAAO,KAAK,CAAC;AACT,cAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC,EAAE;cACpD,KAAK;IACf;AAEQ,IAAA,iBAAiB,CAAC,GAAkB,EAAA;QACxC,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAClE;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B;+GA5GS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvC7B,gzEAsDA,EAAA,MAAA,EAAA,CAAA,+nHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,ED1BQ,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACT,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,UAAU,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACV,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAOf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAd5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACL,SAAS;wBACT,oBAAoB;wBACpB,UAAU;wBACV,aAAa;wBACb,oBAAoB;qBACvB,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAC,kBAAkB,EAAE,gBAAgB,EAAC,EAAA,QAAA,EAAA,gzEAAA,EAAA,MAAA,EAAA,CAAA,+nHAAA,CAAA,EAAA;;;MEXnC,eAAe,CAAA;AAP5B,IAAA,WAAA,GAAA;AAQuB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAE9B,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAW,aAAa,CAAC;AACpC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAW,YAAY,CAAC;QAEnC,IAAA,CAAA,SAAS,GAAG,MAAM,EAAW;AAqBhD,IAAA;AAnBa,IAAA,MAAM,CAAC,IAAkB,EAAA;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACzB;aAAO;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;QAChE;IACJ;AAEQ,IAAA,WAAW,CAAC,KAAe,EAAA;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC/B;QACJ;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;+GA3BS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,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,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B5B,umBAqBA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAc,OAAO,wEAAE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKvB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACI,mBAAmB,EAAA,OAAA,EACpB,CAAC,OAAO,EAAE,aAAa,CAAC,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,umBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AECnD,MAAM,KAAK,GAAG,GAAG;AACjB,MAAM,YAAY,GAAG,CAAC;AACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI;MAWpC,eAAe,CAAA;AAT5B,IAAA,WAAA,GAAA;AAUqB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,CAAC;AACzC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAElC,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,OAAO;AACxC,QAAA,CAAC,CAAC;AAEe,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;AAElC,YAAA,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO;AAC5C,QAAA,CAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CACxC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KACb,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,MAAM,IAAI,CAAC,YAAY,QAAQ,CAAC,CACzE;QAEkB,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,YAAY,CAAC,CAC1E;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;QACxB,IAAA,CAAA,mBAAmB,GAAG,KAAK,CACvC,MAAM,CAAC,kBAAkB,CAAC,CAAC,mBAAmB,EAAE,CACnD;AAEe,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAE3B,IAAI,CAAC;AAES,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE;YAClC,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,QAAQ;AACjD,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE;YAClC,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,QAAQ;AACjD,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,YAAY,EAAE;YAC9C,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,YAAY;AACrD,SAAA,CAAC;QAEc,IAAA,CAAA,SAAS,GAAG,MAAM,EAAU;AA+D/C,IAAA;AA7DU,IAAA,UAAU,CAAC,IAAY,EAAA;AAC1B,QAAA,QACI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;aAC/B,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC;IAExC;AAEO,IAAA,YAAY,CAAC,IAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QAEtC,IAAI,KAAK,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACjD,YAAA,OAAO,QAAQ;QACnB;AAEA,QAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,KAAK,KAAK,IAAI,GAAG,QAAQ,GAAG,IAAI;QAC3C;AAEA,QAAA,IAAI,EAAE,KAAK,YAAY,aAAa,CAAC,IAAI,EAAE,KAAK,YAAY,OAAO,CAAC,EAAE;YAClE,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;QACpE;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,WAAW,GAAG,IAAI;AAC1D,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI;AAC5D,QAAA,MAAM,EAAE,GAAG,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAEvD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;AAEzC,QAAA,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE;AAC7C,YAAA,OAAO,QAAQ;QACnB;AAEA,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AACd,YAAA,OAAO,OAAO;QAClB;AAEA,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AACd,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,OAAO,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,QAAQ,GAAG,IAAI;IACrD;IAEO,aAAa,CAAC,OAAgB,EAAE,IAAY,EAAA;AAC/C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/C;AAEU,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI;IACtC;IAEU,OAAO,CAAC,QAAgB,EAAE,QAAgB,EAAA;QAChD,OAAO,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;IACpE;AAEU,IAAA,WAAW,CAAC,IAAY,EAAA;QAC9B,OAAO,YAAY,KAAK,IAAI;IAChC;+GA5GS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAHb,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnChD,s0BAuBA,EAAA,MAAA,EAAA,CAAA,8uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQc,UAAU,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAO9B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;+BACI,mBAAmB,EAAA,OAAA,EACpB,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,aACpC,CAAC,cAAc,iBAAiB,CAAC,EAAA,IAAA,EACtC,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,EAAA,QAAA,EAAA,s0BAAA,EAAA,MAAA,EAAA,CAAA,8uGAAA,CAAA,EAAA;;;MEUrC,WAAW,CAAA;AAfxB,IAAA,WAAA,GAAA;AAgBuB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC;QAE/C,IAAA,CAAA,mBAAmB,GAAG,KAAK,CACvC,MAAM,CAAC,kBAAkB,CAAC,CAAC,mBAAmB,EAAE,CACnD;AAEe,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,aAAa,EAAE;YACvC,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,aAAa;AACtD,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE;YACtC,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,YAAY;AACrD,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,aAAa,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,YAAY,CAAC;AACrD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA0B,IAAI,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmB,OAAO,CAAC;QAE9C,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,IAAI,CAAC;AACxC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkD,IAAI,CAAC;QAEpE,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAU;AAExB,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACtD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,aAAa;AAExD,YAAA,OAAO,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG;AAC5D,QAAA,CAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACtD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,YAAY;AAEvD,YAAA,OAAO,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG;AAC7D,QAAA,CAAC,CAAC;QAEiB,IAAA,CAAA,IAAI,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAE7C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,MAAK;AAChD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAE1B,IACI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,KAAK,YAAY,MAAM;AACvB,gBAAA,KAAK,CAAC,eAAe,CAAC,sBAAsB,CAAC,EAC/C;AACE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;AACJ,QAAA,CAAC,CAAC;AAeiB,QAAA,IAAA,CAAA,yBAAyB,GAGxC,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,KACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC;AAsB7E,IAAA;AAvCU,IAAA,uBAAuB,CAAC,KAAe,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACjC;AAEO,IAAA,UAAU,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACvB;AAEO,IAAA,mBAAmB,CAAC,GAAkB,EAAA;AACzC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAC9B;AAQU,IAAA,iBAAiB,CAAC,IAAY,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IAClE;AAEQ,IAAA,iBAAiB,CAAC,KAAe,EAAA;QACrC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC/B;QACJ;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;AAEQ,IAAA,gBAAgB,CAAC,GAAkB,EAAA;QACvC,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAClE;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B;+GA7FS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,msDAHT,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3C5C,mzCAqCA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHQ,gBAAgB,8MAChB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,KAAA,EAAA,KAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,aAAa,kDACb,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAfvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EACf;wBACL,gBAAgB;wBAChB,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,YAAY;AACf,qBAAA,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,cAAc,CAAA,WAAA,CAAa,CAAC,EAAA,IAAA,EAClC,EAAC,gCAAgC,EAAE,GAAG,EAAC,EAAA,QAAA,EAAA,mzCAAA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA;;;AE5CjD;;AAEG;;;;"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { TuiItem } from '@taiga-ui/cdk/directives/item';
|
|
2
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { inject, contentChild, TemplateRef, model, input, ElementRef, ChangeDetectionStrategy, Component, effect, Directive } from '@angular/core';
|
|
5
|
+
import * as i1 from '@ng-web-apis/intersection-observer';
|
|
6
|
+
import { WA_INTERSECTION_ROOT, WaIntersectionObserverDirective, WaIntersectionObserver } from '@ng-web-apis/intersection-observer';
|
|
7
|
+
import { WA_IS_IOS } from '@ng-web-apis/platform';
|
|
8
|
+
import { tuiProvide } from '@taiga-ui/cdk/utils/di';
|
|
9
|
+
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
10
|
+
import { tuiClamp } from '@taiga-ui/cdk/utils/math';
|
|
11
|
+
import { TUI_REDUCED_MOTION } from '@taiga-ui/core/tokens';
|
|
12
|
+
import { toSignal, toObservable } from '@angular/core/rxjs-interop';
|
|
13
|
+
import { WA_PAGE_VISIBILITY } from '@ng-web-apis/common';
|
|
14
|
+
import { TUI_FALSE_HANDLER, TUI_TRUE_HANDLER } from '@taiga-ui/cdk/constants';
|
|
15
|
+
import { tuiIfMap } from '@taiga-ui/cdk/observables';
|
|
16
|
+
import { merge, fromEvent, map, combineLatest, switchMap, timer, takeWhile } from 'rxjs';
|
|
17
|
+
|
|
18
|
+
class TuiCarouselComponent {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.el = tuiInjectElement();
|
|
21
|
+
this.ios = inject(WA_IS_IOS);
|
|
22
|
+
this.behavior = inject(TUI_REDUCED_MOTION) ? 'auto' : 'smooth';
|
|
23
|
+
this.math = Math;
|
|
24
|
+
this.template = contentChild.required(TuiItem, { read: TemplateRef });
|
|
25
|
+
this.index = model(0);
|
|
26
|
+
this.min = input(-Infinity);
|
|
27
|
+
this.max = input(Infinity);
|
|
28
|
+
}
|
|
29
|
+
ngAfterViewInit() {
|
|
30
|
+
if (this.index() > this.min()) {
|
|
31
|
+
this.el.scrollLeft = this.d * this.el.clientWidth;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
next() {
|
|
35
|
+
this.el.scrollTo({ left: this.d * this.el.scrollWidth, behavior: this.behavior });
|
|
36
|
+
}
|
|
37
|
+
prev() {
|
|
38
|
+
this.el.scrollTo({ left: 0, behavior: this.behavior });
|
|
39
|
+
}
|
|
40
|
+
onIntersection(isIntersecting, step) {
|
|
41
|
+
const index = tuiClamp(this.index() + step, this.min(), this.max());
|
|
42
|
+
if (isIntersecting) {
|
|
43
|
+
if (this.ios && index !== this.index()) {
|
|
44
|
+
this.el.style.overflow = 'hidden';
|
|
45
|
+
}
|
|
46
|
+
this.index.set(index);
|
|
47
|
+
requestAnimationFrame(() => {
|
|
48
|
+
this.el.style.overflow = '';
|
|
49
|
+
if (this.index() > this.min() && this.index() < this.max()) {
|
|
50
|
+
this.el.scrollLeft = this.d * this.el.clientWidth;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
get d() {
|
|
56
|
+
return this.el.matches('[dir="rtl"] :scope') ? -1 : 1;
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TuiCarouselComponent, isStandalone: true, selector: "tui-carousel", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { index: "indexChange" }, host: { attributes: { "waIntersectionThreshold": "1" } }, providers: [tuiProvide(WA_INTERSECTION_ROOT, ElementRef)], queries: [{ propertyName: "template", first: true, predicate: TuiItem, descendants: true, read: TemplateRef, isSignal: true }], hostDirectives: [{ directive: i1.WaIntersectionObserverDirective }], ngImport: i0, template: "<span\n class=\"t-item\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, -1)\"\n>\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.max(index() - 1, min())}\" />\n</span>\n@if (index() !== min() && index() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: index()}\" />\n </span>\n}\n<span\n class=\"t-item\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, 1)\"\n>\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.min(index() + 1, max())}\" />\n</span>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;display:flex;max-inline-size:100%;overscroll-behavior:none;overflow:scroll;scroll-snap-type:x mandatory}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}.t-item{position:relative;display:flex;min-inline-size:100%;block-size:100%;align-items:center;justify-content:center;scroll-snap-align:start;scroll-snap-stop:always}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.WaIntersectionObservee, selector: "[waIntersectionObservee]", outputs: ["waIntersectionObservee"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCarouselComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'tui-carousel', imports: [NgTemplateOutlet, WaIntersectionObserver], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiProvide(WA_INTERSECTION_ROOT, ElementRef)], hostDirectives: [WaIntersectionObserverDirective], host: { waIntersectionThreshold: '1' }, template: "<span\n class=\"t-item\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, -1)\"\n>\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.max(index() - 1, min())}\" />\n</span>\n@if (index() !== min() && index() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: index()}\" />\n </span>\n}\n<span\n class=\"t-item\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, 1)\"\n>\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.min(index() + 1, max())}\" />\n</span>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;display:flex;max-inline-size:100%;overscroll-behavior:none;overflow:scroll;scroll-snap-type:x mandatory}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}.t-item{position:relative;display:flex;min-inline-size:100%;block-size:100%;align-items:center;justify-content:center;scroll-snap-align:start;scroll-snap-stop:always}\n"] }]
|
|
64
|
+
}] });
|
|
65
|
+
|
|
66
|
+
class TuiCarouselDirective {
|
|
67
|
+
constructor() {
|
|
68
|
+
this.el = tuiInjectElement();
|
|
69
|
+
this.carousel = inject(TuiCarouselComponent);
|
|
70
|
+
this.running$ = merge(fromEvent(this.el, 'mouseenter').pipe(map(TUI_FALSE_HANDLER)), fromEvent(this.el, 'touchstart').pipe(map(TUI_FALSE_HANDLER)), fromEvent(this.el, 'touchend').pipe(map(TUI_TRUE_HANDLER)), fromEvent(this.el, 'mouseleave').pipe(map(TUI_TRUE_HANDLER)), inject(WA_PAGE_VISIBILITY));
|
|
71
|
+
this.duration = input(0);
|
|
72
|
+
this.progress = toSignal(combineLatest([
|
|
73
|
+
toObservable(this.duration),
|
|
74
|
+
toObservable(this.carousel.index),
|
|
75
|
+
]).pipe(switchMap(([duration]) => this.running$.pipe(tuiIfMap(() => timer(0, 100).pipe(map((i) => Math.min(100, ((i * 100) / duration) * 100)), takeWhile((percent) => percent < 100, true)))))), { initialValue: 0 });
|
|
76
|
+
this.sync = effect(() => {
|
|
77
|
+
if (this.progress() === 100) {
|
|
78
|
+
this.carousel.next();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCarouselDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
83
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.19", type: TuiCarouselDirective, isStandalone: true, selector: "tui-carousel[duration]", inputs: { duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["tuiCarousel"], ngImport: i0 }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCarouselDirective, decorators: [{
|
|
86
|
+
type: Directive,
|
|
87
|
+
args: [{
|
|
88
|
+
selector: 'tui-carousel[duration]',
|
|
89
|
+
exportAs: 'tuiCarousel',
|
|
90
|
+
}]
|
|
91
|
+
}] });
|
|
92
|
+
|
|
93
|
+
const TuiCarousel = [TuiCarouselComponent, TuiCarouselDirective, TuiItem];
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Generated bundle index. Do not edit.
|
|
97
|
+
*/
|
|
98
|
+
|
|
99
|
+
export { TuiCarousel, TuiCarouselComponent, TuiCarouselDirective };
|
|
100
|
+
//# sourceMappingURL=taiga-ui-core-components-carousel.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-carousel.mjs","sources":["../../../projects/core/components/carousel/carousel.component.ts","../../../projects/core/components/carousel/carousel.component.html","../../../projects/core/components/carousel/carousel.directive.ts","../../../projects/core/components/carousel/carousel.ts","../../../projects/core/components/carousel/taiga-ui-core-components-carousel.ts"],"sourcesContent":["import {NgTemplateOutlet} from '@angular/common';\nimport {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n ElementRef,\n inject,\n input,\n model,\n TemplateRef,\n} from '@angular/core';\nimport {\n WA_INTERSECTION_ROOT,\n WaIntersectionObserver,\n WaIntersectionObserverDirective,\n} from '@ng-web-apis/intersection-observer';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TUI_REDUCED_MOTION} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-carousel',\n imports: [NgTemplateOutlet, WaIntersectionObserver],\n templateUrl: './carousel.component.html',\n styleUrl: './carousel.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiProvide(WA_INTERSECTION_ROOT, ElementRef)],\n hostDirectives: [WaIntersectionObserverDirective],\n host: {waIntersectionThreshold: '1'},\n})\nexport class TuiCarouselComponent implements AfterViewInit {\n private readonly el = tuiInjectElement();\n private readonly ios = inject(WA_IS_IOS);\n private readonly behavior = inject(TUI_REDUCED_MOTION) ? 'auto' : 'smooth';\n\n protected readonly math = Math;\n protected readonly template = contentChild.required(TuiItem, {read: TemplateRef});\n\n public readonly index = model(0);\n public readonly min = input(-Infinity);\n public readonly max = input(Infinity);\n\n public ngAfterViewInit(): void {\n if (this.index() > this.min()) {\n this.el.scrollLeft = this.d * this.el.clientWidth;\n }\n }\n\n public next(): void {\n this.el.scrollTo({left: this.d * this.el.scrollWidth, behavior: this.behavior});\n }\n\n public prev(): void {\n this.el.scrollTo({left: 0, behavior: this.behavior});\n }\n\n protected onIntersection(isIntersecting: boolean, step: number): void {\n const index = tuiClamp(this.index() + step, this.min(), this.max());\n\n if (isIntersecting) {\n if (this.ios && index !== this.index()) {\n this.el.style.overflow = 'hidden';\n }\n\n this.index.set(index);\n requestAnimationFrame(() => {\n this.el.style.overflow = '';\n\n if (this.index() > this.min() && this.index() < this.max()) {\n this.el.scrollLeft = this.d * this.el.clientWidth;\n }\n });\n }\n }\n\n private get d(): number {\n return this.el.matches('[dir=\"rtl\"] :scope') ? -1 : 1;\n }\n}\n","<span\n class=\"t-item\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, -1)\"\n>\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.max(index() - 1, min())}\" />\n</span>\n@if (index() !== min() && index() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: index()}\" />\n </span>\n}\n<span\n class=\"t-item\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, 1)\"\n>\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.min(index() + 1, max())}\" />\n</span>\n","import {Directive, effect, inject, input} from '@angular/core';\nimport {toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {WA_PAGE_VISIBILITY} from '@ng-web-apis/common';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {combineLatest, fromEvent, map, merge, switchMap, takeWhile, timer} from 'rxjs';\n\nimport {TuiCarouselComponent} from './carousel.component';\n\n@Directive({\n selector: 'tui-carousel[duration]',\n exportAs: 'tuiCarousel',\n})\nexport class TuiCarouselDirective {\n private readonly el = tuiInjectElement();\n private readonly carousel = inject(TuiCarouselComponent);\n private readonly running$ = merge(\n fromEvent(this.el, 'mouseenter').pipe(map(TUI_FALSE_HANDLER)),\n fromEvent(this.el, 'touchstart').pipe(map(TUI_FALSE_HANDLER)),\n fromEvent(this.el, 'touchend').pipe(map(TUI_TRUE_HANDLER)),\n fromEvent(this.el, 'mouseleave').pipe(map(TUI_TRUE_HANDLER)),\n inject(WA_PAGE_VISIBILITY),\n );\n\n public readonly duration = input(0);\n public readonly progress = toSignal(\n combineLatest([\n toObservable(this.duration),\n toObservable(this.carousel.index),\n ]).pipe(\n switchMap(([duration]) =>\n this.running$.pipe(\n tuiIfMap(() =>\n timer(0, 100).pipe(\n map((i) => Math.min(100, ((i * 100) / duration) * 100)),\n takeWhile((percent) => percent < 100, true),\n ),\n ),\n ),\n ),\n ),\n {initialValue: 0},\n );\n\n protected readonly sync = effect(() => {\n if (this.progress() === 100) {\n this.carousel.next();\n }\n });\n}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiCarouselComponent} from './carousel.component';\nimport {TuiCarouselDirective} from './carousel.directive';\n\nexport const TuiCarousel = [TuiCarouselComponent, TuiCarouselDirective, TuiItem] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { ChangeDetectionStrategy, ViewEncapsulation, Component, inject, input, Directive } from '@angular/core';
|
|
3
|
+
import { TUI_VERSION } from '@taiga-ui/cdk/constants';
|
|
3
4
|
import { tuiWithStyles } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
4
5
|
import { tuiButtonOptionsProvider } from '@taiga-ui/core/components/button';
|
|
5
6
|
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
|
|
@@ -7,12 +8,12 @@ import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
|
|
|
7
8
|
const [TUI_CELL_OPTIONS, tuiCellOptionsProvider] = tuiCreateOptions({ height: 'normal', size: 'l' });
|
|
8
9
|
|
|
9
10
|
class Styles {
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-cell-5.0.0"], ngImport: i0, template: '', isInline: true, styles: ["[tuiCell]:where(*[data-tui-version=\"5.0.0\"]){--t-pad: .125rem 1rem;--t-radius: var(--tui-radius-s);transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:flex;align-items:center;text-align:start;box-sizing:content-box;isolation:isolate;color:var(--tui-text-primary);padding:var(--t-pad);min-block-size:var(--t-block-size);border-radius:var(--t-radius)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):is(button,label):not(:disabled):active{background:var(--tui-background-neutral-1)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):disabled,[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-state=disabled]{opacity:initial;pointer-events:none}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):disabled>*:not([tuiTooltip]),[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-state=disabled]>*:not([tuiTooltip]){opacity:var(--tui-disabled-opacity)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):is(label):has(input:disabled){opacity:initial;pointer-events:none}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):is(label):has(input:disabled)>*:not([tuiTooltip]){opacity:var(--tui-disabled-opacity)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiAccessories]{position:relative;display:flex;max-block-size:var(--t-block-size);align-items:center;align-self:stretch}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions]{position:absolute;z-index:1;inset-inline-end:0;padding-inline-end:inherit;--t-group-mask: none;--t-group-mask-end: none;--t-group-mask-start: none}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions]~*{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions] button,[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions] a{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions] button:focus-visible,[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions] a:focus-visible{opacity:1}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiSubtitle]{display:flex;align-items:center;gap:.25rem;color:var(--tui-text-secondary)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiTitle]{flex-shrink:7;margin-inline-end:auto;align-items:normal;text-align:start;overflow:hidden}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiTitle]~[tuiTitle]{flex-shrink:3;margin-inline-end:0;text-align:end;align-items:flex-end}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiTitle]~[tuiTitle][tuiFade]{align-items:flex-start}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) tui-badge-notification[data-size=xs]{position:absolute;top:50%;transform:translateY(-50%);inset-inline-start:-.625rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]{--t-block-size: calc(var(--tui-height-s) - .125rem);--t-pad: .1875rem 1rem;gap:.5rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s][data-height=spacious]{--t-pad: .4375rem 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s][data-height=compact]{--t-block-size: calc(var(--tui-height-s) - .25rem);--t-pad: 0 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s] [tuiTitle]{max-block-size:100%;font:var(--tui-typography-ui-s);gap:0}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s] [tuiSubtitle]{font:var(--tui-typography-ui-2xs)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]>[tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]>tui-avatar-stack [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]>[tuiAccessories] [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]>[tuiAccessories] tui-avatar-stack [tuiAvatar]{--t-size: 1.5rem;font:var(--tui-typography-body-m);font-size:.5625rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]{--t-block-size: calc(var(--tui-height-m) - .75rem);--t-pad: .375rem 1rem;gap:.75rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m][data-height=spacious]{--t-pad: 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m][data-height=compact]{--t-block-size: calc(var(--tui-height-m) - .5rem);--t-pad: 0 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m] [tuiTitle]{font:var(--tui-typography-ui-s);gap:.125rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m] [tuiSubtitle]{font:var(--tui-typography-ui-2xs)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]>[tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]>tui-avatar-stack [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]>[tuiAccessories] [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]>[tuiAccessories] tui-avatar-stack [tuiAvatar]{--t-size: 2rem;align-self:flex-start}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]{--t-block-size: calc(var(--tui-height-l) - 1rem);--t-pad: .5rem 1rem;--t-radius: var(--tui-radius-l);gap:1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l][data-height=spacious]{--t-pad: 1.25rem 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l][data-height=compact]{--t-block-size: calc(var(--tui-height-l) - 1rem);--t-pad: 0 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]>[tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]>tui-avatar-stack [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]>[tuiAccessories] [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]>[tuiAccessories] tui-avatar-stack [tuiAvatar]{--t-size: 2.5rem;font:var(--tui-typography-body-m);font-weight:700;align-self:flex-start}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover [tuiCellActions]~*{opacity:0}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover [tuiCellActions] button,[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover [tuiCellActions] a,[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover [tuiCellActions] label{opacity:1}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:-.125rem}@media (hover: hover) and (pointer: fine){a[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover:not(:disabled,[data-state=disabled]),button[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover:not(:disabled,[data-state=disabled]),label[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover:not(:disabled,[data-state=disabled]){background:var(--tui-background-neutral-1);cursor:pointer}label[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover:not(:has(input:disabled)){background:var(--tui-background-neutral-1);cursor:pointer}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
12
13
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: Styles, decorators: [{
|
|
14
15
|
type: Component,
|
|
15
|
-
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
16
|
+
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-cell-${TUI_VERSION}`, styles: ["[tuiCell]:where(*[data-tui-version=\"5.0.0\"]){--t-pad: .125rem 1rem;--t-radius: var(--tui-radius-s);transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:flex;align-items:center;text-align:start;box-sizing:content-box;isolation:isolate;color:var(--tui-text-primary);padding:var(--t-pad);min-block-size:var(--t-block-size);border-radius:var(--t-radius)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):is(button,label):not(:disabled):active{background:var(--tui-background-neutral-1)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):disabled,[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-state=disabled]{opacity:initial;pointer-events:none}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):disabled>*:not([tuiTooltip]),[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-state=disabled]>*:not([tuiTooltip]){opacity:var(--tui-disabled-opacity)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):is(label):has(input:disabled){opacity:initial;pointer-events:none}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):is(label):has(input:disabled)>*:not([tuiTooltip]){opacity:var(--tui-disabled-opacity)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiAccessories]{position:relative;display:flex;max-block-size:var(--t-block-size);align-items:center;align-self:stretch}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions]{position:absolute;z-index:1;inset-inline-end:0;padding-inline-end:inherit;--t-group-mask: none;--t-group-mask-end: none;--t-group-mask-start: none}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions]~*{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions] button,[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions] a{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions] button:focus-visible,[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiCellActions][tuiCellActions] a:focus-visible{opacity:1}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiSubtitle]{display:flex;align-items:center;gap:.25rem;color:var(--tui-text-secondary)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiTitle]{flex-shrink:7;margin-inline-end:auto;align-items:normal;text-align:start;overflow:hidden}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiTitle]~[tuiTitle]{flex-shrink:3;margin-inline-end:0;text-align:end;align-items:flex-end}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) [tuiTitle]~[tuiTitle][tuiFade]{align-items:flex-start}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]) tui-badge-notification[data-size=xs]{position:absolute;top:50%;transform:translateY(-50%);inset-inline-start:-.625rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]{--t-block-size: calc(var(--tui-height-s) - .125rem);--t-pad: .1875rem 1rem;gap:.5rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s][data-height=spacious]{--t-pad: .4375rem 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s][data-height=compact]{--t-block-size: calc(var(--tui-height-s) - .25rem);--t-pad: 0 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s] [tuiTitle]{max-block-size:100%;font:var(--tui-typography-ui-s);gap:0}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s] [tuiSubtitle]{font:var(--tui-typography-ui-2xs)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]>[tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]>tui-avatar-stack [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]>[tuiAccessories] [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]>[tuiAccessories] tui-avatar-stack [tuiAvatar]{--t-size: 1.5rem;font:var(--tui-typography-body-m);font-size:.5625rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]{--t-block-size: calc(var(--tui-height-m) - .75rem);--t-pad: .375rem 1rem;gap:.75rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m][data-height=spacious]{--t-pad: 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m][data-height=compact]{--t-block-size: calc(var(--tui-height-m) - .5rem);--t-pad: 0 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m] [tuiTitle]{font:var(--tui-typography-ui-s);gap:.125rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m] [tuiSubtitle]{font:var(--tui-typography-ui-2xs)}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]>[tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]>tui-avatar-stack [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]>[tuiAccessories] [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=m]>[tuiAccessories] tui-avatar-stack [tuiAvatar]{--t-size: 2rem;align-self:flex-start}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]{--t-block-size: calc(var(--tui-height-l) - 1rem);--t-pad: .5rem 1rem;--t-radius: var(--tui-radius-l);gap:1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l][data-height=spacious]{--t-pad: 1.25rem 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l][data-height=compact]{--t-block-size: calc(var(--tui-height-l) - 1rem);--t-pad: 0 1rem}[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]>[tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]>tui-avatar-stack [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]>[tuiAccessories] [tuiAvatar],[tuiCell]:where(*[data-tui-version=\"5.0.0\"])[data-size=l]>[tuiAccessories] tui-avatar-stack [tuiAvatar]{--t-size: 2.5rem;font:var(--tui-typography-body-m);font-weight:700;align-self:flex-start}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover [tuiCellActions]~*{opacity:0}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover [tuiCellActions] button,[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover [tuiCellActions] a,[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover [tuiCellActions] label{opacity:1}[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:-.125rem}@media (hover: hover) and (pointer: fine){a[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover:not(:disabled,[data-state=disabled]),button[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover:not(:disabled,[data-state=disabled]),label[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover:not(:disabled,[data-state=disabled]){background:var(--tui-background-neutral-1);cursor:pointer}label[tuiCell]:where(*[data-tui-version=\"5.0.0\"]):hover:not(:has(input:disabled)){background:var(--tui-background-neutral-1);cursor:pointer}}\n"] }]
|
|
16
17
|
}] });
|
|
17
18
|
class TuiCell {
|
|
18
19
|
constructor() {
|
|
@@ -21,16 +22,17 @@ class TuiCell {
|
|
|
21
22
|
this.size = input(this.options.size, { alias: 'tuiCell' });
|
|
22
23
|
this.height = input(this.options.height, { alias: 'tuiCellHeight' });
|
|
23
24
|
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
25
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
26
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.19", type: TuiCell, isStandalone: true, selector: "[tuiCell]:not(ng-template)", inputs: { size: { classPropertyName: "size", publicName: "tuiCell", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "tuiCellHeight", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tuiCell": "", "data-tui-version": "5.0.0" }, properties: { "attr.data-size": "size() || options.size || \"l\"", "attr.data-height": "height()" } }, providers: [tuiButtonOptionsProvider({ size: 's' })], ngImport: i0 }); }
|
|
26
27
|
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCell, decorators: [{
|
|
28
29
|
type: Directive,
|
|
29
30
|
args: [{
|
|
30
31
|
selector: '[tuiCell]:not(ng-template)',
|
|
31
32
|
providers: [tuiButtonOptionsProvider({ size: 's' })],
|
|
32
33
|
host: {
|
|
33
34
|
tuiCell: '',
|
|
35
|
+
'data-tui-version': TUI_VERSION,
|
|
34
36
|
'[attr.data-size]': 'size() || options.size || "l"',
|
|
35
37
|
'[attr.data-height]': 'height()',
|
|
36
38
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-cell.mjs","sources":["../../../projects/core/components/cell/cell.options.ts","../../../projects/core/components/cell/cell.directive.ts","../../../projects/core/components/cell/taiga-ui-core-components-cell.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiCellOptions {\n readonly height: 'compact' | 'normal' | 'spacious';\n readonly size: TuiSizeL | TuiSizeS | '';\n}\n\nexport const [TUI_CELL_OPTIONS, tuiCellOptionsProvider] =\n tuiCreateOptions<TuiCellOptions>({height: 'normal', size: 'l'});\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\nimport {TUI_CELL_OPTIONS} from './cell.options';\n\n@Component({\n template: '',\n
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-cell.mjs","sources":["../../../projects/core/components/cell/cell.options.ts","../../../projects/core/components/cell/cell.directive.ts","../../../projects/core/components/cell/taiga-ui-core-components-cell.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiCellOptions {\n readonly height: 'compact' | 'normal' | 'spacious';\n readonly size: TuiSizeL | TuiSizeS | '';\n}\n\nexport const [TUI_CELL_OPTIONS, tuiCellOptionsProvider] =\n tuiCreateOptions<TuiCellOptions>({height: 'normal', size: 'l'});\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\nimport {TUI_CELL_OPTIONS} from './cell.options';\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './cell.styles.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-cell-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiCell]:not(ng-template)',\n providers: [tuiButtonOptionsProvider({size: 's'})],\n host: {\n tuiCell: '',\n 'data-tui-version': TUI_VERSION,\n '[attr.data-size]': 'size() || options.size || \"l\"',\n '[attr.data-height]': 'height()',\n },\n})\nexport class TuiCell {\n protected readonly nothing = tuiWithStyles(Styles);\n protected readonly options = inject(TUI_CELL_OPTIONS);\n\n public readonly size = input(this.options.size, {alias: 'tuiCell'});\n public readonly height = input(this.options.height, {alias: 'tuiCellHeight'});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -21,12 +21,12 @@ class TuiCheckbox extends TuiRadioComponent {
|
|
|
21
21
|
this.check = tuiIconStart(computed(() => this.options.icons.checked(this.size())));
|
|
22
22
|
this.indeterminate = tuiIconEnd(computed(() => this.options.icons.indeterminate(this.size())));
|
|
23
23
|
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
25
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCheckbox, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TuiCheckbox, isStandalone: true, selector: "input[type=\"checkbox\"][tuiCheckbox]", providers: [tuiProvide(TUI_RADIO_OPTIONS, TUI_CHECKBOX_OPTIONS)], usesInheritance: true, hostDirectives: [{ directive: i1.TuiIcons }], ngImport: i0, template: '', isInline: true, styles: ["[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]){--t-size: 1.5rem;--t-radius: var(--tui-radius-s);inline-size:var(--t-size);block-size:var(--t-size);border-radius:var(--t-radius);cursor:pointer;margin:0;flex-shrink:0}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):before{position:absolute;block-size:100%;inline-size:100%;font-size:1rem;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>');mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>');transform:scale(0);transition:transform var(--tui-duration) ease-in-out,mask 0s var(--tui-duration) ease-in-out}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):after{display:none}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):disabled._readonly._readonly{opacity:1;pointer-events:none}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):checked:before,[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):indeterminate:before{-webkit-mask-image:var(--t-icon-start);mask-image:var(--t-icon-start);transform:scale(1);transition:transform var(--tui-duration) ease-in-out,mask 0s ease-in-out;transition-duration:inherit}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):indeterminate:before{-webkit-mask-image:var(--t-icon-end);mask-image:var(--t-icon-end)}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]{--t-size: 1rem;--t-radius: var(--tui-radius-xs)}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]:before{font-size:.875rem}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):invalid:not([data-mode]),[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"])[data-mode~=invalid]{color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
26
26
|
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCheckbox, decorators: [{
|
|
28
28
|
type: Component,
|
|
29
|
-
args: [{ selector: 'input[type="checkbox"][tuiCheckbox]', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiProvide(TUI_RADIO_OPTIONS, TUI_CHECKBOX_OPTIONS)], hostDirectives: [TuiIcons], styles: ["[tuiCheckbox]:where(*[data-tui-version=\"5.0.0
|
|
29
|
+
args: [{ selector: 'input[type="checkbox"][tuiCheckbox]', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiProvide(TUI_RADIO_OPTIONS, TUI_CHECKBOX_OPTIONS)], hostDirectives: [TuiIcons], styles: ["[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]){--t-size: 1.5rem;--t-radius: var(--tui-radius-s);inline-size:var(--t-size);block-size:var(--t-size);border-radius:var(--t-radius);cursor:pointer;margin:0;flex-shrink:0}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):before{position:absolute;block-size:100%;inline-size:100%;font-size:1rem;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>');mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>');transform:scale(0);transition:transform var(--tui-duration) ease-in-out,mask 0s var(--tui-duration) ease-in-out}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):after{display:none}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):disabled._readonly._readonly{opacity:1;pointer-events:none}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):checked:before,[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):indeterminate:before{-webkit-mask-image:var(--t-icon-start);mask-image:var(--t-icon-start);transform:scale(1);transition:transform var(--tui-duration) ease-in-out,mask 0s ease-in-out;transition-duration:inherit}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):indeterminate:before{-webkit-mask-image:var(--t-icon-end);mask-image:var(--t-icon-end)}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]{--t-size: 1rem;--t-radius: var(--tui-radius-xs)}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"])[data-size=s]:before{font-size:.875rem}[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"]):invalid:not([data-mode]),[tuiCheckbox]:where(*[data-tui-version=\"5.0.0\"])[data-mode~=invalid]{color:#fff}\n"] }]
|
|
30
30
|
}] });
|
|
31
31
|
|
|
32
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-checkbox.mjs","sources":["../../../projects/core/components/checkbox/checkbox.options.ts","../../../projects/core/components/checkbox/checkbox.component.ts","../../../projects/core/components/checkbox/taiga-ui-core-components-checkbox.ts"],"sourcesContent":["import {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiRadioOptions} from '@taiga-ui/core/components/radio';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiCheckboxOptions extends TuiRadioOptions {\n readonly icons: Readonly<{\n checked: TuiStringHandler<TuiSizeS>;\n indeterminate: TuiStringHandler<TuiSizeS>;\n }>;\n}\n\nexport const [TUI_CHECKBOX_OPTIONS, tuiCheckboxOptionsProvider] =\n tuiCreateOptions<TuiCheckboxOptions>({\n size: 'm',\n appearance: (el) =>\n el.checked || el.indeterminate ? 'primary' : 'outline-grayscale',\n icons: {\n checked: () => '@tui.check',\n indeterminate: () => '@tui.minus',\n },\n });\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {TUI_RADIO_OPTIONS, TuiRadioComponent} from '@taiga-ui/core/components/radio';\nimport {tuiIconEnd, TuiIcons, tuiIconStart} from '@taiga-ui/core/directives/icons';\n\nimport {TUI_CHECKBOX_OPTIONS, type TuiCheckboxOptions} from './checkbox.options';\n\n@Component({\n selector: 'input[type=\"checkbox\"][tuiCheckbox]',\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import '@taiga-ui/styles/components/checkbox.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiProvide(TUI_RADIO_OPTIONS, TUI_CHECKBOX_OPTIONS)],\n hostDirectives: [TuiIcons],\n})\nexport class TuiCheckbox extends TuiRadioComponent<TuiCheckboxOptions> {\n protected readonly check = tuiIconStart(\n computed(() => this.options.icons.checked(this.size())),\n );\n\n protected readonly indeterminate = tuiIconEnd(\n computed(() => this.options.icons.indeterminate(this.size())),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAYa,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,GAC3D,gBAAgB,CAAqB;AACjC,IAAA,IAAI,EAAE,GAAG;IACT,UAAU,EAAE,CAAC,EAAE,KACX,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,aAAa,GAAG,SAAS,GAAG,mBAAmB;AACpE,IAAA,KAAK,EAAE;AACH,QAAA,OAAO,EAAE,MAAM,YAAY;AAC3B,QAAA,aAAa,EAAE,MAAM,YAAY;AACpC,KAAA;AACJ,CAAA;;ACKC,MAAO,WAAY,SAAQ,iBAAqC,CAAA;AAbtE,IAAA,WAAA,GAAA;;QAcuB,
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-checkbox.mjs","sources":["../../../projects/core/components/checkbox/checkbox.options.ts","../../../projects/core/components/checkbox/checkbox.component.ts","../../../projects/core/components/checkbox/taiga-ui-core-components-checkbox.ts"],"sourcesContent":["import {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiRadioOptions} from '@taiga-ui/core/components/radio';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiCheckboxOptions extends TuiRadioOptions {\n readonly icons: Readonly<{\n checked: TuiStringHandler<TuiSizeS>;\n indeterminate: TuiStringHandler<TuiSizeS>;\n }>;\n}\n\nexport const [TUI_CHECKBOX_OPTIONS, tuiCheckboxOptionsProvider] =\n tuiCreateOptions<TuiCheckboxOptions>({\n size: 'm',\n appearance: (el) =>\n el.checked || el.indeterminate ? 'primary' : 'outline-grayscale',\n icons: {\n checked: () => '@tui.check',\n indeterminate: () => '@tui.minus',\n },\n });\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {TUI_RADIO_OPTIONS, TuiRadioComponent} from '@taiga-ui/core/components/radio';\nimport {tuiIconEnd, TuiIcons, tuiIconStart} from '@taiga-ui/core/directives/icons';\n\nimport {TUI_CHECKBOX_OPTIONS, type TuiCheckboxOptions} from './checkbox.options';\n\n@Component({\n selector: 'input[type=\"checkbox\"][tuiCheckbox]',\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import '@taiga-ui/styles/components/checkbox.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiProvide(TUI_RADIO_OPTIONS, TUI_CHECKBOX_OPTIONS)],\n hostDirectives: [TuiIcons],\n})\nexport class TuiCheckbox extends TuiRadioComponent<TuiCheckboxOptions> {\n protected readonly check = tuiIconStart(\n computed(() => this.options.icons.checked(this.size())),\n );\n\n protected readonly indeterminate = tuiIconEnd(\n computed(() => this.options.icons.indeterminate(this.size())),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAYa,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,GAC3D,gBAAgB,CAAqB;AACjC,IAAA,IAAI,EAAE,GAAG;IACT,UAAU,EAAE,CAAC,EAAE,KACX,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,aAAa,GAAG,SAAS,GAAG,mBAAmB;AACpE,IAAA,KAAK,EAAE;AACH,QAAA,OAAO,EAAE,MAAM,YAAY;AAC3B,QAAA,aAAa,EAAE,MAAM,YAAY;AACpC,KAAA;AACJ,CAAA;;ACKC,MAAO,WAAY,SAAQ,iBAAqC,CAAA;AAbtE,IAAA,WAAA,GAAA;;QAcuB,IAAA,CAAA,KAAK,GAAG,YAAY,CACnC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAC1D;QAEkB,IAAA,CAAA,aAAa,GAAG,UAAU,CACzC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;AACJ,IAAA;+GARY,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,SAAA,EAHT,CAAC,UAAU,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARtD,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4mDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAWH,WAAW,EAAA,UAAA,EAAA,CAAA;kBAbvB,SAAS;+BACI,qCAAqC,EAAA,QAAA,EACrC,EAAE,EAAA,aAAA,EAMG,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,UAAU,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,EAAA,cAAA,EAChD,CAAC,QAAQ,CAAC,EAAA,MAAA,EAAA,CAAA,4mDAAA,CAAA,EAAA;;;ACxB9B;;AAEG;;;;"}
|