@taiga-ui/cdk 4.18.0-canary.d26f32b → 4.19.0-canary.2a86fb0

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.
Files changed (37) hide show
  1. package/classes/value-transformer.d.ts +4 -0
  2. package/constants/allow-signal-writes.d.ts +2 -0
  3. package/constants/index.d.ts +1 -0
  4. package/constants/used-icons.d.ts +1 -1
  5. package/constants/version.d.ts +1 -1
  6. package/constants/version.js +1 -1
  7. package/date-time/time.d.ts +1 -0
  8. package/esm2022/classes/value-transformer.mjs +8 -1
  9. package/esm2022/constants/allow-signal-writes.mjs +3 -0
  10. package/esm2022/constants/index.mjs +2 -1
  11. package/esm2022/constants/used-icons.mjs +2 -2
  12. package/esm2022/constants/version.mjs +2 -2
  13. package/esm2022/date-time/time.mjs +14 -17
  14. package/esm2022/observables/index.mjs +2 -1
  15. package/esm2022/observables/untracked-scheduler.mjs +11 -0
  16. package/esm2022/utils/focus/focused-in.mjs +4 -3
  17. package/esm2022/utils/miscellaneous/directive-binding.mjs +4 -8
  18. package/fesm2022/taiga-ui-cdk-classes.mjs +7 -1
  19. package/fesm2022/taiga-ui-cdk-classes.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-cdk-constants.mjs +6 -4
  21. package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-cdk-date-time.mjs +12 -15
  23. package/fesm2022/taiga-ui-cdk-date-time.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-cdk-observables.mjs +12 -3
  25. package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-cdk-utils-focus.mjs +3 -2
  27. package/fesm2022/taiga-ui-cdk-utils-focus.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +3 -7
  29. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
  30. package/observables/index.d.ts +1 -0
  31. package/observables/untracked-scheduler.d.ts +2 -0
  32. package/package.json +7 -7
  33. package/schematics/ng-update/v4/index.js +1 -1
  34. package/schematics/ng-update/v4/steps/constants/identifiers-to-replace.js +20 -0
  35. package/schematics/ng-update/v4/steps/constants/tags-to-replace.js +14 -0
  36. package/schematics/ng-update/v4/steps/migrate-providers-from.js +2 -0
  37. package/schematics/ng-update/v4/steps/templates/migrate-badged-content.js +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-date-time.mjs","sources":["../../../projects/cdk/date-time/date-clamp.ts","../../../projects/cdk/date-time/date-time.ts","../../../projects/cdk/date-time/date-fillers.ts","../../../projects/cdk/date-time/day-of-week.ts","../../../projects/cdk/date-time/month-number.ts","../../../projects/cdk/date-time/year.ts","../../../projects/cdk/date-time/month.ts","../../../projects/cdk/date-time/day.ts","../../../projects/cdk/date-time/month-range.ts","../../../projects/cdk/date-time/day-range.ts","../../../projects/cdk/date-time/days.const.ts","../../../projects/cdk/date-time/time.ts","../../../projects/cdk/date-time/taiga-ui-cdk-date-time.ts"],"sourcesContent":["import type {TuiYear} from './year';\n\nexport function tuiDateClamp<T extends TuiYear>(date: T, min?: T, max?: T): T {\n if (max && max < date) {\n return max;\n }\n\n if (min && min > date) {\n return min;\n }\n\n return date;\n}\n","import {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\n\nexport const DAYS_IN_WEEK = 7;\n\nexport const DAYS_IN_NORMAL_YEAR = 365;\n\nexport const DAYS_IN_LEAP_YEAR = 366;\n\nexport const MONTHS_IN_YEAR = 12;\n\nexport const MIN_DAY = 1;\n\nexport const MIN_MONTH = 0;\n\nexport const MAX_MONTH = 11;\n\nexport const MIN_YEAR = 0;\n\nexport const MAX_YEAR = 9999;\n\nexport const MAX_DISPLAYED_YEAR = 2099;\n\nexport const RANGE_SEPARATOR_CHAR = `${CHAR_NO_BREAK_SPACE}${CHAR_EN_DASH}${CHAR_NO_BREAK_SPACE}`;\n\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const SECONDS_IN_MINUTE = 60;\n\nexport const MINUTES_IN_HOUR = 60;\n\nexport const HOURS_IN_DAY = 24;\n\nexport const MILLISECONDS_IN_MINUTE = MILLISECONDS_IN_SECOND * SECONDS_IN_MINUTE;\n\nexport const MILLISECONDS_IN_HOUR = MILLISECONDS_IN_MINUTE * MINUTES_IN_HOUR;\n\nexport const MILLISECONDS_IN_DAY = MILLISECONDS_IN_HOUR * HOURS_IN_DAY;\n","import {RANGE_SEPARATOR_CHAR} from './date-time';\n\n/**\n * @internal 'dd.mm.yyyy'.length\n * Used in:\n * - {@link TuiInputDateComponent}\n * - {@link TuiInputDateRangeComponent}\n * - {@link TuiInputDateTimeComponent}\n */\nexport const DATE_FILLER_LENGTH = 10;\n/**\n * @internal\n * Used in {@link TuiInputDateRangeComponent}\n */\nexport const DATE_RANGE_FILLER_LENGTH =\n 2 * DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length;\n","export const TuiDayOfWeek = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6,\n} as const;\n","export const TuiMonthNumber = {\n January: 0,\n February: 1,\n March: 2,\n April: 3,\n May: 4,\n June: 5,\n July: 6,\n August: 7,\n September: 8,\n October: 9,\n November: 10,\n December: 11,\n} as const;\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {tuiInRange, tuiNormalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {MAX_YEAR, MIN_YEAR} from './date-time';\nimport type {TuiYearLike} from './types';\n\n/**\n * Immutable year object\n * @nosideeffects\n */\nexport class TuiYear implements TuiYearLike {\n constructor(public readonly year: number) {\n ngDevMode && console.assert(TuiYear.isValidYear(year));\n }\n\n /**\n * Checks year for validity\n */\n public static isValidYear(year: number): boolean {\n return Number.isInteger(year) && tuiInRange(year, MIN_YEAR, MAX_YEAR + 1);\n }\n\n /**\n * Check if passed year is a leap year\n */\n public static isLeapYear(year: number): boolean {\n ngDevMode && console.assert(TuiYear.isValidYear(year));\n\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n }\n\n /**\n * Returns amount of leap years from year 0 to the passed one\n */\n public static getAbsoluteLeapYears(year: number): number {\n ngDevMode && console.assert(TuiYear.isValidYear(year));\n\n return Math.ceil(year / 400) + (Math.ceil(year / 4) - Math.ceil(year / 100));\n }\n\n public static lengthBetween(from: TuiYear, to: TuiYear): number {\n return to.year - from.year;\n }\n\n /**\n * Normalizes year by clamping it between min and max years\n */\n public static normalizeYearPart(year: number): number {\n return tuiNormalizeToIntNumber(year, MIN_YEAR, MAX_YEAR);\n }\n\n public get formattedYear(): string {\n return String(this.year).padStart(4, '0');\n }\n\n public get isLeapYear(): boolean {\n return TuiYear.isLeapYear(this.year);\n }\n\n /**\n * Returns amount of leap years from year 0 to current\n */\n public get absoluteLeapYears(): number {\n return TuiYear.getAbsoluteLeapYears(this.year);\n }\n\n /**\n * Passed year is after current\n */\n public yearBefore({year}: TuiYear): boolean {\n return this.year < year;\n }\n\n /**\n * Passed year is the same or after current\n */\n public yearSameOrBefore({year}: TuiYear): boolean {\n return this.year <= year;\n }\n\n /**\n * Passed year is the same as current\n */\n public yearSame({year}: TuiYear): boolean {\n return this.year === year;\n }\n\n /**\n * Passed year is either the same of before the current\n */\n public yearSameOrAfter({year}: TuiYear): boolean {\n return this.year >= year;\n }\n\n /**\n * Passed year is before current\n */\n public yearAfter({year}: TuiYear): boolean {\n return this.year > year;\n }\n\n /**\n * Immutably offsets year\n */\n public append({year = 0}: TuiYearLike): TuiYear {\n ngDevMode && console.assert(Number.isInteger(year));\n\n const resultYear = this.year + year;\n\n ngDevMode && console.assert(TuiYear.isValidYear(resultYear));\n\n return new TuiYear(resultYear);\n }\n\n public toString(): string {\n return this.formattedYear;\n }\n\n public valueOf(): number {\n return this.year;\n }\n\n /**\n * Returns the primitive value of the given Date object.\n * Depending on the argument, the method can return either a string or a number.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive\n */\n public [Symbol.toPrimitive](hint: string): number | string {\n return Date.prototype[Symbol.toPrimitive].call(this, hint);\n }\n\n public toJSON(): string {\n return this.formattedYear;\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiInRange, tuiNormalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {MAX_MONTH, MIN_MONTH, MONTHS_IN_YEAR} from './date-time';\nimport {TuiMonthNumber} from './month-number';\nimport type {TuiMonthLike} from './types';\nimport {TuiYear} from './year';\n\n/**\n * Immutable object consisting of year and month\n */\nexport class TuiMonth extends TuiYear implements TuiMonthLike {\n /**\n * @param year\n * @param month (starting with 0)\n */\n constructor(\n year: number,\n public readonly month: number,\n ) {\n super(year);\n ngDevMode && console.assert(TuiMonth.isValidMonth(year, month));\n }\n\n /**\n * Tests month and year for validity\n */\n public static isValidMonth(year: number, month: number): boolean {\n return TuiYear.isValidYear(year) && TuiMonth.isValidMonthPart(month);\n }\n\n /**\n * Returns number of days in a month\n */\n public static getMonthDaysCount(month: number, isLeapYear: boolean): number {\n ngDevMode && console.assert(TuiMonth.isValidMonthPart(month));\n\n switch (month) {\n case TuiMonthNumber.April:\n case TuiMonthNumber.June:\n case TuiMonthNumber.November:\n case TuiMonthNumber.September:\n return 30;\n case TuiMonthNumber.February:\n return isLeapYear ? 29 : 28;\n default:\n return 31;\n }\n }\n\n /**\n * Returns current month and year based on local time zone\n * @nosideeffects\n */\n public static currentLocal(): TuiMonth {\n const nativeDate = new Date();\n\n return new TuiMonth(nativeDate.getFullYear(), nativeDate.getMonth());\n }\n\n /**\n * Returns current month and year based on UTC\n */\n public static currentUtc(): TuiMonth {\n const nativeDate = new Date();\n\n return new TuiMonth(nativeDate.getUTCFullYear(), nativeDate.getUTCMonth());\n }\n\n public static override lengthBetween(from: TuiMonth, to: TuiMonth): number {\n const absoluteFrom = from.month + from.year * 12;\n const absoluteTo = to.month + to.year * 12;\n\n return absoluteTo - absoluteFrom;\n }\n\n /**\n * Normalizes number by clamping it between min and max month\n */\n public static normalizeMonthPart(month: number): number {\n return tuiNormalizeToIntNumber(month, MIN_MONTH, MAX_MONTH);\n }\n\n /**\n * Tests month for validity\n */\n private static isValidMonthPart(month: number): boolean {\n return Number.isInteger(month) && tuiInRange(month, MIN_MONTH, MAX_MONTH + 1);\n }\n\n public get formattedMonthPart(): string {\n return String(this.month + 1).padStart(2, '0');\n }\n\n /**\n * Returns days in a month\n */\n public get daysCount(): number {\n return TuiMonth.getMonthDaysCount(this.month, this.isLeapYear);\n }\n\n /**\n * Passed month and year are after current\n */\n public monthBefore(another: TuiMonth): boolean {\n return (\n this.yearBefore(another) ||\n (this.yearSame(another) && this.month < another.month)\n );\n }\n\n /**\n * Passed month and year are after or the same as current\n */\n public monthSameOrBefore(another: TuiMonth): boolean {\n return (\n this.yearBefore(another) ||\n (this.yearSame(another) && this.month <= another.month)\n );\n }\n\n /**\n * Passed month and year are the same as current\n */\n public monthSame(another: TuiMonth): boolean {\n return this.yearSame(another) && this.month === another.month;\n }\n\n /**\n * Passed month and year are either before or equal to current\n */\n public monthSameOrAfter(another: TuiMonth): boolean {\n return (\n this.yearAfter(another) ||\n (this.yearSame(another) && this.month >= another.month)\n );\n }\n\n /**\n * Passed month and year are before current\n */\n public monthAfter(another: TuiMonth): boolean {\n return (\n this.yearAfter(another) ||\n (this.yearSame(another) && this.month > another.month)\n );\n }\n\n /**\n * Immutably alters current month and year by passed offset\n *\n * @param offset\n * @return new month and year object as a result of offsetting current\n */\n public override append({year = 0, month = 0}: TuiMonthLike): TuiMonth {\n const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;\n\n return new TuiMonth(\n Math.floor(totalMonths / MONTHS_IN_YEAR),\n totalMonths % MONTHS_IN_YEAR,\n );\n }\n\n public override toString(): string {\n return `${this.formattedMonthPart}.${this.formattedYear}`;\n }\n\n public override valueOf(): number {\n return this.toLocalNativeDate().valueOf();\n }\n\n public override toJSON(): string {\n return `${super.toJSON()}-${this.formattedMonthPart}`;\n }\n\n /**\n * Returns native {@link Date} based on local time zone\n */\n public toLocalNativeDate(): Date {\n return new Date(this.year, this.month);\n }\n\n /**\n * Returns native {@link Date} based on UTC\n */\n public toUtcNativeDate(): Date {\n return new Date(Date.UTC(this.year, this.month));\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiInRange, tuiNormalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {DATE_FILLER_LENGTH} from './date-fillers';\nimport {MIN_DAY, MONTHS_IN_YEAR} from './date-time';\nimport {TuiDayOfWeek} from './day-of-week';\nimport {TuiMonth} from './month';\nimport {TuiMonthNumber} from './month-number';\nimport type {TuiDateMode, TuiDayLike} from './types';\nimport {TuiYear} from './year';\n\n/**\n * Immutable date object, consisting of day, month and year\n */\nexport class TuiDay extends TuiMonth {\n /**\n * @param year\n * @param month (starting with 0)\n * @param day\n */\n constructor(\n year: number,\n month: number,\n public readonly day: number,\n ) {\n super(year, month);\n ngDevMode && console.assert(TuiDay.isValidDay(year, month, day));\n }\n\n /**\n * Creates {@link TuiDay} from native {@link Date} based on local time zone\n */\n public static fromLocalNativeDate(date: Date): TuiDay {\n return new TuiDay(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Creates {@link TuiDay} from native {@link Date} using UTC\n */\n public static fromUtcNativeDate(date: Date): TuiDay {\n return new TuiDay(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n }\n\n /**\n * Check validity of year, month and day\n *\n * @param year\n * @param month\n * @param day\n * @return boolean validity\n */\n public static isValidDay(year: number, month: number, day: number): boolean {\n return (\n TuiMonth.isValidMonth(year, month) &&\n Number.isInteger(day) &&\n tuiInRange(\n day,\n MIN_DAY,\n TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1,\n )\n );\n }\n\n /**\n * Current day based on local time zone\n */\n public static override currentLocal(): TuiDay {\n const nativeDate = new Date();\n const year = nativeDate.getFullYear();\n const month = nativeDate.getMonth();\n const day = nativeDate.getDate();\n\n return new TuiDay(year, month, day);\n }\n\n /**\n * Returns current day based on UTC\n */\n public static override currentUtc(): TuiDay {\n const nativeDate = new Date();\n const year = nativeDate.getUTCFullYear();\n const month = nativeDate.getUTCMonth();\n const day = nativeDate.getUTCDate();\n\n return new TuiDay(year, month, day);\n }\n\n /**\n * Calculates {@link TuiDay} normalizing year, month and day. {@link NaN} is turned into minimal value.\n *\n * @param year any year value, including invalid\n * @param month any month value, including invalid (months start with 0)\n * @param day any day value, including invalid\n * @return normalized date\n */\n public static normalizeOf(year: number, month: number, day: number): TuiDay {\n const normalizedYear = TuiYear.normalizeYearPart(year);\n const normalizedMonth = TuiMonth.normalizeMonthPart(month);\n const normalizedDay = TuiDay.normalizeDayPart(\n day,\n normalizedMonth,\n normalizedYear,\n );\n\n return new TuiDay(normalizedYear, normalizedMonth, normalizedDay);\n }\n\n public static override lengthBetween(from: TuiDay, to: TuiDay): number {\n return Math.round(\n (to.toLocalNativeDate().getTime() - from.toLocalNativeDate().getTime()) /\n (1000 * 60 * 60 * 24),\n );\n }\n\n public static parseRawDateString(\n date: string,\n dateMode: TuiDateMode = 'DMY',\n ): {day: number; month: number; year: number} {\n ngDevMode &&\n console.assert(\n date.length === DATE_FILLER_LENGTH,\n '[parseRawDateString]: wrong date string length',\n );\n\n switch (dateMode) {\n case 'MDY':\n return {\n day: parseInt(date.slice(3, 5), 10),\n month: parseInt(date.slice(0, 2), 10) - 1,\n year: parseInt(date.slice(6, 10), 10),\n };\n\n case 'YMD':\n return {\n day: parseInt(date.slice(8, 10), 10),\n month: parseInt(date.slice(5, 7), 10) - 1,\n year: parseInt(date.slice(0, 4), 10),\n };\n\n case 'DMY':\n default:\n return {\n day: parseInt(date.slice(0, 2), 10),\n month: parseInt(date.slice(3, 5), 10) - 1,\n year: parseInt(date.slice(6, 10), 10),\n };\n }\n }\n\n // TODO: Move month and year related code corresponding classes\n /**\n * Parsing a string with date with normalization\n *\n * @param rawDate date string\n * @param dateMode date format of the date string (DMY | MDY | YMD)\n * @return normalized date\n */\n public static normalizeParse(rawDate: string, dateMode: TuiDateMode = 'DMY'): TuiDay {\n const {day, month, year} = this.parseRawDateString(rawDate, dateMode);\n\n return TuiDay.normalizeOf(year, month, day);\n }\n\n /**\n * Parsing a date stringified in a toJSON format\n * @param yearMonthDayString date string in format of YYYY-MM-DD\n * @return date\n * @throws exceptions if any part of the date is invalid\n */\n public static jsonParse(yearMonthDayString: string): TuiDay {\n const {day, month, year} = this.parseRawDateString(yearMonthDayString, 'YMD');\n\n if (\n !TuiMonth.isValidMonth(year, month) ||\n !Number.isInteger(day) ||\n !tuiInRange(\n day,\n MIN_DAY,\n TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1,\n )\n ) {\n throw new TuiInvalidDayException(year, month, day);\n }\n\n return new TuiDay(year, month, day);\n }\n\n public static normalizeDayPart(day: number, month: number, year: number): number {\n ngDevMode && console.assert(TuiMonth.isValidMonth(year, month));\n\n const monthDaysCount = TuiMonth.getMonthDaysCount(\n month,\n TuiYear.isLeapYear(year),\n );\n\n return tuiNormalizeToIntNumber(day, 1, monthDaysCount);\n }\n\n public get formattedDayPart(): string {\n return String(this.day).padStart(2, '0');\n }\n\n public get isWeekend(): boolean {\n const dayOfWeek = this.dayOfWeek(false);\n\n return dayOfWeek === TuiDayOfWeek.Saturday || dayOfWeek === TuiDayOfWeek.Sunday;\n }\n\n /**\n * Returns day of week\n *\n * @param startFromMonday whether week starts from Monday and not from Sunday\n * @return day of week (from 0 to 6)\n */\n public dayOfWeek(startFromMonday = true): number {\n const dayOfWeek = startFromMonday\n ? this.toLocalNativeDate().getDay() - 1\n : this.toLocalNativeDate().getDay();\n\n return dayOfWeek < 0 ? 6 : dayOfWeek;\n }\n\n /**\n * Passed date is after current\n */\n public dayBefore(another: TuiDay): boolean {\n return (\n this.monthBefore(another) ||\n (this.monthSame(another) && this.day < another.day)\n );\n }\n\n /**\n * Passed date is after or equals to current\n */\n public daySameOrBefore(another: TuiDay): boolean {\n return (\n this.monthBefore(another) ||\n (this.monthSame(another) && this.day <= another.day)\n );\n }\n\n /**\n * Passed date is the same as current\n */\n public daySame(another: TuiDay): boolean {\n return this.monthSame(another) && this.day === another.day;\n }\n\n /**\n * Passed date is either before or the same as current\n */\n public daySameOrAfter(another: TuiDay): boolean {\n return (\n this.monthAfter(another) ||\n (this.monthSame(another) && this.day >= another.day)\n );\n }\n\n /**\n * Passed date is before current\n */\n public dayAfter(another: TuiDay): boolean {\n return (\n this.monthAfter(another) ||\n (this.monthSame(another) && this.day > another.day)\n );\n }\n\n /**\n * Clamping date between two limits\n *\n * @param min\n * @param max\n * @return clamped date\n */\n public dayLimit(min: TuiDay | null, max: TuiDay | null): TuiDay {\n if (min !== null && this.dayBefore(min)) {\n return min;\n }\n\n if (max !== null && this.dayAfter(max)) {\n return max;\n }\n\n return this;\n }\n\n /**\n * Immutably alters current day by passed offset\n *\n * If resulting month has more days than original one, date is rounded to the maximum day\n * in the resulting month. Offset of days will be calculated based on the resulted year and month\n * to not interfere with parent classes methods\n *\n * @param offset\n * @return new date object as a result of offsetting current\n */\n public override append({year = 0, month = 0, day = 0}: TuiDayLike): TuiDay {\n const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;\n let years = Math.floor(totalMonths / MONTHS_IN_YEAR);\n let months = totalMonths % MONTHS_IN_YEAR;\n\n let days =\n Math.min(\n this.day,\n TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years)),\n ) + day;\n\n while (days > TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years))) {\n days -= TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));\n\n if (months === TuiMonthNumber.December) {\n years++;\n months = TuiMonthNumber.January;\n } else {\n months++;\n }\n }\n\n while (days < MIN_DAY) {\n if (months === TuiMonthNumber.January) {\n years--;\n months = TuiMonthNumber.December;\n } else {\n months--;\n }\n\n days += TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));\n }\n\n return new TuiDay(years, months, days);\n }\n\n /**\n * Returns formatted whole date\n */\n public getFormattedDay(dateFormat: TuiDateMode, separator: string): string {\n ngDevMode &&\n console.assert(\n separator.length === 1,\n 'Separator should consist of only 1 symbol',\n );\n\n const dd = this.formattedDayPart;\n const mm = this.formattedMonthPart;\n const yyyy = this.formattedYear;\n\n switch (dateFormat) {\n case 'MDY':\n return `${mm}${separator}${dd}${separator}${yyyy}`;\n case 'YMD':\n return `${yyyy}${separator}${mm}${separator}${dd}`;\n case 'DMY':\n default:\n return `${dd}${separator}${mm}${separator}${yyyy}`;\n }\n }\n\n public override toString(dateFormat: TuiDateMode = 'DMY', separator = '.'): string {\n return this.getFormattedDay(dateFormat, separator);\n }\n\n public override toJSON(): string {\n return `${super.toJSON()}-${this.formattedDayPart}`;\n }\n\n /**\n * Returns native {@link Date} based on local time zone\n */\n public override toLocalNativeDate(): Date {\n return new Date(this.year, this.month, this.day);\n }\n\n /**\n * Returns native {@link Date} based on UTC\n */\n public override toUtcNativeDate(): Date {\n return new Date(Date.UTC(this.year, this.month, this.day));\n }\n}\n\nexport class TuiInvalidDayException extends Error {\n constructor(year: number, month: number, day: number) {\n super(ngDevMode ? `Invalid day: ${year}-${month}-${day}` : '');\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\nimport type {TuiMonth} from './month';\n\n/**\n * An immutable range of two {@link TuiMonth} objects\n */\nexport class TuiMonthRange {\n constructor(\n public readonly from: TuiMonth,\n public readonly to: TuiMonth,\n ) {\n ngDevMode && console.assert(from.monthSameOrBefore(to));\n }\n\n public static sort(month1: TuiMonth, month2: TuiMonth): TuiMonthRange {\n return month1.monthSameOrBefore(month2)\n ? new TuiMonthRange(month1, month2)\n : new TuiMonthRange(month2, month1);\n }\n\n public get isSingleMonth(): boolean {\n return this.from.monthSame(this.to);\n }\n\n public monthSame(another: TuiMonthRange): boolean {\n return this.from.monthSame(another.from) && this.to.monthSame(another.to);\n }\n\n public toString(): string {\n return `${this.from}${RANGE_SEPARATOR_CHAR}${this.to}`;\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {DATE_FILLER_LENGTH, DATE_RANGE_FILLER_LENGTH} from './date-fillers';\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\nimport {TuiDay} from './day';\nimport {TuiMonthRange} from './month-range';\nimport type {TuiDateMode} from './types';\n\n/**\n * An immutable range of two {@link TuiDay} objects\n */\nexport class TuiDayRange extends TuiMonthRange {\n constructor(\n public override readonly from: TuiDay,\n public override readonly to: TuiDay,\n ) {\n super(from, to);\n\n ngDevMode && console.assert(from.daySameOrBefore(to));\n }\n\n /**\n * Creates range from two days after sorting them\n *\n * @param day1\n * @param day2\n * @return new range with sorted days\n */\n public static override sort(day1: TuiDay, day2: TuiDay): TuiDayRange {\n return day1.daySameOrBefore(day2)\n ? new TuiDayRange(day1, day2)\n : new TuiDayRange(day2, day1);\n }\n\n /**\n * Parse and correct a day range in string format\n *\n * @param rangeString a string of dates in a format dd.mm.yyyy - dd.mm.yyyy\n * @param dateMode {@link TuiDateMode}\n * @return normalized day range object\n */\n public static normalizeParse(\n rangeString: string,\n dateMode: TuiDateMode = 'DMY',\n ): TuiDayRange {\n const leftDay = TuiDay.normalizeParse(\n rangeString.slice(0, DATE_FILLER_LENGTH),\n dateMode,\n );\n\n if (rangeString.length < DATE_RANGE_FILLER_LENGTH) {\n return new TuiDayRange(leftDay, leftDay);\n }\n\n return TuiDayRange.sort(\n leftDay,\n TuiDay.normalizeParse(\n rangeString.slice(DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length),\n dateMode,\n ),\n );\n }\n\n public get isSingleDay(): boolean {\n return this.from.daySame(this.to);\n }\n\n /**\n * Tests ranges for identity\n *\n * @param another second range to test against current\n * @return `true` if days are identical\n */\n public daySame(another: TuiDayRange): boolean {\n return this.from.daySame(another.from) && this.to.daySame(another.to);\n }\n\n /**\n * Locks range between two days included, or limits from one side if the other is null\n *\n * @param min\n * @param max\n * @return range — clamped range\n */\n public dayLimit(min: TuiDay | null, max: TuiDay | null): TuiDayRange {\n return new TuiDayRange(this.from.dayLimit(min, max), this.to.dayLimit(min, max));\n }\n\n /**\n * Human readable format.\n */\n public getFormattedDayRange(dateFormat: TuiDateMode, dateSeparator: string): string {\n const from = this.from.getFormattedDay(dateFormat, dateSeparator);\n const to = this.to.getFormattedDay(dateFormat, dateSeparator);\n\n return `${from}${RANGE_SEPARATOR_CHAR}${to}`;\n }\n\n public override toString(\n dateFormat: TuiDateMode = 'DMY',\n dateSeparator = '.',\n ): string {\n return this.getFormattedDayRange(dateFormat, dateSeparator);\n }\n}\n","import {\n MAX_DISPLAYED_YEAR,\n MAX_MONTH,\n MAX_YEAR,\n MIN_DAY,\n MIN_MONTH,\n MIN_YEAR,\n} from './date-time';\nimport {TuiDay} from './day';\n\nexport const TUI_FIRST_DAY = new TuiDay(MIN_YEAR, MIN_MONTH, MIN_DAY);\n\nexport const TUI_LAST_DAY = new TuiDay(MAX_YEAR, MAX_MONTH, 31);\n\nexport const TUI_LAST_DISPLAYED_DAY = new TuiDay(MAX_DISPLAYED_YEAR, MAX_MONTH, 31);\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\nimport {\n HOURS_IN_DAY,\n MILLISECONDS_IN_DAY,\n MILLISECONDS_IN_HOUR,\n MILLISECONDS_IN_MINUTE,\n MINUTES_IN_HOUR,\n SECONDS_IN_MINUTE,\n} from './date-time';\nimport type {TuiTimeLike, TuiTimeMode} from './types';\n\n/**\n * Immutable time object with hours, minutes, seconds and ms\n */\nexport class TuiTime implements TuiTimeLike {\n constructor(\n public readonly hours: number,\n public readonly minutes: number,\n public readonly seconds = 0,\n public readonly ms = 0,\n ) {\n ngDevMode &&\n console.assert(\n // Currently `TuiTime` could have hours more than 23\n // in order to not break current behaviour of `isValidTime` the logic is duplicated\n Number.isInteger(hours) &&\n tuiInRange(hours, 0, Infinity) &&\n Number.isInteger(minutes) &&\n tuiInRange(minutes, 0, MINUTES_IN_HOUR) &&\n Number.isInteger(seconds) &&\n tuiInRange(seconds, 0, SECONDS_IN_MINUTE) &&\n Number.isInteger(ms) &&\n tuiInRange(ms, 0, 1000),\n 'Time must be real, but got:',\n hours,\n minutes,\n seconds,\n ms,\n );\n }\n\n /**\n * Checks if time is valid\n */\n public static isValidTime(\n hours: number,\n minutes: number,\n seconds = 0,\n ms = 0,\n ): boolean {\n return (\n Number.isInteger(hours) &&\n tuiInRange(hours, 0, HOURS_IN_DAY) &&\n Number.isInteger(minutes) &&\n tuiInRange(minutes, 0, MINUTES_IN_HOUR) &&\n Number.isInteger(seconds) &&\n tuiInRange(seconds, 0, SECONDS_IN_MINUTE) &&\n Number.isInteger(ms) &&\n tuiInRange(ms, 0, 1000)\n );\n }\n\n /**\n * Current UTC time.\n */\n public static current(): TuiTime {\n return TuiTime.fromAbsoluteMilliseconds(Date.now() % MILLISECONDS_IN_DAY);\n }\n\n /**\n * Current time in local timezone\n */\n public static currentLocal(): TuiTime {\n const date = new Date();\n\n return TuiTime.fromAbsoluteMilliseconds(\n (Date.now() - date.getTimezoneOffset() * MILLISECONDS_IN_MINUTE) %\n MILLISECONDS_IN_DAY,\n );\n }\n\n /**\n * Calculates TuiTime from milliseconds\n */\n public static fromAbsoluteMilliseconds(milliseconds: number): TuiTime {\n ngDevMode && console.assert(Number.isInteger(milliseconds));\n ngDevMode &&\n console.assert(\n tuiInRange(milliseconds, 0, MILLISECONDS_IN_DAY),\n `Milliseconds must be below ${MILLISECONDS_IN_DAY} (milliseconds in a day).`,\n );\n\n const hours = Math.floor(milliseconds / MILLISECONDS_IN_HOUR);\n const minutes = Math.floor(\n (milliseconds % MILLISECONDS_IN_HOUR) / MILLISECONDS_IN_MINUTE,\n );\n const seconds =\n Math.floor(\n ((milliseconds % MILLISECONDS_IN_HOUR) % MILLISECONDS_IN_MINUTE) / 1000,\n ) || 0;\n const ms =\n Math.floor(\n ((milliseconds % MILLISECONDS_IN_HOUR) % MILLISECONDS_IN_MINUTE) % 1000,\n ) || 0;\n\n return new TuiTime(hours, minutes, seconds, ms);\n }\n\n /**\n * Parses string into TuiTime object\n */\n public static fromString(time: string): TuiTime {\n const hours = this.parseHours(time);\n const minutes = Number(time.slice(3, 5)) || 0;\n const seconds = Number(time.slice(6, 8)) || 0;\n const ms = Number(time.slice(9, 12)) || 0;\n\n return new TuiTime(hours, minutes, seconds, ms);\n }\n\n /**\n * Converts Date object into TuiTime\n * @param date\n */\n public static fromLocalNativeDate(date: Date): TuiTime {\n return new TuiTime(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n }\n\n private static parseMeridiemPeriod(time: string): 'AM' | 'PM' | null {\n return (\n (/[AP]M/.exec(time.toUpperCase().replaceAll(/\\W/g, ''))?.[0] as\n | 'AM'\n | 'PM') || null\n );\n }\n\n private static parseHours(time: string): number {\n const hours = Number(time.slice(0, 2));\n const meridiem = this.parseMeridiemPeriod(time);\n\n if (!meridiem) {\n return hours;\n }\n\n if (hours === 12) {\n return meridiem === 'AM' ? 0 : 12;\n }\n\n return meridiem === 'PM' ? hours + 12 : hours;\n }\n\n /**\n * Shifts time by hours and minutes\n */\n public shift({hours = 0, minutes = 0, seconds = 0, ms = 0}: TuiTimeLike): TuiTime {\n const newMs = (1000 + this.ms + (ms % 1000)) % 1000;\n\n const secondsInMs = ms < 0 ? Math.ceil(ms / 1000) : Math.floor(ms / 1000);\n const secondsToAdd = secondsInMs + seconds;\n const newSeconds = (60 + this.seconds + (secondsToAdd % 60)) % 60;\n\n const minutesInSeconds =\n secondsToAdd < 0\n ? Math.ceil(secondsToAdd / 60)\n : Math.floor(secondsToAdd / 60);\n const minutesToAdd = minutesInSeconds + minutes;\n const newMinutes = (60 + this.minutes + (minutesToAdd % 60)) % 60;\n\n const hoursInMinutes =\n minutesToAdd < 0\n ? Math.ceil(minutesToAdd / 60)\n : Math.floor(minutesToAdd / 60);\n const hoursToAdd = hoursInMinutes + hours;\n const newHours = (24 + this.hours + (hoursToAdd % 24)) % 24;\n\n return new TuiTime(newHours, newMinutes, newSeconds, newMs);\n }\n\n /**\n * Converts TuiTime to string\n */\n public toString(mode?: TuiTimeMode): string {\n const needAddMs = mode?.startsWith('HH:MM:SS.MSS') || (!mode && this.ms > 0);\n const needAddSeconds =\n needAddMs || mode?.startsWith('HH:MM:SS') || (!mode && this.seconds > 0);\n const {hours = this.hours, meridiem = ''} = mode?.includes('AA')\n ? this.toTwelveHour(this.hours)\n : {};\n const hhMm = `${this.formatTime(hours)}:${this.formatTime(this.minutes)}`;\n const ss = needAddSeconds ? `:${this.formatTime(this.seconds)}` : '';\n const mss = needAddMs ? `.${this.formatTime(this.ms, 3)}` : '';\n const aa = meridiem && `${CHAR_NO_BREAK_SPACE}${meridiem}`;\n\n return `${hhMm}${ss}${mss}${aa}`;\n }\n\n public valueOf(): number {\n return this.toAbsoluteMilliseconds();\n }\n\n /**\n * Returns the primitive value of the given Date object.\n * Depending on the argument, the method can return either a string or a number.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive\n */\n public [Symbol.toPrimitive](hint: string): number | string {\n return Date.prototype[Symbol.toPrimitive].call(this, hint);\n }\n\n /**\n * Converts TuiTime to milliseconds\n */\n public toAbsoluteMilliseconds(): number {\n return (\n this.hours * MILLISECONDS_IN_HOUR +\n this.minutes * MILLISECONDS_IN_MINUTE +\n this.seconds * 1000 +\n this.ms\n );\n }\n\n private formatTime(time: number, digits = 2): string {\n return String(time).padStart(digits, '0');\n }\n\n private toTwelveHour(hours: number): {hours: number; meridiem: string} {\n const meridiem = hours >= 12 ? 'PM' : 'AM';\n\n if (hours === 0 || hours === 12) {\n return {meridiem, hours: 12};\n }\n\n return {meridiem, hours: hours % 12};\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-cdk-date-time.mjs","sources":["../../../projects/cdk/date-time/date-clamp.ts","../../../projects/cdk/date-time/date-time.ts","../../../projects/cdk/date-time/date-fillers.ts","../../../projects/cdk/date-time/day-of-week.ts","../../../projects/cdk/date-time/month-number.ts","../../../projects/cdk/date-time/year.ts","../../../projects/cdk/date-time/month.ts","../../../projects/cdk/date-time/day.ts","../../../projects/cdk/date-time/month-range.ts","../../../projects/cdk/date-time/day-range.ts","../../../projects/cdk/date-time/days.const.ts","../../../projects/cdk/date-time/time.ts","../../../projects/cdk/date-time/taiga-ui-cdk-date-time.ts"],"sourcesContent":["import type {TuiYear} from './year';\n\nexport function tuiDateClamp<T extends TuiYear>(date: T, min?: T, max?: T): T {\n if (max && max < date) {\n return max;\n }\n\n if (min && min > date) {\n return min;\n }\n\n return date;\n}\n","import {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\n\nexport const DAYS_IN_WEEK = 7;\n\nexport const DAYS_IN_NORMAL_YEAR = 365;\n\nexport const DAYS_IN_LEAP_YEAR = 366;\n\nexport const MONTHS_IN_YEAR = 12;\n\nexport const MIN_DAY = 1;\n\nexport const MIN_MONTH = 0;\n\nexport const MAX_MONTH = 11;\n\nexport const MIN_YEAR = 0;\n\nexport const MAX_YEAR = 9999;\n\nexport const MAX_DISPLAYED_YEAR = 2099;\n\nexport const RANGE_SEPARATOR_CHAR = `${CHAR_NO_BREAK_SPACE}${CHAR_EN_DASH}${CHAR_NO_BREAK_SPACE}`;\n\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const SECONDS_IN_MINUTE = 60;\n\nexport const MINUTES_IN_HOUR = 60;\n\nexport const HOURS_IN_DAY = 24;\n\nexport const MILLISECONDS_IN_MINUTE = MILLISECONDS_IN_SECOND * SECONDS_IN_MINUTE;\n\nexport const MILLISECONDS_IN_HOUR = MILLISECONDS_IN_MINUTE * MINUTES_IN_HOUR;\n\nexport const MILLISECONDS_IN_DAY = MILLISECONDS_IN_HOUR * HOURS_IN_DAY;\n","import {RANGE_SEPARATOR_CHAR} from './date-time';\n\n/**\n * @internal 'dd.mm.yyyy'.length\n * Used in:\n * - {@link TuiInputDateComponent}\n * - {@link TuiInputDateRangeComponent}\n * - {@link TuiInputDateTimeComponent}\n */\nexport const DATE_FILLER_LENGTH = 10;\n/**\n * @internal\n * Used in {@link TuiInputDateRangeComponent}\n */\nexport const DATE_RANGE_FILLER_LENGTH =\n 2 * DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length;\n","export const TuiDayOfWeek = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6,\n} as const;\n","export const TuiMonthNumber = {\n January: 0,\n February: 1,\n March: 2,\n April: 3,\n May: 4,\n June: 5,\n July: 6,\n August: 7,\n September: 8,\n October: 9,\n November: 10,\n December: 11,\n} as const;\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {tuiInRange, tuiNormalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {MAX_YEAR, MIN_YEAR} from './date-time';\nimport type {TuiYearLike} from './types';\n\n/**\n * Immutable year object\n * @nosideeffects\n */\nexport class TuiYear implements TuiYearLike {\n constructor(public readonly year: number) {\n ngDevMode && console.assert(TuiYear.isValidYear(year));\n }\n\n /**\n * Checks year for validity\n */\n public static isValidYear(year: number): boolean {\n return Number.isInteger(year) && tuiInRange(year, MIN_YEAR, MAX_YEAR + 1);\n }\n\n /**\n * Check if passed year is a leap year\n */\n public static isLeapYear(year: number): boolean {\n ngDevMode && console.assert(TuiYear.isValidYear(year));\n\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n }\n\n /**\n * Returns amount of leap years from year 0 to the passed one\n */\n public static getAbsoluteLeapYears(year: number): number {\n ngDevMode && console.assert(TuiYear.isValidYear(year));\n\n return Math.ceil(year / 400) + (Math.ceil(year / 4) - Math.ceil(year / 100));\n }\n\n public static lengthBetween(from: TuiYear, to: TuiYear): number {\n return to.year - from.year;\n }\n\n /**\n * Normalizes year by clamping it between min and max years\n */\n public static normalizeYearPart(year: number): number {\n return tuiNormalizeToIntNumber(year, MIN_YEAR, MAX_YEAR);\n }\n\n public get formattedYear(): string {\n return String(this.year).padStart(4, '0');\n }\n\n public get isLeapYear(): boolean {\n return TuiYear.isLeapYear(this.year);\n }\n\n /**\n * Returns amount of leap years from year 0 to current\n */\n public get absoluteLeapYears(): number {\n return TuiYear.getAbsoluteLeapYears(this.year);\n }\n\n /**\n * Passed year is after current\n */\n public yearBefore({year}: TuiYear): boolean {\n return this.year < year;\n }\n\n /**\n * Passed year is the same or after current\n */\n public yearSameOrBefore({year}: TuiYear): boolean {\n return this.year <= year;\n }\n\n /**\n * Passed year is the same as current\n */\n public yearSame({year}: TuiYear): boolean {\n return this.year === year;\n }\n\n /**\n * Passed year is either the same of before the current\n */\n public yearSameOrAfter({year}: TuiYear): boolean {\n return this.year >= year;\n }\n\n /**\n * Passed year is before current\n */\n public yearAfter({year}: TuiYear): boolean {\n return this.year > year;\n }\n\n /**\n * Immutably offsets year\n */\n public append({year = 0}: TuiYearLike): TuiYear {\n ngDevMode && console.assert(Number.isInteger(year));\n\n const resultYear = this.year + year;\n\n ngDevMode && console.assert(TuiYear.isValidYear(resultYear));\n\n return new TuiYear(resultYear);\n }\n\n public toString(): string {\n return this.formattedYear;\n }\n\n public valueOf(): number {\n return this.year;\n }\n\n /**\n * Returns the primitive value of the given Date object.\n * Depending on the argument, the method can return either a string or a number.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive\n */\n public [Symbol.toPrimitive](hint: string): number | string {\n return Date.prototype[Symbol.toPrimitive].call(this, hint);\n }\n\n public toJSON(): string {\n return this.formattedYear;\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiInRange, tuiNormalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {MAX_MONTH, MIN_MONTH, MONTHS_IN_YEAR} from './date-time';\nimport {TuiMonthNumber} from './month-number';\nimport type {TuiMonthLike} from './types';\nimport {TuiYear} from './year';\n\n/**\n * Immutable object consisting of year and month\n */\nexport class TuiMonth extends TuiYear implements TuiMonthLike {\n /**\n * @param year\n * @param month (starting with 0)\n */\n constructor(\n year: number,\n public readonly month: number,\n ) {\n super(year);\n ngDevMode && console.assert(TuiMonth.isValidMonth(year, month));\n }\n\n /**\n * Tests month and year for validity\n */\n public static isValidMonth(year: number, month: number): boolean {\n return TuiYear.isValidYear(year) && TuiMonth.isValidMonthPart(month);\n }\n\n /**\n * Returns number of days in a month\n */\n public static getMonthDaysCount(month: number, isLeapYear: boolean): number {\n ngDevMode && console.assert(TuiMonth.isValidMonthPart(month));\n\n switch (month) {\n case TuiMonthNumber.April:\n case TuiMonthNumber.June:\n case TuiMonthNumber.November:\n case TuiMonthNumber.September:\n return 30;\n case TuiMonthNumber.February:\n return isLeapYear ? 29 : 28;\n default:\n return 31;\n }\n }\n\n /**\n * Returns current month and year based on local time zone\n * @nosideeffects\n */\n public static currentLocal(): TuiMonth {\n const nativeDate = new Date();\n\n return new TuiMonth(nativeDate.getFullYear(), nativeDate.getMonth());\n }\n\n /**\n * Returns current month and year based on UTC\n */\n public static currentUtc(): TuiMonth {\n const nativeDate = new Date();\n\n return new TuiMonth(nativeDate.getUTCFullYear(), nativeDate.getUTCMonth());\n }\n\n public static override lengthBetween(from: TuiMonth, to: TuiMonth): number {\n const absoluteFrom = from.month + from.year * 12;\n const absoluteTo = to.month + to.year * 12;\n\n return absoluteTo - absoluteFrom;\n }\n\n /**\n * Normalizes number by clamping it between min and max month\n */\n public static normalizeMonthPart(month: number): number {\n return tuiNormalizeToIntNumber(month, MIN_MONTH, MAX_MONTH);\n }\n\n /**\n * Tests month for validity\n */\n private static isValidMonthPart(month: number): boolean {\n return Number.isInteger(month) && tuiInRange(month, MIN_MONTH, MAX_MONTH + 1);\n }\n\n public get formattedMonthPart(): string {\n return String(this.month + 1).padStart(2, '0');\n }\n\n /**\n * Returns days in a month\n */\n public get daysCount(): number {\n return TuiMonth.getMonthDaysCount(this.month, this.isLeapYear);\n }\n\n /**\n * Passed month and year are after current\n */\n public monthBefore(another: TuiMonth): boolean {\n return (\n this.yearBefore(another) ||\n (this.yearSame(another) && this.month < another.month)\n );\n }\n\n /**\n * Passed month and year are after or the same as current\n */\n public monthSameOrBefore(another: TuiMonth): boolean {\n return (\n this.yearBefore(another) ||\n (this.yearSame(another) && this.month <= another.month)\n );\n }\n\n /**\n * Passed month and year are the same as current\n */\n public monthSame(another: TuiMonth): boolean {\n return this.yearSame(another) && this.month === another.month;\n }\n\n /**\n * Passed month and year are either before or equal to current\n */\n public monthSameOrAfter(another: TuiMonth): boolean {\n return (\n this.yearAfter(another) ||\n (this.yearSame(another) && this.month >= another.month)\n );\n }\n\n /**\n * Passed month and year are before current\n */\n public monthAfter(another: TuiMonth): boolean {\n return (\n this.yearAfter(another) ||\n (this.yearSame(another) && this.month > another.month)\n );\n }\n\n /**\n * Immutably alters current month and year by passed offset\n *\n * @param offset\n * @return new month and year object as a result of offsetting current\n */\n public override append({year = 0, month = 0}: TuiMonthLike): TuiMonth {\n const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;\n\n return new TuiMonth(\n Math.floor(totalMonths / MONTHS_IN_YEAR),\n totalMonths % MONTHS_IN_YEAR,\n );\n }\n\n public override toString(): string {\n return `${this.formattedMonthPart}.${this.formattedYear}`;\n }\n\n public override valueOf(): number {\n return this.toLocalNativeDate().valueOf();\n }\n\n public override toJSON(): string {\n return `${super.toJSON()}-${this.formattedMonthPart}`;\n }\n\n /**\n * Returns native {@link Date} based on local time zone\n */\n public toLocalNativeDate(): Date {\n return new Date(this.year, this.month);\n }\n\n /**\n * Returns native {@link Date} based on UTC\n */\n public toUtcNativeDate(): Date {\n return new Date(Date.UTC(this.year, this.month));\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiInRange, tuiNormalizeToIntNumber} from '@taiga-ui/cdk/utils/math';\n\nimport {DATE_FILLER_LENGTH} from './date-fillers';\nimport {MIN_DAY, MONTHS_IN_YEAR} from './date-time';\nimport {TuiDayOfWeek} from './day-of-week';\nimport {TuiMonth} from './month';\nimport {TuiMonthNumber} from './month-number';\nimport type {TuiDateMode, TuiDayLike} from './types';\nimport {TuiYear} from './year';\n\n/**\n * Immutable date object, consisting of day, month and year\n */\nexport class TuiDay extends TuiMonth {\n /**\n * @param year\n * @param month (starting with 0)\n * @param day\n */\n constructor(\n year: number,\n month: number,\n public readonly day: number,\n ) {\n super(year, month);\n ngDevMode && console.assert(TuiDay.isValidDay(year, month, day));\n }\n\n /**\n * Creates {@link TuiDay} from native {@link Date} based on local time zone\n */\n public static fromLocalNativeDate(date: Date): TuiDay {\n return new TuiDay(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Creates {@link TuiDay} from native {@link Date} using UTC\n */\n public static fromUtcNativeDate(date: Date): TuiDay {\n return new TuiDay(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n }\n\n /**\n * Check validity of year, month and day\n *\n * @param year\n * @param month\n * @param day\n * @return boolean validity\n */\n public static isValidDay(year: number, month: number, day: number): boolean {\n return (\n TuiMonth.isValidMonth(year, month) &&\n Number.isInteger(day) &&\n tuiInRange(\n day,\n MIN_DAY,\n TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1,\n )\n );\n }\n\n /**\n * Current day based on local time zone\n */\n public static override currentLocal(): TuiDay {\n const nativeDate = new Date();\n const year = nativeDate.getFullYear();\n const month = nativeDate.getMonth();\n const day = nativeDate.getDate();\n\n return new TuiDay(year, month, day);\n }\n\n /**\n * Returns current day based on UTC\n */\n public static override currentUtc(): TuiDay {\n const nativeDate = new Date();\n const year = nativeDate.getUTCFullYear();\n const month = nativeDate.getUTCMonth();\n const day = nativeDate.getUTCDate();\n\n return new TuiDay(year, month, day);\n }\n\n /**\n * Calculates {@link TuiDay} normalizing year, month and day. {@link NaN} is turned into minimal value.\n *\n * @param year any year value, including invalid\n * @param month any month value, including invalid (months start with 0)\n * @param day any day value, including invalid\n * @return normalized date\n */\n public static normalizeOf(year: number, month: number, day: number): TuiDay {\n const normalizedYear = TuiYear.normalizeYearPart(year);\n const normalizedMonth = TuiMonth.normalizeMonthPart(month);\n const normalizedDay = TuiDay.normalizeDayPart(\n day,\n normalizedMonth,\n normalizedYear,\n );\n\n return new TuiDay(normalizedYear, normalizedMonth, normalizedDay);\n }\n\n public static override lengthBetween(from: TuiDay, to: TuiDay): number {\n return Math.round(\n (to.toLocalNativeDate().getTime() - from.toLocalNativeDate().getTime()) /\n (1000 * 60 * 60 * 24),\n );\n }\n\n public static parseRawDateString(\n date: string,\n dateMode: TuiDateMode = 'DMY',\n ): {day: number; month: number; year: number} {\n ngDevMode &&\n console.assert(\n date.length === DATE_FILLER_LENGTH,\n '[parseRawDateString]: wrong date string length',\n );\n\n switch (dateMode) {\n case 'MDY':\n return {\n day: parseInt(date.slice(3, 5), 10),\n month: parseInt(date.slice(0, 2), 10) - 1,\n year: parseInt(date.slice(6, 10), 10),\n };\n\n case 'YMD':\n return {\n day: parseInt(date.slice(8, 10), 10),\n month: parseInt(date.slice(5, 7), 10) - 1,\n year: parseInt(date.slice(0, 4), 10),\n };\n\n case 'DMY':\n default:\n return {\n day: parseInt(date.slice(0, 2), 10),\n month: parseInt(date.slice(3, 5), 10) - 1,\n year: parseInt(date.slice(6, 10), 10),\n };\n }\n }\n\n // TODO: Move month and year related code corresponding classes\n /**\n * Parsing a string with date with normalization\n *\n * @param rawDate date string\n * @param dateMode date format of the date string (DMY | MDY | YMD)\n * @return normalized date\n */\n public static normalizeParse(rawDate: string, dateMode: TuiDateMode = 'DMY'): TuiDay {\n const {day, month, year} = this.parseRawDateString(rawDate, dateMode);\n\n return TuiDay.normalizeOf(year, month, day);\n }\n\n /**\n * Parsing a date stringified in a toJSON format\n * @param yearMonthDayString date string in format of YYYY-MM-DD\n * @return date\n * @throws exceptions if any part of the date is invalid\n */\n public static jsonParse(yearMonthDayString: string): TuiDay {\n const {day, month, year} = this.parseRawDateString(yearMonthDayString, 'YMD');\n\n if (\n !TuiMonth.isValidMonth(year, month) ||\n !Number.isInteger(day) ||\n !tuiInRange(\n day,\n MIN_DAY,\n TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1,\n )\n ) {\n throw new TuiInvalidDayException(year, month, day);\n }\n\n return new TuiDay(year, month, day);\n }\n\n public static normalizeDayPart(day: number, month: number, year: number): number {\n ngDevMode && console.assert(TuiMonth.isValidMonth(year, month));\n\n const monthDaysCount = TuiMonth.getMonthDaysCount(\n month,\n TuiYear.isLeapYear(year),\n );\n\n return tuiNormalizeToIntNumber(day, 1, monthDaysCount);\n }\n\n public get formattedDayPart(): string {\n return String(this.day).padStart(2, '0');\n }\n\n public get isWeekend(): boolean {\n const dayOfWeek = this.dayOfWeek(false);\n\n return dayOfWeek === TuiDayOfWeek.Saturday || dayOfWeek === TuiDayOfWeek.Sunday;\n }\n\n /**\n * Returns day of week\n *\n * @param startFromMonday whether week starts from Monday and not from Sunday\n * @return day of week (from 0 to 6)\n */\n public dayOfWeek(startFromMonday = true): number {\n const dayOfWeek = startFromMonday\n ? this.toLocalNativeDate().getDay() - 1\n : this.toLocalNativeDate().getDay();\n\n return dayOfWeek < 0 ? 6 : dayOfWeek;\n }\n\n /**\n * Passed date is after current\n */\n public dayBefore(another: TuiDay): boolean {\n return (\n this.monthBefore(another) ||\n (this.monthSame(another) && this.day < another.day)\n );\n }\n\n /**\n * Passed date is after or equals to current\n */\n public daySameOrBefore(another: TuiDay): boolean {\n return (\n this.monthBefore(another) ||\n (this.monthSame(another) && this.day <= another.day)\n );\n }\n\n /**\n * Passed date is the same as current\n */\n public daySame(another: TuiDay): boolean {\n return this.monthSame(another) && this.day === another.day;\n }\n\n /**\n * Passed date is either before or the same as current\n */\n public daySameOrAfter(another: TuiDay): boolean {\n return (\n this.monthAfter(another) ||\n (this.monthSame(another) && this.day >= another.day)\n );\n }\n\n /**\n * Passed date is before current\n */\n public dayAfter(another: TuiDay): boolean {\n return (\n this.monthAfter(another) ||\n (this.monthSame(another) && this.day > another.day)\n );\n }\n\n /**\n * Clamping date between two limits\n *\n * @param min\n * @param max\n * @return clamped date\n */\n public dayLimit(min: TuiDay | null, max: TuiDay | null): TuiDay {\n if (min !== null && this.dayBefore(min)) {\n return min;\n }\n\n if (max !== null && this.dayAfter(max)) {\n return max;\n }\n\n return this;\n }\n\n /**\n * Immutably alters current day by passed offset\n *\n * If resulting month has more days than original one, date is rounded to the maximum day\n * in the resulting month. Offset of days will be calculated based on the resulted year and month\n * to not interfere with parent classes methods\n *\n * @param offset\n * @return new date object as a result of offsetting current\n */\n public override append({year = 0, month = 0, day = 0}: TuiDayLike): TuiDay {\n const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;\n let years = Math.floor(totalMonths / MONTHS_IN_YEAR);\n let months = totalMonths % MONTHS_IN_YEAR;\n\n let days =\n Math.min(\n this.day,\n TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years)),\n ) + day;\n\n while (days > TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years))) {\n days -= TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));\n\n if (months === TuiMonthNumber.December) {\n years++;\n months = TuiMonthNumber.January;\n } else {\n months++;\n }\n }\n\n while (days < MIN_DAY) {\n if (months === TuiMonthNumber.January) {\n years--;\n months = TuiMonthNumber.December;\n } else {\n months--;\n }\n\n days += TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));\n }\n\n return new TuiDay(years, months, days);\n }\n\n /**\n * Returns formatted whole date\n */\n public getFormattedDay(dateFormat: TuiDateMode, separator: string): string {\n ngDevMode &&\n console.assert(\n separator.length === 1,\n 'Separator should consist of only 1 symbol',\n );\n\n const dd = this.formattedDayPart;\n const mm = this.formattedMonthPart;\n const yyyy = this.formattedYear;\n\n switch (dateFormat) {\n case 'MDY':\n return `${mm}${separator}${dd}${separator}${yyyy}`;\n case 'YMD':\n return `${yyyy}${separator}${mm}${separator}${dd}`;\n case 'DMY':\n default:\n return `${dd}${separator}${mm}${separator}${yyyy}`;\n }\n }\n\n public override toString(dateFormat: TuiDateMode = 'DMY', separator = '.'): string {\n return this.getFormattedDay(dateFormat, separator);\n }\n\n public override toJSON(): string {\n return `${super.toJSON()}-${this.formattedDayPart}`;\n }\n\n /**\n * Returns native {@link Date} based on local time zone\n */\n public override toLocalNativeDate(): Date {\n return new Date(this.year, this.month, this.day);\n }\n\n /**\n * Returns native {@link Date} based on UTC\n */\n public override toUtcNativeDate(): Date {\n return new Date(Date.UTC(this.year, this.month, this.day));\n }\n}\n\nexport class TuiInvalidDayException extends Error {\n constructor(year: number, month: number, day: number) {\n super(ngDevMode ? `Invalid day: ${year}-${month}-${day}` : '');\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\nimport type {TuiMonth} from './month';\n\n/**\n * An immutable range of two {@link TuiMonth} objects\n */\nexport class TuiMonthRange {\n constructor(\n public readonly from: TuiMonth,\n public readonly to: TuiMonth,\n ) {\n ngDevMode && console.assert(from.monthSameOrBefore(to));\n }\n\n public static sort(month1: TuiMonth, month2: TuiMonth): TuiMonthRange {\n return month1.monthSameOrBefore(month2)\n ? new TuiMonthRange(month1, month2)\n : new TuiMonthRange(month2, month1);\n }\n\n public get isSingleMonth(): boolean {\n return this.from.monthSame(this.to);\n }\n\n public monthSame(another: TuiMonthRange): boolean {\n return this.from.monthSame(another.from) && this.to.monthSame(another.to);\n }\n\n public toString(): string {\n return `${this.from}${RANGE_SEPARATOR_CHAR}${this.to}`;\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {DATE_FILLER_LENGTH, DATE_RANGE_FILLER_LENGTH} from './date-fillers';\nimport {RANGE_SEPARATOR_CHAR} from './date-time';\nimport {TuiDay} from './day';\nimport {TuiMonthRange} from './month-range';\nimport type {TuiDateMode} from './types';\n\n/**\n * An immutable range of two {@link TuiDay} objects\n */\nexport class TuiDayRange extends TuiMonthRange {\n constructor(\n public override readonly from: TuiDay,\n public override readonly to: TuiDay,\n ) {\n super(from, to);\n\n ngDevMode && console.assert(from.daySameOrBefore(to));\n }\n\n /**\n * Creates range from two days after sorting them\n *\n * @param day1\n * @param day2\n * @return new range with sorted days\n */\n public static override sort(day1: TuiDay, day2: TuiDay): TuiDayRange {\n return day1.daySameOrBefore(day2)\n ? new TuiDayRange(day1, day2)\n : new TuiDayRange(day2, day1);\n }\n\n /**\n * Parse and correct a day range in string format\n *\n * @param rangeString a string of dates in a format dd.mm.yyyy - dd.mm.yyyy\n * @param dateMode {@link TuiDateMode}\n * @return normalized day range object\n */\n public static normalizeParse(\n rangeString: string,\n dateMode: TuiDateMode = 'DMY',\n ): TuiDayRange {\n const leftDay = TuiDay.normalizeParse(\n rangeString.slice(0, DATE_FILLER_LENGTH),\n dateMode,\n );\n\n if (rangeString.length < DATE_RANGE_FILLER_LENGTH) {\n return new TuiDayRange(leftDay, leftDay);\n }\n\n return TuiDayRange.sort(\n leftDay,\n TuiDay.normalizeParse(\n rangeString.slice(DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length),\n dateMode,\n ),\n );\n }\n\n public get isSingleDay(): boolean {\n return this.from.daySame(this.to);\n }\n\n /**\n * Tests ranges for identity\n *\n * @param another second range to test against current\n * @return `true` if days are identical\n */\n public daySame(another: TuiDayRange): boolean {\n return this.from.daySame(another.from) && this.to.daySame(another.to);\n }\n\n /**\n * Locks range between two days included, or limits from one side if the other is null\n *\n * @param min\n * @param max\n * @return range — clamped range\n */\n public dayLimit(min: TuiDay | null, max: TuiDay | null): TuiDayRange {\n return new TuiDayRange(this.from.dayLimit(min, max), this.to.dayLimit(min, max));\n }\n\n /**\n * Human readable format.\n */\n public getFormattedDayRange(dateFormat: TuiDateMode, dateSeparator: string): string {\n const from = this.from.getFormattedDay(dateFormat, dateSeparator);\n const to = this.to.getFormattedDay(dateFormat, dateSeparator);\n\n return `${from}${RANGE_SEPARATOR_CHAR}${to}`;\n }\n\n public override toString(\n dateFormat: TuiDateMode = 'DMY',\n dateSeparator = '.',\n ): string {\n return this.getFormattedDayRange(dateFormat, dateSeparator);\n }\n}\n","import {\n MAX_DISPLAYED_YEAR,\n MAX_MONTH,\n MAX_YEAR,\n MIN_DAY,\n MIN_MONTH,\n MIN_YEAR,\n} from './date-time';\nimport {TuiDay} from './day';\n\nexport const TUI_FIRST_DAY = new TuiDay(MIN_YEAR, MIN_MONTH, MIN_DAY);\n\nexport const TUI_LAST_DAY = new TuiDay(MAX_YEAR, MAX_MONTH, 31);\n\nexport const TUI_LAST_DISPLAYED_DAY = new TuiDay(MAX_DISPLAYED_YEAR, MAX_MONTH, 31);\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\nimport {\n HOURS_IN_DAY,\n MILLISECONDS_IN_DAY,\n MILLISECONDS_IN_HOUR,\n MILLISECONDS_IN_MINUTE,\n MILLISECONDS_IN_SECOND,\n MINUTES_IN_HOUR,\n SECONDS_IN_MINUTE,\n} from './date-time';\nimport type {TuiTimeLike, TuiTimeMode} from './types';\n\n/**\n * Immutable time object with hours, minutes, seconds and ms\n */\nexport class TuiTime implements TuiTimeLike {\n constructor(\n public readonly hours: number,\n public readonly minutes: number,\n public readonly seconds = 0,\n public readonly ms = 0,\n ) {\n ngDevMode &&\n console.assert(\n // Currently `TuiTime` could have hours more than 23\n // in order to not break current behaviour of `isValidTime` the logic is duplicated\n Number.isInteger(hours) &&\n tuiInRange(hours, 0, Infinity) &&\n Number.isInteger(minutes) &&\n tuiInRange(minutes, 0, MINUTES_IN_HOUR) &&\n Number.isInteger(seconds) &&\n tuiInRange(seconds, 0, SECONDS_IN_MINUTE) &&\n Number.isInteger(ms) &&\n tuiInRange(ms, 0, 1000),\n 'Time must be real, but got:',\n hours,\n minutes,\n seconds,\n ms,\n );\n }\n\n /**\n * Checks if time is valid\n */\n public static isValidTime(\n hours: number,\n minutes: number,\n seconds = 0,\n ms = 0,\n ): boolean {\n return (\n Number.isInteger(hours) &&\n tuiInRange(hours, 0, HOURS_IN_DAY) &&\n Number.isInteger(minutes) &&\n tuiInRange(minutes, 0, MINUTES_IN_HOUR) &&\n Number.isInteger(seconds) &&\n tuiInRange(seconds, 0, SECONDS_IN_MINUTE) &&\n Number.isInteger(ms) &&\n tuiInRange(ms, 0, 1000)\n );\n }\n\n /**\n * Current UTC time.\n */\n public static current(): TuiTime {\n return TuiTime.fromAbsoluteMilliseconds(Date.now() % MILLISECONDS_IN_DAY);\n }\n\n /**\n * Current time in local timezone\n */\n public static currentLocal(): TuiTime {\n const date = new Date();\n\n return TuiTime.fromAbsoluteMilliseconds(\n (Date.now() - date.getTimezoneOffset() * MILLISECONDS_IN_MINUTE) %\n MILLISECONDS_IN_DAY,\n );\n }\n\n /**\n * Calculates TuiTime from milliseconds\n */\n public static fromAbsoluteMilliseconds(milliseconds: number): TuiTime {\n ngDevMode && console.assert(Number.isInteger(milliseconds));\n ngDevMode &&\n console.assert(\n tuiInRange(milliseconds, 0, MILLISECONDS_IN_DAY),\n `Milliseconds must be below ${MILLISECONDS_IN_DAY} (milliseconds in a day).`,\n );\n\n const hours = Math.floor(milliseconds / MILLISECONDS_IN_HOUR);\n const minutes = Math.floor(\n (milliseconds % MILLISECONDS_IN_HOUR) / MILLISECONDS_IN_MINUTE,\n );\n const seconds =\n Math.floor(\n ((milliseconds % MILLISECONDS_IN_HOUR) % MILLISECONDS_IN_MINUTE) / 1000,\n ) || 0;\n const ms =\n Math.floor(\n ((milliseconds % MILLISECONDS_IN_HOUR) % MILLISECONDS_IN_MINUTE) % 1000,\n ) || 0;\n\n return new TuiTime(hours, minutes, seconds, ms);\n }\n\n /**\n * Parses string into TuiTime object\n */\n public static fromString(time: string): TuiTime {\n const hours = this.parseHours(time);\n const minutes = Number(time.slice(3, 5)) || 0;\n const seconds = Number(time.slice(6, 8)) || 0;\n const ms = Number(time.slice(9, 12)) || 0;\n\n return new TuiTime(hours, minutes, seconds, ms);\n }\n\n /**\n * Converts Date object into TuiTime\n * @param date\n */\n public static fromLocalNativeDate(date: Date): TuiTime {\n return new TuiTime(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n }\n\n private static parseMeridiemPeriod(time: string): 'AM' | 'PM' | null {\n return (\n (/[AP]M/.exec(time.toUpperCase().replaceAll(/\\W/g, ''))?.[0] as\n | 'AM'\n | 'PM') || null\n );\n }\n\n private static parseHours(time: string): number {\n const hours = Number(time.slice(0, 2));\n const meridiem = this.parseMeridiemPeriod(time);\n\n if (!meridiem) {\n return hours;\n }\n\n if (hours === 12) {\n return meridiem === 'AM' ? 0 : 12;\n }\n\n return meridiem === 'PM' ? hours + 12 : hours;\n }\n\n /**\n * Shifts time by hours and minutes\n */\n public shift({hours = 0, minutes = 0, seconds = 0, ms = 0}: TuiTimeLike): TuiTime {\n const totalMs =\n this.toAbsoluteMilliseconds() +\n hours * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * MILLISECONDS_IN_SECOND +\n ms;\n const totalSeconds = Math.floor(totalMs / MILLISECONDS_IN_SECOND);\n const totalMinutes = Math.floor(totalSeconds / SECONDS_IN_MINUTE);\n const totalHours = Math.floor(totalMinutes / MINUTES_IN_HOUR);\n\n return new TuiTime(\n this.normalizeToRange(totalHours, HOURS_IN_DAY),\n this.normalizeToRange(totalMinutes, MINUTES_IN_HOUR),\n this.normalizeToRange(totalSeconds, SECONDS_IN_MINUTE),\n this.normalizeToRange(totalMs, MILLISECONDS_IN_SECOND),\n );\n }\n\n /**\n * Converts TuiTime to string\n */\n public toString(mode?: TuiTimeMode): string {\n const needAddMs = mode?.startsWith('HH:MM:SS.MSS') || (!mode && this.ms > 0);\n const needAddSeconds =\n needAddMs || mode?.startsWith('HH:MM:SS') || (!mode && this.seconds > 0);\n const {hours = this.hours, meridiem = ''} = mode?.includes('AA')\n ? this.toTwelveHour(this.hours)\n : {};\n const hhMm = `${this.formatTime(hours)}:${this.formatTime(this.minutes)}`;\n const ss = needAddSeconds ? `:${this.formatTime(this.seconds)}` : '';\n const mss = needAddMs ? `.${this.formatTime(this.ms, 3)}` : '';\n const aa = meridiem && `${CHAR_NO_BREAK_SPACE}${meridiem}`;\n\n return `${hhMm}${ss}${mss}${aa}`;\n }\n\n public valueOf(): number {\n return this.toAbsoluteMilliseconds();\n }\n\n /**\n * Returns the primitive value of the given Date object.\n * Depending on the argument, the method can return either a string or a number.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive\n */\n public [Symbol.toPrimitive](hint: string): number | string {\n return Date.prototype[Symbol.toPrimitive].call(this, hint);\n }\n\n /**\n * Converts TuiTime to milliseconds\n */\n public toAbsoluteMilliseconds(): number {\n return (\n this.hours * MILLISECONDS_IN_HOUR +\n this.minutes * MILLISECONDS_IN_MINUTE +\n this.seconds * 1000 +\n this.ms\n );\n }\n\n private formatTime(time: number, digits = 2): string {\n return String(time).padStart(digits, '0');\n }\n\n private toTwelveHour(hours: number): {hours: number; meridiem: string} {\n const meridiem = hours >= 12 ? 'PM' : 'AM';\n\n if (hours === 0 || hours === 12) {\n return {meridiem, hours: 12};\n }\n\n return {meridiem, hours: hours % 12};\n }\n\n private normalizeToRange(value: number, modulus: number): number {\n return ((value % modulus) + modulus) % modulus;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { Observable, startWith, fromEvent, concat, take, map, merge, endWith, takeWhile, repeat, tap, pipe, switchMap, EMPTY, takeUntil, NEVER, catchError, defaultIfEmpty, asyncScheduler } from 'rxjs';
1
+ import { Observable, startWith, fromEvent, concat, take, map, merge, endWith, takeWhile, repeat, tap, pipe, switchMap, EMPTY, takeUntil, NEVER, catchError, defaultIfEmpty, queueScheduler, asyncScheduler } from 'rxjs';
2
2
  import { tuiIsPresent, tuiGetOriginalArrayFromQueryList } from '@taiga-ui/cdk/utils/miscellaneous';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { inject, ChangeDetectorRef, NgZone } from '@angular/core';
4
+ import { untracked, inject, ChangeDetectorRef, NgZone } from '@angular/core';
5
5
 
6
6
  /**
7
7
  * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)
@@ -78,6 +78,15 @@ function tuiTakeUntilDestroyed(destroyRef) {
78
78
  return pipe(takeUntil(NEVER.pipe(takeUntilDestroyed(destroyRef), catchError(() => EMPTY), defaultIfEmpty(null))));
79
79
  }
80
80
 
81
+ const tuiUntrackedScheduler = {
82
+ now: queueScheduler.now.bind(queueScheduler),
83
+ schedule(work, delay, state) {
84
+ return queueScheduler.schedule(function (s) {
85
+ return untracked(() => work.call(this, s));
86
+ }, delay, state);
87
+ },
88
+ };
89
+
81
90
  function tuiWatch(cdr = inject(ChangeDetectorRef)) {
82
91
  return tap(() => cdr.markForCheck());
83
92
  }
@@ -118,5 +127,5 @@ function tuiZonefullScheduler(zone = inject(NgZone), scheduler = asyncScheduler)
118
127
  * Generated bundle index. Do not edit.
119
128
  */
120
129
 
121
- export { TuiDragState, TuiValuePresentException, tuiControlValue, tuiDragAndDropFrom, tuiIfMap, tuiMustBePresent, tuiPreventDefault, tuiQueryListChanges, tuiScrollFrom, tuiStopPropagation, tuiTakeUntilDestroyed, tuiTypedFromEvent, tuiWatch, tuiZoneOptimized, tuiZonefree, tuiZonefreeScheduler, tuiZonefull, tuiZonefullScheduler };
130
+ export { TuiDragState, TuiValuePresentException, tuiControlValue, tuiDragAndDropFrom, tuiIfMap, tuiMustBePresent, tuiPreventDefault, tuiQueryListChanges, tuiScrollFrom, tuiStopPropagation, tuiTakeUntilDestroyed, tuiTypedFromEvent, tuiUntrackedScheduler, tuiWatch, tuiZoneOptimized, tuiZonefree, tuiZonefreeScheduler, tuiZonefull, tuiZonefullScheduler };
122
131
  //# sourceMappingURL=taiga-ui-cdk-observables.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-observables.mjs","sources":["../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/events.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/must-be-present.ts","../../../projects/cdk/observables/query-list-observable.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import type {AbstractControl, AbstractControlDirective} from '@angular/forms';\nimport {Observable, startWith} from 'rxjs';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n control: AbstractControl | AbstractControlDirective | null,\n): Observable<T> {\n return new Observable((subscriber) =>\n control?.valueChanges?.pipe(startWith(control.value)).subscribe(subscriber),\n );\n}\n","import type {Observable} from 'rxjs';\nimport {fromEvent} from 'rxjs';\n\nexport interface TuiTypedEventTarget<E> {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener(\n type: string,\n listener?: ((evt: E) => void) | null,\n options?: EventListenerOptions | boolean,\n ): void;\n}\n\n/**\n * Wrapper around {@link Event} to add typings to target and currentTarget.\n */\nexport type TuiEventWith<G extends Event, T extends TuiTypedEventTarget<G>> = G & {\n readonly currentTarget: T;\n};\n\nexport function tuiTypedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<\n E extends Event,\n T extends TuiTypedEventTarget<TuiEventWith<E, T>>,\n>(\n target: T,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<E, T>>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<E>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {},\n): Observable<E> {\n /**\n * @note:\n * in RxJS 7 type signature `TuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\n */\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {concat, endWith, map, merge, repeat, take, takeWhile} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport type TuiDragStage = 'continues' | 'end' | 'start';\n\nexport class TuiDragState {\n constructor(\n public readonly stage: TuiDragStage,\n public readonly event: MouseEvent,\n ) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n return concat(\n tuiTypedFromEvent(element, 'mousedown').pipe(\n take(1),\n map((event) => new TuiDragState('start', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n map((event) => new TuiDragState('continues', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mouseup'),\n tuiTypedFromEvent(ownerDocument, 'dragend'),\n ).pipe(\n take(1),\n map((event) => new TuiDragState('end', event)),\n endWith(null),\n ),\n ).pipe(takeWhile(tuiIsPresent)),\n ).pipe(repeat());\n}\n","import type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.preventDefault());\n}\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.stopPropagation());\n}\n","import type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport type {Observable, OperatorFunction} from 'rxjs';\nimport {EMPTY, pipe, switchMap} from 'rxjs';\n\nexport function tuiIfMap<T, G>(\n project: (value: T) => Observable<G>,\n predicate: TuiBooleanHandler<T> = Boolean,\n): OperatorFunction<T, G> {\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs';\n\nexport function tuiMustBePresent<T>(): OperatorFunction<T | null | undefined, T> {\n return map((value) => {\n if (!tuiIsPresent(value)) {\n throw new TuiValuePresentException();\n }\n\n return value;\n });\n}\n\nexport class TuiValuePresentException extends Error {\n constructor() {\n super(ngDevMode ? 'Value must present' : '');\n }\n}\n","import type {QueryList} from '@angular/core';\nimport {tuiGetOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs';\n\n/**\n * Converts changes observable of a QueryList to an Observable of arrays\n */\nexport function tuiQueryListChanges<T>(\n queryList: QueryList<T>,\n): Observable<readonly T[]> {\n return queryList.changes.pipe(\n startWith(null),\n map(() => tuiGetOriginalArrayFromQueryList(queryList)),\n );\n}\n","import type {Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Normalizes scroll event in case element is `html` (document.documentElement)\n */\nexport function tuiScrollFrom(element: Element): Observable<Event> {\n return tuiTypedFromEvent(\n element === element.ownerDocument.documentElement\n ? element.ownerDocument\n : element,\n 'scroll',\n );\n}\n","import type {DestroyRef} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {catchError, defaultIfEmpty, EMPTY, NEVER, pipe, takeUntil} from 'rxjs';\n\n// NOTE: takeUntilDestroyed and DestroyRef can cause error:\n// NG0911: View has already been destroyed\n// https://github.com/angular/angular/issues/54527\nexport function tuiTakeUntilDestroyed<T>(\n destroyRef?: DestroyRef,\n): MonoTypeOperatorFunction<T> {\n return pipe(\n takeUntil(\n NEVER.pipe(\n takeUntilDestroyed(destroyRef),\n catchError(() => EMPTY),\n defaultIfEmpty(null),\n ),\n ),\n );\n}\n","import {ChangeDetectorRef, inject} from '@angular/core';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiWatch<T>(\n cdr = inject(ChangeDetectorRef),\n): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import {inject, NgZone} from '@angular/core';\nimport type {MonoTypeOperatorFunction, SchedulerLike, Subscription} from 'rxjs';\nimport {asyncScheduler, Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => zone.run(() => subscriber.next(value)),\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\n complete: () => zone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(zone), tuiZonefull(zone));\n}\n\nclass TuiZoneScheduler implements SchedulerLike {\n constructor(\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\n private readonly scheduler: SchedulerLike = asyncScheduler,\n ) {}\n\n public now(): number {\n return this.scheduler.now();\n }\n\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\n }\n}\n\nexport function tuiZonefreeScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\n}\n\nexport function tuiZonefullScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.run.bind(zone), scheduler);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGA;;AAEG;AACG,SAAU,eAAe,CAC3B,OAA0D,EAAA;IAE1D,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAC7B,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAC9E,CAAC;AACN;;AC4CM,SAAU,iBAAiB,CAC7B,MAA8B,EAC9B,KAAa,EACb,UAAmC,EAAE,EAAA;AAErC;;;AAGG;IACH,OAAO,SAAS,CAAI,MAAa,EAAE,KAAK,EAAE,OAAO,CAA6B,CAAC;AACnF;;MC1Da,YAAY,CAAA;IACrB,WACoB,CAAA,KAAmB,EACnB,KAAiB,EAAA;QADjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACjC;AACP,CAAA;AAEK,SAAU,kBAAkB,CAAC,OAAgB,EAAA;AAC/C,IAAA,MAAM,EAAC,aAAa,EAAC,GAAG,OAAO,CAAC;IAEhC,OAAO,MAAM,CACT,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CACxC,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CACnD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CACvD,EACD,KAAK,CACD,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,EAC3C,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAC9C,CAAC,IAAI,CACF,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAC9C,OAAO,CAAC,IAAI,CAAC,CAChB,CACJ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAClC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACrB;;SClCgB,iBAAiB,GAAA;AAC7B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AAClD,CAAC;SAEe,kBAAkB,GAAA;AAC9B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AACnD;;SCLgB,QAAQ,CACpB,OAAoC,EACpC,YAAkC,OAAO,EAAA;AAEzC,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF;;ACTA;SAMgB,gBAAgB,GAAA;AAC5B,IAAA,OAAO,GAAG,CAAC,CAAC,KAAK,KAAI;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,wBAAwB,EAAE,CAAC;AACxC,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC,CAAC;AACP,CAAC;AAEK,MAAO,wBAAyB,SAAQ,KAAK,CAAA;AAC/C,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,SAAS,GAAG,oBAAoB,GAAG,EAAE,CAAC,CAAC;KAChD;AACJ;;ACfD;;AAEG;AACG,SAAU,mBAAmB,CAC/B,SAAuB,EAAA;IAEvB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CACzB,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,gCAAgC,CAAC,SAAS,CAAC,CAAC,CACzD,CAAC;AACN;;ACXA;;AAEG;AACG,SAAU,aAAa,CAAC,OAAgB,EAAA;IAC1C,OAAO,iBAAiB,CACpB,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,eAAe;UAC3C,OAAO,CAAC,aAAa;AACvB,UAAE,OAAO,EACb,QAAQ,CACX,CAAC;AACN;;ACTA;AACA;AACA;AACM,SAAU,qBAAqB,CACjC,UAAuB,EAAA;AAEvB,IAAA,OAAO,IAAI,CACP,SAAS,CACL,KAAK,CAAC,IAAI,CACN,kBAAkB,CAAC,UAAU,CAAC,EAC9B,UAAU,CAAC,MAAM,KAAK,CAAC,EACvB,cAAc,CAAC,IAAI,CAAC,CACvB,CACJ,CACJ,CAAC;AACN;;AChBM,SAAU,QAAQ,CACpB,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,EAAA;IAE/B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACzC;;ACJM,SAAU,WAAW,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AAChD,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,MAAM,CAAC,SAAS,CAAC;AACb,QAAA,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,QAAA,KAAK,EAAE,CAAC,KAAc,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClE,QAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxD,KAAA,CAAC,CACL,CAAC;AACV,CAAC;AAEK,SAAU,WAAW,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AAChD,IAAA,OAAO,CAAC,MAAM,KACV,IAAI,UAAU,CAAC,CAAC,UAAU,KACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC7D,CAAC;AACV,CAAC;AAEK,SAAU,gBAAgB,CAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAA;AACrD,IAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,gBAAgB,CAAA;IAClB,WACqB,CAAA,eAAwD,EACxD,SAAA,GAA2B,cAAc,EAAA;QADzC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAyC;QACxD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgC;KAC1D;IAEG,GAAG,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;KAC/B;IAEM,QAAQ,CAAC,GAAG,IAA2C,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KACvE;AACJ,CAAA;AAEK,SAAU,oBAAoB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EACrB,SAAA,GAA2B,cAAc,EAAA;AAEzC,IAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC9E,CAAC;AAEK,SAAU,oBAAoB,CAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EACrB,SAAA,GAA2B,cAAc,EAAA;AAEzC,IAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAChE;;ACrDA;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-observables.mjs","sources":["../../../projects/cdk/observables/control-value.ts","../../../projects/cdk/observables/typed-from-event.ts","../../../projects/cdk/observables/drag-and-drop-from.ts","../../../projects/cdk/observables/events.ts","../../../projects/cdk/observables/if-map.ts","../../../projects/cdk/observables/must-be-present.ts","../../../projects/cdk/observables/query-list-observable.ts","../../../projects/cdk/observables/scroll-from.ts","../../../projects/cdk/observables/take-until-destroyed.ts","../../../projects/cdk/observables/untracked-scheduler.ts","../../../projects/cdk/observables/watch.ts","../../../projects/cdk/observables/zone.ts","../../../projects/cdk/observables/taiga-ui-cdk-observables.ts"],"sourcesContent":["import type {AbstractControl, AbstractControlDirective} from '@angular/forms';\nimport {Observable, startWith} from 'rxjs';\n\n/**\n * Turns AbstractControl/Abstract-control-directive valueChanges into ReplaySubject(1)\n */\nexport function tuiControlValue<T>(\n control: AbstractControl | AbstractControlDirective | null,\n): Observable<T> {\n return new Observable((subscriber) =>\n control?.valueChanges?.pipe(startWith(control.value)).subscribe(subscriber),\n );\n}\n","import type {Observable} from 'rxjs';\nimport {fromEvent} from 'rxjs';\n\nexport interface TuiTypedEventTarget<E> {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener(\n type: string,\n listener?: ((evt: E) => void) | null,\n options?: EventListenerOptions | boolean,\n ): void;\n}\n\n/**\n * Wrapper around {@link Event} to add typings to target and currentTarget.\n */\nexport type TuiEventWith<G extends Event, T extends TuiTypedEventTarget<G>> = G & {\n readonly currentTarget: T;\n};\n\nexport function tuiTypedFromEvent<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<WindowEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<DocumentEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<T extends Element, E extends keyof HTMLElementEventMap>(\n target: T,\n event: E,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<HTMLElementEventMap[E], typeof target>>;\n\nexport function tuiTypedFromEvent<\n E extends Event,\n T extends TuiTypedEventTarget<TuiEventWith<E, T>>,\n>(\n target: T,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<TuiEventWith<E, T>>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options?: AddEventListenerOptions,\n): Observable<E>;\n\nexport function tuiTypedFromEvent<E extends Event>(\n target: TuiTypedEventTarget<E>,\n event: string,\n options: AddEventListenerOptions = {},\n): Observable<E> {\n /**\n * @note:\n * in RxJS 7 type signature `TuiTypedEventTarget<E>` !== `HasEventTargetAddRemove<E>`\n */\n return fromEvent<E>(target as any, event, options) as unknown as Observable<E>;\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {concat, endWith, map, merge, repeat, take, takeWhile} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\nexport type TuiDragStage = 'continues' | 'end' | 'start';\n\nexport class TuiDragState {\n constructor(\n public readonly stage: TuiDragStage,\n public readonly event: MouseEvent,\n ) {}\n}\n\nexport function tuiDragAndDropFrom(element: Element): Observable<TuiDragState> {\n const {ownerDocument} = element;\n\n return concat(\n tuiTypedFromEvent(element, 'mousedown').pipe(\n take(1),\n map((event) => new TuiDragState('start', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n map((event) => new TuiDragState('continues', event)),\n ),\n merge(\n tuiTypedFromEvent(ownerDocument, 'mouseup'),\n tuiTypedFromEvent(ownerDocument, 'dragend'),\n ).pipe(\n take(1),\n map((event) => new TuiDragState('end', event)),\n endWith(null),\n ),\n ).pipe(takeWhile(tuiIsPresent)),\n ).pipe(repeat());\n}\n","import type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiPreventDefault<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.preventDefault());\n}\n\nexport function tuiStopPropagation<T extends Event>(): MonoTypeOperatorFunction<T> {\n return tap((event) => event.stopPropagation());\n}\n","import type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport type {Observable, OperatorFunction} from 'rxjs';\nimport {EMPTY, pipe, switchMap} from 'rxjs';\n\nexport function tuiIfMap<T, G>(\n project: (value: T) => Observable<G>,\n predicate: TuiBooleanHandler<T> = Boolean,\n): OperatorFunction<T, G> {\n return pipe(switchMap((value) => (predicate(value) ? project(value) : EMPTY)));\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {OperatorFunction} from 'rxjs';\nimport {map} from 'rxjs';\n\nexport function tuiMustBePresent<T>(): OperatorFunction<T | null | undefined, T> {\n return map((value) => {\n if (!tuiIsPresent(value)) {\n throw new TuiValuePresentException();\n }\n\n return value;\n });\n}\n\nexport class TuiValuePresentException extends Error {\n constructor() {\n super(ngDevMode ? 'Value must present' : '');\n }\n}\n","import type {QueryList} from '@angular/core';\nimport {tuiGetOriginalArrayFromQueryList} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs';\n\n/**\n * Converts changes observable of a QueryList to an Observable of arrays\n */\nexport function tuiQueryListChanges<T>(\n queryList: QueryList<T>,\n): Observable<readonly T[]> {\n return queryList.changes.pipe(\n startWith(null),\n map(() => tuiGetOriginalArrayFromQueryList(queryList)),\n );\n}\n","import type {Observable} from 'rxjs';\n\nimport {tuiTypedFromEvent} from './typed-from-event';\n\n/**\n * Normalizes scroll event in case element is `html` (document.documentElement)\n */\nexport function tuiScrollFrom(element: Element): Observable<Event> {\n return tuiTypedFromEvent(\n element === element.ownerDocument.documentElement\n ? element.ownerDocument\n : element,\n 'scroll',\n );\n}\n","import type {DestroyRef} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {catchError, defaultIfEmpty, EMPTY, NEVER, pipe, takeUntil} from 'rxjs';\n\n// NOTE: takeUntilDestroyed and DestroyRef can cause error:\n// NG0911: View has already been destroyed\n// https://github.com/angular/angular/issues/54527\nexport function tuiTakeUntilDestroyed<T>(\n destroyRef?: DestroyRef,\n): MonoTypeOperatorFunction<T> {\n return pipe(\n takeUntil(\n NEVER.pipe(\n takeUntilDestroyed(destroyRef),\n catchError(() => EMPTY),\n defaultIfEmpty(null),\n ),\n ),\n );\n}\n","import {untracked} from '@angular/core';\nimport type {SchedulerAction, SchedulerLike, Subscription} from 'rxjs';\nimport {queueScheduler} from 'rxjs';\n\nexport const tuiUntrackedScheduler: SchedulerLike = {\n now: queueScheduler.now.bind(queueScheduler),\n\n schedule<T>(\n work: (this: SchedulerAction<T>, state?: T) => void,\n delay?: number,\n state?: T,\n ): Subscription {\n return queueScheduler.schedule(\n function (this: SchedulerAction<T>, s?: T) {\n return untracked(() => work.call(this, s));\n },\n delay,\n state,\n );\n },\n};\n","import {ChangeDetectorRef, inject} from '@angular/core';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {tap} from 'rxjs';\n\nexport function tuiWatch<T>(\n cdr = inject(ChangeDetectorRef),\n): MonoTypeOperatorFunction<T> {\n return tap(() => cdr.markForCheck());\n}\n","import {inject, NgZone} from '@angular/core';\nimport type {MonoTypeOperatorFunction, SchedulerLike, Subscription} from 'rxjs';\nimport {asyncScheduler, Observable, pipe} from 'rxjs';\n\nexport function tuiZonefull<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => zone.run(() => subscriber.next(value)),\n error: (error: unknown) => zone.run(() => subscriber.error(error)),\n complete: () => zone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tuiZonefree<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n zone.runOutsideAngular(() => source.subscribe(subscriber)),\n );\n}\n\nexport function tuiZoneOptimized<T>(zone = inject(NgZone)): MonoTypeOperatorFunction<T> {\n return pipe(tuiZonefree(zone), tuiZonefull(zone));\n}\n\nclass TuiZoneScheduler implements SchedulerLike {\n constructor(\n private readonly zoneConditionFn: <T>(fn: (...args: unknown[]) => T) => T,\n private readonly scheduler: SchedulerLike = asyncScheduler,\n ) {}\n\n public now(): number {\n return this.scheduler.now();\n }\n\n public schedule(...args: Parameters<SchedulerLike['schedule']>): Subscription {\n return this.zoneConditionFn(() => this.scheduler.schedule(...args));\n }\n}\n\nexport function tuiZonefreeScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.runOutsideAngular.bind(zone), scheduler);\n}\n\nexport function tuiZonefullScheduler(\n zone = inject(NgZone),\n scheduler: SchedulerLike = asyncScheduler,\n): SchedulerLike {\n return new TuiZoneScheduler(zone.run.bind(zone), scheduler);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { tuiIsHTMLElement } from '@taiga-ui/cdk/utils/dom';
2
2
  import { toSignal } from '@angular/core/rxjs-interop';
3
3
  import { TUI_TRUE_HANDLER, TUI_FALSE_HANDLER, svgNodeFilter } from '@taiga-ui/cdk/constants';
4
- import { merge, fromEvent, map } from 'rxjs';
4
+ import { tuiUntrackedScheduler } from '@taiga-ui/cdk/observables';
5
+ import { merge, fromEvent, map, observeOn } from 'rxjs';
5
6
 
6
7
  /**
7
8
  * Returns current active element, including shadow dom
@@ -30,7 +31,7 @@ function tuiBlurNativeFocused(doc) {
30
31
  }
31
32
 
32
33
  function tuiFocusedIn(node) {
33
- return toSignal(merge(fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)), fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER))), { initialValue: false });
34
+ return toSignal(merge(fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)), fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER))).pipe(observeOn(tuiUntrackedScheduler)), { initialValue: false });
34
35
  }
35
36
 
36
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-focus.mjs","sources":["../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/focused-in.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/focus/is-native-focused-in.ts","../../../projects/cdk/utils/focus/move-focus.ts","../../../projects/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function tuiGetNativeFocused({activeElement}: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function tuiBlurNativeFocused(doc: Document): void {\n const activeElement = tuiGetNativeFocused(doc);\n\n if (tuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import type {Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {fromEvent, map, merge} from 'rxjs';\n\nexport function tuiFocusedIn(node: Node): Signal<boolean> {\n return toSignal(\n merge(\n fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)),\n fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER)),\n ),\n {initialValue: false},\n );\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function tuiIsNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if (\n (tuiIsHTMLElement(element) && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n case 'AUDIO':\n case 'VIDEO':\n return element.hasAttribute('controls');\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n default:\n return false;\n }\n}\n","import {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function tuiIsNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' ||\n tuiIsNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {tuiIsNativeMouseFocusable} from './is-native-mouse-focusable';\n\nexport interface TuiGetClosestFocusableOptions {\n /**\n * @description:\n * current HTML element\n */\n initial: Element;\n\n /**\n * @description:\n * determine if only keyboard focus is of interest\n */\n keyboard?: boolean;\n\n /**\n * @description:\n * should it look backwards instead (find item that will be focused with Shift + Tab)\n */\n previous?: boolean;\n\n /**\n * @description:\n * top Node limiting the search area\n */\n root: Node;\n}\n\n/**\n * @description:\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n */\nexport function tuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true,\n}: TuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? tuiIsNativeKeyboardFocusable : tuiIsNativeMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n );\n\n treeWalker.currentNode = initial;\n\n do {\n if (tuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (tuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n } while (previous ? treeWalker.previousNode() : treeWalker.nextNode());\n\n return null;\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function tuiIsNativeFocused(node?: Node | null): boolean {\n return (\n !!node?.ownerDocument &&\n tuiGetNativeFocused(node.ownerDocument) === node &&\n node.ownerDocument.hasFocus()\n );\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function tuiIsNativeFocusedIn(node?: Node | null): boolean {\n const focused = node?.ownerDocument && tuiGetNativeFocused(node.ownerDocument);\n\n return !!focused && node.contains(focused) && !!node.ownerDocument?.hasFocus();\n}\n","import {tuiIsNativeFocused} from './is-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function tuiMoveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n elements[currentIndex]?.focus();\n\n if (tuiIsNativeFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\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-cdk-utils-focus.mjs","sources":["../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/focused-in.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/focus/is-native-focused-in.ts","../../../projects/cdk/utils/focus/move-focus.ts","../../../projects/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function tuiGetNativeFocused({activeElement}: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function tuiBlurNativeFocused(doc: Document): void {\n const activeElement = tuiGetNativeFocused(doc);\n\n if (tuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import type {Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiUntrackedScheduler} from '@taiga-ui/cdk/observables';\nimport {fromEvent, map, merge, observeOn} from 'rxjs';\n\nexport function tuiFocusedIn(node: Node): Signal<boolean> {\n return toSignal(\n merge(\n fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)),\n fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER)),\n ).pipe(observeOn(tuiUntrackedScheduler)),\n {initialValue: false},\n );\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function tuiIsNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if (\n (tuiIsHTMLElement(element) && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n case 'AUDIO':\n case 'VIDEO':\n return element.hasAttribute('controls');\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n default:\n return false;\n }\n}\n","import {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function tuiIsNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' ||\n tuiIsNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {tuiIsNativeMouseFocusable} from './is-native-mouse-focusable';\n\nexport interface TuiGetClosestFocusableOptions {\n /**\n * @description:\n * current HTML element\n */\n initial: Element;\n\n /**\n * @description:\n * determine if only keyboard focus is of interest\n */\n keyboard?: boolean;\n\n /**\n * @description:\n * should it look backwards instead (find item that will be focused with Shift + Tab)\n */\n previous?: boolean;\n\n /**\n * @description:\n * top Node limiting the search area\n */\n root: Node;\n}\n\n/**\n * @description:\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n */\nexport function tuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true,\n}: TuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? tuiIsNativeKeyboardFocusable : tuiIsNativeMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n );\n\n treeWalker.currentNode = initial;\n\n do {\n if (tuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (tuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n } while (previous ? treeWalker.previousNode() : treeWalker.nextNode());\n\n return null;\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function tuiIsNativeFocused(node?: Node | null): boolean {\n return (\n !!node?.ownerDocument &&\n tuiGetNativeFocused(node.ownerDocument) === node &&\n node.ownerDocument.hasFocus()\n );\n}\n","import {tuiGetNativeFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function tuiIsNativeFocusedIn(node?: Node | null): boolean {\n const focused = node?.ownerDocument && tuiGetNativeFocused(node.ownerDocument);\n\n return !!focused && node.contains(focused) && !!node.ownerDocument?.hasFocus();\n}\n","import {tuiIsNativeFocused} from './is-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function tuiMoveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n elements[currentIndex]?.focus();\n\n if (tuiIsNativeFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { FormArray, FormGroup } from '@angular/forms';
2
2
  import { tuiToInt } from '@taiga-ui/cdk/utils/math';
3
- import { InjectionToken, isSignal, signal, inject, VERSION, effect, DestroyRef, EnvironmentInjector, createComponent } from '@angular/core';
3
+ import { InjectionToken, isSignal, signal, inject, effect, DestroyRef, EnvironmentInjector, createComponent } from '@angular/core';
4
+ import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
4
5
  import { toSignal } from '@angular/core/rxjs-interop';
5
6
 
6
7
  function tuiArrayRemove(array, index) {
@@ -58,11 +59,6 @@ function tuiDirectiveBinding(token, key, initial, options = { self: true }) {
58
59
  const result = isSignal(initial) ? initial : signal(initial);
59
60
  const directive = inject(token, options);
60
61
  const output = directive[`${key.toString()}Change`];
61
- const angularVersion = parseInt(VERSION.major, 10);
62
- const isAngular19 = angularVersion >= 19;
63
- const effectOptions = isAngular19
64
- ? {}
65
- : { allowSignalWrites: true };
66
62
  // TODO: Figure out why effects are executed all the time and not just when result changes (check with Angular 18)
67
63
  let previous;
68
64
  effect(() => {
@@ -79,7 +75,7 @@ function tuiDirectiveBinding(token, key, initial, options = { self: true }) {
79
75
  directive.ngOnChanges?.({});
80
76
  output?.emit?.(value);
81
77
  previous = value;
82
- }, effectOptions);
78
+ }, TUI_ALLOW_SIGNAL_WRITES);
83
79
  return result;
84
80
  }
85
81