@radix-ng/primitives 0.35.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/avatar/index.d.ts +1 -1
- package/avatar/src/avatar-context.token.d.ts +7 -0
- package/avatar/src/avatar-fallback.directive.d.ts +3 -9
- package/avatar/src/avatar-image.directive.d.ts +11 -11
- package/avatar/src/avatar-root.directive.d.ts +3 -6
- package/avatar/src/types.d.ts +2 -0
- package/checkbox/index.d.ts +1 -1
- package/checkbox/src/checkbox-button.directive.d.ts +1 -1
- package/checkbox/src/checkbox-indicator.directive.d.ts +1 -1
- package/checkbox/src/checkbox-input.directive.d.ts +1 -1
- package/checkbox/src/checkbox.directive.d.ts +3 -3
- package/checkbox/src/checkbox.token.d.ts +3 -3
- package/core/index.d.ts +2 -0
- package/core/src/clamp.d.ts +38 -0
- package/cropper/README.md +1 -0
- package/cropper/index.d.ts +15 -0
- package/cropper/src/cropper-context.token.d.ts +12 -0
- package/cropper/src/cropper-crop-area.directive.d.ts +6 -0
- package/cropper/src/cropper-description.directive.d.ts +6 -0
- package/cropper/src/cropper-image.component.d.ts +10 -0
- package/cropper/src/cropper-root.directive.d.ts +91 -0
- package/date-field/index.d.ts +9 -0
- package/fesm2022/radix-ng-primitives-avatar.mjs +82 -86
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +13 -16
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +84 -1
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +680 -0
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-date-field.mjs +16 -2
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +502 -0
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-stepper.mjs +1 -14
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/hover-card/src/hover-card-root.directive.d.ts +4 -4
- package/number-field/README.md +1 -0
- package/number-field/index.d.ts +17 -0
- package/number-field/src/number-field-context.token.d.ts +24 -0
- package/number-field/src/number-field-decrement.directive.d.ts +23 -0
- package/number-field/src/number-field-increment.directive.d.ts +23 -0
- package/number-field/src/number-field-input.directive.d.ts +22 -0
- package/number-field/src/number-field-root.directive.d.ts +86 -0
- package/number-field/src/types.d.ts +1 -0
- package/number-field/src/utils.d.ts +18 -0
- package/package.json +9 -1
- package/popover/src/popover-root.directive.d.ts +4 -4
- package/tooltip/src/tooltip-root.directive.d.ts +4 -4
- /package/{stepper/src/utils → core/src}/getActiveElement.d.ts +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-core.mjs","sources":["../../../packages/primitives/core/src/accessor/provide-value-accessor.ts","../../../packages/primitives/core/src/auto-focus.directive.ts","../../../packages/primitives/core/src/document.ts","../../../packages/primitives/core/src/focus-initial.directive.ts","../../../packages/primitives/core/src/id-generator.ts","../../../packages/primitives/core/src/inject-ng-control.ts","../../../packages/primitives/core/src/is-client.ts","../../../packages/primitives/core/src/is-inside-form.ts","../../../packages/primitives/core/src/is-nullish.ts","../../../packages/primitives/core/src/is-number.ts","../../../packages/primitives/core/src/kbd-constants.ts","../../../packages/primitives/core/src/provide-token.ts","../../../packages/primitives/core/src/window.ts","../../../packages/primitives/core/src/chunk.ts","../../../packages/primitives/core/src/date-time/comparators.ts","../../../packages/primitives/core/src/date-time/calendar.ts","../../../packages/primitives/core/src/date-time/formatter.ts","../../../packages/primitives/core/src/date-time/parts.ts","../../../packages/primitives/core/src/date-time/placeholders.ts","../../../packages/primitives/core/src/date-time/utils.ts","../../../packages/primitives/core/src/date-time/parser.ts","../../../packages/primitives/core/src/date-time/segment.ts","../../../packages/primitives/core/src/date-time/types.ts","../../../packages/primitives/core/src/date-time/useDateField.ts","../../../packages/primitives/core/src/positioning/types.ts","../../../packages/primitives/core/src/positioning/constants.ts","../../../packages/primitives/core/src/positioning/utils.ts","../../../packages/primitives/core/src/watch.ts","../../../packages/primitives/core/radix-ng-primitives-core.ts"],"sourcesContent":["import { forwardRef, Provider, Type } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Include in the providers section of a component which utilizes ControlValueAccessor to redundant code.\n *\n * ```ts\n * @Directive({\n * providers: [provideValueAccessor(ExampleDirective)]\n *}\n * export class ExampleDirective{}\n * ```\n */\nexport function provideValueAccessor<T>(type: Type<T>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => type),\n multi: true\n };\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\n\n/*\n * <div [rdxAutoFocus]=\"true\"></div>\n */\n\n@Directive({\n selector: '[rdxAutoFocus]',\n standalone: true\n})\nexport class RdxAutoFocusDirective {\n #elementRef = inject(ElementRef);\n #ngZone = inject(NgZone);\n\n private _autoSelect = false;\n\n /**\n * @default false\n */\n @Input({ alias: 'rdxAutoFocus', transform: booleanAttribute })\n set autoFocus(value: boolean) {\n if (value) {\n // Note: Running this outside Angular's zone because `element.focus()` does not trigger change detection.\n this.#ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout which might lead to frame drops on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask executed within the current rendering frame.\n // Animation tasks are executed in the next rendering frame.\n reqAnimationFrame(() => {\n this.#elementRef.nativeElement.focus();\n if (this._autoSelect && this.#elementRef.nativeElement.select) {\n this.#elementRef.nativeElement.select();\n }\n })\n );\n }\n }\n\n // Setter for autoSelect attribute to enable text selection when autoFocus is true.\n @Input({ transform: booleanAttribute })\n set autoSelect(value: boolean) {\n this._autoSelect = value;\n }\n}\n\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\n let lastTime = 0;\n\n return function (callback: FrameRequestCallback): number {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall) as any;\n\n lastTime = currTime + timeToCall;\n\n return id;\n };\n}\n\n// Function to get the appropriate requestAnimationFrame method with fallback to polyfill.\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\n\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n\n// Get the requestAnimationFrame function or its polyfill.\nconst reqAnimationFrame = getRequestAnimationFrame();\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[rdxFocusInitial]'\n})\nexport class RdxFocusInitialDirective {\n /** @ignore */\n private readonly nativeElement = inject(ElementRef).nativeElement;\n\n /** @ignore */\n focus(): void {\n this.nativeElement.focus();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { APP_ID, inject, Injectable } from '@angular/core';\n\n/**\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\n * this, but there are some internal tests that rely on the IDs.\n */\nconst counters: Record<string, number> = {};\n\n/** Service that generates unique IDs for DOM nodes. */\n@Injectable({ providedIn: 'root' })\nexport class _IdGenerator {\n private readonly _appId = inject(APP_ID);\n\n /**\n * Generates a unique ID with a specific prefix.\n * @param prefix Prefix to add to the ID.\n */\n getId(prefix: string): string {\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\n // Angular app on them, we can reduce the amount of breakages by not adding it.\n if (this._appId !== 'ng') {\n prefix += this._appId;\n }\n\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\n counters[prefix] = 0;\n }\n\n return `${prefix}${counters[prefix]++}`;\n }\n}\n","import { inject } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms';\n\nexport function injectNgControl(params: {\n optional: true;\n}): FormControlDirective | FormControlName | NgModel | undefined;\nexport function injectNgControl(params: { optional: false }): FormControlDirective | FormControlName | NgModel;\nexport function injectNgControl(): FormControlDirective | FormControlName | NgModel;\n\nexport function injectNgControl(params?: { optional: true } | { optional: false }) {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!params?.optional && !ngControl) throw new Error('NgControl not found');\n\n if (\n ngControl instanceof FormControlDirective ||\n ngControl instanceof FormControlName ||\n ngControl instanceof NgModel\n ) {\n return ngControl;\n }\n\n if (params?.optional) {\n return undefined;\n }\n\n throw new Error('NgControl is not an instance of FormControlDirective, FormControlName or NgModel');\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { inject } from '@angular/core';\n\nexport function injectIsClient() {\n return inject(Platform).isBrowser;\n}\n","import { ElementRef } from '@angular/core';\n\nexport function isInsideForm(el: ElementRef<HTMLElement> | null): boolean {\n if (!el || !el.nativeElement) {\n return true;\n }\n return Boolean(el.nativeElement.closest('form'));\n}\n","export function isNullish(value: any): value is null | undefined {\n return value === null || value === undefined;\n}\n","export const isNumber = (v: any): v is number => typeof v === 'number';\n","export const ALT = 'Alt';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\nexport const ARROW_UP = 'ArrowUp';\nexport const BACKSPACE = 'Backspace';\nexport const CAPS_LOCK = 'CapsLock';\nexport const CONTROL = 'Control';\nexport const DELETE = 'Delete';\nexport const END = 'End';\nexport const ENTER = 'Enter';\nexport const ESCAPE = 'Escape';\nexport const F1 = 'F1';\nexport const F10 = 'F10';\nexport const F11 = 'F11';\nexport const F12 = 'F12';\nexport const F2 = 'F2';\nexport const F3 = 'F3';\nexport const F4 = 'F4';\nexport const F5 = 'F5';\nexport const F6 = 'F6';\nexport const F7 = 'F7';\nexport const F8 = 'F8';\nexport const F9 = 'F9';\nexport const HOME = 'Home';\nexport const META = 'Meta';\nexport const PAGE_DOWN = 'PageDown';\nexport const PAGE_UP = 'PageUp';\nexport const SHIFT = 'Shift';\nexport const SPACE = ' ';\nexport const TAB = 'Tab';\nexport const CTRL = 'Control';\nexport const ASTERISK = '*';\nexport const a = 'a';\nexport const P = 'P';\nexport const A = 'A';\nexport const p = 'p';\nexport const n = 'n';\nexport const j = 'j';\nexport const k = 'k';\nexport const SPACE_CODE = 'Space';\n","import { forwardRef, InjectionToken, Provider, Type } from '@angular/core';\n\n/**\n * Creates an Angular provider that binds the given token to the existing instance\n * of the specified class. This is especially useful when you want multiple\n * tokens (or interfaces) to resolve to the same directive/component instance.\n *\n * @template T - The type associated with the injection token.\n * @param token - The InjectionToken or abstract type you want to provide.\n * @param type - The class type whose existing instance will be used for this token.\n * @returns A Provider configuration object for Angular's DI system.\n *\n * @example\n *\n * @Directive({\n * providers: [\n * provideToken(RdxToggleGroupToken, RdxToggleGroupDirective),\n * provideValueAccessor(RdxToggleGroupDirective)\n * ]\n * })\n * export class RdxToggleGroupDirective {}\n */\nexport function provideToken<T>(token: InjectionToken<T>, type: Type<unknown>): Provider {\n return {\n provide: token,\n useExisting: forwardRef(() => type)\n };\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport { injectDocument } from './document';\n\nexport const WINDOW = new InjectionToken<Window & typeof globalThis>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = injectDocument();\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\n\nexport function injectWindow(): Window & typeof globalThis {\n return inject(WINDOW);\n}\n","/**\n * Splits an array into chunks of a given size.\n * @param arr The array to split.\n * @param size The size of each chunk.\n * @returns An array of arrays, where each sub-array has `size` elements from the original array.\n * @example ```ts\n * const arr = [1, 2, 3, 4, 5, 6, 7, 8];\n * const chunks = chunk(arr, 3);\n * // chunks = [[1, 2, 3], [4, 5, 6], [7, 8]]\n * ```\n */\nexport function chunk<T>(arr: T[], size: number): T[][] {\n const result = [];\n for (let i = 0; i < arr.length; i += size) result.push(arr.slice(i, i + size));\n\n return result;\n}\n","import {\n CalendarDate,\n CalendarDateTime,\n createCalendar,\n DateFormatter,\n type DateValue,\n getDayOfWeek,\n getLocalTimeZone,\n toCalendar,\n ZonedDateTime\n} from '@internationalized/date';\nimport type { DateMatcher } from './types';\n\n/**\n * Given a `DateValue` object, convert it to a native `Date` object.\n * If a timezone is provided, the date will be converted to that timezone.\n * If no timezone is provided, the date will be converted to the local timezone.\n */\nexport function toDate(dateValue: DateValue, tz: string = getLocalTimeZone()) {\n if (isZonedDateTime(dateValue)) return dateValue.toDate();\n else return dateValue.toDate(tz);\n}\n\nexport function isCalendarDateTime(dateValue: DateValue): dateValue is CalendarDateTime {\n return dateValue instanceof CalendarDateTime;\n}\n\nexport function isZonedDateTime(dateValue: DateValue): dateValue is ZonedDateTime {\n return dateValue instanceof ZonedDateTime;\n}\n\nexport function hasTime(dateValue: DateValue) {\n return isCalendarDateTime(dateValue) || isZonedDateTime(dateValue);\n}\n\n/**\n * Given a date, return the number of days in the month.\n */\nexport function getDaysInMonth(date: Date | DateValue) {\n if (date instanceof Date) {\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n /**\n * By using zero as the day, we get the\n * last day of the previous month, which\n * is the month we originally passed in.\n */\n return new Date(year, month, 0).getDate();\n } else {\n return date.set({ day: 100 }).day;\n }\n}\n\n/**\n * Determine if a date is before the reference date.\n * @param dateToCompare - is this date before the `referenceDate`\n * @param referenceDate - is the `dateToCompare` before this date\n *\n * @see {@link isBeforeOrSame} for inclusive\n */\nexport function isBefore(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) < 0;\n}\n\n/**\n * Determine if a date is after the reference date.\n * @param dateToCompare - is this date after the `referenceDate`\n * @param referenceDate - is the `dateToCompare` after this date\n *\n * @see {@link isAfterOrSame} for inclusive\n */\nexport function isAfter(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) > 0;\n}\n\n/**\n * Determine if a date is before or the same as the reference date.\n *\n * @param dateToCompare - the date to compare\n * @param referenceDate - the reference date to make the comparison against\n *\n * @see {@link isBefore} for non-inclusive\n */\nexport function isBeforeOrSame(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) <= 0;\n}\n\n/**\n * Determine if a date is after or the same as the reference date.\n *\n * @param dateToCompare - is this date after or the same as the `referenceDate`\n * @param referenceDate - is the `dateToCompare` after or the same as this date\n *\n * @see {@link isAfter} for non-inclusive\n */\nexport function isAfterOrSame(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) >= 0;\n}\n\n/**\n * Determine if a date is inclusively between a start and end reference date.\n *\n * @param date - is this date inclusively between the `start` and `end` dates\n * @param start - the start reference date to make the comparison against\n * @param end - the end reference date to make the comparison against\n *\n * @see {@link isBetween} for non-inclusive\n */\nexport function isBetweenInclusive(date: DateValue, start: DateValue, end: DateValue) {\n return isAfterOrSame(date, start) && isBeforeOrSame(date, end);\n}\n\n/**\n * Determine if a date is between a start and end reference date.\n *\n * @param date - is this date between the `start` and `end` dates\n * @param start - the start reference date to make the comparison against\n * @param end - the end reference date to make the comparison against\n *\n * @see {@link isBetweenInclusive} for inclusive\n */\nexport function isBetween(date: DateValue, start: DateValue, end: DateValue) {\n return isAfter(date, start) && isBefore(date, end);\n}\n\nexport function getLastFirstDayOfWeek<T extends DateValue = DateValue>(\n date: T,\n firstDayOfWeek: number,\n locale: string\n): T {\n const day = getDayOfWeek(date, locale);\n\n if (firstDayOfWeek > day) return date.subtract({ days: day + 7 - firstDayOfWeek }) as T;\n\n if (firstDayOfWeek === day) return date as T;\n\n return date.subtract({ days: day - firstDayOfWeek }) as T;\n}\n\nexport function getNextLastDayOfWeek<T extends DateValue = DateValue>(\n date: T,\n firstDayOfWeek: number,\n locale: string\n): T {\n const day = getDayOfWeek(date, locale);\n const lastDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n\n if (day === lastDayOfWeek) return date as T;\n\n if (day > lastDayOfWeek) return date.add({ days: 7 - day + lastDayOfWeek }) as T;\n\n return date.add({ days: lastDayOfWeek - day }) as T;\n}\n\nexport function areAllDaysBetweenValid(\n start: DateValue,\n end: DateValue,\n isUnavailable: DateMatcher | undefined,\n isDisabled: DateMatcher | undefined\n) {\n if (isUnavailable === undefined && isDisabled === undefined) return true;\n\n let dCurrent = start.add({ days: 1 });\n if (isDisabled?.(dCurrent) || isUnavailable?.(dCurrent)) return false;\n\n const dEnd = end;\n while (dCurrent.compare(dEnd) < 0) {\n dCurrent = dCurrent.add({ days: 1 });\n if (isDisabled?.(dCurrent) || isUnavailable?.(dCurrent)) return false;\n }\n return true;\n}\n\nexport type Granularity = 'day' | 'hour' | 'minute' | 'second';\nexport type TimeGranularity = 'hour' | 'minute' | 'second';\n\ntype GetDefaultDateProps = {\n defaultValue?: DateValue | DateValue[] | undefined;\n defaultPlaceholder?: DateValue | undefined;\n granularity?: Granularity;\n locale?: string;\n};\n\n/**\n * A helper function used throughout the various date builders\n * to generate a default `DateValue` using the `defaultValue`,\n * `defaultPlaceholder`, and `granularity` props.\n *\n * It's important to match the `DateValue` type being used\n * elsewhere in the builder, so they behave according to the\n * behavior the user expects based on the props they've provided.\n *\n */\nexport function getDefaultDate(props: GetDefaultDateProps): DateValue {\n const { defaultValue, defaultPlaceholder, granularity = 'day', locale = 'en' } = props;\n\n if (Array.isArray(defaultValue) && defaultValue.length) return defaultValue[defaultValue.length - 1]!.copy();\n\n if (defaultValue && !Array.isArray(defaultValue)) return defaultValue.copy();\n\n if (defaultPlaceholder) return defaultPlaceholder.copy();\n\n const date = new Date();\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const calendarDateTimeGranularities = ['hour', 'minute', 'second'];\n\n const defaultFormatter = new DateFormatter(locale);\n const calendar = createCalendar(defaultFormatter.resolvedOptions().calendar);\n\n if (calendarDateTimeGranularities.includes(granularity ?? 'day'))\n return toCalendar(new CalendarDateTime(year, month, day, 0, 0, 0), calendar);\n\n return toCalendar(new CalendarDate(year, month, day), calendar);\n}\n","import { DateValue, endOfMonth, startOfMonth } from '@internationalized/date';\nimport { chunk } from '../chunk';\nimport { getDaysInMonth, getLastFirstDayOfWeek, getNextLastDayOfWeek } from './comparators';\nimport { Month } from './types';\n\nexport type CreateMonthProps = {\n /**\n * The date object representing the month's date (usually the first day of the month).\n */\n dateObj: DateValue;\n\n /**\n * The day of the week to start the calendar on (0 for Sunday, 1 for Monday, etc.).\n */\n weekStartsOn: number;\n\n /**\n * Whether to always render 6 weeks in the calendar, even if the month doesn't\n * span 6 weeks.\n */\n fixedWeeks: boolean;\n\n /**\n * The locale to use when creating the calendar month.\n */\n locale: string;\n};\n\n/**\n * Retrieves an array of date values representing the days between\n * the provided start and end dates.\n */\nexport function getDaysBetween(start: DateValue, end: DateValue) {\n const days: DateValue[] = [];\n let dCurrent = start.add({ days: 1 });\n const dEnd = end;\n while (dCurrent.compare(dEnd) < 0) {\n days.push(dCurrent);\n dCurrent = dCurrent.add({ days: 1 });\n }\n return days;\n}\n\nexport function createMonth(props: CreateMonthProps): Month<DateValue> {\n const { dateObj, weekStartsOn, fixedWeeks, locale } = props;\n const daysInMonth = getDaysInMonth(dateObj);\n\n const datesArray = Array.from({ length: daysInMonth }, (_, i) => dateObj.set({ day: i + 1 }));\n\n const firstDayOfMonth = startOfMonth(dateObj);\n const lastDayOfMonth = endOfMonth(dateObj);\n\n const lastSunday = getLastFirstDayOfWeek(firstDayOfMonth, weekStartsOn, locale);\n const nextSaturday = getNextLastDayOfWeek(lastDayOfMonth, weekStartsOn, locale);\n\n const lastMonthDays = getDaysBetween(lastSunday.subtract({ days: 1 }), firstDayOfMonth);\n const nextMonthDays = getDaysBetween(lastDayOfMonth, nextSaturday.add({ days: 1 }));\n\n const totalDays = lastMonthDays.length + datesArray.length + nextMonthDays.length;\n\n if (fixedWeeks && totalDays < 42) {\n const extraDays = 42 - totalDays;\n\n let startFrom = nextMonthDays[nextMonthDays.length - 1];\n\n if (!startFrom) startFrom = endOfMonth(dateObj);\n\n const extraDaysArray = Array.from({ length: extraDays }, (_, i) => {\n const incr = i + 1;\n return startFrom.add({ days: incr });\n });\n nextMonthDays.push(...extraDaysArray);\n }\n\n const allDays = lastMonthDays.concat(datesArray, nextMonthDays);\n\n const weeks = chunk(allDays, 7);\n\n return {\n value: dateObj,\n dates: allDays,\n weeks: weeks\n };\n}\n\ntype SetMonthProps = CreateMonthProps & {\n numberOfMonths: number | undefined;\n currentMonths?: Month<DateValue>[];\n};\n\nexport function createMonths(props: SetMonthProps) {\n const { numberOfMonths, dateObj, ...monthProps } = props;\n\n const months: Month<DateValue>[] = [];\n\n if (!numberOfMonths || numberOfMonths === 1) {\n months.push(\n createMonth({\n ...monthProps,\n dateObj\n })\n );\n return months;\n }\n\n months.push(\n createMonth({\n ...monthProps,\n dateObj\n })\n );\n\n // Create all the months, starting with the current month\n for (let i = 1; i < numberOfMonths; i++) {\n const nextMonth = dateObj.add({ months: i });\n months.push(\n createMonth({\n ...monthProps,\n dateObj: nextMonth\n })\n );\n }\n\n return months;\n}\n","import { DateFormatter, type DateValue, getLocalTimeZone, today } from '@internationalized/date';\nimport { hasTime, isZonedDateTime, toDate } from './comparators';\nimport { HourCycle } from './types';\n\nconst defaultPartOptions: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n};\n\nexport interface DateFormatterOptions extends Intl.DateTimeFormatOptions {\n calendar?: string;\n}\n\nexport type Formatter = {\n getLocale: () => string;\n setLocale: (newLocale: string) => void;\n custom: (date: Date, options: DateFormatterOptions) => string;\n selectedDate: (date: DateValue, includeTime?: boolean) => string;\n dayOfWeek: (date: Date, length?: DateFormatterOptions['weekday']) => string;\n fullMonthAndYear: (date: Date, options?: DateFormatterOptions) => string;\n fullMonth: (date: Date, options?: DateFormatterOptions) => string;\n fullYear: (date: Date, options?: DateFormatterOptions) => string;\n dayPeriod: (date: Date) => string;\n part: (dateObj: DateValue, type: Intl.DateTimeFormatPartTypes, options?: DateFormatterOptions) => string;\n toParts: (date: DateValue, options?: DateFormatterOptions) => Intl.DateTimeFormatPart[];\n getMonths: () => { label: string; value: number }[];\n};\n\n/**\n * Creates a wrapper around the `DateFormatter`, which is\n * an improved version of the {@link Intl.DateTimeFormat} API,\n * that is used internally by the various date builders to\n * easily format dates in a consistent way.\n *\n * @see [DateFormatter](https://react-spectrum.adobe.com/internationalized/date/DateFormatter.html)\n */\nexport function createFormatter(initialLocale: string): Formatter {\n let locale = initialLocale;\n\n function setLocale(newLocale: string) {\n locale = newLocale;\n }\n\n function getLocale() {\n return locale;\n }\n\n function custom(date: Date, options: Intl.DateTimeFormatOptions) {\n return new DateFormatter(locale, options).format(date);\n }\n\n function selectedDate(date: DateValue, includeTime = true) {\n if (hasTime(date) && includeTime) {\n return custom(toDate(date), {\n dateStyle: 'long',\n timeStyle: 'long'\n });\n } else {\n return custom(toDate(date), {\n dateStyle: 'long'\n });\n }\n }\n\n function fullMonthAndYear(date: Date) {\n return new DateFormatter(locale, { month: 'long', year: 'numeric' }).format(date);\n }\n\n function fullMonth(date: Date) {\n return new DateFormatter(locale, { month: 'long' }).format(date);\n }\n\n function fullYear(date: Date) {\n return new DateFormatter(locale, { year: 'numeric' }).format(date);\n }\n\n function toParts(date: DateValue, options?: Intl.DateTimeFormatOptions) {\n if (isZonedDateTime(date)) {\n return new DateFormatter(locale, {\n ...options,\n timeZone: date.timeZone\n }).formatToParts(toDate(date));\n } else {\n return new DateFormatter(locale, options).formatToParts(toDate(date));\n }\n }\n\n function dayOfWeek(date: Date, length: Intl.DateTimeFormatOptions['weekday'] = 'narrow') {\n return new DateFormatter(locale, { weekday: length }).format(date);\n }\n\n function dayPeriod(date: Date, hourCycle: HourCycle | undefined = undefined) {\n const parts = new DateFormatter(locale, {\n hour: 'numeric',\n minute: 'numeric',\n hourCycle: hourCycle === 24 ? 'h23' : undefined\n }).formatToParts(date);\n const value = parts.find((p) => p.type === 'dayPeriod')?.value;\n if (value === 'PM') {\n return 'PM';\n }\n return 'AM';\n }\n\n function part(dateObj: DateValue, type: Intl.DateTimeFormatPartTypes, options: Intl.DateTimeFormatOptions = {}) {\n const opts = { ...defaultPartOptions, ...options };\n const parts = toParts(dateObj, opts);\n const part = parts.find((p) => p.type === type);\n return part ? part.value : '';\n }\n\n function getMonths() {\n const defaultDate = today(getLocalTimeZone());\n const months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return months.map((item) => ({ label: fullMonth(toDate(defaultDate.set({ month: item }))), value: item }));\n }\n\n return {\n setLocale,\n getLocale,\n fullMonth,\n fullYear,\n fullMonthAndYear,\n toParts,\n custom,\n part,\n dayPeriod,\n selectedDate,\n dayOfWeek,\n getMonths\n };\n}\n","/*\n * Implementation ported from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/date-field/_internal/helpers.ts\n */\n\nimport type { DateSegmentPart, EditableSegmentPart, SegmentPart, TimeSegmentPart } from './types';\n\nexport const DATE_SEGMENT_PARTS = ['day', 'month', 'year'] as const;\nexport const TIME_SEGMENT_PARTS = ['hour', 'minute', 'second', 'dayPeriod'] as const;\nexport const NON_EDITABLE_SEGMENT_PARTS = ['literal', 'timeZoneName'] as const;\nexport const EDITABLE_SEGMENT_PARTS = [...DATE_SEGMENT_PARTS, ...TIME_SEGMENT_PARTS] as const;\nexport const EDITABLE_TIME_SEGMENT_PARTS = [...TIME_SEGMENT_PARTS] as const;\nexport const ALL_SEGMENT_PARTS = [\n ...EDITABLE_SEGMENT_PARTS,\n ...NON_EDITABLE_SEGMENT_PARTS\n] as const;\nexport const ALL_EXCEPT_LITERAL_PARTS = ALL_SEGMENT_PARTS.filter((part) => part !== 'literal');\n\nexport function isDateSegmentPart(part: unknown): part is DateSegmentPart {\n return DATE_SEGMENT_PARTS.includes(part as DateSegmentPart);\n}\n\nexport function isTimeSegmentPart(part: unknown): part is TimeSegmentPart {\n return TIME_SEGMENT_PARTS.includes(part as TimeSegmentPart);\n}\n\nexport function isSegmentPart(part: string): part is EditableSegmentPart {\n return EDITABLE_SEGMENT_PARTS.includes(part as EditableSegmentPart);\n}\n\nexport function isAnySegmentPart(part: unknown): part is SegmentPart {\n return ALL_SEGMENT_PARTS.includes(part as EditableSegmentPart);\n}\n","/*\n * Implementation ported from from from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/internal/helpers/date/placeholders.ts\n */\n\n// prettier-ignore\nconst supportedLocales = [\n 'ach','af','am','an','ar','ast','az','be','bg','bn','br','bs',\n 'ca','cak','ckb','cs','cy','da','de','dsb','el','en','eo','es',\n 'et','eu','fa','ff','fi','fr','fy','ga','gd','gl','he','hr',\n 'hsb','hu','ia','id','it','ja','ka','kk','kn','ko','lb','lo',\n 'lt','lv','meh','ml','ms','nl','nn','no','oc','pl','pt','rm',\n 'ro','ru','sc','scn','sk','sl','sr','sv','szl','tg','th','tr',\n 'uk','zh-CN','zh-TW',\n] as const;\n\nconst placeholderFields = ['year', 'month', 'day'] as const;\n\ntype SupportedLocale = (typeof supportedLocales)[number];\ntype PlaceholderField = (typeof placeholderFields)[number];\nexport type PlaceholderMap = Record<SupportedLocale, Record<PlaceholderField, string>>;\n\nconst placeholders: PlaceholderMap = {\n ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n af: { year: 'jjjj', month: 'mm', day: 'dd' },\n am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n an: { year: 'aaaa', month: 'mm', day: 'dd' },\n ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n az: { year: 'iiii', month: 'aa', day: 'gg' },\n be: { year: 'гггг', month: 'мм', day: 'дд' },\n bg: { year: 'гггг', month: 'мм', day: 'дд' },\n bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n br: { year: 'bbbb', month: 'mm', day: 'dd' },\n bs: { year: 'gggg', month: 'mm', day: 'dd' },\n ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n da: { year: 'åååå', month: 'mm', day: 'dd' },\n de: { year: 'jjjj', month: 'mm', day: 'tt' },\n dsb: { year: 'llll', month: 'mm', day: 'źź' },\n el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n en: { year: 'yyyy', month: 'mm', day: 'dd' },\n eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n es: { year: 'aaaa', month: 'mm', day: 'dd' },\n et: { year: 'aaaa', month: 'kk', day: 'pp' },\n eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n fa: { year: 'سال', month: 'ماه', day: 'روز' },\n ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n ga: { year: 'bbbb', month: 'mm', day: 'll' },\n gd: { year: 'bbbb', month: 'mm', day: 'll' },\n gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n he: { year: 'שנה', month: 'חודש', day: 'יום' },\n hr: { year: 'gggg', month: 'mm', day: 'dd' },\n hsb: { year: 'llll', month: 'mm', day: 'dd' },\n hu: { year: 'éééé', month: 'hh', day: 'nn' },\n ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n id: { year: 'tttt', month: 'bb', day: 'hh' },\n it: { year: 'aaaa', month: 'mm', day: 'gg' },\n ja: { year: ' 年 ', month: '月', day: '日' },\n ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n ko: { year: '연도', month: '월', day: '일' },\n lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n lv: { year: 'gggg', month: 'mm', day: 'dd' },\n meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n ms: { year: 'tttt', month: 'mm', day: 'hh' },\n nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n nn: { year: 'åååå', month: 'mm', day: 'dd' },\n no: { year: 'åååå', month: 'mm', day: 'dd' },\n oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n rm: { year: 'oooo', month: 'mm', day: 'dd' },\n ro: { year: 'aaaa', month: 'll', day: 'zz' },\n ru: { year: 'гггг', month: 'мм', day: 'дд' },\n sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n sl: { year: 'llll', month: 'mm', day: 'dd' },\n sr: { year: 'гггг', month: 'мм', day: 'дд' },\n sv: { year: 'åååå', month: 'mm', day: 'dd' },\n szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n tg: { year: 'сссс', month: 'мм', day: 'рр' },\n th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n uk: { year: 'рррр', month: 'мм', day: 'дд' },\n 'zh-CN': { year: '年', month: '月', day: '日' },\n 'zh-TW': { year: '年', month: '月', day: '日' }\n};\n\nfunction getPlaceholderObj(locale: SupportedLocale | (string & {})) {\n if (!isSupportedLocale(locale)) {\n const localeLanguage = getLocaleLanguage(locale);\n if (!isSupportedLocale(localeLanguage)) {\n return placeholders.en;\n } else {\n return placeholders[localeLanguage];\n }\n } else {\n return placeholders[locale];\n }\n}\n\ntype Field = 'era' | 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'dayPeriod';\n\nexport function getPlaceholder(field: Field, value: string, locale: SupportedLocale | (string & {})) {\n if (isPlaceholderField(field)) return getPlaceholderObj(locale)[field];\n if (isDefaultField(field)) return value;\n if (isTimeField(field)) return '––';\n return '';\n}\n\nfunction isSupportedLocale(locale: string): locale is SupportedLocale {\n return supportedLocales.includes(locale as SupportedLocale);\n}\n\nfunction isPlaceholderField(field: unknown): field is PlaceholderField {\n return placeholderFields.includes(field as PlaceholderField);\n}\n\nfunction isTimeField(field: unknown): field is 'hour' | 'minute' | 'second' {\n return field === 'hour' || field === 'minute' || field === 'second';\n}\n\nfunction isDefaultField(field: unknown): field is 'era' | 'dayPeriod' {\n return field === 'era' || field === 'dayPeriod';\n}\n\nfunction getLocaleLanguage(locale: string) {\n if (Intl.Locale) {\n return new Intl.Locale(locale).language;\n }\n return locale.split('-')[0]!;\n}\n","import { Granularity } from './comparators';\nimport { HourCycle } from './types';\n\nexport function getOptsByGranularity(granularity: Granularity, hourCycle: HourCycle, isTimeValue: boolean = false) {\n const opts: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n timeZoneName: 'short',\n hourCycle: hourCycle === 24 ? 'h23' : undefined,\n hour12: hourCycle === 24 ? false : undefined\n };\n if (isTimeValue) {\n delete opts.year;\n delete opts.month;\n delete opts.day;\n }\n\n if (granularity === 'day') {\n delete opts.second;\n delete opts.hour;\n delete opts.minute;\n delete opts.timeZoneName;\n }\n if (granularity === 'hour') {\n delete opts.minute;\n delete opts.second;\n }\n\n if (granularity === 'minute') delete opts.second;\n\n return opts;\n}\n\nexport function handleCalendarInitialFocus(calendar: HTMLElement) {\n const selectedDay = calendar.querySelector<HTMLElement>('[data-selected]');\n if (selectedDay) return selectedDay.focus();\n\n const today = calendar.querySelector<HTMLElement>('[data-today]');\n if (today) return today.focus();\n\n const firstDay = calendar.querySelector<HTMLElement>('[data-rdx-calendar-day]');\n if (firstDay) return firstDay.focus();\n}\n","import { InputSignal } from '@angular/core';\nimport { DateFields, DateValue } from '@internationalized/date';\nimport { Granularity, isZonedDateTime, toDate } from './comparators';\nimport { Formatter } from './formatter';\nimport {\n DATE_SEGMENT_PARTS,\n EDITABLE_SEGMENT_PARTS,\n isDateSegmentPart,\n isSegmentPart,\n TIME_SEGMENT_PARTS\n} from './parts';\nimport { getPlaceholder } from './placeholders';\nimport { DateSegmentPart, HourCycle, SegmentContentObj, SegmentPart, SegmentValueObj, TimeSegmentPart } from './types';\nimport { getOptsByGranularity } from './utils';\n\nconst calendarDateTimeGranularities = ['hour', 'minute', 'second'];\n\ntype SyncDateSegmentValuesProps = {\n value: DateValue;\n formatter: Formatter;\n};\n\ntype SyncTimeSegmentValuesProps = {\n value: DateValue;\n formatter: Formatter;\n};\n\nexport function syncTimeSegmentValues(props: SyncTimeSegmentValuesProps) {\n return Object.fromEntries(\n TIME_SEGMENT_PARTS.map((part) => {\n if (part === 'dayPeriod') return [part, props.formatter.dayPeriod(toDate(props.value))];\n return [part, props.value[part as keyof DateValue]];\n })\n ) as SegmentValueObj;\n}\n\nexport function initializeSegmentValues(granularity: Granularity): SegmentValueObj {\n const initialParts = EDITABLE_SEGMENT_PARTS.map((part) => {\n if (part === 'dayPeriod') return [part, 'AM'];\n\n return [part, null];\n }).filter(([key]) => {\n if (key === 'literal' || key === null) return false;\n if (granularity === 'minute' && key === 'second') return false;\n if (granularity === 'hour' && (key === 'second' || key === 'minute')) return false;\n if (granularity === 'day') return !calendarDateTimeGranularities.includes(key) && key !== 'dayPeriod';\n else return true;\n });\n\n return Object.fromEntries(initialParts);\n}\n\ntype SharedContentProps = {\n granularity: Granularity;\n dateRef: DateValue;\n formatter: Formatter;\n hideTimeZone: boolean;\n hourCycle: HourCycle;\n isTimeValue?: boolean;\n};\n\ntype CreateContentObjProps = SharedContentProps & {\n segmentValues: SegmentValueObj;\n locale: InputSignal<string>;\n};\n\ntype CreateContentArrProps = SharedContentProps & {\n contentObj: SegmentContentObj;\n};\n\nexport function syncSegmentValues(props: SyncDateSegmentValuesProps) {\n const { formatter } = props;\n\n const dateValues = DATE_SEGMENT_PARTS.map((part) => {\n return [part, props.value[part]];\n });\n if ('hour' in props.value) {\n const timeValues = syncTimeSegmentValues({ value: props.value, formatter });\n\n return { ...Object.fromEntries(dateValues), ...timeValues } as SegmentValueObj;\n }\n\n return Object.fromEntries(dateValues) as SegmentValueObj;\n}\n\nfunction createContentObj(props: CreateContentObjProps) {\n const { segmentValues, formatter, locale } = props;\n function getPartContent(part: DateSegmentPart | TimeSegmentPart) {\n if ('hour' in segmentValues) {\n const value = segmentValues[part];\n if (value !== null) {\n /**\n * Edge case for when the month field is filled and the day field snaps to the maximum value of the value of the placeholder month\n */\n if (part === 'day' && segmentValues.month !== null) {\n return formatter.part(\n props.dateRef.set({ [part as keyof DateFields]: value, month: segmentValues.month }),\n part,\n {\n hourCycle: props.hourCycle === 24 ? 'h23' : undefined\n }\n );\n }\n return formatter.part(props.dateRef.set({ [part]: value }), part, {\n hourCycle: props.hourCycle === 24 ? 'h23' : undefined\n });\n } else {\n return getPlaceholder(part, '', locale());\n }\n } else {\n if (isDateSegmentPart(part)) {\n const value = segmentValues[part];\n if (value !== null) {\n if (part === 'day' && segmentValues.month !== null)\n /**\n * As described above, same function\n */\n return formatter.part(props.dateRef.set({ [part]: value, month: segmentValues.month }), part);\n\n return formatter.part(props.dateRef.set({ [part]: value }), part);\n } else {\n return getPlaceholder(part, '', locale());\n }\n }\n return '';\n }\n }\n\n const content = Object.keys(segmentValues).reduce((obj, part) => {\n if (!isSegmentPart(part)) return obj;\n if ('hour' in segmentValues && part === 'dayPeriod') {\n const value = segmentValues[part];\n\n if (value !== null) obj[part] = value;\n else obj[part] = getPlaceholder(part, 'AM', locale());\n } else {\n obj[part] = getPartContent(part);\n }\n\n return obj;\n }, {} as SegmentContentObj);\n\n return content;\n}\n\nfunction createContentArr(props: CreateContentArrProps) {\n const { granularity, formatter, contentObj, hideTimeZone, hourCycle, isTimeValue } = props;\n const parts = formatter.toParts(props.dateRef, getOptsByGranularity(granularity, hourCycle, isTimeValue));\n\n const segmentContentArr = parts\n .map((part) => {\n const defaultParts = ['literal', 'timeZoneName', null];\n\n if (defaultParts.includes(part.type) || !isSegmentPart(part.type)) {\n return {\n part: part.type,\n value: part.value\n };\n }\n\n return {\n part: part.type,\n value: contentObj[part.type]\n };\n })\n .filter((segment): segment is { part: SegmentPart; value: string } => {\n if (segment.part === null || segment.value === null) return false;\n if (segment.part === 'timeZoneName' && (!isZonedDateTime(props.dateRef) || hideTimeZone)) return false;\n\n return true;\n });\n\n return segmentContentArr;\n}\n\ntype CreateContentProps = CreateContentObjProps;\n\nexport function createContent(props: CreateContentProps) {\n const contentObj = createContentObj(props);\n\n const contentArr = createContentArr({\n contentObj,\n ...props\n });\n\n return {\n obj: contentObj,\n arr: contentArr\n };\n}\n","import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, SPACE } from '../kbd-constants';\n\nexport function isSegmentNavigationKey(key: string) {\n if (key === ARROW_RIGHT || key === ARROW_LEFT) return true;\n return false;\n}\n\nexport function isNumberString(value: string) {\n if (Number.isNaN(Number.parseInt(value))) return false;\n return true;\n}\n\nexport function isAcceptableSegmentKey(key: string) {\n const acceptableSegmentKeys = [\n ENTER,\n ARROW_UP,\n ARROW_DOWN,\n ARROW_LEFT,\n ARROW_RIGHT,\n BACKSPACE,\n SPACE,\n 'a',\n 'A',\n 'p',\n 'P'\n ];\n if (acceptableSegmentKeys.includes(key)) return true;\n if (isNumberString(key)) return true;\n return false;\n}\n\nexport function getSegmentElements(parentElement: HTMLElement): Element[] {\n return Array.from(parentElement.querySelectorAll('[data-rdx-date-field-segment]')).filter(\n (item) => item.getAttribute('data-rdx-date-field-segment') !== 'literal'\n );\n}\n","/*\n * Implementation ported from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/internal/helpers/date/types.ts\n */\n\nimport type { DateValue } from '@internationalized/date';\nimport { DATE_SEGMENT_PARTS, EDITABLE_SEGMENT_PARTS, NON_EDITABLE_SEGMENT_PARTS, TIME_SEGMENT_PARTS } from './parts';\n\nexport type DateMatcher = (date: DateValue) => boolean;\n\nexport type HourCycle = 12 | 24 | undefined;\n\nexport type Month<T> = {\n /**\n * A `DateValue` used to represent the month. Since days\n * from the previous and next months may be included in the\n * calendar grid, we need a source of truth for the value\n * the grid is representing.\n */\n value: DateValue;\n\n /**\n * An array of (rows) arrays representing the weeks in the calendar.\n * Each sub-array represents a week, and contains the dates for each\n * day in that week. This structure is useful for rendering the calendar\n * grid using a table, where each row represents a week and each cell\n * represents a day.\n */\n weeks: T[][];\n\n /**\n * An array of (cells) all the dates in the current month, including dates from\n * the previous and next months that are used to fill out the calendar grid.\n * This array is useful for rendering the calendar grid in a customizable way,\n * as it provides all the dates that should be displayed in the grid in a flat\n * array.\n */\n dates: T[];\n};\n\nexport type DateSegmentPart = (typeof DATE_SEGMENT_PARTS)[number];\nexport type TimeSegmentPart = (typeof TIME_SEGMENT_PARTS)[number];\nexport type EditableSegmentPart = (typeof EDITABLE_SEGMENT_PARTS)[number];\nexport type NonEditableSegmentPart = (typeof NON_EDITABLE_SEGMENT_PARTS)[number];\nexport type SegmentPart = EditableSegmentPart | NonEditableSegmentPart;\n\nexport type AnyExceptLiteral = Exclude<SegmentPart, 'literal'>;\n\nexport type DayPeriod = 'AM' | 'PM' | null;\nexport type DateSegmentObj = {\n [K in DateSegmentPart]: number | null;\n};\n\nexport type TimeSegmentObj = {\n [K in TimeSegmentPart]: K extends 'dayPeriod' ? DayPeriod : number | null;\n};\nexport type DateAndTimeSegmentObj = DateSegmentObj & TimeSegmentObj;\nexport type SegmentValueObj = DateSegmentObj | DateAndTimeSegmentObj;\nexport type SegmentContentObj = Record<EditableSegmentPart, string>;\n","// https://github.com/unovue/reka-ui/blob/v2/packages/core/src/shared/date/useDateField.ts\n\nimport { computed, InputSignal, ModelSignal, WritableSignal } from '@angular/core';\nimport { CalendarDateTime, CycleTimeOptions, DateFields, DateValue, TimeFields } from '@internationalized/date';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, SHIFT, TAB } from '../kbd-constants';\nimport { getDaysInMonth, toDate } from './comparators';\nimport { Formatter } from './formatter';\nimport { isAcceptableSegmentKey, isNumberString, isSegmentNavigationKey } from './segment';\nimport { AnyExceptLiteral, DateAndTimeSegmentObj, HourCycle, SegmentPart, SegmentValueObj } from './types';\n\ntype MinuteSecondIncrementProps = {\n e: KeyboardEvent;\n part: keyof TimeFields;\n dateRef: DateValue;\n prevValue: number | null;\n};\n\ntype DateTimeValueIncrementation = {\n e: KeyboardEvent;\n part: keyof Omit<DateFields, 'era'> | keyof TimeFields;\n dateRef: DateValue;\n prevValue: number | null;\n hourCycle?: HourCycle;\n};\n\nexport type UseDateFieldProps = {\n hasLeftFocus: WritableSignal<boolean>;\n lastKeyZero: WritableSignal<boolean>;\n placeholder: ModelSignal<DateValue>;\n hourCycle: HourCycle;\n formatter: Formatter;\n segmentValues: WritableSignal<SegmentValueObj>;\n disabled: InputSignal<boolean>;\n readonly: InputSignal<boolean>;\n part: SegmentPart;\n modelValue: ModelSignal<DateValue | undefined>;\n focusNext: () => void;\n};\n\ntype SegmentAttrProps = {\n disabled: boolean;\n segmentValues: SegmentValueObj;\n hourCycle: HourCycle;\n placeholder: DateValue;\n formatter: Formatter;\n};\n\nfunction commonSegmentAttrs(props: SegmentAttrProps) {\n return {\n role: 'spinbutton',\n contenteditable: true,\n tabindex: props.disabled ? undefined : 0,\n spellcheck: false,\n inputmode: 'numeric',\n autocorrect: 'off',\n enterkeyhint: 'next',\n style: 'caret-color: transparent;'\n };\n}\n\nfunction daySegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n const isEmpty = segmentValues.day === null;\n const date = segmentValues.day ? placeholder.set({ day: segmentValues.day }) : placeholder;\n\n const valueNow = date.day;\n const valueMin = 1;\n const valueMax = getDaysInMonth(date);\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'day,',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction monthSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder, formatter } = props;\n const isEmpty = segmentValues.month === null;\n const date = segmentValues.month ? placeholder.set({ month: segmentValues.month }) : placeholder;\n const valueNow = date.month;\n const valueMin = 1;\n const valueMax = 12;\n const valueText = isEmpty ? 'Empty' : `${valueNow} - ${formatter.fullMonth(toDate(date))}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'month, ',\n contenteditable: true,\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction yearSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n const isEmpty = segmentValues.year === null;\n const date = segmentValues.year ? placeholder.set({ year: segmentValues.year }) : placeholder;\n const valueMin = 1;\n const valueMax = 9999;\n const valueNow = date.year;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'year, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction hourSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, hourCycle, placeholder } = props;\n\n if (!('hour' in segmentValues) || !('hour' in placeholder)) return {};\n const isEmpty = segmentValues.hour === null;\n const date = segmentValues.hour ? placeholder.set({ hour: segmentValues.hour }) : placeholder;\n const valueMin = hourCycle === 12 ? 1 : 0;\n const valueMax = hourCycle === 12 ? 12 : 23;\n const valueNow = date.hour;\n const valueText = isEmpty ? 'Empty' : `${valueNow} ${segmentValues.dayPeriod ?? ''}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'hour, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction minuteSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n if (!('minute' in segmentValues) || !('minute' in placeholder)) return {};\n const isEmpty = segmentValues.minute === null;\n const date = segmentValues.minute ? placeholder.set({ minute: segmentValues.minute }) : placeholder;\n const valueNow = date.minute;\n const valueMin = 0;\n const valueMax = 59;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'minute, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction secondSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n if (!('second' in segmentValues) || !('second' in placeholder)) return {};\n const isEmpty = segmentValues.second === null;\n const date = segmentValues.second ? placeholder.set({ second: segmentValues.second }) : placeholder;\n const valueNow = date.second;\n const valueMin = 0;\n const valueMax = 59;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'second, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction dayPeriodSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues } = props;\n if (!('dayPeriod' in segmentValues)) return {};\n\n const valueMin = 0;\n const valueMax = 12;\n const valueNow = segmentValues.hour ? (segmentValues.hour > 12 ? segmentValues.hour - 12 : segmentValues.hour) : 0;\n const valueText = segmentValues.dayPeriod ?? 'AM';\n\n return {\n ...commonSegmentAttrs(props),\n inputmode: 'text',\n 'aria-label': 'AM/PM',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText\n };\n}\n\nfunction literalSegmentAttrs(_props: SegmentAttrProps) {\n return {\n 'aria-hidden': true,\n 'data-segment': 'literal'\n };\n}\n\nfunction timeZoneSegmentAttrs(props: SegmentAttrProps) {\n return {\n role: 'textbox',\n 'aria-label': 'timezone, ',\n 'data-readonly': true,\n 'data-segment': 'timeZoneName',\n tabindex: props.disabled ? undefined : 0,\n style: 'caret-color: transparent;'\n };\n}\n\nfunction eraSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n\n const valueMin = 0;\n const valueMax = 0;\n const valueNow = 0;\n const valueText = 'era' in segmentValues ? segmentValues.era : placeholder.era;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'era',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText\n };\n}\n\nexport const segmentBuilders = {\n day: {\n attrs: daySegmentAttrs\n },\n month: {\n attrs: monthSegmentAttrs\n },\n year: {\n attrs: yearSegmentAttrs\n },\n hour: {\n attrs: hourSegmentAttrs\n },\n minute: {\n attrs: minuteSegmentAttrs\n },\n second: {\n attrs: secondSegmentAttrs\n },\n dayPeriod: {\n attrs: dayPeriodSegmentAttrs\n },\n literal: {\n attrs: literalSegmentAttrs\n },\n timeZoneName: {\n attrs: timeZoneSegmentAttrs\n },\n era: {\n attrs: eraSegmentAttrs\n }\n};\n\nexport function useDateField(props: UseDateFieldProps) {\n function handleSegmentClick(e: MouseEvent) {\n const disabled = props.disabled();\n if (disabled) e.preventDefault();\n }\n\n function deleteValue(prevValue: number | null) {\n props.hasLeftFocus.set(false);\n\n if (prevValue === null) return prevValue;\n\n const str = prevValue.toString();\n if (str.length === 1) {\n props.modelValue.set(undefined);\n return null;\n }\n\n return Number.parseInt(str.slice(0, -1));\n }\n\n function dateTimeValueIncrementation({\n e,\n part,\n dateRef,\n prevValue,\n hourCycle\n }: DateTimeValueIncrementation): number {\n const sign = e.key === ARROW_UP ? 1 : -1;\n\n if (prevValue === null) return dateRef[part as keyof Omit<DateFields, 'era'>];\n\n if (part === 'hour' && 'hour' in dateRef) {\n const cycleArgs: [keyof DateFields | keyof TimeFields, number, CycleTimeOptions?] = [\n part,\n sign,\n { hourCycle }];\n return dateRef.set({ [part as keyof DateValue]: prevValue }).cycle(...cycleArgs)[part];\n }\n\n const cycleArgs: [keyof DateFields, number] = [part as keyof DateFields, sign];\n if (part === 'day' && props.segmentValues().month !== null)\n return dateRef\n .set({ [part as keyof DateValue]: prevValue, month: props.segmentValues().month! })\n .cycle(...cycleArgs)[part as keyof Omit<DateFields, 'era'>];\n\n return dateRef.set({ [part as keyof DateValue]: prevValue }).cycle(...cycleArgs)[\n part as keyof Omit<DateFields, 'era'>\n ];\n }\n\n function updateDayOrMonth(max: number, num: number, prev: number | null) {\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: null, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart || total > max) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function updateYear(num: number, prev: number | null) {\n let moveToNext = false;\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n // probably not implement, kind of weird\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) return { value: num === 0 ? 1 : num, moveToNext };\n\n const str = prev.toString() + num.toString();\n\n if (str.length > 4) return { value: num === 0 ? 1 : num, moveToNext };\n\n if (str.length === 4) moveToNext = true;\n\n const int = Number.parseInt(str);\n return { value: int, moveToNext };\n }\n\n function updateHour(num: number, prev: number | null) {\n const max = 24;\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n // probably not implement, kind of weird\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: 0, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function updateMinuteOrSecond(num: number, prev: number | null) {\n const max = 59;\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: 0, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function minuteSecondIncrementation({ e, part, dateRef, prevValue }: MinuteSecondIncrementProps): number {\n const sign = e.key === ARROW_UP ? 1 : -1;\n const min = 0;\n const max = 59;\n\n if (prevValue === null) return sign > 0 ? min : max;\n\n const cycleArgs: [keyof TimeFields, number] = [part, sign];\n return (dateRef as CalendarDateTime).set({ [part]: prevValue }).cycle(...cycleArgs)[part];\n }\n\n const attributes = computed(\n () =>\n segmentBuilders[props.part]?.attrs({\n disabled: props.disabled(),\n placeholder: props.placeholder(),\n hourCycle: props.hourCycle,\n segmentValues: props.segmentValues(),\n formatter: props.formatter\n }) ?? {}\n );\n\n function handleMonthSegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().month;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n month: dateTimeValueIncrementation({\n e,\n part: 'month',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateDayOrMonth(12, num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, month: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, month: deleteValue(prevValue) }));\n }\n }\n\n function handleDaySegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().day;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n day: dateTimeValueIncrementation({\n e,\n part: 'day',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const segmentMonthValue = props.segmentValues().month;\n\n const daysInMonth = segmentMonthValue\n ? getDaysInMonth(props.placeholder().set({ month: segmentMonthValue }))\n : getDaysInMonth(props.placeholder());\n\n const { value, moveToNext } = updateDayOrMonth(daysInMonth, num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, day: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, day: deleteValue(prevValue) }));\n }\n }\n\n function handleYearSegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().year;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n year: dateTimeValueIncrementation({\n e,\n part: 'year',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateYear(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, year: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, year: deleteValue(prevValue) }));\n }\n }\n\n function handleHourSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('hour' in dateRef) ||\n !('hour' in values)\n )\n return;\n\n const prevValue = values.hour;\n\n const hourCycle = props.hourCycle;\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n props.segmentValues.update((prev) => ({\n ...prev,\n hour: dateTimeValueIncrementation({\n e,\n part: 'hour',\n dateRef: props.placeholder(),\n prevValue,\n hourCycle\n })\n }));\n\n if ('dayPeriod' in props.segmentValues() && values.hour != null) {\n if (values.hour < 12) props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n else if (values.hour) props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n }\n\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateHour(num, prevValue);\n\n if ('dayPeriod' in props.segmentValues() && value && value > 12)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n else if ('dayPeriod' in props.segmentValues() && value)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n\n props.segmentValues.update((prev) => ({ ...prev, hour: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, hour: deleteValue(prevValue) }));\n }\n }\n\n function handleMinuteSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('minute' in dateRef) ||\n !('minute' in values)\n )\n return;\n\n const prevValue = values.minute;\n\n props.segmentValues.update((prev) => ({\n ...prev,\n minute: minuteSecondIncrementation({\n e,\n part: 'minute',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n\n const { value, moveToNext } = updateMinuteOrSecond(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, minute: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, minute: deleteValue(prevValue) }));\n }\n }\n\n function handleSecondSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('second' in dateRef) ||\n !('second' in values)\n )\n return;\n\n const prevValue = values.second;\n\n props.segmentValues.update((prev) => ({\n ...prev,\n second: minuteSecondIncrementation({\n e,\n part: 'second',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateMinuteOrSecond(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, second: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, second: deleteValue(prevValue) }));\n }\n }\n\n function handleDayPeriodSegmentKeydown(e: KeyboardEvent) {\n if (\n ((!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) && e.key !== 'a' && e.key !== 'p') ||\n !('hour' in props.placeholder()) ||\n !('dayPeriod' in props.segmentValues())\n )\n return;\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n if (values.dayPeriod === 'AM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! + 12 }));\n return;\n }\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! - 12 }));\n return;\n }\n\n if (['a', 'A'].includes(e.key) && values.dayPeriod !== 'AM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! - 12 }));\n return;\n }\n\n if (['p', 'P'].includes(e.key) && values.dayPeriod !== 'PM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! + 12 }));\n }\n }\n\n function handleSegmentKeydown(e: KeyboardEvent) {\n const disabled = props.disabled();\n const readonly = props.readonly();\n\n if (e.key !== TAB) e.preventDefault();\n\n if (disabled || readonly) return;\n\n const segmentKeydownHandlers = {\n month: handleMonthSegmentKeydown,\n day: handleDaySegmentKeydown,\n year: handleYearSegmentKeydown,\n hour: handleHourSegmentKeydown,\n minute: handleMinuteSegmentKeydown,\n second: handleSecondSegmentKeydown,\n dayPeriod: handleDayPeriodSegmentKeydown,\n timeZoneName: () => {}\n } as const;\n\n segmentKeydownHandlers[props.part as keyof typeof segmentKeydownHandlers](e);\n\n if (\n ![ARROW_LEFT, ARROW_RIGHT].includes(e.key) &&\n e.key !== TAB &&\n e.key !== SHIFT &&\n isAcceptableSegmentKey(e.key)\n ) {\n if (Object.values(props.segmentValues()).every((item) => item !== null)) {\n const updateObject = { ...(props.segmentValues() as Record<AnyExceptLiteral, number>) };\n\n let dateRef = props.placeholder().copy();\n\n Object.keys(updateObject).forEach((part) => {\n const value = updateObject[part as AnyExceptLiteral];\n dateRef = dateRef.set({ [part]: value });\n });\n\n props.modelValue.set(dateRef.copy());\n }\n }\n }\n\n return {\n handleSegmentClick,\n handleSegmentKeydown,\n attributes\n };\n}\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\n\nexport enum RdxPositionSide {\n Top = 'top',\n Right = 'right',\n Bottom = 'bottom',\n Left = 'left'\n}\n\nexport enum RdxPositionAlign {\n Start = 'start',\n Center = 'center',\n End = 'end'\n}\n\nexport type RdxPositionSideAndAlign = { side: RdxPositionSide; align: RdxPositionAlign };\nexport type RdxPositionSideAndAlignOffsets = { sideOffset: number; alignOffset: number };\n\nexport type RdxPositions = Readonly<{\n [key in RdxPositionSide]: Readonly<{\n [key in RdxPositionAlign]: Readonly<ConnectionPositionPair>;\n }>;\n}>;\n\nexport type RdxPositioningDefaults = Readonly<{\n offsets: Readonly<{\n side: number;\n align: number;\n }>;\n arrow: Readonly<{\n width: number;\n height: number;\n }>;\n}>;\n\nexport type RdxAllPossibleConnectedPositions = ReadonlyMap<\n `${RdxPositionSide}|${RdxPositionAlign}`,\n ConnectionPositionPair\n>;\nexport type RdxArrowPositionParams = {\n top: string;\n left: string;\n transform: string;\n transformOrigin: string;\n};\n","import { RdxPositionAlign, RdxPositioningDefaults, RdxPositions, RdxPositionSide } from './types';\n\nexport const RDX_POSITIONS: RdxPositions = {\n [RdxPositionSide.Top]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Right]: {\n [RdxPositionAlign.Center]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Bottom]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n },\n [RdxPositionSide.Left]: {\n [RdxPositionAlign.Center]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n }\n} as const;\n\nexport const RDX_POSITIONING_DEFAULTS: RdxPositioningDefaults = {\n offsets: {\n side: 4,\n align: 0\n },\n arrow: {\n width: 8,\n height: 6\n }\n} as const;\n","import { ConnectedPosition, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { RDX_POSITIONS } from './constants';\nimport {\n RdxAllPossibleConnectedPositions,\n RdxArrowPositionParams,\n RdxPositionAlign,\n RdxPositionSide,\n RdxPositionSideAndAlign,\n RdxPositionSideAndAlignOffsets\n} from './types';\n\nexport function getContentPosition(\n sideAndAlignWithOffsets: RdxPositionSideAndAlign & RdxPositionSideAndAlignOffsets\n): ConnectedPosition {\n const { side, align, sideOffset, alignOffset } = sideAndAlignWithOffsets;\n const position: ConnectedPosition = {\n ...(RDX_POSITIONS[side]?.[align] ?? RDX_POSITIONS[RdxPositionSide.Top][RdxPositionAlign.Center])\n };\n if (sideOffset || alignOffset) {\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(side)) {\n if (sideOffset) {\n position.offsetY = side === RdxPositionSide.Top ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetX = alignOffset;\n }\n } else {\n if (sideOffset) {\n position.offsetX = side === RdxPositionSide.Left ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetY = alignOffset;\n }\n }\n }\n return position;\n}\n\nlet allPossibleConnectedPositions: RdxAllPossibleConnectedPositions;\nexport function getAllPossibleConnectedPositions() {\n if (!allPossibleConnectedPositions) {\n allPossibleConnectedPositions = new Map();\n }\n if (allPossibleConnectedPositions.size < 1) {\n for (const [side, aligns] of Object.entries(RDX_POSITIONS)) {\n for (const [align, position] of Object.entries(aligns)) {\n (allPossibleConnectedPositions as Map<any, any>).set(`${side}|${align}`, position);\n }\n }\n }\n return allPossibleConnectedPositions;\n}\n\nexport function getSideAndAlignFromAllPossibleConnectedPositions(\n position: ConnectionPositionPair\n): RdxPositionSideAndAlign {\n const allPossibleConnectedPositions = getAllPossibleConnectedPositions();\n let sideAndAlign: RdxPositionSideAndAlign | undefined;\n allPossibleConnectedPositions.forEach((value, key) => {\n if (\n position.originX === value.originX &&\n position.originY === value.originY &&\n position.overlayX === value.overlayX &&\n position.overlayY === value.overlayY\n ) {\n const sideAndAlignArray = key.split('|');\n sideAndAlign = {\n side: sideAndAlignArray[0] as RdxPositionSide,\n align: sideAndAlignArray[1] as RdxPositionAlign\n };\n }\n });\n if (!sideAndAlign) {\n throw Error(\n `[Rdx positioning] cannot infer both side and align from the given position (${JSON.stringify(position)})`\n );\n }\n return sideAndAlign;\n}\n\nexport function getArrowPositionParams(\n sideAndAlign: RdxPositionSideAndAlign,\n arrowWidthAndHeight: { width: number; height: number },\n triggerWidthAndHeight: { width: number; height: number }\n): RdxArrowPositionParams {\n const posParams: RdxArrowPositionParams = {\n top: '',\n left: '',\n transform: '',\n transformOrigin: 'center center 0px'\n };\n\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Top) {\n posParams.top = '100%';\n } else {\n posParams.top = `-${arrowWidthAndHeight.height}px`;\n posParams.transform = `rotate(180deg)`;\n }\n\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.left = `${(triggerWidthAndHeight.width - arrowWidthAndHeight.width) / 2}px`;\n } else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.left = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n } else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.left = `calc(100% - ${(triggerWidthAndHeight.width + arrowWidthAndHeight.width) / 2}px)`;\n }\n } else if ([RdxPositionSide.Left, RdxPositionSide.Right].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Left) {\n posParams.left = `calc(100% - ${arrowWidthAndHeight.width}px)`;\n posParams.transform = `rotate(-90deg)`;\n posParams.transformOrigin = 'top right 0px';\n } else {\n posParams.left = `0`;\n posParams.transform = `rotate(90deg)`;\n posParams.transformOrigin = 'top left 0px';\n }\n\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.top = `${(triggerWidthAndHeight.height - arrowWidthAndHeight.width) / 2}px`;\n } else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.top = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n } else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.top = `calc(100% - ${(triggerWidthAndHeight.height + arrowWidthAndHeight.width) / 2}px)`;\n }\n }\n\n return posParams;\n}\n","// https://ngxtension.netlify.app/utilities/signals/explicit-effect/\n\nimport { CreateEffectOptions, EffectCleanupRegisterFn, EffectRef, effect, untracked } from '@angular/core';\n\n/**\n * We want to have the Tuple in order to use the types in the function signature\n */\ntype ExplicitEffectValues<T> = {\n [K in keyof T]: () => T[K];\n};\n\n/**\n * Extend the regular set of effect options\n */\ndeclare interface CreateExplicitEffectOptions extends CreateEffectOptions {\n /**\n * Option that allows the computation not to execute immediately, but only run on first change.\n */\n defer?: boolean;\n}\n\n/**\n * This explicit effect function will take the dependencies and the function to run when the dependencies change.\n *\n * @example\n * ```typescript\n * import { watch } from 'radix-ng/primitives/core';\n *\n * const count = signal(0);\n * const state = signal('idle');\n *\n * watch([count, state], ([count, state], cleanup) => {\n * console.log('count updated', count, state);\n *\n * cleanup(() => {\n * console.log('cleanup');\n * });\n * });\n * ```\n *\n * @param deps - The dependencies that the effect will run on\n * @param fn - The function to run when the dependencies change\n * @param options - The options for the effect with the addition of defer (it allows the computation to run on first change, not immediately)\n */\nexport function watch<Input extends readonly unknown[], Params = Input>(\n deps: readonly [...ExplicitEffectValues<Input>],\n fn: (deps: Params, onCleanup: EffectCleanupRegisterFn) => void,\n options?: CreateExplicitEffectOptions | undefined\n): EffectRef {\n let defer = options && options.defer;\n return effect((onCleanup) => {\n const depValues = deps.map((s) => s());\n untracked(() => {\n if (!defer) {\n fn(depValues as any, onCleanup);\n }\n defer = false;\n });\n }, options);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAGA;;;;;;;;;AASG;AACG,SAAU,oBAAoB,CAAI,IAAa,EAAA;IACjD,OAAO;AACH,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,WAAW,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC;AACnC,QAAA,KAAK,EAAE;KACV;AACL;;ACjBA;;AAEG;MAMU,qBAAqB,CAAA;AAJlC,IAAA,WAAA,GAAA;AAKI,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAEhB,IAAW,CAAA,WAAA,GAAG,KAAK;AA6B9B;AAhCG,IAAA,WAAW;AACX,IAAA,OAAO;AAIP;;AAEG;IACH,IACI,SAAS,CAAC,KAAc,EAAA;QACxB,IAAI,KAAK,EAAE;;AAEP,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;;;;;YAK3B,iBAAiB,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3D,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE;;aAE9C,CAAC,CACL;;;;IAKT,IACI,UAAU,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;8GA/BnB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,EASa,gBAAgB,CAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAoBvC,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FA7B3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAWO,SAAS,EAAA,CAAA;sBADZ,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAqBzD,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;AAM1C,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC;AAEjD,SAAS,6BAA6B,GAAA;IAClC,IAAI,QAAQ,GAAG,CAAC;AAEhB,IAAA,OAAO,UAAU,QAA8B,EAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AACrC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAE1D,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,MAAK;AACvB,YAAA,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;SAClC,EAAE,UAAU,CAAQ;AAErB,QAAA,QAAQ,GAAG,QAAQ,GAAG,UAAU;AAEhC,QAAA,OAAO,EAAE;AACb,KAAC;AACL;AAEA;AACA,SAAS,wBAAwB,GAAA;AAC7B,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC/B,QAAA,OAAO,MAAM,CAAC;;AAElB,IAAA,IAAI,MAAM,CAAC,qBAAqB,EAAE;;QAE9B,OAAO,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAG,EAAA,GAAG,uBAAuB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAE5F,IAAA,OAAO,MAAM,GAAI,MAAc,CAAC,CAAA,EAAG,MAAM,CAAA,qBAAA,CAAuB,CAAC,GAAG,6BAA6B,EAAE;AACvG;AAEA;AACA,MAAM,iBAAiB,GAAG,wBAAwB,EAAE;;SC7EpC,cAAc,GAAA;AAC1B,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC;AAC3B;;MCAa,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;;AAKqB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AAMpE;;IAHG,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;;8GANrB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACJD;;;;;;AAMG;AAIH;;;;AAIG;AACH,MAAM,QAAQ,GAA2B,EAAE;AAE3C;MAEa,YAAY,CAAA;AADzB,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAmB3C;AAjBG;;;AAGG;AACH,IAAA,KAAK,CAAC,MAAc,EAAA;;;AAGhB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACtB,YAAA,MAAM,IAAI,IAAI,CAAC,MAAM;;AAGzB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AACzD,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;;QAGxB,OAAO,CAAA,EAAG,MAAM,CAAG,EAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE;;8GAlBlC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACT5B,SAAU,eAAe,CAAC,MAAiD,EAAA;AAC7E,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEnE,IAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,SAAS;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;IAE3E,IACI,SAAS,YAAY,oBAAoB;AACzC,QAAA,SAAS,YAAY,eAAe;QACpC,SAAS,YAAY,OAAO,EAC9B;AACE,QAAA,OAAO,SAAS;;AAGpB,IAAA,IAAI,MAAM,EAAE,QAAQ,EAAE;AAClB,QAAA,OAAO,SAAS;;AAGpB,IAAA,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC;AACvG;;SCxBgB,cAAc,GAAA;AAC1B,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;AACrC;;ACHM,SAAU,YAAY,CAAC,EAAkC,EAAA;IAC3D,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AAC1B,QAAA,OAAO,IAAI;;IAEf,OAAO,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpD;;ACPM,SAAU,SAAS,CAAC,KAAU,EAAA;AAChC,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAChD;;ACFO,MAAM,QAAQ,GAAG,CAAC,CAAM,KAAkB,OAAO,CAAC,KAAK;;ACAvD,MAAM,GAAG,GAAG;AACZ,MAAM,UAAU,GAAG;AACnB,MAAM,UAAU,GAAG;AACnB,MAAM,WAAW,GAAG;AACpB,MAAM,QAAQ,GAAG;AACjB,MAAM,SAAS,GAAG;AAClB,MAAM,SAAS,GAAG;AAClB,MAAM,OAAO,GAAG;AAChB,MAAM,MAAM,GAAG;AACf,MAAM,GAAG,GAAG;AACZ,MAAM,KAAK,GAAG;AACd,MAAM,MAAM,GAAG;AACf,MAAM,EAAE,GAAG;AACX,MAAM,GAAG,GAAG;AACZ,MAAM,GAAG,GAAG;AACZ,MAAM,GAAG,GAAG;AACZ,MAAM,EAAE,GAAG;AACX,MAAM,EAAE,GAAG;AACX,MAAM,EAAE,GAAG;AACX,MAAM,EAAE,GAAG;AACX,MAAM,EAAE,GAAG;AACX,MAAM,EAAE,GAAG;AACX,MAAM,EAAE,GAAG;AACX,MAAM,EAAE,GAAG;AACX,MAAM,IAAI,GAAG;AACb,MAAM,IAAI,GAAG;AACb,MAAM,SAAS,GAAG;AAClB,MAAM,OAAO,GAAG;AAChB,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,GAAG,GAAG;AACZ,MAAM,IAAI,GAAG;AACb,MAAM,QAAQ,GAAG;AACjB,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,UAAU,GAAG;;ACtC1B;;;;;;;;;;;;;;;;;;;AAmBG;AACa,SAAA,YAAY,CAAI,KAAwB,EAAE,IAAmB,EAAA;IACzE,OAAO;AACH,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,WAAW,EAAE,UAAU,CAAC,MAAM,IAAI;KACrC;AACL;;MCxBa,MAAM,GAAG,IAAI,cAAc,CAA6B,0CAA0C,EAAE;IAC7G,OAAO,EAAE,MAAK;AACV,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE;QACxC,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;;AAE9C,QAAA,OAAO,WAAW;;AAEzB,CAAA;SAEe,YAAY,GAAA;AACxB,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC;AACzB;;ACfA;;;;;;;;;;AAUG;AACa,SAAA,KAAK,CAAI,GAAQ,EAAE,IAAY,EAAA;IAC3C,MAAM,MAAM,GAAG,EAAE;AACjB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI;AAAE,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAE9E,IAAA,OAAO,MAAM;AACjB;;ACHA;;;;AAIG;SACa,MAAM,CAAC,SAAoB,EAAE,EAAA,GAAa,gBAAgB,EAAE,EAAA;IACxE,IAAI,eAAe,CAAC,SAAS,CAAC;AAAE,QAAA,OAAO,SAAS,CAAC,MAAM,EAAE;;AACpD,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC;AAEM,SAAU,kBAAkB,CAAC,SAAoB,EAAA;IACnD,OAAO,SAAS,YAAY,gBAAgB;AAChD;AAEM,SAAU,eAAe,CAAC,SAAoB,EAAA;IAChD,OAAO,SAAS,YAAY,aAAa;AAC7C;AAEM,SAAU,OAAO,CAAC,SAAoB,EAAA;IACxC,OAAO,kBAAkB,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC;AACtE;AAEA;;AAEG;AACG,SAAU,cAAc,CAAC,IAAsB,EAAA;AACjD,IAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AACjC;;;;AAIG;AACH,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;;SACtC;AACH,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG;;AAEzC;AAEA;;;;;;AAMG;AACa,SAAA,QAAQ,CAAC,aAAwB,EAAE,aAAwB,EAAA;IACvE,OAAO,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AACnD;AAEA;;;;;;AAMG;AACa,SAAA,OAAO,CAAC,aAAwB,EAAE,aAAwB,EAAA;IACtE,OAAO,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AACnD;AAEA;;;;;;;AAOG;AACa,SAAA,cAAc,CAAC,aAAwB,EAAE,aAAwB,EAAA;IAC7E,OAAO,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD;AAEA;;;;;;;AAOG;AACa,SAAA,aAAa,CAAC,aAAwB,EAAE,aAAwB,EAAA;IAC5E,OAAO,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD;AAEA;;;;;;;;AAQG;SACa,kBAAkB,CAAC,IAAe,EAAE,KAAgB,EAAE,GAAc,EAAA;AAChF,IAAA,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC;AAClE;AAEA;;;;;;;;AAQG;SACa,SAAS,CAAC,IAAe,EAAE,KAAgB,EAAE,GAAc,EAAA;AACvE,IAAA,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;AACtD;SAEgB,qBAAqB,CACjC,IAAO,EACP,cAAsB,EACtB,MAAc,EAAA;IAEd,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtC,IAAI,cAAc,GAAG,GAAG;AAAE,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,cAAc,EAAE,CAAM;IAEvF,IAAI,cAAc,KAAK,GAAG;AAAE,QAAA,OAAO,IAAS;AAE5C,IAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE,CAAM;AAC7D;SAEgB,oBAAoB,CAChC,IAAO,EACP,cAAsB,EACtB,MAAc,EAAA;IAEd,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AACtC,IAAA,MAAM,aAAa,GAAG,cAAc,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC;IAEnE,IAAI,GAAG,KAAK,aAAa;AAAE,QAAA,OAAO,IAAS;IAE3C,IAAI,GAAG,GAAG,aAAa;AAAE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,aAAa,EAAE,CAAM;AAEhF,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,GAAG,GAAG,EAAE,CAAM;AACvD;AAEM,SAAU,sBAAsB,CAClC,KAAgB,EAChB,GAAc,EACd,aAAsC,EACtC,UAAmC,EAAA;AAEnC,IAAA,IAAI,aAAa,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS;AAAE,QAAA,OAAO,IAAI;AAExE,IAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrC,IAAI,UAAU,GAAG,QAAQ,CAAC,IAAI,aAAa,GAAG,QAAQ,CAAC;AAAE,QAAA,OAAO,KAAK;IAErE,MAAM,IAAI,GAAG,GAAG;IAChB,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC/B,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACpC,IAAI,UAAU,GAAG,QAAQ,CAAC,IAAI,aAAa,GAAG,QAAQ,CAAC;AAAE,YAAA,OAAO,KAAK;;AAEzE,IAAA,OAAO,IAAI;AACf;AAYA;;;;;;;;;AASG;AACG,SAAU,cAAc,CAAC,KAA0B,EAAA;AACrD,IAAA,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK;IAEtF,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,EAAE;IAE5G,IAAI,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AAAE,QAAA,OAAO,YAAY,CAAC,IAAI,EAAE;AAE5E,IAAA,IAAI,kBAAkB;AAAE,QAAA,OAAO,kBAAkB,CAAC,IAAI,EAAE;AAExD,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AACvB,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AACjC,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;IAC1B,MAAM,6BAA6B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAElE,IAAA,MAAM,gBAAgB,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;IAClD,MAAM,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;AAE5E,IAAA,IAAI,6BAA6B,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;QAC5D,OAAO,UAAU,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;AAEhF,IAAA,OAAO,UAAU,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;AACnE;;AC3LA;;;AAGG;AACa,SAAA,cAAc,CAAC,KAAgB,EAAE,GAAc,EAAA;IAC3D,MAAM,IAAI,GAAgB,EAAE;AAC5B,IAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,GAAG;IAChB,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnB,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAExC,IAAA,OAAO,IAAI;AACf;AAEM,SAAU,WAAW,CAAC,KAAuB,EAAA;IAC/C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK;AAC3D,IAAA,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC;AAE3C,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE7F,IAAA,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC;AAC7C,IAAA,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;IAE1C,MAAM,UAAU,GAAG,qBAAqB,CAAC,eAAe,EAAE,YAAY,EAAE,MAAM,CAAC;IAC/E,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC;AAE/E,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC;AACvF,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAEnF,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;AAEjF,IAAA,IAAI,UAAU,IAAI,SAAS,GAAG,EAAE,EAAE;AAC9B,QAAA,MAAM,SAAS,GAAG,EAAE,GAAG,SAAS;QAEhC,IAAI,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;AAE/C,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;AAC9D,YAAA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC;YAClB,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxC,SAAC,CAAC;AACF,QAAA,aAAa,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;;IAGzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC;IAE/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAE/B,OAAO;AACH,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE;KACV;AACL;AAOM,SAAU,YAAY,CAAC,KAAoB,EAAA;IAC7C,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK;IAExD,MAAM,MAAM,GAAuB,EAAE;AAErC,IAAA,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,CAAC,EAAE;AACzC,QAAA,MAAM,CAAC,IAAI,CACP,WAAW,CAAC;AACR,YAAA,GAAG,UAAU;YACb;AACH,SAAA,CAAC,CACL;AACD,QAAA,OAAO,MAAM;;AAGjB,IAAA,MAAM,CAAC,IAAI,CACP,WAAW,CAAC;AACR,QAAA,GAAG,UAAU;QACb;AACH,KAAA,CAAC,CACL;;AAGD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;AACrC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC5C,QAAA,MAAM,CAAC,IAAI,CACP,WAAW,CAAC;AACR,YAAA,GAAG,UAAU;AACb,YAAA,OAAO,EAAE;AACZ,SAAA,CAAC,CACL;;AAGL,IAAA,OAAO,MAAM;AACjB;;ACxHA,MAAM,kBAAkB,GAA+B;AACnD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,MAAM,EAAE;CACX;AAqBD;;;;;;;AAOG;AACG,SAAU,eAAe,CAAC,aAAqB,EAAA;IACjD,IAAI,MAAM,GAAG,aAAa;IAE1B,SAAS,SAAS,CAAC,SAAiB,EAAA;QAChC,MAAM,GAAG,SAAS;;AAGtB,IAAA,SAAS,SAAS,GAAA;AACd,QAAA,OAAO,MAAM;;AAGjB,IAAA,SAAS,MAAM,CAAC,IAAU,EAAE,OAAmC,EAAA;AAC3D,QAAA,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;;AAG1D,IAAA,SAAS,YAAY,CAAC,IAAe,EAAE,WAAW,GAAG,IAAI,EAAA;AACrD,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE;AAC9B,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACxB,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC;;aACC;AACH,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACxB,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC;;;IAIV,SAAS,gBAAgB,CAAC,IAAU,EAAA;QAChC,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;;IAGrF,SAAS,SAAS,CAAC,IAAU,EAAA;AACzB,QAAA,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;;IAGpE,SAAS,QAAQ,CAAC,IAAU,EAAA;AACxB,QAAA,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;;AAGtE,IAAA,SAAS,OAAO,CAAC,IAAe,EAAE,OAAoC,EAAA;AAClE,QAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE;AAC7B,gBAAA,GAAG,OAAO;gBACV,QAAQ,EAAE,IAAI,CAAC;aAClB,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;aAC3B;AACH,YAAA,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;;AAI7E,IAAA,SAAS,SAAS,CAAC,IAAU,EAAE,SAAgD,QAAQ,EAAA;AACnF,QAAA,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;;AAGtE,IAAA,SAAS,SAAS,CAAC,IAAU,EAAE,YAAmC,SAAS,EAAA;AACvE,QAAA,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,SAAS,KAAK,EAAE,GAAG,KAAK,GAAG;AACzC,SAAA,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK;AAC9D,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,IAAI;;AAEf,QAAA,OAAO,IAAI;;AAGf,IAAA,SAAS,IAAI,CAAC,OAAkB,EAAE,IAAkC,EAAE,UAAsC,EAAE,EAAA;QAC1G,MAAM,IAAI,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,EAAE;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AACpC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAC/C,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGjC,IAAA,SAAS,SAAS,GAAA;AACd,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;IAG9G,OAAO;QACH,SAAS;QACT,SAAS;QACT,SAAS;QACT,QAAQ;QACR,gBAAgB;QAChB,OAAO;QACP,MAAM;QACN,IAAI;QACJ,SAAS;QACT,YAAY;QACZ,SAAS;QACT;KACH;AACL;;ACvIA;;AAEG;AAII,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU;AAC5D,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAU;AAC7E,MAAM,0BAA0B,GAAG,CAAC,SAAS,EAAE,cAAc,CAAU;AACvE,MAAM,sBAAsB,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,kBAAkB,CAAU;AACtF,MAAM,2BAA2B,GAAG,CAAC,GAAG,kBAAkB,CAAU;AACpE,MAAM,iBAAiB,GAAG;AAC7B,IAAA,GAAG,sBAAsB;AACzB,IAAA,GAAG;CACG;AACH,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,SAAS,CAAC;AAExF,SAAU,iBAAiB,CAAC,IAAa,EAAA;AAC3C,IAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAuB,CAAC;AAC/D;AAEM,SAAU,iBAAiB,CAAC,IAAa,EAAA;AAC3C,IAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAuB,CAAC;AAC/D;AAEM,SAAU,aAAa,CAAC,IAAY,EAAA;AACtC,IAAA,OAAO,sBAAsB,CAAC,QAAQ,CAAC,IAA2B,CAAC;AACvE;AAEM,SAAU,gBAAgB,CAAC,IAAa,EAAA;AAC1C,IAAA,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAA2B,CAAC;AAClE;;AC/BA;;AAEG;AAEH;AACA,MAAM,gBAAgB,GAAG;IACrB,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IAC7D,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IAC9D,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IAC3D,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IAC5D,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IAC5D,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IAC7D,IAAI,EAAC,OAAO,EAAC,OAAO;CACd;AAEV,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAU;AAM3D,MAAM,YAAY,GAAmB;AACjC,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;AACjD,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC9C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;AAC/C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AAC/C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AAC9C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACzC,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;AAChD,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACxC,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;AACjD,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IA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"}
|
1
|
+
{"version":3,"file":"radix-ng-primitives-core.mjs","sources":["../../../packages/primitives/core/src/accessor/provide-value-accessor.ts","../../../packages/primitives/core/src/auto-focus.directive.ts","../../../packages/primitives/core/src/clamp.ts","../../../packages/primitives/core/src/document.ts","../../../packages/primitives/core/src/focus-initial.directive.ts","../../../packages/primitives/core/src/getActiveElement.ts","../../../packages/primitives/core/src/id-generator.ts","../../../packages/primitives/core/src/inject-ng-control.ts","../../../packages/primitives/core/src/is-client.ts","../../../packages/primitives/core/src/is-inside-form.ts","../../../packages/primitives/core/src/is-nullish.ts","../../../packages/primitives/core/src/is-number.ts","../../../packages/primitives/core/src/kbd-constants.ts","../../../packages/primitives/core/src/provide-token.ts","../../../packages/primitives/core/src/window.ts","../../../packages/primitives/core/src/chunk.ts","../../../packages/primitives/core/src/date-time/comparators.ts","../../../packages/primitives/core/src/date-time/calendar.ts","../../../packages/primitives/core/src/date-time/formatter.ts","../../../packages/primitives/core/src/date-time/parts.ts","../../../packages/primitives/core/src/date-time/placeholders.ts","../../../packages/primitives/core/src/date-time/utils.ts","../../../packages/primitives/core/src/date-time/parser.ts","../../../packages/primitives/core/src/date-time/segment.ts","../../../packages/primitives/core/src/date-time/types.ts","../../../packages/primitives/core/src/date-time/useDateField.ts","../../../packages/primitives/core/src/positioning/types.ts","../../../packages/primitives/core/src/positioning/constants.ts","../../../packages/primitives/core/src/positioning/utils.ts","../../../packages/primitives/core/src/watch.ts","../../../packages/primitives/core/radix-ng-primitives-core.ts"],"sourcesContent":["import { forwardRef, Provider, Type } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Include in the providers section of a component which utilizes ControlValueAccessor to redundant code.\n *\n * ```ts\n * @Directive({\n * providers: [provideValueAccessor(ExampleDirective)]\n *}\n * export class ExampleDirective{}\n * ```\n */\nexport function provideValueAccessor<T>(type: Type<T>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => type),\n multi: true\n };\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\n\n/*\n * <div [rdxAutoFocus]=\"true\"></div>\n */\n\n@Directive({\n selector: '[rdxAutoFocus]',\n standalone: true\n})\nexport class RdxAutoFocusDirective {\n #elementRef = inject(ElementRef);\n #ngZone = inject(NgZone);\n\n private _autoSelect = false;\n\n /**\n * @default false\n */\n @Input({ alias: 'rdxAutoFocus', transform: booleanAttribute })\n set autoFocus(value: boolean) {\n if (value) {\n // Note: Running this outside Angular's zone because `element.focus()` does not trigger change detection.\n this.#ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout which might lead to frame drops on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask executed within the current rendering frame.\n // Animation tasks are executed in the next rendering frame.\n reqAnimationFrame(() => {\n this.#elementRef.nativeElement.focus();\n if (this._autoSelect && this.#elementRef.nativeElement.select) {\n this.#elementRef.nativeElement.select();\n }\n })\n );\n }\n }\n\n // Setter for autoSelect attribute to enable text selection when autoFocus is true.\n @Input({ transform: booleanAttribute })\n set autoSelect(value: boolean) {\n this._autoSelect = value;\n }\n}\n\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\n let lastTime = 0;\n\n return function (callback: FrameRequestCallback): number {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall) as any;\n\n lastTime = currTime + timeToCall;\n\n return id;\n };\n}\n\n// Function to get the appropriate requestAnimationFrame method with fallback to polyfill.\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\n\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n\n// Get the requestAnimationFrame function or its polyfill.\nconst reqAnimationFrame = getRequestAnimationFrame();\n","/**\n * The `clamp` function restricts a number within a specified range by returning the value itself if it\n * falls within the range, or the closest boundary value if it exceeds the range.\n * @param {number} value - The `value` parameter represents the number that you want to clamp within\n * the specified range defined by `min` and `max` values.\n * @param {number} min - If the `value` parameter is less than the `min` value, the\n * function will return the `min` value.\n * @param {number} max - If the `value` parameter is greater than the `max` value,\n * the function will return `max`.\n * @returns The `clamp` function returns the value of `value` constrained within the range defined by\n * `min` and `max`.\n */\nexport function clamp(\n value: number,\n min: number = Number.NEGATIVE_INFINITY,\n max: number = Number.POSITIVE_INFINITY\n): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/**\n * The function `roundToStepPrecision` rounds a number to a specified precision step.\n * @param {number} value - The `value` parameter is the number that you want to round to a specific\n * precision based on the `step` parameter.\n * @param {number} step - The `step` parameter in the `roundToStepPrecision` function represents the\n * interval at which you want to round the `value`. For example, if `step` is 0.5, the `value` will be\n * rounded to the nearest half.\n * @returns the `roundedValue` after rounding it to the precision specified by the `step`.\n */\nexport function roundToStepPrecision(value: number, step: number) {\n let roundedValue = value;\n const stepString = step.toString();\n const pointIndex = stepString.indexOf('.');\n const precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n const pow = 10 ** precision;\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\n\n/**\n * The function `snapValueToStep` snaps a given value to the nearest step within a specified range.\n * @param {number} value - The `value` parameter represents the number that you want to snap to the\n * nearest step value.\n * @param {number | undefined} min - The `min` parameter represents the minimum value that the `value`\n * should be snapped to. If `value` is less than `min`, it will be snapped to `min`. If `min` is not\n * provided (undefined), then the snapping will not consider a minimum value.\n * @param {number | undefined} max - The `max` parameter represents the maximum value that the `value`\n * should be snapped to. It ensures that the snapped value does not exceed this maximum value.\n * @param {number} step - The `step` parameter in the `snapValueToStep` function represents the\n * interval at which the `value` should be snapped to. It determines the granularity of the snapping\n * operation. For example, if `step` is 5, the `value` will be snapped to the nearest multiple of\n * @returns a number that has been snapped to the nearest step value within the specified range of minimum and maximum values.\n */\nexport function snapValueToStep(value: number, min: number | undefined, max: number | undefined, step: number): number {\n min = Number(min);\n max = Number(max);\n const remainder = (value - (Number.isNaN(min) ? 0 : min)) % step;\n let snappedValue = roundToStepPrecision(\n Math.abs(remainder) * 2 >= step\n ? value + Math.sign(remainder) * (step - Math.abs(remainder))\n : value - remainder,\n step\n );\n\n if (!Number.isNaN(min)) {\n if (snappedValue < min) snappedValue = min;\n else if (!Number.isNaN(max) && snappedValue > max)\n snappedValue = min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;\n } else if (!Number.isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n snappedValue = roundToStepPrecision(snappedValue, step);\n\n return snappedValue;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[rdxFocusInitial]'\n})\nexport class RdxFocusInitialDirective {\n /** @ignore */\n private readonly nativeElement = inject(ElementRef).nativeElement;\n\n /** @ignore */\n focus(): void {\n this.nativeElement.focus();\n }\n}\n","export function getActiveElement(): Element | null {\n let activeElement = document.activeElement;\n if (activeElement == null) {\n return null;\n }\n\n while (\n activeElement != null &&\n activeElement.shadowRoot != null &&\n activeElement.shadowRoot.activeElement != null\n ) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { APP_ID, inject, Injectable } from '@angular/core';\n\n/**\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\n * this, but there are some internal tests that rely on the IDs.\n */\nconst counters: Record<string, number> = {};\n\n/** Service that generates unique IDs for DOM nodes. */\n@Injectable({ providedIn: 'root' })\nexport class _IdGenerator {\n private readonly _appId = inject(APP_ID);\n\n /**\n * Generates a unique ID with a specific prefix.\n * @param prefix Prefix to add to the ID.\n */\n getId(prefix: string): string {\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\n // Angular app on them, we can reduce the amount of breakages by not adding it.\n if (this._appId !== 'ng') {\n prefix += this._appId;\n }\n\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\n counters[prefix] = 0;\n }\n\n return `${prefix}${counters[prefix]++}`;\n }\n}\n","import { inject } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms';\n\nexport function injectNgControl(params: {\n optional: true;\n}): FormControlDirective | FormControlName | NgModel | undefined;\nexport function injectNgControl(params: { optional: false }): FormControlDirective | FormControlName | NgModel;\nexport function injectNgControl(): FormControlDirective | FormControlName | NgModel;\n\nexport function injectNgControl(params?: { optional: true } | { optional: false }) {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!params?.optional && !ngControl) throw new Error('NgControl not found');\n\n if (\n ngControl instanceof FormControlDirective ||\n ngControl instanceof FormControlName ||\n ngControl instanceof NgModel\n ) {\n return ngControl;\n }\n\n if (params?.optional) {\n return undefined;\n }\n\n throw new Error('NgControl is not an instance of FormControlDirective, FormControlName or NgModel');\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { inject } from '@angular/core';\n\nexport function injectIsClient() {\n return inject(Platform).isBrowser;\n}\n","import { ElementRef } from '@angular/core';\n\nexport function isInsideForm(el: ElementRef<HTMLElement> | null): boolean {\n if (!el || !el.nativeElement) {\n return true;\n }\n return Boolean(el.nativeElement.closest('form'));\n}\n","export function isNullish(value: any): value is null | undefined {\n return value === null || value === undefined;\n}\n","export const isNumber = (v: any): v is number => typeof v === 'number';\n","export const ALT = 'Alt';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\nexport const ARROW_UP = 'ArrowUp';\nexport const BACKSPACE = 'Backspace';\nexport const CAPS_LOCK = 'CapsLock';\nexport const CONTROL = 'Control';\nexport const DELETE = 'Delete';\nexport const END = 'End';\nexport const ENTER = 'Enter';\nexport const ESCAPE = 'Escape';\nexport const F1 = 'F1';\nexport const F10 = 'F10';\nexport const F11 = 'F11';\nexport const F12 = 'F12';\nexport const F2 = 'F2';\nexport const F3 = 'F3';\nexport const F4 = 'F4';\nexport const F5 = 'F5';\nexport const F6 = 'F6';\nexport const F7 = 'F7';\nexport const F8 = 'F8';\nexport const F9 = 'F9';\nexport const HOME = 'Home';\nexport const META = 'Meta';\nexport const PAGE_DOWN = 'PageDown';\nexport const PAGE_UP = 'PageUp';\nexport const SHIFT = 'Shift';\nexport const SPACE = ' ';\nexport const TAB = 'Tab';\nexport const CTRL = 'Control';\nexport const ASTERISK = '*';\nexport const a = 'a';\nexport const P = 'P';\nexport const A = 'A';\nexport const p = 'p';\nexport const n = 'n';\nexport const j = 'j';\nexport const k = 'k';\nexport const SPACE_CODE = 'Space';\n","import { forwardRef, InjectionToken, Provider, Type } from '@angular/core';\n\n/**\n * Creates an Angular provider that binds the given token to the existing instance\n * of the specified class. This is especially useful when you want multiple\n * tokens (or interfaces) to resolve to the same directive/component instance.\n *\n * @template T - The type associated with the injection token.\n * @param token - The InjectionToken or abstract type you want to provide.\n * @param type - The class type whose existing instance will be used for this token.\n * @returns A Provider configuration object for Angular's DI system.\n *\n * @example\n *\n * @Directive({\n * providers: [\n * provideToken(RdxToggleGroupToken, RdxToggleGroupDirective),\n * provideValueAccessor(RdxToggleGroupDirective)\n * ]\n * })\n * export class RdxToggleGroupDirective {}\n */\nexport function provideToken<T>(token: InjectionToken<T>, type: Type<unknown>): Provider {\n return {\n provide: token,\n useExisting: forwardRef(() => type)\n };\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport { injectDocument } from './document';\n\nexport const WINDOW = new InjectionToken<Window & typeof globalThis>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = injectDocument();\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\n\nexport function injectWindow(): Window & typeof globalThis {\n return inject(WINDOW);\n}\n","/**\n * Splits an array into chunks of a given size.\n * @param arr The array to split.\n * @param size The size of each chunk.\n * @returns An array of arrays, where each sub-array has `size` elements from the original array.\n * @example ```ts\n * const arr = [1, 2, 3, 4, 5, 6, 7, 8];\n * const chunks = chunk(arr, 3);\n * // chunks = [[1, 2, 3], [4, 5, 6], [7, 8]]\n * ```\n */\nexport function chunk<T>(arr: T[], size: number): T[][] {\n const result = [];\n for (let i = 0; i < arr.length; i += size) result.push(arr.slice(i, i + size));\n\n return result;\n}\n","import {\n CalendarDate,\n CalendarDateTime,\n createCalendar,\n DateFormatter,\n type DateValue,\n getDayOfWeek,\n getLocalTimeZone,\n toCalendar,\n ZonedDateTime\n} from '@internationalized/date';\nimport type { DateMatcher } from './types';\n\n/**\n * Given a `DateValue` object, convert it to a native `Date` object.\n * If a timezone is provided, the date will be converted to that timezone.\n * If no timezone is provided, the date will be converted to the local timezone.\n */\nexport function toDate(dateValue: DateValue, tz: string = getLocalTimeZone()) {\n if (isZonedDateTime(dateValue)) return dateValue.toDate();\n else return dateValue.toDate(tz);\n}\n\nexport function isCalendarDateTime(dateValue: DateValue): dateValue is CalendarDateTime {\n return dateValue instanceof CalendarDateTime;\n}\n\nexport function isZonedDateTime(dateValue: DateValue): dateValue is ZonedDateTime {\n return dateValue instanceof ZonedDateTime;\n}\n\nexport function hasTime(dateValue: DateValue) {\n return isCalendarDateTime(dateValue) || isZonedDateTime(dateValue);\n}\n\n/**\n * Given a date, return the number of days in the month.\n */\nexport function getDaysInMonth(date: Date | DateValue) {\n if (date instanceof Date) {\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n /**\n * By using zero as the day, we get the\n * last day of the previous month, which\n * is the month we originally passed in.\n */\n return new Date(year, month, 0).getDate();\n } else {\n return date.set({ day: 100 }).day;\n }\n}\n\n/**\n * Determine if a date is before the reference date.\n * @param dateToCompare - is this date before the `referenceDate`\n * @param referenceDate - is the `dateToCompare` before this date\n *\n * @see {@link isBeforeOrSame} for inclusive\n */\nexport function isBefore(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) < 0;\n}\n\n/**\n * Determine if a date is after the reference date.\n * @param dateToCompare - is this date after the `referenceDate`\n * @param referenceDate - is the `dateToCompare` after this date\n *\n * @see {@link isAfterOrSame} for inclusive\n */\nexport function isAfter(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) > 0;\n}\n\n/**\n * Determine if a date is before or the same as the reference date.\n *\n * @param dateToCompare - the date to compare\n * @param referenceDate - the reference date to make the comparison against\n *\n * @see {@link isBefore} for non-inclusive\n */\nexport function isBeforeOrSame(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) <= 0;\n}\n\n/**\n * Determine if a date is after or the same as the reference date.\n *\n * @param dateToCompare - is this date after or the same as the `referenceDate`\n * @param referenceDate - is the `dateToCompare` after or the same as this date\n *\n * @see {@link isAfter} for non-inclusive\n */\nexport function isAfterOrSame(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) >= 0;\n}\n\n/**\n * Determine if a date is inclusively between a start and end reference date.\n *\n * @param date - is this date inclusively between the `start` and `end` dates\n * @param start - the start reference date to make the comparison against\n * @param end - the end reference date to make the comparison against\n *\n * @see {@link isBetween} for non-inclusive\n */\nexport function isBetweenInclusive(date: DateValue, start: DateValue, end: DateValue) {\n return isAfterOrSame(date, start) && isBeforeOrSame(date, end);\n}\n\n/**\n * Determine if a date is between a start and end reference date.\n *\n * @param date - is this date between the `start` and `end` dates\n * @param start - the start reference date to make the comparison against\n * @param end - the end reference date to make the comparison against\n *\n * @see {@link isBetweenInclusive} for inclusive\n */\nexport function isBetween(date: DateValue, start: DateValue, end: DateValue) {\n return isAfter(date, start) && isBefore(date, end);\n}\n\nexport function getLastFirstDayOfWeek<T extends DateValue = DateValue>(\n date: T,\n firstDayOfWeek: number,\n locale: string\n): T {\n const day = getDayOfWeek(date, locale);\n\n if (firstDayOfWeek > day) return date.subtract({ days: day + 7 - firstDayOfWeek }) as T;\n\n if (firstDayOfWeek === day) return date as T;\n\n return date.subtract({ days: day - firstDayOfWeek }) as T;\n}\n\nexport function getNextLastDayOfWeek<T extends DateValue = DateValue>(\n date: T,\n firstDayOfWeek: number,\n locale: string\n): T {\n const day = getDayOfWeek(date, locale);\n const lastDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n\n if (day === lastDayOfWeek) return date as T;\n\n if (day > lastDayOfWeek) return date.add({ days: 7 - day + lastDayOfWeek }) as T;\n\n return date.add({ days: lastDayOfWeek - day }) as T;\n}\n\nexport function areAllDaysBetweenValid(\n start: DateValue,\n end: DateValue,\n isUnavailable: DateMatcher | undefined,\n isDisabled: DateMatcher | undefined\n) {\n if (isUnavailable === undefined && isDisabled === undefined) return true;\n\n let dCurrent = start.add({ days: 1 });\n if (isDisabled?.(dCurrent) || isUnavailable?.(dCurrent)) return false;\n\n const dEnd = end;\n while (dCurrent.compare(dEnd) < 0) {\n dCurrent = dCurrent.add({ days: 1 });\n if (isDisabled?.(dCurrent) || isUnavailable?.(dCurrent)) return false;\n }\n return true;\n}\n\nexport type Granularity = 'day' | 'hour' | 'minute' | 'second';\nexport type TimeGranularity = 'hour' | 'minute' | 'second';\n\ntype GetDefaultDateProps = {\n defaultValue?: DateValue | DateValue[] | undefined;\n defaultPlaceholder?: DateValue | undefined;\n granularity?: Granularity;\n locale?: string;\n};\n\n/**\n * A helper function used throughout the various date builders\n * to generate a default `DateValue` using the `defaultValue`,\n * `defaultPlaceholder`, and `granularity` props.\n *\n * It's important to match the `DateValue` type being used\n * elsewhere in the builder, so they behave according to the\n * behavior the user expects based on the props they've provided.\n *\n */\nexport function getDefaultDate(props: GetDefaultDateProps): DateValue {\n const { defaultValue, defaultPlaceholder, granularity = 'day', locale = 'en' } = props;\n\n if (Array.isArray(defaultValue) && defaultValue.length) return defaultValue[defaultValue.length - 1]!.copy();\n\n if (defaultValue && !Array.isArray(defaultValue)) return defaultValue.copy();\n\n if (defaultPlaceholder) return defaultPlaceholder.copy();\n\n const date = new Date();\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const calendarDateTimeGranularities = ['hour', 'minute', 'second'];\n\n const defaultFormatter = new DateFormatter(locale);\n const calendar = createCalendar(defaultFormatter.resolvedOptions().calendar);\n\n if (calendarDateTimeGranularities.includes(granularity ?? 'day'))\n return toCalendar(new CalendarDateTime(year, month, day, 0, 0, 0), calendar);\n\n return toCalendar(new CalendarDate(year, month, day), calendar);\n}\n","import { DateValue, endOfMonth, startOfMonth } from '@internationalized/date';\nimport { chunk } from '../chunk';\nimport { getDaysInMonth, getLastFirstDayOfWeek, getNextLastDayOfWeek } from './comparators';\nimport { Month } from './types';\n\nexport type CreateMonthProps = {\n /**\n * The date object representing the month's date (usually the first day of the month).\n */\n dateObj: DateValue;\n\n /**\n * The day of the week to start the calendar on (0 for Sunday, 1 for Monday, etc.).\n */\n weekStartsOn: number;\n\n /**\n * Whether to always render 6 weeks in the calendar, even if the month doesn't\n * span 6 weeks.\n */\n fixedWeeks: boolean;\n\n /**\n * The locale to use when creating the calendar month.\n */\n locale: string;\n};\n\n/**\n * Retrieves an array of date values representing the days between\n * the provided start and end dates.\n */\nexport function getDaysBetween(start: DateValue, end: DateValue) {\n const days: DateValue[] = [];\n let dCurrent = start.add({ days: 1 });\n const dEnd = end;\n while (dCurrent.compare(dEnd) < 0) {\n days.push(dCurrent);\n dCurrent = dCurrent.add({ days: 1 });\n }\n return days;\n}\n\nexport function createMonth(props: CreateMonthProps): Month<DateValue> {\n const { dateObj, weekStartsOn, fixedWeeks, locale } = props;\n const daysInMonth = getDaysInMonth(dateObj);\n\n const datesArray = Array.from({ length: daysInMonth }, (_, i) => dateObj.set({ day: i + 1 }));\n\n const firstDayOfMonth = startOfMonth(dateObj);\n const lastDayOfMonth = endOfMonth(dateObj);\n\n const lastSunday = getLastFirstDayOfWeek(firstDayOfMonth, weekStartsOn, locale);\n const nextSaturday = getNextLastDayOfWeek(lastDayOfMonth, weekStartsOn, locale);\n\n const lastMonthDays = getDaysBetween(lastSunday.subtract({ days: 1 }), firstDayOfMonth);\n const nextMonthDays = getDaysBetween(lastDayOfMonth, nextSaturday.add({ days: 1 }));\n\n const totalDays = lastMonthDays.length + datesArray.length + nextMonthDays.length;\n\n if (fixedWeeks && totalDays < 42) {\n const extraDays = 42 - totalDays;\n\n let startFrom = nextMonthDays[nextMonthDays.length - 1];\n\n if (!startFrom) startFrom = endOfMonth(dateObj);\n\n const extraDaysArray = Array.from({ length: extraDays }, (_, i) => {\n const incr = i + 1;\n return startFrom.add({ days: incr });\n });\n nextMonthDays.push(...extraDaysArray);\n }\n\n const allDays = lastMonthDays.concat(datesArray, nextMonthDays);\n\n const weeks = chunk(allDays, 7);\n\n return {\n value: dateObj,\n dates: allDays,\n weeks: weeks\n };\n}\n\ntype SetMonthProps = CreateMonthProps & {\n numberOfMonths: number | undefined;\n currentMonths?: Month<DateValue>[];\n};\n\nexport function createMonths(props: SetMonthProps) {\n const { numberOfMonths, dateObj, ...monthProps } = props;\n\n const months: Month<DateValue>[] = [];\n\n if (!numberOfMonths || numberOfMonths === 1) {\n months.push(\n createMonth({\n ...monthProps,\n dateObj\n })\n );\n return months;\n }\n\n months.push(\n createMonth({\n ...monthProps,\n dateObj\n })\n );\n\n // Create all the months, starting with the current month\n for (let i = 1; i < numberOfMonths; i++) {\n const nextMonth = dateObj.add({ months: i });\n months.push(\n createMonth({\n ...monthProps,\n dateObj: nextMonth\n })\n );\n }\n\n return months;\n}\n","import { DateFormatter, type DateValue, getLocalTimeZone, today } from '@internationalized/date';\nimport { hasTime, isZonedDateTime, toDate } from './comparators';\nimport { HourCycle } from './types';\n\nconst defaultPartOptions: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n};\n\nexport interface DateFormatterOptions extends Intl.DateTimeFormatOptions {\n calendar?: string;\n}\n\nexport type Formatter = {\n getLocale: () => string;\n setLocale: (newLocale: string) => void;\n custom: (date: Date, options: DateFormatterOptions) => string;\n selectedDate: (date: DateValue, includeTime?: boolean) => string;\n dayOfWeek: (date: Date, length?: DateFormatterOptions['weekday']) => string;\n fullMonthAndYear: (date: Date, options?: DateFormatterOptions) => string;\n fullMonth: (date: Date, options?: DateFormatterOptions) => string;\n fullYear: (date: Date, options?: DateFormatterOptions) => string;\n dayPeriod: (date: Date) => string;\n part: (dateObj: DateValue, type: Intl.DateTimeFormatPartTypes, options?: DateFormatterOptions) => string;\n toParts: (date: DateValue, options?: DateFormatterOptions) => Intl.DateTimeFormatPart[];\n getMonths: () => { label: string; value: number }[];\n};\n\n/**\n * Creates a wrapper around the `DateFormatter`, which is\n * an improved version of the {@link Intl.DateTimeFormat} API,\n * that is used internally by the various date builders to\n * easily format dates in a consistent way.\n *\n * @see [DateFormatter](https://react-spectrum.adobe.com/internationalized/date/DateFormatter.html)\n */\nexport function createFormatter(initialLocale: string): Formatter {\n let locale = initialLocale;\n\n function setLocale(newLocale: string) {\n locale = newLocale;\n }\n\n function getLocale() {\n return locale;\n }\n\n function custom(date: Date, options: Intl.DateTimeFormatOptions) {\n return new DateFormatter(locale, options).format(date);\n }\n\n function selectedDate(date: DateValue, includeTime = true) {\n if (hasTime(date) && includeTime) {\n return custom(toDate(date), {\n dateStyle: 'long',\n timeStyle: 'long'\n });\n } else {\n return custom(toDate(date), {\n dateStyle: 'long'\n });\n }\n }\n\n function fullMonthAndYear(date: Date) {\n return new DateFormatter(locale, { month: 'long', year: 'numeric' }).format(date);\n }\n\n function fullMonth(date: Date) {\n return new DateFormatter(locale, { month: 'long' }).format(date);\n }\n\n function fullYear(date: Date) {\n return new DateFormatter(locale, { year: 'numeric' }).format(date);\n }\n\n function toParts(date: DateValue, options?: Intl.DateTimeFormatOptions) {\n if (isZonedDateTime(date)) {\n return new DateFormatter(locale, {\n ...options,\n timeZone: date.timeZone\n }).formatToParts(toDate(date));\n } else {\n return new DateFormatter(locale, options).formatToParts(toDate(date));\n }\n }\n\n function dayOfWeek(date: Date, length: Intl.DateTimeFormatOptions['weekday'] = 'narrow') {\n return new DateFormatter(locale, { weekday: length }).format(date);\n }\n\n function dayPeriod(date: Date, hourCycle: HourCycle | undefined = undefined) {\n const parts = new DateFormatter(locale, {\n hour: 'numeric',\n minute: 'numeric',\n hourCycle: hourCycle === 24 ? 'h23' : undefined\n }).formatToParts(date);\n const value = parts.find((p) => p.type === 'dayPeriod')?.value;\n if (value === 'PM') {\n return 'PM';\n }\n return 'AM';\n }\n\n function part(dateObj: DateValue, type: Intl.DateTimeFormatPartTypes, options: Intl.DateTimeFormatOptions = {}) {\n const opts = { ...defaultPartOptions, ...options };\n const parts = toParts(dateObj, opts);\n const part = parts.find((p) => p.type === type);\n return part ? part.value : '';\n }\n\n function getMonths() {\n const defaultDate = today(getLocalTimeZone());\n const months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return months.map((item) => ({ label: fullMonth(toDate(defaultDate.set({ month: item }))), value: item }));\n }\n\n return {\n setLocale,\n getLocale,\n fullMonth,\n fullYear,\n fullMonthAndYear,\n toParts,\n custom,\n part,\n dayPeriod,\n selectedDate,\n dayOfWeek,\n getMonths\n };\n}\n","/*\n * Implementation ported from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/date-field/_internal/helpers.ts\n */\n\nimport type { DateSegmentPart, EditableSegmentPart, SegmentPart, TimeSegmentPart } from './types';\n\nexport const DATE_SEGMENT_PARTS = ['day', 'month', 'year'] as const;\nexport const TIME_SEGMENT_PARTS = ['hour', 'minute', 'second', 'dayPeriod'] as const;\nexport const NON_EDITABLE_SEGMENT_PARTS = ['literal', 'timeZoneName'] as const;\nexport const EDITABLE_SEGMENT_PARTS = [...DATE_SEGMENT_PARTS, ...TIME_SEGMENT_PARTS] as const;\nexport const EDITABLE_TIME_SEGMENT_PARTS = [...TIME_SEGMENT_PARTS] as const;\nexport const ALL_SEGMENT_PARTS = [\n ...EDITABLE_SEGMENT_PARTS,\n ...NON_EDITABLE_SEGMENT_PARTS\n] as const;\nexport const ALL_EXCEPT_LITERAL_PARTS = ALL_SEGMENT_PARTS.filter((part) => part !== 'literal');\n\nexport function isDateSegmentPart(part: unknown): part is DateSegmentPart {\n return DATE_SEGMENT_PARTS.includes(part as DateSegmentPart);\n}\n\nexport function isTimeSegmentPart(part: unknown): part is TimeSegmentPart {\n return TIME_SEGMENT_PARTS.includes(part as TimeSegmentPart);\n}\n\nexport function isSegmentPart(part: string): part is EditableSegmentPart {\n return EDITABLE_SEGMENT_PARTS.includes(part as EditableSegmentPart);\n}\n\nexport function isAnySegmentPart(part: unknown): part is SegmentPart {\n return ALL_SEGMENT_PARTS.includes(part as EditableSegmentPart);\n}\n","/*\n * Implementation ported from from from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/internal/helpers/date/placeholders.ts\n */\n\n// prettier-ignore\nconst supportedLocales = [\n 'ach','af','am','an','ar','ast','az','be','bg','bn','br','bs',\n 'ca','cak','ckb','cs','cy','da','de','dsb','el','en','eo','es',\n 'et','eu','fa','ff','fi','fr','fy','ga','gd','gl','he','hr',\n 'hsb','hu','ia','id','it','ja','ka','kk','kn','ko','lb','lo',\n 'lt','lv','meh','ml','ms','nl','nn','no','oc','pl','pt','rm',\n 'ro','ru','sc','scn','sk','sl','sr','sv','szl','tg','th','tr',\n 'uk','zh-CN','zh-TW',\n] as const;\n\nconst placeholderFields = ['year', 'month', 'day'] as const;\n\ntype SupportedLocale = (typeof supportedLocales)[number];\ntype PlaceholderField = (typeof placeholderFields)[number];\nexport type PlaceholderMap = Record<SupportedLocale, Record<PlaceholderField, string>>;\n\nconst placeholders: PlaceholderMap = {\n ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n af: { year: 'jjjj', month: 'mm', day: 'dd' },\n am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n an: { year: 'aaaa', month: 'mm', day: 'dd' },\n ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n az: { year: 'iiii', month: 'aa', day: 'gg' },\n be: { year: 'гггг', month: 'мм', day: 'дд' },\n bg: { year: 'гггг', month: 'мм', day: 'дд' },\n bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n br: { year: 'bbbb', month: 'mm', day: 'dd' },\n bs: { year: 'gggg', month: 'mm', day: 'dd' },\n ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n da: { year: 'åååå', month: 'mm', day: 'dd' },\n de: { year: 'jjjj', month: 'mm', day: 'tt' },\n dsb: { year: 'llll', month: 'mm', day: 'źź' },\n el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n en: { year: 'yyyy', month: 'mm', day: 'dd' },\n eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n es: { year: 'aaaa', month: 'mm', day: 'dd' },\n et: { year: 'aaaa', month: 'kk', day: 'pp' },\n eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n fa: { year: 'سال', month: 'ماه', day: 'روز' },\n ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n ga: { year: 'bbbb', month: 'mm', day: 'll' },\n gd: { year: 'bbbb', month: 'mm', day: 'll' },\n gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n he: { year: 'שנה', month: 'חודש', day: 'יום' },\n hr: { year: 'gggg', month: 'mm', day: 'dd' },\n hsb: { year: 'llll', month: 'mm', day: 'dd' },\n hu: { year: 'éééé', month: 'hh', day: 'nn' },\n ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n id: { year: 'tttt', month: 'bb', day: 'hh' },\n it: { year: 'aaaa', month: 'mm', day: 'gg' },\n ja: { year: ' 年 ', month: '月', day: '日' },\n ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n ko: { year: '연도', month: '월', day: '일' },\n lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n lv: { year: 'gggg', month: 'mm', day: 'dd' },\n meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n ms: { year: 'tttt', month: 'mm', day: 'hh' },\n nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n nn: { year: 'åååå', month: 'mm', day: 'dd' },\n no: { year: 'åååå', month: 'mm', day: 'dd' },\n oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n rm: { year: 'oooo', month: 'mm', day: 'dd' },\n ro: { year: 'aaaa', month: 'll', day: 'zz' },\n ru: { year: 'гггг', month: 'мм', day: 'дд' },\n sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n sl: { year: 'llll', month: 'mm', day: 'dd' },\n sr: { year: 'гггг', month: 'мм', day: 'дд' },\n sv: { year: 'åååå', month: 'mm', day: 'dd' },\n szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n tg: { year: 'сссс', month: 'мм', day: 'рр' },\n th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n uk: { year: 'рррр', month: 'мм', day: 'дд' },\n 'zh-CN': { year: '年', month: '月', day: '日' },\n 'zh-TW': { year: '年', month: '月', day: '日' }\n};\n\nfunction getPlaceholderObj(locale: SupportedLocale | (string & {})) {\n if (!isSupportedLocale(locale)) {\n const localeLanguage = getLocaleLanguage(locale);\n if (!isSupportedLocale(localeLanguage)) {\n return placeholders.en;\n } else {\n return placeholders[localeLanguage];\n }\n } else {\n return placeholders[locale];\n }\n}\n\ntype Field = 'era' | 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'dayPeriod';\n\nexport function getPlaceholder(field: Field, value: string, locale: SupportedLocale | (string & {})) {\n if (isPlaceholderField(field)) return getPlaceholderObj(locale)[field];\n if (isDefaultField(field)) return value;\n if (isTimeField(field)) return '––';\n return '';\n}\n\nfunction isSupportedLocale(locale: string): locale is SupportedLocale {\n return supportedLocales.includes(locale as SupportedLocale);\n}\n\nfunction isPlaceholderField(field: unknown): field is PlaceholderField {\n return placeholderFields.includes(field as PlaceholderField);\n}\n\nfunction isTimeField(field: unknown): field is 'hour' | 'minute' | 'second' {\n return field === 'hour' || field === 'minute' || field === 'second';\n}\n\nfunction isDefaultField(field: unknown): field is 'era' | 'dayPeriod' {\n return field === 'era' || field === 'dayPeriod';\n}\n\nfunction getLocaleLanguage(locale: string) {\n if (Intl.Locale) {\n return new Intl.Locale(locale).language;\n }\n return locale.split('-')[0]!;\n}\n","import { Granularity } from './comparators';\nimport { HourCycle } from './types';\n\nexport function getOptsByGranularity(granularity: Granularity, hourCycle: HourCycle, isTimeValue: boolean = false) {\n const opts: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n timeZoneName: 'short',\n hourCycle: hourCycle === 24 ? 'h23' : undefined,\n hour12: hourCycle === 24 ? false : undefined\n };\n if (isTimeValue) {\n delete opts.year;\n delete opts.month;\n delete opts.day;\n }\n\n if (granularity === 'day') {\n delete opts.second;\n delete opts.hour;\n delete opts.minute;\n delete opts.timeZoneName;\n }\n if (granularity === 'hour') {\n delete opts.minute;\n delete opts.second;\n }\n\n if (granularity === 'minute') delete opts.second;\n\n return opts;\n}\n\nexport function handleCalendarInitialFocus(calendar: HTMLElement) {\n const selectedDay = calendar.querySelector<HTMLElement>('[data-selected]');\n if (selectedDay) return selectedDay.focus();\n\n const today = calendar.querySelector<HTMLElement>('[data-today]');\n if (today) return today.focus();\n\n const firstDay = calendar.querySelector<HTMLElement>('[data-rdx-calendar-day]');\n if (firstDay) return firstDay.focus();\n}\n","import { InputSignal } from '@angular/core';\nimport { DateFields, DateValue } from '@internationalized/date';\nimport { Granularity, isZonedDateTime, toDate } from './comparators';\nimport { Formatter } from './formatter';\nimport {\n DATE_SEGMENT_PARTS,\n EDITABLE_SEGMENT_PARTS,\n isDateSegmentPart,\n isSegmentPart,\n TIME_SEGMENT_PARTS\n} from './parts';\nimport { getPlaceholder } from './placeholders';\nimport { DateSegmentPart, HourCycle, SegmentContentObj, SegmentPart, SegmentValueObj, TimeSegmentPart } from './types';\nimport { getOptsByGranularity } from './utils';\n\nconst calendarDateTimeGranularities = ['hour', 'minute', 'second'];\n\ntype SyncDateSegmentValuesProps = {\n value: DateValue;\n formatter: Formatter;\n};\n\ntype SyncTimeSegmentValuesProps = {\n value: DateValue;\n formatter: Formatter;\n};\n\nexport function syncTimeSegmentValues(props: SyncTimeSegmentValuesProps) {\n return Object.fromEntries(\n TIME_SEGMENT_PARTS.map((part) => {\n if (part === 'dayPeriod') return [part, props.formatter.dayPeriod(toDate(props.value))];\n return [part, props.value[part as keyof DateValue]];\n })\n ) as SegmentValueObj;\n}\n\nexport function initializeSegmentValues(granularity: Granularity): SegmentValueObj {\n const initialParts = EDITABLE_SEGMENT_PARTS.map((part) => {\n if (part === 'dayPeriod') return [part, 'AM'];\n\n return [part, null];\n }).filter(([key]) => {\n if (key === 'literal' || key === null) return false;\n if (granularity === 'minute' && key === 'second') return false;\n if (granularity === 'hour' && (key === 'second' || key === 'minute')) return false;\n if (granularity === 'day') return !calendarDateTimeGranularities.includes(key) && key !== 'dayPeriod';\n else return true;\n });\n\n return Object.fromEntries(initialParts);\n}\n\ntype SharedContentProps = {\n granularity: Granularity;\n dateRef: DateValue;\n formatter: Formatter;\n hideTimeZone: boolean;\n hourCycle: HourCycle;\n isTimeValue?: boolean;\n};\n\ntype CreateContentObjProps = SharedContentProps & {\n segmentValues: SegmentValueObj;\n locale: InputSignal<string>;\n};\n\ntype CreateContentArrProps = SharedContentProps & {\n contentObj: SegmentContentObj;\n};\n\nexport function syncSegmentValues(props: SyncDateSegmentValuesProps) {\n const { formatter } = props;\n\n const dateValues = DATE_SEGMENT_PARTS.map((part) => {\n return [part, props.value[part]];\n });\n if ('hour' in props.value) {\n const timeValues = syncTimeSegmentValues({ value: props.value, formatter });\n\n return { ...Object.fromEntries(dateValues), ...timeValues } as SegmentValueObj;\n }\n\n return Object.fromEntries(dateValues) as SegmentValueObj;\n}\n\nfunction createContentObj(props: CreateContentObjProps) {\n const { segmentValues, formatter, locale } = props;\n function getPartContent(part: DateSegmentPart | TimeSegmentPart) {\n if ('hour' in segmentValues) {\n const value = segmentValues[part];\n if (value !== null) {\n /**\n * Edge case for when the month field is filled and the day field snaps to the maximum value of the value of the placeholder month\n */\n if (part === 'day' && segmentValues.month !== null) {\n return formatter.part(\n props.dateRef.set({ [part as keyof DateFields]: value, month: segmentValues.month }),\n part,\n {\n hourCycle: props.hourCycle === 24 ? 'h23' : undefined\n }\n );\n }\n return formatter.part(props.dateRef.set({ [part]: value }), part, {\n hourCycle: props.hourCycle === 24 ? 'h23' : undefined\n });\n } else {\n return getPlaceholder(part, '', locale());\n }\n } else {\n if (isDateSegmentPart(part)) {\n const value = segmentValues[part];\n if (value !== null) {\n if (part === 'day' && segmentValues.month !== null)\n /**\n * As described above, same function\n */\n return formatter.part(props.dateRef.set({ [part]: value, month: segmentValues.month }), part);\n\n return formatter.part(props.dateRef.set({ [part]: value }), part);\n } else {\n return getPlaceholder(part, '', locale());\n }\n }\n return '';\n }\n }\n\n const content = Object.keys(segmentValues).reduce((obj, part) => {\n if (!isSegmentPart(part)) return obj;\n if ('hour' in segmentValues && part === 'dayPeriod') {\n const value = segmentValues[part];\n\n if (value !== null) obj[part] = value;\n else obj[part] = getPlaceholder(part, 'AM', locale());\n } else {\n obj[part] = getPartContent(part);\n }\n\n return obj;\n }, {} as SegmentContentObj);\n\n return content;\n}\n\nfunction createContentArr(props: CreateContentArrProps) {\n const { granularity, formatter, contentObj, hideTimeZone, hourCycle, isTimeValue } = props;\n const parts = formatter.toParts(props.dateRef, getOptsByGranularity(granularity, hourCycle, isTimeValue));\n\n const segmentContentArr = parts\n .map((part) => {\n const defaultParts = ['literal', 'timeZoneName', null];\n\n if (defaultParts.includes(part.type) || !isSegmentPart(part.type)) {\n return {\n part: part.type,\n value: part.value\n };\n }\n\n return {\n part: part.type,\n value: contentObj[part.type]\n };\n })\n .filter((segment): segment is { part: SegmentPart; value: string } => {\n if (segment.part === null || segment.value === null) return false;\n if (segment.part === 'timeZoneName' && (!isZonedDateTime(props.dateRef) || hideTimeZone)) return false;\n\n return true;\n });\n\n return segmentContentArr;\n}\n\ntype CreateContentProps = CreateContentObjProps;\n\nexport function createContent(props: CreateContentProps) {\n const contentObj = createContentObj(props);\n\n const contentArr = createContentArr({\n contentObj,\n ...props\n });\n\n return {\n obj: contentObj,\n arr: contentArr\n };\n}\n","import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, SPACE } from '../kbd-constants';\n\nexport function isSegmentNavigationKey(key: string) {\n if (key === ARROW_RIGHT || key === ARROW_LEFT) return true;\n return false;\n}\n\nexport function isNumberString(value: string) {\n if (Number.isNaN(Number.parseInt(value))) return false;\n return true;\n}\n\nexport function isAcceptableSegmentKey(key: string) {\n const acceptableSegmentKeys = [\n ENTER,\n ARROW_UP,\n ARROW_DOWN,\n ARROW_LEFT,\n ARROW_RIGHT,\n BACKSPACE,\n SPACE,\n 'a',\n 'A',\n 'p',\n 'P'\n ];\n if (acceptableSegmentKeys.includes(key)) return true;\n if (isNumberString(key)) return true;\n return false;\n}\n\nexport function getSegmentElements(parentElement: HTMLElement): Element[] {\n return Array.from(parentElement.querySelectorAll('[data-rdx-date-field-segment]')).filter(\n (item) => item.getAttribute('data-rdx-date-field-segment') !== 'literal'\n );\n}\n","/*\n * Implementation ported from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/internal/helpers/date/types.ts\n */\n\nimport type { DateValue } from '@internationalized/date';\nimport { DATE_SEGMENT_PARTS, EDITABLE_SEGMENT_PARTS, NON_EDITABLE_SEGMENT_PARTS, TIME_SEGMENT_PARTS } from './parts';\n\nexport type DateMatcher = (date: DateValue) => boolean;\n\nexport type HourCycle = 12 | 24 | undefined;\n\nexport type Month<T> = {\n /**\n * A `DateValue` used to represent the month. Since days\n * from the previous and next months may be included in the\n * calendar grid, we need a source of truth for the value\n * the grid is representing.\n */\n value: DateValue;\n\n /**\n * An array of (rows) arrays representing the weeks in the calendar.\n * Each sub-array represents a week, and contains the dates for each\n * day in that week. This structure is useful for rendering the calendar\n * grid using a table, where each row represents a week and each cell\n * represents a day.\n */\n weeks: T[][];\n\n /**\n * An array of (cells) all the dates in the current month, including dates from\n * the previous and next months that are used to fill out the calendar grid.\n * This array is useful for rendering the calendar grid in a customizable way,\n * as it provides all the dates that should be displayed in the grid in a flat\n * array.\n */\n dates: T[];\n};\n\nexport type DateSegmentPart = (typeof DATE_SEGMENT_PARTS)[number];\nexport type TimeSegmentPart = (typeof TIME_SEGMENT_PARTS)[number];\nexport type EditableSegmentPart = (typeof EDITABLE_SEGMENT_PARTS)[number];\nexport type NonEditableSegmentPart = (typeof NON_EDITABLE_SEGMENT_PARTS)[number];\nexport type SegmentPart = EditableSegmentPart | NonEditableSegmentPart;\n\nexport type AnyExceptLiteral = Exclude<SegmentPart, 'literal'>;\n\nexport type DayPeriod = 'AM' | 'PM' | null;\nexport type DateSegmentObj = {\n [K in DateSegmentPart]: number | null;\n};\n\nexport type TimeSegmentObj = {\n [K in TimeSegmentPart]: K extends 'dayPeriod' ? DayPeriod : number | null;\n};\nexport type DateAndTimeSegmentObj = DateSegmentObj & TimeSegmentObj;\nexport type SegmentValueObj = DateSegmentObj | DateAndTimeSegmentObj;\nexport type SegmentContentObj = Record<EditableSegmentPart, string>;\n","// https://github.com/unovue/reka-ui/blob/v2/packages/core/src/shared/date/useDateField.ts\n\nimport { computed, InputSignal, ModelSignal, WritableSignal } from '@angular/core';\nimport { CalendarDateTime, CycleTimeOptions, DateFields, DateValue, TimeFields } from '@internationalized/date';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, SHIFT, TAB } from '../kbd-constants';\nimport { getDaysInMonth, toDate } from './comparators';\nimport { Formatter } from './formatter';\nimport { isAcceptableSegmentKey, isNumberString, isSegmentNavigationKey } from './segment';\nimport { AnyExceptLiteral, DateAndTimeSegmentObj, HourCycle, SegmentPart, SegmentValueObj } from './types';\n\ntype MinuteSecondIncrementProps = {\n e: KeyboardEvent;\n part: keyof TimeFields;\n dateRef: DateValue;\n prevValue: number | null;\n};\n\ntype DateTimeValueIncrementation = {\n e: KeyboardEvent;\n part: keyof Omit<DateFields, 'era'> | keyof TimeFields;\n dateRef: DateValue;\n prevValue: number | null;\n hourCycle?: HourCycle;\n};\n\nexport type UseDateFieldProps = {\n hasLeftFocus: WritableSignal<boolean>;\n lastKeyZero: WritableSignal<boolean>;\n placeholder: ModelSignal<DateValue>;\n hourCycle: HourCycle;\n formatter: Formatter;\n segmentValues: WritableSignal<SegmentValueObj>;\n disabled: InputSignal<boolean>;\n readonly: InputSignal<boolean>;\n part: SegmentPart;\n modelValue: ModelSignal<DateValue | undefined>;\n focusNext: () => void;\n};\n\ntype SegmentAttrProps = {\n disabled: boolean;\n segmentValues: SegmentValueObj;\n hourCycle: HourCycle;\n placeholder: DateValue;\n formatter: Formatter;\n};\n\nfunction commonSegmentAttrs(props: SegmentAttrProps) {\n return {\n role: 'spinbutton',\n contenteditable: true,\n tabindex: props.disabled ? undefined : 0,\n spellcheck: false,\n inputmode: 'numeric',\n autocorrect: 'off',\n enterkeyhint: 'next',\n style: 'caret-color: transparent;'\n };\n}\n\nfunction daySegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n const isEmpty = segmentValues.day === null;\n const date = segmentValues.day ? placeholder.set({ day: segmentValues.day }) : placeholder;\n\n const valueNow = date.day;\n const valueMin = 1;\n const valueMax = getDaysInMonth(date);\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'day,',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction monthSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder, formatter } = props;\n const isEmpty = segmentValues.month === null;\n const date = segmentValues.month ? placeholder.set({ month: segmentValues.month }) : placeholder;\n const valueNow = date.month;\n const valueMin = 1;\n const valueMax = 12;\n const valueText = isEmpty ? 'Empty' : `${valueNow} - ${formatter.fullMonth(toDate(date))}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'month, ',\n contenteditable: true,\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction yearSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n const isEmpty = segmentValues.year === null;\n const date = segmentValues.year ? placeholder.set({ year: segmentValues.year }) : placeholder;\n const valueMin = 1;\n const valueMax = 9999;\n const valueNow = date.year;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'year, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction hourSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, hourCycle, placeholder } = props;\n\n if (!('hour' in segmentValues) || !('hour' in placeholder)) return {};\n const isEmpty = segmentValues.hour === null;\n const date = segmentValues.hour ? placeholder.set({ hour: segmentValues.hour }) : placeholder;\n const valueMin = hourCycle === 12 ? 1 : 0;\n const valueMax = hourCycle === 12 ? 12 : 23;\n const valueNow = date.hour;\n const valueText = isEmpty ? 'Empty' : `${valueNow} ${segmentValues.dayPeriod ?? ''}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'hour, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction minuteSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n if (!('minute' in segmentValues) || !('minute' in placeholder)) return {};\n const isEmpty = segmentValues.minute === null;\n const date = segmentValues.minute ? placeholder.set({ minute: segmentValues.minute }) : placeholder;\n const valueNow = date.minute;\n const valueMin = 0;\n const valueMax = 59;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'minute, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction secondSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n if (!('second' in segmentValues) || !('second' in placeholder)) return {};\n const isEmpty = segmentValues.second === null;\n const date = segmentValues.second ? placeholder.set({ second: segmentValues.second }) : placeholder;\n const valueNow = date.second;\n const valueMin = 0;\n const valueMax = 59;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'second, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction dayPeriodSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues } = props;\n if (!('dayPeriod' in segmentValues)) return {};\n\n const valueMin = 0;\n const valueMax = 12;\n const valueNow = segmentValues.hour ? (segmentValues.hour > 12 ? segmentValues.hour - 12 : segmentValues.hour) : 0;\n const valueText = segmentValues.dayPeriod ?? 'AM';\n\n return {\n ...commonSegmentAttrs(props),\n inputmode: 'text',\n 'aria-label': 'AM/PM',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText\n };\n}\n\nfunction literalSegmentAttrs(_props: SegmentAttrProps) {\n return {\n 'aria-hidden': true,\n 'data-segment': 'literal'\n };\n}\n\nfunction timeZoneSegmentAttrs(props: SegmentAttrProps) {\n return {\n role: 'textbox',\n 'aria-label': 'timezone, ',\n 'data-readonly': true,\n 'data-segment': 'timeZoneName',\n tabindex: props.disabled ? undefined : 0,\n style: 'caret-color: transparent;'\n };\n}\n\nfunction eraSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n\n const valueMin = 0;\n const valueMax = 0;\n const valueNow = 0;\n const valueText = 'era' in segmentValues ? segmentValues.era : placeholder.era;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'era',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText\n };\n}\n\nexport const segmentBuilders = {\n day: {\n attrs: daySegmentAttrs\n },\n month: {\n attrs: monthSegmentAttrs\n },\n year: {\n attrs: yearSegmentAttrs\n },\n hour: {\n attrs: hourSegmentAttrs\n },\n minute: {\n attrs: minuteSegmentAttrs\n },\n second: {\n attrs: secondSegmentAttrs\n },\n dayPeriod: {\n attrs: dayPeriodSegmentAttrs\n },\n literal: {\n attrs: literalSegmentAttrs\n },\n timeZoneName: {\n attrs: timeZoneSegmentAttrs\n },\n era: {\n attrs: eraSegmentAttrs\n }\n};\n\nexport function useDateField(props: UseDateFieldProps) {\n function handleSegmentClick(e: MouseEvent) {\n const disabled = props.disabled();\n if (disabled) e.preventDefault();\n }\n\n function deleteValue(prevValue: number | null) {\n props.hasLeftFocus.set(false);\n\n if (prevValue === null) return prevValue;\n\n const str = prevValue.toString();\n if (str.length === 1) {\n props.modelValue.set(undefined);\n return null;\n }\n\n return Number.parseInt(str.slice(0, -1));\n }\n\n function dateTimeValueIncrementation({\n e,\n part,\n dateRef,\n prevValue,\n hourCycle\n }: DateTimeValueIncrementation): number {\n const sign = e.key === ARROW_UP ? 1 : -1;\n\n if (prevValue === null) return dateRef[part as keyof Omit<DateFields, 'era'>];\n\n if (part === 'hour' && 'hour' in dateRef) {\n const cycleArgs: [keyof DateFields | keyof TimeFields, number, CycleTimeOptions?] = [\n part,\n sign,\n { hourCycle }];\n return dateRef.set({ [part as keyof DateValue]: prevValue }).cycle(...cycleArgs)[part];\n }\n\n const cycleArgs: [keyof DateFields, number] = [part as keyof DateFields, sign];\n if (part === 'day' && props.segmentValues().month !== null)\n return dateRef\n .set({ [part as keyof DateValue]: prevValue, month: props.segmentValues().month! })\n .cycle(...cycleArgs)[part as keyof Omit<DateFields, 'era'>];\n\n return dateRef.set({ [part as keyof DateValue]: prevValue }).cycle(...cycleArgs)[\n part as keyof Omit<DateFields, 'era'>\n ];\n }\n\n function updateDayOrMonth(max: number, num: number, prev: number | null) {\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: null, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart || total > max) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function updateYear(num: number, prev: number | null) {\n let moveToNext = false;\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n // probably not implement, kind of weird\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) return { value: num === 0 ? 1 : num, moveToNext };\n\n const str = prev.toString() + num.toString();\n\n if (str.length > 4) return { value: num === 0 ? 1 : num, moveToNext };\n\n if (str.length === 4) moveToNext = true;\n\n const int = Number.parseInt(str);\n return { value: int, moveToNext };\n }\n\n function updateHour(num: number, prev: number | null) {\n const max = 24;\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n // probably not implement, kind of weird\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: 0, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function updateMinuteOrSecond(num: number, prev: number | null) {\n const max = 59;\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: 0, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function minuteSecondIncrementation({ e, part, dateRef, prevValue }: MinuteSecondIncrementProps): number {\n const sign = e.key === ARROW_UP ? 1 : -1;\n const min = 0;\n const max = 59;\n\n if (prevValue === null) return sign > 0 ? min : max;\n\n const cycleArgs: [keyof TimeFields, number] = [part, sign];\n return (dateRef as CalendarDateTime).set({ [part]: prevValue }).cycle(...cycleArgs)[part];\n }\n\n const attributes = computed(\n () =>\n segmentBuilders[props.part]?.attrs({\n disabled: props.disabled(),\n placeholder: props.placeholder(),\n hourCycle: props.hourCycle,\n segmentValues: props.segmentValues(),\n formatter: props.formatter\n }) ?? {}\n );\n\n function handleMonthSegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().month;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n month: dateTimeValueIncrementation({\n e,\n part: 'month',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateDayOrMonth(12, num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, month: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, month: deleteValue(prevValue) }));\n }\n }\n\n function handleDaySegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().day;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n day: dateTimeValueIncrementation({\n e,\n part: 'day',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const segmentMonthValue = props.segmentValues().month;\n\n const daysInMonth = segmentMonthValue\n ? getDaysInMonth(props.placeholder().set({ month: segmentMonthValue }))\n : getDaysInMonth(props.placeholder());\n\n const { value, moveToNext } = updateDayOrMonth(daysInMonth, num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, day: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, day: deleteValue(prevValue) }));\n }\n }\n\n function handleYearSegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().year;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n year: dateTimeValueIncrementation({\n e,\n part: 'year',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateYear(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, year: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, year: deleteValue(prevValue) }));\n }\n }\n\n function handleHourSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('hour' in dateRef) ||\n !('hour' in values)\n )\n return;\n\n const prevValue = values.hour;\n\n const hourCycle = props.hourCycle;\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n props.segmentValues.update((prev) => ({\n ...prev,\n hour: dateTimeValueIncrementation({\n e,\n part: 'hour',\n dateRef: props.placeholder(),\n prevValue,\n hourCycle\n })\n }));\n\n if ('dayPeriod' in props.segmentValues() && values.hour != null) {\n if (values.hour < 12) props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n else if (values.hour) props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n }\n\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateHour(num, prevValue);\n\n if ('dayPeriod' in props.segmentValues() && value && value > 12)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n else if ('dayPeriod' in props.segmentValues() && value)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n\n props.segmentValues.update((prev) => ({ ...prev, hour: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, hour: deleteValue(prevValue) }));\n }\n }\n\n function handleMinuteSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('minute' in dateRef) ||\n !('minute' in values)\n )\n return;\n\n const prevValue = values.minute;\n\n props.segmentValues.update((prev) => ({\n ...prev,\n minute: minuteSecondIncrementation({\n e,\n part: 'minute',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n\n const { value, moveToNext } = updateMinuteOrSecond(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, minute: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, minute: deleteValue(prevValue) }));\n }\n }\n\n function handleSecondSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('second' in dateRef) ||\n !('second' in values)\n )\n return;\n\n const prevValue = values.second;\n\n props.segmentValues.update((prev) => ({\n ...prev,\n second: minuteSecondIncrementation({\n e,\n part: 'second',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateMinuteOrSecond(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, second: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, second: deleteValue(prevValue) }));\n }\n }\n\n function handleDayPeriodSegmentKeydown(e: KeyboardEvent) {\n if (\n ((!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) && e.key !== 'a' && e.key !== 'p') ||\n !('hour' in props.placeholder()) ||\n !('dayPeriod' in props.segmentValues())\n )\n return;\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n if (values.dayPeriod === 'AM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! + 12 }));\n return;\n }\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! - 12 }));\n return;\n }\n\n if (['a', 'A'].includes(e.key) && values.dayPeriod !== 'AM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! - 12 }));\n return;\n }\n\n if (['p', 'P'].includes(e.key) && values.dayPeriod !== 'PM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! + 12 }));\n }\n }\n\n function handleSegmentKeydown(e: KeyboardEvent) {\n const disabled = props.disabled();\n const readonly = props.readonly();\n\n if (e.key !== TAB) e.preventDefault();\n\n if (disabled || readonly) return;\n\n const segmentKeydownHandlers = {\n month: handleMonthSegmentKeydown,\n day: handleDaySegmentKeydown,\n year: handleYearSegmentKeydown,\n hour: handleHourSegmentKeydown,\n minute: handleMinuteSegmentKeydown,\n second: handleSecondSegmentKeydown,\n dayPeriod: handleDayPeriodSegmentKeydown,\n timeZoneName: () => {}\n } as const;\n\n segmentKeydownHandlers[props.part as keyof typeof segmentKeydownHandlers](e);\n\n if (\n ![ARROW_LEFT, ARROW_RIGHT].includes(e.key) &&\n e.key !== TAB &&\n e.key !== SHIFT &&\n isAcceptableSegmentKey(e.key)\n ) {\n if (Object.values(props.segmentValues()).every((item) => item !== null)) {\n const updateObject = { ...(props.segmentValues() as Record<AnyExceptLiteral, number>) };\n\n let dateRef = props.placeholder().copy();\n\n Object.keys(updateObject).forEach((part) => {\n const value = updateObject[part as AnyExceptLiteral];\n dateRef = dateRef.set({ [part]: value });\n });\n\n props.modelValue.set(dateRef.copy());\n }\n }\n }\n\n return {\n handleSegmentClick,\n handleSegmentKeydown,\n attributes\n };\n}\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\n\nexport enum RdxPositionSide {\n Top = 'top',\n Right = 'right',\n Bottom = 'bottom',\n Left = 'left'\n}\n\nexport enum RdxPositionAlign {\n Start = 'start',\n Center = 'center',\n End = 'end'\n}\n\nexport type RdxPositionSideAndAlign = { side: RdxPositionSide; align: RdxPositionAlign };\nexport type RdxPositionSideAndAlignOffsets = { sideOffset: number; alignOffset: number };\n\nexport type RdxPositions = Readonly<{\n [key in RdxPositionSide]: Readonly<{\n [key in RdxPositionAlign]: Readonly<ConnectionPositionPair>;\n }>;\n}>;\n\nexport type RdxPositioningDefaults = Readonly<{\n offsets: Readonly<{\n side: number;\n align: number;\n }>;\n arrow: Readonly<{\n width: number;\n height: number;\n }>;\n}>;\n\nexport type RdxAllPossibleConnectedPositions = ReadonlyMap<\n `${RdxPositionSide}|${RdxPositionAlign}`,\n ConnectionPositionPair\n>;\nexport type RdxArrowPositionParams = {\n top: string;\n left: string;\n transform: string;\n transformOrigin: string;\n};\n","import { RdxPositionAlign, RdxPositioningDefaults, RdxPositions, RdxPositionSide } from './types';\n\nexport const RDX_POSITIONS: RdxPositions = {\n [RdxPositionSide.Top]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Right]: {\n [RdxPositionAlign.Center]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Bottom]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n },\n [RdxPositionSide.Left]: {\n [RdxPositionAlign.Center]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n }\n} as const;\n\nexport const RDX_POSITIONING_DEFAULTS: RdxPositioningDefaults = {\n offsets: {\n side: 4,\n align: 0\n },\n arrow: {\n width: 8,\n height: 6\n }\n} as const;\n","import { ConnectedPosition, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { RDX_POSITIONS } from './constants';\nimport {\n RdxAllPossibleConnectedPositions,\n RdxArrowPositionParams,\n RdxPositionAlign,\n RdxPositionSide,\n RdxPositionSideAndAlign,\n RdxPositionSideAndAlignOffsets\n} from './types';\n\nexport function getContentPosition(\n sideAndAlignWithOffsets: RdxPositionSideAndAlign & RdxPositionSideAndAlignOffsets\n): ConnectedPosition {\n const { side, align, sideOffset, alignOffset } = sideAndAlignWithOffsets;\n const position: ConnectedPosition = {\n ...(RDX_POSITIONS[side]?.[align] ?? RDX_POSITIONS[RdxPositionSide.Top][RdxPositionAlign.Center])\n };\n if (sideOffset || alignOffset) {\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(side)) {\n if (sideOffset) {\n position.offsetY = side === RdxPositionSide.Top ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetX = alignOffset;\n }\n } else {\n if (sideOffset) {\n position.offsetX = side === RdxPositionSide.Left ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetY = alignOffset;\n }\n }\n }\n return position;\n}\n\nlet allPossibleConnectedPositions: RdxAllPossibleConnectedPositions;\nexport function getAllPossibleConnectedPositions() {\n if (!allPossibleConnectedPositions) {\n allPossibleConnectedPositions = new Map();\n }\n if (allPossibleConnectedPositions.size < 1) {\n for (const [side, aligns] of Object.entries(RDX_POSITIONS)) {\n for (const [align, position] of Object.entries(aligns)) {\n (allPossibleConnectedPositions as Map<any, any>).set(`${side}|${align}`, position);\n }\n }\n }\n return allPossibleConnectedPositions;\n}\n\nexport function getSideAndAlignFromAllPossibleConnectedPositions(\n position: ConnectionPositionPair\n): RdxPositionSideAndAlign {\n const allPossibleConnectedPositions = getAllPossibleConnectedPositions();\n let sideAndAlign: RdxPositionSideAndAlign | undefined;\n allPossibleConnectedPositions.forEach((value, key) => {\n if (\n position.originX === value.originX &&\n position.originY === value.originY &&\n position.overlayX === value.overlayX &&\n position.overlayY === value.overlayY\n ) {\n const sideAndAlignArray = key.split('|');\n sideAndAlign = {\n side: sideAndAlignArray[0] as RdxPositionSide,\n align: sideAndAlignArray[1] as RdxPositionAlign\n };\n }\n });\n if (!sideAndAlign) {\n throw Error(\n `[Rdx positioning] cannot infer both side and align from the given position (${JSON.stringify(position)})`\n );\n }\n return sideAndAlign;\n}\n\nexport function getArrowPositionParams(\n sideAndAlign: RdxPositionSideAndAlign,\n arrowWidthAndHeight: { width: number; height: number },\n triggerWidthAndHeight: { width: number; height: number }\n): RdxArrowPositionParams {\n const posParams: RdxArrowPositionParams = {\n top: '',\n left: '',\n transform: '',\n transformOrigin: 'center center 0px'\n };\n\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Top) {\n posParams.top = '100%';\n } else {\n posParams.top = `-${arrowWidthAndHeight.height}px`;\n posParams.transform = `rotate(180deg)`;\n }\n\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.left = `${(triggerWidthAndHeight.width - arrowWidthAndHeight.width) / 2}px`;\n } else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.left = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n } else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.left = `calc(100% - ${(triggerWidthAndHeight.width + arrowWidthAndHeight.width) / 2}px)`;\n }\n } else if ([RdxPositionSide.Left, RdxPositionSide.Right].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Left) {\n posParams.left = `calc(100% - ${arrowWidthAndHeight.width}px)`;\n posParams.transform = `rotate(-90deg)`;\n posParams.transformOrigin = 'top right 0px';\n } else {\n posParams.left = `0`;\n posParams.transform = `rotate(90deg)`;\n posParams.transformOrigin = 'top left 0px';\n }\n\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.top = `${(triggerWidthAndHeight.height - arrowWidthAndHeight.width) / 2}px`;\n } else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.top = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n } else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.top = `calc(100% - ${(triggerWidthAndHeight.height + arrowWidthAndHeight.width) / 2}px)`;\n }\n }\n\n return posParams;\n}\n","// https://ngxtension.netlify.app/utilities/signals/explicit-effect/\n\nimport { CreateEffectOptions, EffectCleanupRegisterFn, EffectRef, effect, untracked } from '@angular/core';\n\n/**\n * We want to have the Tuple in order to use the types in the function signature\n */\ntype ExplicitEffectValues<T> = {\n [K in keyof T]: () => T[K];\n};\n\n/**\n * Extend the regular set of effect options\n */\ndeclare interface CreateExplicitEffectOptions extends CreateEffectOptions {\n /**\n * Option that allows the computation not to execute immediately, but only run on first change.\n */\n defer?: boolean;\n}\n\n/**\n * This explicit effect function will take the dependencies and the function to run when the dependencies change.\n *\n * @example\n * ```typescript\n * import { watch } from 'radix-ng/primitives/core';\n *\n * const count = signal(0);\n * const state = signal('idle');\n *\n * watch([count, state], ([count, state], cleanup) => {\n * console.log('count updated', count, state);\n *\n * cleanup(() => {\n * console.log('cleanup');\n * });\n * });\n * ```\n *\n * @param deps - The dependencies that the effect will run on\n * @param fn - The function to run when the dependencies change\n * @param options - The options for the effect with the addition of defer (it allows the computation to run on first change, not immediately)\n */\nexport function watch<Input extends readonly unknown[], Params = Input>(\n deps: readonly [...ExplicitEffectValues<Input>],\n fn: (deps: Params, onCleanup: EffectCleanupRegisterFn) => void,\n options?: CreateExplicitEffectOptions | undefined\n): EffectRef {\n let defer = options && options.defer;\n return effect((onCleanup) => {\n const depValues = deps.map((s) => s());\n untracked(() => {\n if (!defer) {\n fn(depValues as any, onCleanup);\n }\n defer = false;\n });\n }, options);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;A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I,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE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"}
|