@radix-ng/primitives 1.0.0-beta.0 → 1.0.0-beta.2
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/fesm2022/radix-ng-primitives-accordion.mjs +2 -2
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +109 -84
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +2 -2
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +1923 -0
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-context-menu.mjs +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +591 -470
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +287 -308
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +66 -15
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +7 -106
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +305 -24
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +86 -6
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +207 -0
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-input.mjs +85 -4
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +413 -5
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +2 -2
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +22 -5
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +923 -0
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-select.mjs +421 -224
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +3 -2
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +12 -3
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +27 -3
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +839 -0
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +2 -2
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +11 -3
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +18 -2
- package/schematics/ng-add/index.js +57 -0
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.d.ts +1 -0
- package/schematics/ng-add/schema.json +6 -0
- package/types/radix-ng-primitives-accordion.d.ts +3 -2
- package/types/radix-ng-primitives-calendar.d.ts +38 -18
- package/types/radix-ng-primitives-checkbox.d.ts +5 -5
- package/types/radix-ng-primitives-collapsible.d.ts +2 -1
- package/types/radix-ng-primitives-combobox.d.ts +1265 -0
- package/types/radix-ng-primitives-context-menu.d.ts +3 -2
- package/types/radix-ng-primitives-core.d.ts +187 -56
- package/types/radix-ng-primitives-cropper.d.ts +89 -56
- package/types/radix-ng-primitives-date-field.d.ts +11 -5
- package/types/radix-ng-primitives-dialog.d.ts +2 -1
- package/types/radix-ng-primitives-drawer.d.ts +5 -27
- package/types/radix-ng-primitives-editable.d.ts +90 -13
- package/types/radix-ng-primitives-field.d.ts +74 -4
- package/types/radix-ng-primitives-fieldset.d.ts +3 -2
- package/types/radix-ng-primitives-focus-scope.d.ts +2 -1
- package/types/radix-ng-primitives-form.d.ts +124 -0
- package/types/radix-ng-primitives-input.d.ts +75 -5
- package/types/radix-ng-primitives-menu.d.ts +16 -4
- package/types/radix-ng-primitives-menubar.d.ts +2 -1
- package/types/radix-ng-primitives-meter.d.ts +3 -2
- package/types/radix-ng-primitives-navigation-menu.d.ts +1 -1
- package/types/radix-ng-primitives-number-field.d.ts +6 -6
- package/types/radix-ng-primitives-popover.d.ts +2 -1
- package/types/radix-ng-primitives-popper.d.ts +19 -2
- package/types/radix-ng-primitives-preview-card.d.ts +1 -1
- package/types/radix-ng-primitives-progress.d.ts +3 -2
- package/types/radix-ng-primitives-roving-focus.d.ts +4 -3
- package/types/radix-ng-primitives-scroll-area.d.ts +253 -0
- package/types/radix-ng-primitives-select.d.ts +296 -136
- package/types/radix-ng-primitives-slider.d.ts +1 -1
- package/types/radix-ng-primitives-switch.d.ts +1 -1
- package/types/radix-ng-primitives-tabs.d.ts +1 -1
- package/types/radix-ng-primitives-toast.d.ts +378 -0
- package/types/radix-ng-primitives-toggle-group.d.ts +2 -1
- package/types/radix-ng-primitives-toolbar.d.ts +3 -2
- package/types/radix-ng-primitives-tooltip.d.ts +3 -2
|
@@ -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/accessor/control-value-accessor.ts","../../../packages/primitives/core/src/clamp.ts","../../../packages/primitives/core/src/create-context.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/kbd-constants.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/handle-and-dispatch-custom-event.ts","../../../packages/primitives/core/src/id-generator.ts","../../../packages/primitives/core/src/live-announcer.ts","../../../packages/primitives/core/src/predicates.ts","../../../packages/primitives/core/src/provide-token.ts","../../../packages/primitives/core/src/dom/document.ts","../../../packages/primitives/core/src/dom/element-size.ts","../../../packages/primitives/core/src/dom/get-active-element.ts","../../../packages/primitives/core/src/dom/use-resize-observer.ts","../../../packages/primitives/core/src/dom/use-scroll-lock.ts","../../../packages/primitives/core/src/composables/use-arrow-navigation.ts","../../../packages/primitives/core/src/composables/use-grace-area.ts","../../../packages/primitives/core/src/composables/use-transition-status.ts","../../../packages/primitives/core/src/composables/watch.ts","../../../packages/primitives/core/src/positioning/types.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 { Directive, booleanAttribute, inject, input, linkedSignal, output, untracked } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { BooleanInput } from '../types';\nimport { provideValueAccessor } from './provide-value-accessor';\n\n/**\n * A reusable ControlValueAccessor implementation for form controls\n * @template T The type of the control's value\n */\n@Directive({\n exportAs: 'rdxControlValueAccessor',\n providers: [provideValueAccessor(RdxControlValueAccessor)]\n})\nexport class RdxControlValueAccessor<T> implements ControlValueAccessor {\n /**\n * Input for the control's value with alias 'value'\n * @default undefined\n */\n readonly valueInput = input<T>(undefined, { alias: 'value' });\n\n /**\n * Input for the disabled state with alias 'disabled'\n * Uses booleanAttribute transform to convert string attributes to booleans\n * @default false\n */\n readonly disabledInput = input<boolean, BooleanInput>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n readonly valueChange = output<T>();\n\n private readonly _value = linkedSignal(() => this.valueInput());\n\n /**\n * Readonly access to the current value\n */\n readonly value = this._value.asReadonly();\n\n private readonly _disabled = linkedSignal(() => this.disabledInput());\n\n /**\n * Readonly access to the disabled state\n */\n readonly disabled = this._disabled.asReadonly();\n\n // Callbacks for ControlValueAccessor\n onChange?: (value: T | undefined) => void;\n private onTouched?: () => void;\n\n /**\n * Writes a new value to the control (ControlValueAccessor interface)\n * @param value The new value for the control\n */\n writeValue(value: T | undefined): void {\n untracked(() => this._value.set(value as T));\n }\n\n /**\n * Registers a callback for when the control value changes (ControlValueAccessor interface)\n * @param fn The callback function\n */\n registerOnChange(fn: (value: T | undefined) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback for when the control is touched (ControlValueAccessor interface)\n * @param fn The callback function\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control (ControlValueAccessor interface)\n * @param isDisabled Whether the control should be disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n /**\n * Updates the control's value and triggers change detection\n * @param value The new value\n */\n setValue(value: T) {\n this._value.set(value);\n this.valueChange.emit(value);\n this.onChange?.(value);\n }\n\n markAsTouched() {\n this.onTouched?.();\n }\n}\n\n/**\n * Provides a type-safe way to inject the RdxControlValueAccessor\n * @template T The type of the control's value\n * @returns An instance of RdxControlValueAccessor<T>\n */\nexport function injectControlValueAccessor<T>(): RdxControlValueAccessor<T> {\n return inject(RdxControlValueAccessor);\n}\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","// Thanks for idea.\n// https://github.com/unovue/reka-ui/blob/v2/packages/core/src/shared/createContext.ts\n\nimport { inject, InjectionToken, Provider } from '@angular/core';\n\n/**\n * Creates a context with injector and provider functions for a given type\n * @template T The type of the context value\n * @param description Descriptive string for the context (used in token creation)\n * @returns A tuple containing:\n * - injectContext: Function to retrieve the context value\n * - provideContext: Function to create a provider for the context\n */\nexport function createContext<T>(\n description: string\n): readonly [injectContext: (optional?: boolean) => T | null, provideContext: (useFactory: () => T) => Provider] {\n const CONTEXT_TOKEN = new InjectionToken<T>(`${description}Context`);\n\n /**\n * Retrieves the context value from Angular's dependency injection\n * @param optional If true, returns null when context is not provided instead of throwing\n * @returns The context value or null if optional and not provided\n * @throws Error when context is not provided and not optional\n */\n const injectContext = (optional = false): T | null => {\n const value = optional ? inject(CONTEXT_TOKEN, { optional: true }) : inject(CONTEXT_TOKEN);\n\n if (value == null && !optional) {\n throw new Error(`No context provided for token ${CONTEXT_TOKEN.toString()}`);\n }\n\n return value;\n };\n\n /**\n * Creates a provider that can be used to supply the context value\n * @param useFactory Factory function that creates the context value\n * @returns A provider that can be registered in Angular's DI system\n */\n const provideContext = (useFactory: () => T): Provider => ({\n provide: CONTEXT_TOKEN,\n useFactory: useFactory\n });\n\n return [injectContext, provideContext] as const;\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 CalendarIdentifier,\n createCalendar,\n DateFormatter,\n type DateValue,\n getDayOfWeek,\n getLocalTimeZone,\n Time,\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 TimeValue = Time | CalendarDateTime | ZonedDateTime;\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 as CalendarIdentifier);\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\ntype GetDefaultTimeProps = {\n defaultValue?: TimeValue | undefined;\n defaultPlaceholder?: TimeValue | undefined;\n};\n\nexport function getDefaultTime(props: GetDefaultTimeProps): TimeValue {\n const { defaultValue, defaultPlaceholder } = props;\n\n if (defaultValue) {\n return defaultValue.copy();\n }\n\n if (defaultPlaceholder) {\n return defaultPlaceholder.copy();\n }\n\n return new Time(0, 0, 0);\n}\n","/*\n * Implementation ported from from from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/calendar/create.ts\n */\n\nimport { CalendarDate, DateValue, endOfMonth, getDayOfWeek, startOfMonth } from '@internationalized/date';\nimport { chunk } from '../chunk';\nimport { getDaysInMonth, getLastFirstDayOfWeek, getNextLastDayOfWeek } from './comparators';\nimport { Month } from './types';\n\ntype DayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\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\n/**\n * Returns the locale-specific week number\n */\nexport function getWeekNumber(date: DateValue, locale: string = 'en-US', firstDayOfWeek?: DayOfWeek): number {\n const firstDayOfYear = new CalendarDate(date.year, 1, 1);\n\n const firstDayOfYearWeekday = getDayOfWeek(firstDayOfYear, locale, firstDayOfWeek);\n\n const firstWeekStart = firstDayOfYear.subtract({ days: firstDayOfYearWeekday });\n\n // If date is before the first week start It belongs to the last week of the previous year\n if (date.compare(firstWeekStart) < 0) {\n const prevYearDate = new CalendarDate(date.year - 1, 12, 31);\n return getWeekNumber(prevYearDate, locale, firstDayOfWeek);\n }\n\n const days = getDaysBetween(firstWeekStart, date);\n\n // Week number is days divided by 7 plus 1\n return Math.floor(days.length / 7) + 1;\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, opts: DateFormatterOptions = {}): 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: DateFormatterOptions) {\n return new DateFormatter(locale, { ...opts, ...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, options: DateFormatterOptions = {}) {\n return new DateFormatter(locale, { ...opts, month: 'long', year: 'numeric', ...options }).format(date);\n }\n\n function fullMonth(date: Date, options: DateFormatterOptions = {}) {\n return new DateFormatter(locale, { ...opts, month: 'long', ...options }).format(date);\n }\n\n function fullYear(date: Date, options: DateFormatterOptions = {}) {\n return new DateFormatter(locale, { ...opts, year: 'numeric', ...options }).format(date);\n }\n\n function toParts(date: DateValue, options?: DateFormatterOptions) {\n if (isZonedDateTime(date)) {\n return new DateFormatter(locale, {\n ...opts,\n ...options,\n timeZone: date.timeZone\n }).formatToParts(toDate(date));\n } else {\n return new DateFormatter(locale, { ...opts, ...options }).formatToParts(toDate(date));\n }\n }\n\n function dayOfWeek(date: Date, length: DateFormatterOptions['weekday'] = 'narrow') {\n return new DateFormatter(locale, { ...opts, weekday: length }).format(date);\n }\n\n function dayPeriod(date: Date, hourCycle: HourCycle | undefined = undefined) {\n const parts = new DateFormatter(locale, {\n ...opts,\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 // Day period can be \"AM\"/\"PM\" or \"a.m.\"/\"p.m.\" in some locales\n if (value === 'PM' || value === 'p.m.') {\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 = [...EDITABLE_SEGMENT_PARTS, ...NON_EDITABLE_SEGMENT_PARTS] 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 { DateStep, 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: normalizeHourCycle(hourCycle),\n hour12: normalizeHour12(hourCycle)\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 normalizeDateStep(step?: DateStep): DateStep {\n return {\n year: step?.year ?? 1,\n month: step?.month ?? 1,\n day: step?.day ?? 1,\n hour: step?.hour ?? 1,\n minute: step?.minute ?? 1,\n second: step?.second ?? 1,\n millisecond: step?.millisecond ?? 1\n };\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\nexport function normalizeHourCycle(hourCycle: HourCycle) {\n if (hourCycle === 24) return 'h23';\n if (hourCycle === 12) return 'h11';\n return undefined;\n}\n\nexport function normalizeHour12(hourCycle: HourCycle) {\n if (hourCycle === 24) return false;\n if (hourCycle === 12) return true;\n return undefined;\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, normalizeHourCycle } 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 if (part === 'day') {\n return formatter.part(\n props.dateRef.set({\n [part as keyof DateFields]: value,\n /**\n * Edge case for the day field:\n *\n * 1. If the month is filled,\n * we need to ensure that the day snaps to the maximum value of that month.\n * 2. If the month is not filled,\n * we default to the month with the maximum number of days (here just using January, 31 days),\n * so that user can input any possible day.\n */\n month: segmentValues.month ?? 1\n }),\n part,\n { hourCycle: normalizeHourCycle(props.hourCycle) }\n );\n }\n return formatter.part(props.dateRef.set({ [part]: value }), part, {\n hourCycle: normalizeHourCycle(props.hourCycle)\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') {\n return formatter.part(\n props.dateRef.set({\n [part]: value,\n // Same logic as above for the day field\n month: segmentValues.month ?? 1\n }),\n part\n );\n }\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","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 { 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 DateStep = {\n year?: number;\n month?: number;\n day?: number;\n hour?: number;\n minute?: number;\n second?: number;\n millisecond?: number;\n};\n\nexport type DateRange = {\n start: DateValue | undefined;\n end: DateValue | undefined;\n};\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, Signal, 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, DateStep, 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> | WritableSignal<DateValue>;\n hourCycle: HourCycle;\n formatter: Formatter;\n segmentValues: WritableSignal<SegmentValueObj>;\n step: Signal<DateStep>;\n disabled: InputSignal<boolean>;\n readonly: InputSignal<boolean>;\n part: SegmentPart;\n modelValue: ModelSignal<DateValue | undefined> | WritableSignal<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 step = props.step()[part] ?? 1;\n const sign = e.key === ARROW_UP ? step : -step;\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 ];\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 step = props.step()[part] ?? 1;\n const sign = e.key === ARROW_UP ? step : -step;\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 if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\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\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 if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\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\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","export function handleAndDispatchCustomEvent<E extends CustomEvent, OriginalEvent extends Event>(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent<infer D> ? D : never)\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, {\n bubbles: false,\n cancelable: true,\n detail\n });\n if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n target.dispatchEvent(event);\n}\n","import { APP_ID, inject, Injectable } from '@angular/core';\n\n/**\n * Per-prefix counters, kept module-global so generated IDs stay deterministic within a run.\n * Determinism keeps server and client renders in sync, which matters for hydration.\n */\nconst counters = new Map<string, number>();\n\n/**\n * Generates unique, SSR-stable IDs for DOM nodes.\n *\n * IDs are deterministic per prefix (a monotonic counter) so the server and the client produce the\n * same sequence and hydration does not mismatch. The application's `APP_ID` is folded into the\n * prefix so multiple Angular apps on one page don't collide; the default `ng` app id is omitted to\n * keep IDs short for the common single-app case.\n *\n * Prefer the {@link injectId} hook at call sites; inject this service directly only when you need to\n * generate IDs lazily outside an injection context.\n */\n@Injectable({ providedIn: 'root' })\nexport class RdxIdGenerator {\n private readonly appId = inject(APP_ID);\n\n /** Generates a unique ID with the given prefix. */\n getId(prefix: string): string {\n const key = this.appId === 'ng' ? prefix : prefix + this.appId;\n const next = counters.get(key) ?? 0;\n counters.set(key, next + 1);\n\n return `${key}${next}`;\n }\n}\n\n/**\n * Returns a unique, SSR-stable ID for the given prefix — the Angular counterpart of React's\n * `useId`. Must be called in an injection context (e.g. a field initializer or constructor).\n *\n * @example\n * readonly contentId = injectId('rdx-dialog-content-');\n */\nexport function injectId(prefix: string): string {\n return inject(RdxIdGenerator).getId(prefix);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, DOCUMENT, inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nexport type AriaLivePoliteness = 'off' | 'polite' | 'assertive';\n\n/**\n * Announces messages to screen readers through an `aria-live` region, without moving focus.\n *\n * Own replacement for CDK's `LiveAnnouncer` — lazily appends a visually hidden live region to\n * the document body and writes messages into it. No-op on the server.\n */\n@Injectable({ providedIn: 'root' })\nexport class RdxLiveAnnouncer {\n private readonly document = inject(DOCUMENT);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n private liveElement: HTMLElement | null = null;\n private previousTimeout: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n clearTimeout(this.previousTimeout);\n this.liveElement?.remove();\n this.liveElement = null;\n });\n }\n\n /**\n * Announces a message to screen readers.\n *\n * @param message The message to announce.\n * @param politeness The politeness of the announcer element (defaults to `'polite'`).\n * @param duration If provided, the message is cleared after this many milliseconds.\n */\n announce(message: string, politeness: AriaLivePoliteness = 'polite', duration?: number): void {\n if (!this.isBrowser) {\n return;\n }\n\n const liveElement = this.getLiveElement();\n\n clearTimeout(this.previousTimeout);\n\n liveElement.setAttribute('aria-live', politeness);\n\n // Clear the live element first, then set the message after a tick so that screen\n // readers reliably pick up the change even when the text is identical.\n liveElement.textContent = '';\n this.previousTimeout = setTimeout(() => {\n liveElement.textContent = message;\n\n if (typeof duration === 'number') {\n this.previousTimeout = setTimeout(() => (liveElement.textContent = ''), duration);\n }\n });\n }\n\n /** Clears the current announcement. */\n clear(): void {\n if (this.liveElement) {\n this.liveElement.textContent = '';\n }\n }\n\n private getLiveElement(): HTMLElement {\n if (this.liveElement) {\n return this.liveElement;\n }\n\n const element = this.document.createElement('div');\n element.classList.add('rdx-live-announcer');\n element.setAttribute('aria-atomic', 'true');\n element.setAttribute('aria-live', 'polite');\n\n // Visually hide the region while keeping it available to assistive technology.\n element.style.position = 'absolute';\n element.style.width = '1px';\n element.style.height = '1px';\n element.style.margin = '-1px';\n element.style.padding = '0';\n element.style.border = '0';\n element.style.overflow = 'hidden';\n element.style.clip = 'rect(0 0 0 0)';\n element.style.clipPath = 'inset(100%)';\n element.style.whiteSpace = 'nowrap';\n\n this.document.body.appendChild(element);\n this.liveElement = element;\n\n return element;\n }\n}\n","/** Narrows to `null | undefined`. */\nexport function isNullish(value: any): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Structural equality for the value shapes a primitive can hold: primitives (incl. `NaN`), arrays,\n * plain objects, and the common built-ins `Date`, `RegExp`, `Map`, and `Set`. Reference cycles are\n * handled. Other opaque objects (e.g. class instances with no own enumerable properties) fall back\n * to per-key comparison and so only match when they expose equal enumerable state.\n */\nexport function isEqual(a: any, b: any): boolean {\n return equals(a, b, new WeakMap());\n}\n\nfunction equals(a: any, b: any, seen: WeakMap<object, unknown>): boolean {\n if (a === b) {\n return true;\n }\n\n // NaN is the one primitive that is not reference-equal to itself.\n if (typeof a === 'number' && typeof b === 'number') {\n return Number.isNaN(a) && Number.isNaN(b);\n }\n\n if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object') {\n return false;\n }\n\n // Different prototypes (Date vs plain object, class A vs class B, …) are never structurally equal.\n if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) {\n return false;\n }\n\n // Break reference cycles: if this exact pair is already being compared on the current path,\n // the structure has matched so far — treat it as equal. Cleared on ascent so sibling branches\n // start fresh.\n if (seen.get(a) === b) {\n return true;\n }\n seen.set(a, b);\n\n try {\n if (a instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n if (a instanceof RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n\n if (Array.isArray(a)) {\n return a.length === b.length && a.every((item: unknown, index: number) => equals(item, b[index], seen));\n }\n\n if (a instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const [key, value] of a) {\n if (!b.has(key) || !equals(value, b.get(key), seen)) {\n return false;\n }\n }\n\n return true;\n }\n\n if (a instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const value of a) {\n if (!b.has(value)) {\n return false;\n }\n }\n\n return true;\n }\n\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) {\n return false;\n }\n\n return keys.every((key) => Object.prototype.hasOwnProperty.call(b, key) && equals(a[key], b[key], seen));\n } finally {\n seen.delete(a);\n }\n}\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(RdxFooToken, RdxFooDirective),\n * provideValueAccessor(RdxFooDirective)\n * ]\n * })\n * export class RdxFooDirective {}\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 { DOCUMENT, inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\n}\n","import { afterNextRender, DestroyRef, ElementRef, Injector, signal } from '@angular/core';\n\nexport function elementSize({ elementRef, injector }: { elementRef: ElementRef<HTMLElement>; injector: Injector }) {\n const destroyRef = injector.get(DestroyRef);\n const result = signal({\n width: elementRef.nativeElement.offsetWidth,\n height: elementRef.nativeElement.offsetHeight\n });\n\n afterNextRender(\n () => {\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize'];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n } else {\n width = elementRef.nativeElement.offsetWidth;\n height = elementRef.nativeElement.offsetHeight;\n }\n\n result.set({ width, height });\n });\n\n destroyRef.onDestroy(() => resizeObserver.disconnect());\n },\n { injector: injector }\n );\n\n return result.asReadonly();\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","import { effect, EffectRef, ElementRef, Injector, Signal } from '@angular/core';\n\n/**\n * Creates a resize observer effect for element\n *\n * @param options Configuration options\n * @param options.injector Angular injector\n * @param options.element Signal returning the element to observe\n * @param options.onResize Callback when element is resized\n * @returns EffectRef that can be destroyed when needed\n */\nexport function resizeEffect(options: {\n injector: Injector;\n element: Signal<ElementRef | HTMLElement | null | undefined>;\n onResize: ResizeObserverCallback;\n}): EffectRef {\n return effect(\n (onCleanup) => {\n const elementOrRef = options.element();\n if (!elementOrRef) return;\n\n // Extract native element from ElementRef or use directly if it's HTMLElement\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n\n const resizeObserver = new ResizeObserver(options.onResize);\n resizeObserver.observe(element);\n\n onCleanup(() => resizeObserver.disconnect());\n },\n { injector: options.injector }\n );\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, effect, inject, Signal } from '@angular/core';\n\n/**\n * Process-wide ownership of `document.body`'s overflow while one or more overlays lock scrolling.\n *\n * A single shared counter across every primitive that locks scroll is essential: with separate\n * per-primitive counters, a popover and a dialog open at the same time would each capture the\n * other's already-locked `overflow: hidden` as the \"original\" value and restore it on close,\n * leaving the page permanently unscrollable.\n */\nlet originalBodyOverflow: string | null = null;\nlet scrollLockCount = 0;\n\n/**\n * Locks `document.body` scrolling while `active()` is `true`, and restores the original overflow\n * when it becomes `false` or the calling context is destroyed.\n *\n * Lock ownership is shared across all callers via a single module-level counter, so nested or\n * concurrent overlays compose correctly. Must be called in an injection context.\n */\nexport function useScrollLock(active: Signal<boolean>): void {\n const document = inject(DOCUMENT);\n let isLocked = false;\n\n const lock = () => {\n if (isLocked) {\n return;\n }\n\n const body = document.body;\n\n if (scrollLockCount === 0) {\n originalBodyOverflow = body.style.overflow;\n body.style.overflow = 'hidden';\n }\n\n scrollLockCount++;\n isLocked = true;\n };\n\n const unlock = () => {\n if (!isLocked) {\n return;\n }\n\n scrollLockCount--;\n isLocked = false;\n\n if (scrollLockCount === 0 && originalBodyOverflow !== null) {\n document.body.style.overflow = originalBodyOverflow;\n originalBodyOverflow = null;\n }\n };\n\n effect(() => {\n if (active()) {\n lock();\n } else {\n unlock();\n }\n });\n\n inject(DestroyRef).onDestroy(unlock);\n}\n","// made by https://reka-ui.com/\n\nimport { Direction } from '../types';\n\ntype ArrowKeyOptions = 'horizontal' | 'vertical' | 'both';\n\ninterface ArrowNavigationOptions {\n /**\n * The arrow key options to allow navigation\n *\n * @defaultValue \"both\"\n */\n arrowKeyOptions?: ArrowKeyOptions;\n\n /**\n * The attribute name to find the collection items in the parent element.\n *\n * @defaultValue \"data-rdx-collection-item\"\n */\n attributeName?: string;\n\n /**\n * The parent element where contains all the collection items, this will collect every item to be used when nav\n * It will be ignored if attributeName is provided\n *\n * @defaultValue []\n */\n itemsArray?: HTMLElement[];\n\n /**\n * Allow loop navigation. If false, it will stop at the first and last element\n *\n * @defaultValue true\n */\n loop?: boolean;\n\n /**\n * The orientation of the collection\n *\n * @defaultValue \"ltr\"\n */\n dir?: Direction;\n\n /**\n * Prevent the scroll when navigating. This happens when the direction of the\n * key matches the scroll direction of any ancestor scrollable elements.\n *\n * @defaultValue true\n */\n preventScroll?: boolean;\n\n /**\n * By default all currentElement would trigger navigation. If `true`, currentElement nodeName in the ignore list will return null\n *\n * @defaultValue false\n */\n enableIgnoredElement?: boolean;\n\n /**\n * Focus the element after navigation\n *\n * @defaultValue false\n */\n focus?: boolean;\n}\n\nconst ignoredElement = ['INPUT', 'TEXTAREA'];\n\n/**\n * Allow arrow navigation for every html element with data-rdx-collection-item tag\n *\n * @param e Keyboard event\n * @param currentElement Event initiator element or any element that wants to handle the navigation\n * @param parentElement Parent element where contains all the collection items, this will collect every item to be used when nav\n * @param options further options\n * @returns the navigated html element or null if none\n */\nexport function useArrowNavigation(\n e: KeyboardEvent,\n currentElement: HTMLElement,\n parentElement: HTMLElement | undefined,\n options: ArrowNavigationOptions = {}\n): HTMLElement | null {\n if (!currentElement || (options.enableIgnoredElement && ignoredElement.includes(currentElement.nodeName)))\n return null;\n\n const {\n arrowKeyOptions = 'both',\n attributeName = '[data-rdx-collection-item]',\n itemsArray = [],\n loop = true,\n dir = 'ltr',\n preventScroll = true,\n focus = false\n } = options;\n\n const [right, left, up, down, home, end] = [\n e.key === 'ArrowRight',\n e.key === 'ArrowLeft',\n e.key === 'ArrowUp',\n e.key === 'ArrowDown',\n e.key === 'Home',\n e.key === 'End'\n ];\n const goingVertical = up || down;\n const goingHorizontal = right || left;\n if (\n !home &&\n !end &&\n ((!goingVertical && !goingHorizontal) ||\n (arrowKeyOptions === 'vertical' && goingHorizontal) ||\n (arrowKeyOptions === 'horizontal' && goingVertical))\n ) {\n return null;\n }\n\n const allCollectionItems: HTMLElement[] = parentElement\n ? Array.from(parentElement.querySelectorAll(attributeName))\n : itemsArray;\n\n if (!allCollectionItems.length) return null;\n\n if (preventScroll) e.preventDefault();\n\n let item: HTMLElement | null = null;\n\n if (goingHorizontal || goingVertical) {\n const goForward = goingVertical ? down : dir === 'ltr' ? right : left;\n item = findNextFocusableElement(allCollectionItems, currentElement, {\n goForward,\n loop\n });\n } else if (home) {\n item = allCollectionItems.length ? allCollectionItems[0] : null;\n } else if (end) {\n item = allCollectionItems.length ? allCollectionItems[allCollectionItems.length - 1] : null;\n }\n\n if (focus) item?.focus();\n\n return item;\n}\n\ninterface FindNextFocusableElementOptions {\n /**\n * Whether to search forwards or backwards.\n */\n goForward: boolean;\n /**\n * Whether to allow looping the search. If false, it will stop at the first/last element.\n *\n * @default true\n */\n loop?: boolean;\n}\n\n/**\n * Recursive function to find the next focusable element to avoid disabled elements\n *\n * @param elements Elements to navigate\n * @param currentElement Current active element\n * @param options\n * @param iterations\n * @returns next focusable element\n */\nfunction findNextFocusableElement(\n elements: HTMLElement[],\n currentElement: HTMLElement,\n options: FindNextFocusableElementOptions,\n iterations = elements.length\n): HTMLElement | null {\n if (--iterations === 0) return null;\n\n const index = elements.indexOf(currentElement);\n const newIndex = options.goForward ? index + 1 : index - 1;\n\n if (!options.loop && (newIndex < 0 || newIndex >= elements.length)) return null;\n\n const adjustedNewIndex = (newIndex + elements.length) % elements.length;\n const candidate = elements[adjustedNewIndex];\n if (!candidate) return null;\n\n const isDisabled = candidate.hasAttribute('disabled') && candidate.getAttribute('disabled') !== 'false';\n if (isDisabled) {\n return findNextFocusableElement(elements, candidate, options, iterations);\n }\n return candidate;\n}\n","import { effect, signal, type Signal, type WritableSignal } from '@angular/core';\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\nconst graceAreaContainers = new WeakMap<HTMLElement, HTMLElement>();\n\nfunction createSignalEvent<T = void>() {\n const handlers = new Set<(value: T) => void>();\n\n return {\n on(callback: (value: T) => void): () => void {\n handlers.add(callback);\n return () => handlers.delete(callback);\n },\n emitVoid(): void {\n handlers.forEach((handler) => handler(undefined as unknown as T));\n }\n };\n}\n\n/**\n * Keeps hover content open while the pointer crosses the gap between a trigger and a popup.\n */\nexport function useGraceArea(\n triggerEl: Signal<HTMLElement | null | undefined>,\n containerEl: Signal<HTMLElement | null | undefined>,\n resetMs = 300\n) {\n const isPointerInTransit: WritableSignal<boolean> = signal(false);\n const pointerExit = createSignalEvent<void>();\n\n let pointerGraceArea: Polygon | null = null;\n let resetTimer: number | null = null;\n\n function armInTransitAutoReset() {\n if (resetTimer !== null) window.clearTimeout(resetTimer);\n resetTimer = window.setTimeout(() => {\n isPointerInTransit.set(false);\n resetTimer = null;\n }, resetMs);\n }\n\n function clearGraceArea() {\n pointerGraceArea = null;\n isPointerInTransit.set(false);\n\n if (resetTimer !== null) {\n window.clearTimeout(resetTimer);\n resetTimer = null;\n }\n }\n\n function createGraceArea(event: PointerEvent, hoverTarget: HTMLElement) {\n const currentTarget = event.currentTarget as HTMLElement;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n pointerGraceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n isPointerInTransit.set(true);\n armInTransitAutoReset();\n }\n\n function trackPointerGrace(event: PointerEvent) {\n if (!pointerGraceArea || !(event.target instanceof HTMLElement)) return;\n\n const trigger = triggerEl();\n const container = containerEl();\n if (!trigger || !container) return;\n\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const enteredContainer = target.closest<HTMLElement>('[data-grace-area-container]');\n const nestedTrigger = enteredContainer ? graceAreaContainers.get(enteredContainer) : undefined;\n const hasEnteredTarget =\n trigger.contains(target) ||\n container.contains(target) ||\n (nestedTrigger ? container.contains(nestedTrigger) : false);\n const isOutsideGrace = !isPointInPolygon(pointerPosition, pointerGraceArea);\n const isAnotherGraceAreaTrigger = !!target.closest('[data-grace-area-trigger]');\n\n if (hasEnteredTarget) {\n clearGraceArea();\n } else if (isOutsideGrace || isAnotherGraceAreaTrigger) {\n clearGraceArea();\n pointerExit.emitVoid();\n }\n }\n\n effect((onCleanup) => {\n const trigger = triggerEl();\n const container = containerEl();\n const onTriggerLeave = (event: PointerEvent) => {\n if (container) createGraceArea(event, container);\n };\n const onContainerLeave = (event: PointerEvent) => {\n if (trigger) createGraceArea(event, trigger);\n };\n\n onCleanup(() => {\n const doc = trigger?.ownerDocument;\n trigger?.removeEventListener('pointerleave', onTriggerLeave as EventListener);\n container?.removeEventListener('pointerleave', onContainerLeave as EventListener);\n doc?.removeEventListener('pointermove', trackPointerGrace as EventListener);\n trigger?.removeAttribute('data-grace-area-trigger');\n container?.removeAttribute('data-grace-area-container');\n\n if (container && graceAreaContainers.get(container) === trigger) {\n graceAreaContainers.delete(container);\n }\n\n clearGraceArea();\n });\n\n if (!trigger || !container) return;\n\n trigger.setAttribute('data-grace-area-trigger', '');\n container.setAttribute('data-grace-area-container', '');\n graceAreaContainers.set(container, trigger);\n\n trigger.addEventListener('pointerleave', onTriggerLeave as EventListener, { passive: true });\n container.addEventListener('pointerleave', onContainerLeave as EventListener, { passive: true });\n trigger.ownerDocument.addEventListener('pointermove', trackPointerGrace as EventListener, { passive: true });\n });\n\n return {\n isPointerInTransit: isPointerInTransit.asReadonly(),\n onPointerExit: pointerExit.on\n };\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\ntype Polygon = Point[];\n\nfunction getExitSideFromRect(point: Point, rect: DOMRect): Side {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n const min = Math.min(top, bottom, right, left);\n\n if (!Number.isFinite(min)) {\n return 'bottom';\n }\n\n switch (min) {\n case left:\n return 'left';\n case right:\n return 'right';\n case top:\n return 'top';\n case bottom:\n return 'bottom';\n default:\n throw new Error('unreachable');\n }\n}\n\nfunction getPaddedExitPoints(exitPoint: Point, exitSide: Side, padding = 5) {\n const points: Point[] = [];\n\n switch (exitSide) {\n case 'top':\n points.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case 'bottom':\n points.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case 'left':\n points.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case 'right':\n points.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n\n return points;\n}\n\nfunction getPointsFromRect(rect: DOMRect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\n\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point;\n let inside = false;\n\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\nfunction getHull<PointType extends Point>(points: Readonly<Array<PointType>>): Array<PointType> {\n const sortedPoints: Array<PointType> = points.slice() as Array<PointType>;\n sortedPoints.sort((a, b) => a.x - b.x || a.y - b.y);\n return getHullPresorted(sortedPoints);\n}\n\nfunction getHullPresorted<PointType extends Point>(points: Readonly<Array<PointType>>): Array<PointType> {\n if (points.length <= 1) return points.slice() as Array<PointType>;\n\n const upper: Array<PointType> = [];\n for (const point of points) {\n while (upper.length >= 2) {\n const q = upper[upper.length - 1]!;\n const r = upper[upper.length - 2]!;\n if ((q.x - r.x) * (point.y - r.y) >= (q.y - r.y) * (point.x - r.x)) upper.pop();\n else break;\n }\n upper.push(point);\n }\n upper.pop();\n\n const lower: Array<PointType> = [];\n for (let index = points.length - 1; index >= 0; index--) {\n const point = points[index]!;\n while (lower.length >= 2) {\n const q = lower[lower.length - 1]!;\n const r = lower[lower.length - 2]!;\n if ((q.x - r.x) * (point.y - r.y) >= (q.y - r.y) * (point.x - r.x)) lower.pop();\n else break;\n }\n lower.push(point);\n }\n lower.pop();\n\n if (upper.length === 1 && lower.length === 1 && upper[0]!.x === lower[0]!.x && upper[0]!.y === lower[0]!.y) {\n return upper;\n }\n\n return upper.concat(lower);\n}\n","import { afterNextRender, DestroyRef, inject, Injector, signal, Signal } from '@angular/core';\n\n/**\n * Lifecycle phase of an open/close transition.\n *\n * - `'starting'` — the part has just mounted/opened; the enter animation is about to run.\n * - `'ending'` — the part is closing; the exit animation is running.\n * - `undefined` — settled (no transition in progress).\n */\nexport type RdxTransitionStatus = 'starting' | 'ending' | undefined;\n\n/**\n * Grace period (ms) added to an element's declared transition duration before the\n * safety-net timer force-completes a transition. Only matters when the real\n * `animationend`/`transitionend` never arrives (interrupted, replaced without a\n * cancel event, reduced motion, …).\n */\nconst TRANSITION_FALLBACK_BUFFER = 50;\n\nexport interface RdxTransitionStatusRef {\n /** Reactive transition phase, intended for `data-starting-style` / `data-ending-style` bindings. */\n readonly status: Signal<RdxTransitionStatus>;\n /**\n * Registers the element whose CSS transition/animation duration determines when the close\n * transition is considered complete. Returns a cleanup that unregisters it.\n */\n registerElement: (element: HTMLElement) => () => void;\n /** Drives a new transition for the given open state. Cancels any in-flight transition. */\n start: (open: boolean) => void;\n}\n\n/**\n * Shared open/close transition state machine used by overlay primitives (dialog, popover, …).\n *\n * On `start(open)` it flips `status` to `'starting'`/`'ending'`, then — after the next render and\n * (for opening) one animation frame — clears it and waits for the registered element's running CSS\n * animations/transitions to finish (via the Web Animations API) before invoking `onComplete(open)`.\n * Completing on the real `animationend` rather than a duration timer keeps it from firing a frame\n * late. A duration-based timer remains as a safety net, and if no element is registered or it has no\n * animation (also SSR / jsdom, where computed durations are `0`) completion is synchronous.\n *\n * Must be called in an injection context (uses {@link Injector} and {@link DestroyRef}).\n */\nexport function useTransitionStatus(onComplete: (open: boolean) => void): RdxTransitionStatusRef {\n const injector = inject(Injector);\n const destroyRef = inject(DestroyRef);\n const status = signal<RdxTransitionStatus>(undefined);\n\n let element: HTMLElement | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let frame: number | undefined;\n let version = 0;\n\n const clearTimers = () => {\n if (frame !== undefined) {\n cancelAnimationFrame(frame);\n frame = undefined;\n }\n\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n };\n\n const complete = (open: boolean, currentVersion: number) => {\n if (currentVersion !== version) {\n return;\n }\n\n clearTimers();\n status.set(undefined);\n\n if (!destroyRef.destroyed) {\n onComplete(open);\n }\n };\n\n const waitForTransition = (open: boolean, currentVersion: number) => {\n const node = element;\n const duration = node ? getMaxTransitionDuration(node) : 0;\n\n // Nothing animating (also the SSR / jsdom path, where computed durations are\n // 0): settle synchronously, exactly as before.\n if (!node || duration === 0) {\n complete(open, currentVersion);\n return;\n }\n\n // Prefer the Web Animations API so completion lands on the real\n // `animationend` / `transitionend` instead of a timer that can fire a frame\n // late — that lateness is what let a closing collapsible flash back to its\n // natural size before `hidden` was applied.\n const animations = typeof node.getAnimations === 'function' ? node.getAnimations() : [];\n\n // Safety net: if an animation never settles (interrupted, replaced without a\n // cancel event, reduced motion, or simply not exposed by the engine yet)\n // still complete shortly after the declared duration.\n timer = setTimeout(() => complete(open, currentVersion), duration + TRANSITION_FALLBACK_BUFFER);\n\n if (animations.length === 0) {\n return;\n }\n\n // A cancelled animation rejects `finished`; swallow it so reopening (which\n // cancels the in-flight animation) still resolves and settles.\n void Promise.all(animations.map((animation) => animation.finished.catch(() => undefined))).then(() =>\n complete(open, currentVersion)\n );\n };\n\n destroyRef.onDestroy(clearTimers);\n\n return {\n status: status.asReadonly(),\n registerElement: (registered: HTMLElement) => {\n element = registered;\n\n return () => {\n if (element === registered) {\n element = undefined;\n }\n };\n },\n start: (open: boolean) => {\n const currentVersion = ++version;\n clearTimers();\n status.set(open ? 'starting' : 'ending');\n\n afterNextRender(\n () => {\n if (destroyRef.destroyed || currentVersion !== version) {\n return;\n }\n\n if (open) {\n frame = requestAnimationFrame(() => {\n frame = undefined;\n\n if (destroyRef.destroyed || currentVersion !== version) {\n return;\n }\n\n status.set(undefined);\n waitForTransition(open, currentVersion);\n });\n } else {\n waitForTransition(open, currentVersion);\n }\n },\n { injector }\n );\n }\n };\n}\n\n/** Longest of an element's CSS transition / animation durations (including delays), in milliseconds. */\nexport function getMaxTransitionDuration(element: HTMLElement): number {\n const styles = getComputedStyle(element);\n\n return Math.max(\n getMaxCssDuration(styles.transitionDuration, styles.transitionDelay),\n getMaxCssDuration(styles.animationDuration, styles.animationDelay)\n );\n}\n\nfunction getMaxCssDuration(durations: string, delays: string): number {\n const parsedDurations = durations.split(',').map(parseCssTime);\n const parsedDelays = delays.split(',').map(parseCssTime);\n\n return parsedDurations.reduce(\n (max, duration, index) => Math.max(max, duration + parsedDelays[index % parsedDelays.length]),\n 0\n );\n}\n\nfunction parseCssTime(value: string): number {\n const trimmed = value.trim();\n const parsed = Number.parseFloat(trimmed);\n\n if (!Number.isFinite(parsed)) {\n return 0;\n }\n\n return trimmed.endsWith('ms') ? parsed : parsed * 1000;\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","export 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DOCUMENT"],"mappings":"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E,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,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/accessor/control-value-accessor.ts","../../../packages/primitives/core/src/clamp.ts","../../../packages/primitives/core/src/create-context.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/kbd-constants.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/handle-and-dispatch-custom-event.ts","../../../packages/primitives/core/src/id-generator.ts","../../../packages/primitives/core/src/predicates.ts","../../../packages/primitives/core/src/item-helpers.ts","../../../packages/primitives/core/src/live-announcer.ts","../../../packages/primitives/core/src/provide-token.ts","../../../packages/primitives/core/src/dom/document.ts","../../../packages/primitives/core/src/dom/element-size.ts","../../../packages/primitives/core/src/dom/get-active-element.ts","../../../packages/primitives/core/src/dom/use-resize-observer.ts","../../../packages/primitives/core/src/dom/use-scroll-lock.ts","../../../packages/primitives/core/src/composables/use-arrow-navigation.ts","../../../packages/primitives/core/src/composables/use-filter.ts","../../../packages/primitives/core/src/composables/use-grace-area.ts","../../../packages/primitives/core/src/composables/use-list-highlight.ts","../../../packages/primitives/core/src/composables/use-pointer-drag.ts","../../../packages/primitives/core/src/composables/use-transition-status.ts","../../../packages/primitives/core/src/composables/watch.ts","../../../packages/primitives/core/src/positioning/types.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 { Directive, booleanAttribute, inject, input, linkedSignal, output, untracked } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { BooleanInput } from '../types';\nimport { provideValueAccessor } from './provide-value-accessor';\n\n/**\n * A reusable ControlValueAccessor implementation for form controls\n * @template T The type of the control's value\n */\n@Directive({\n exportAs: 'rdxControlValueAccessor',\n providers: [provideValueAccessor(RdxControlValueAccessor)]\n})\nexport class RdxControlValueAccessor<T> implements ControlValueAccessor {\n /**\n * Input for the control's value with alias 'value'\n * @default undefined\n */\n readonly valueInput = input<T>(undefined, { alias: 'value' });\n\n /**\n * Input for the disabled state with alias 'disabled'\n * Uses booleanAttribute transform to convert string attributes to booleans\n * @default false\n */\n readonly disabledInput = input<boolean, BooleanInput>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n readonly valueChange = output<T>();\n\n private readonly _value = linkedSignal(() => this.valueInput());\n\n /**\n * Readonly access to the current value\n */\n readonly value = this._value.asReadonly();\n\n private readonly _disabled = linkedSignal(() => this.disabledInput());\n\n /**\n * Readonly access to the disabled state\n */\n readonly disabled = this._disabled.asReadonly();\n\n // Callbacks for ControlValueAccessor\n onChange?: (value: T | undefined) => void;\n private onTouched?: () => void;\n\n /**\n * Writes a new value to the control (ControlValueAccessor interface)\n * @param value The new value for the control\n */\n writeValue(value: T | undefined): void {\n untracked(() => this._value.set(value as T));\n }\n\n /**\n * Registers a callback for when the control value changes (ControlValueAccessor interface)\n * @param fn The callback function\n */\n registerOnChange(fn: (value: T | undefined) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback for when the control is touched (ControlValueAccessor interface)\n * @param fn The callback function\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control (ControlValueAccessor interface)\n * @param isDisabled Whether the control should be disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n /**\n * Updates the control's value and triggers change detection\n * @param value The new value\n */\n setValue(value: T) {\n this._value.set(value);\n this.valueChange.emit(value);\n this.onChange?.(value);\n }\n\n markAsTouched() {\n this.onTouched?.();\n }\n}\n\n/**\n * Provides a type-safe way to inject the RdxControlValueAccessor\n * @template T The type of the control's value\n * @returns An instance of RdxControlValueAccessor<T>\n */\nexport function injectControlValueAccessor<T>(): RdxControlValueAccessor<T> {\n return inject(RdxControlValueAccessor);\n}\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","// Thanks for idea.\n// https://github.com/unovue/reka-ui/blob/v2/packages/core/src/shared/createContext.ts\n\nimport { inject, InjectionToken, Provider } from '@angular/core';\n\n/**\n * Retrieves the context value from Angular's dependency injection.\n * Overloaded so the non-optional call returns a non-nullable `T` (no `!` needed),\n * while the optional call may return `null`.\n */\nexport interface InjectContext<T> {\n (): T;\n (optional: false): T;\n (optional: true): T | null;\n (optional?: boolean): T | null;\n}\n\n/**\n * Base URL of the documentation site. Each primitive's docs are also served as plain\n * Markdown at `/<section>/<slug>.md`, which both humans and AI agents can open.\n */\nconst DOCS_BASE_URL = 'https://radix-ng.com';\n\n/**\n * Creates a context with injector and provider functions for a given type\n * @template T The type of the context value\n * @param description Descriptive string for the context (used in token creation)\n * @param docs Documentation path for the owning primitive (e.g. `'components/accordion'`),\n * appended to the missing-context error as a link to the required anatomy\n * @returns A tuple containing:\n * - injectContext: Function to retrieve the context value\n * - provideContext: Function to create a provider for the context\n */\nexport function createContext<T>(\n description: string,\n docs?: string\n): readonly [injectContext: InjectContext<T>, provideContext: (useFactory: () => T) => Provider] {\n // Normalize so both `'FooRoot'` and `'FooRootContext'` read as `FooRootContext`.\n const contextName = `${description.replace(/\\s*Context$/, '')}Context`;\n const CONTEXT_TOKEN = new InjectionToken<T>(contextName);\n\n /**\n * Retrieves the context value from Angular's dependency injection\n * @param optional If true, returns null when context is not provided instead of throwing\n * @returns The context value or null if optional and not provided\n * @throws Error when context is not provided and not optional\n */\n const injectContext = (optional = false): T | null => {\n // Always inject optionally so a missing context produces our own descriptive\n // error instead of Angular's generic NullInjectorError. This also catches a\n // provided factory that returns null/undefined for the non-optional case.\n const value = inject(CONTEXT_TOKEN, { optional: true });\n\n if (value == null && !optional) {\n const docsHint = docs ? ` See ${DOCS_BASE_URL}/${docs}.md for the required part hierarchy.` : '';\n\n throw new Error(\n `No \\`${contextName}\\` found. This part must be placed inside the directive ` +\n `that provides \\`${contextName}\\` (usually the primitive's root).${docsHint}`\n );\n }\n\n return value;\n };\n\n /**\n * Creates a provider that can be used to supply the context value\n * @param useFactory Factory function that creates the context value\n * @returns A provider that can be registered in Angular's DI system\n */\n const provideContext = (useFactory: () => T): Provider => ({\n provide: CONTEXT_TOKEN,\n useFactory: useFactory\n });\n\n return [injectContext as InjectContext<T>, provideContext] as const;\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 CalendarIdentifier,\n createCalendar,\n DateFormatter,\n type DateValue,\n getDayOfWeek,\n getLocalTimeZone,\n Time,\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;\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;\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 TimeValue = Time | CalendarDateTime | ZonedDateTime;\n\nexport type Granularity = 'day' | 'hour' | 'minute' | 'second';\nexport type TimeGranularity = 'hour' | 'minute' | 'second';\n\n/**\n * The granularities that require a time component (and therefore a `CalendarDateTime`\n * rather than a `CalendarDate`). Single source of truth — used by both the default-date\n * builder and the segment-value initializer.\n */\nexport const TIME_GRANULARITIES: readonly Granularity[] = ['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)) {\n // Multiple-selection calendars pass an array. The view follows the most recently\n // selected date — consistent with calendar-root's value→placeholder sync. An empty\n // array means \"no selection\", so fall through to the placeholder / today.\n if (defaultValue.length) return defaultValue[defaultValue.length - 1].copy();\n } else if (defaultValue) {\n return defaultValue.copy();\n }\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\n const defaultFormatter = new DateFormatter(locale);\n const calendar = createCalendar(defaultFormatter.resolvedOptions().calendar as CalendarIdentifier);\n\n if (TIME_GRANULARITIES.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\ntype GetDefaultTimeProps = {\n defaultValue?: TimeValue | undefined;\n defaultPlaceholder?: TimeValue | undefined;\n};\n\nexport function getDefaultTime(props: GetDefaultTimeProps): TimeValue {\n const { defaultValue, defaultPlaceholder } = props;\n\n if (defaultValue) {\n return defaultValue.copy();\n }\n\n if (defaultPlaceholder) {\n return defaultPlaceholder.copy();\n }\n\n return new Time(0, 0, 0);\n}\n","/*\n * Implementation ported from from from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/calendar/create.ts\n */\n\nimport { CalendarDate, DateValue, endOfMonth, getDayOfWeek, startOfMonth } from '@internationalized/date';\nimport { chunk } from '../chunk';\nimport { getDaysInMonth, getLastFirstDayOfWeek, getNextLastDayOfWeek } from './comparators';\nimport { Month } from './types';\n\ntype DayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\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\n/**\n * Returns the locale-specific week number\n */\nexport function getWeekNumber(date: DateValue, locale: string = 'en-US', firstDayOfWeek?: DayOfWeek): number {\n const firstDayOfYear = new CalendarDate(date.year, 1, 1);\n\n const firstDayOfYearWeekday = getDayOfWeek(firstDayOfYear, locale, firstDayOfWeek);\n\n const firstWeekStart = firstDayOfYear.subtract({ days: firstDayOfYearWeekday });\n\n // If date is before the first week start It belongs to the last week of the previous year\n if (date.compare(firstWeekStart) < 0) {\n const prevYearDate = new CalendarDate(date.year - 1, 12, 31);\n return getWeekNumber(prevYearDate, locale, firstDayOfWeek);\n }\n\n // `getDaysBetween` is exclusive of both ends, so extend the end by a day to count the\n // full span from `firstWeekStart` through `date` (otherwise every 7-day boundary is\n // under-counted by one and the week number lags).\n const days = getDaysBetween(firstWeekStart, date.add({ days: 1 }));\n\n // Week number is days divided by 7 plus 1\n return Math.floor(days.length / 7) + 1;\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\n/**\n * Constructing a `DateFormatter` (which wraps `Intl.DateTimeFormat`) is by far the most\n * expensive operation here, and `createContent` formats every segment on each keystroke.\n * Reuse instances keyed by locale + options — the set of distinct combinations is tiny and\n * the instances are immutable.\n */\nconst formatterCache = new Map<string, DateFormatter>();\n\nfunction getDateFormatter(locale: string, options: DateFormatterOptions): DateFormatter {\n const key = `${locale}|${JSON.stringify(options)}`;\n let formatter = formatterCache.get(key);\n if (!formatter) {\n formatter = new DateFormatter(locale, options);\n formatterCache.set(key, formatter);\n }\n return formatter;\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, opts: DateFormatterOptions = {}): 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: DateFormatterOptions) {\n return getDateFormatter(locale, { ...opts, ...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, options: DateFormatterOptions = {}) {\n return getDateFormatter(locale, { ...opts, month: 'long', year: 'numeric', ...options }).format(date);\n }\n\n function fullMonth(date: Date, options: DateFormatterOptions = {}) {\n return getDateFormatter(locale, { ...opts, month: 'long', ...options }).format(date);\n }\n\n function fullYear(date: Date, options: DateFormatterOptions = {}) {\n return getDateFormatter(locale, { ...opts, year: 'numeric', ...options }).format(date);\n }\n\n function toParts(date: DateValue, options?: DateFormatterOptions) {\n if (isZonedDateTime(date)) {\n return getDateFormatter(locale, {\n ...opts,\n ...options,\n timeZone: date.timeZone\n }).formatToParts(toDate(date));\n } else {\n return getDateFormatter(locale, { ...opts, ...options }).formatToParts(toDate(date));\n }\n }\n\n function dayOfWeek(date: Date, length: DateFormatterOptions['weekday'] = 'narrow') {\n return getDateFormatter(locale, { ...opts, weekday: length }).format(date);\n }\n\n function dayPeriod(date: Date, hourCycle: HourCycle | undefined = undefined) {\n const parts = getDateFormatter(locale, {\n ...opts,\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 // Day period can be \"AM\"/\"PM\" or \"a.m.\"/\"p.m.\" in some locales\n if (value === 'PM' || value === 'p.m.') {\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 = [...EDITABLE_SEGMENT_PARTS, ...NON_EDITABLE_SEGMENT_PARTS] 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 { DateStep, 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: normalizeHourCycle(hourCycle),\n hour12: normalizeHour12(hourCycle)\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 normalizeDateStep(step?: DateStep): DateStep {\n return {\n year: step?.year ?? 1,\n month: step?.month ?? 1,\n day: step?.day ?? 1,\n hour: step?.hour ?? 1,\n minute: step?.minute ?? 1,\n second: step?.second ?? 1,\n millisecond: step?.millisecond ?? 1\n };\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\nexport function normalizeHourCycle(hourCycle: HourCycle) {\n if (hourCycle === 24) return 'h23';\n if (hourCycle === 12) return 'h11';\n return undefined;\n}\n\nexport function normalizeHour12(hourCycle: HourCycle) {\n if (hourCycle === 24) return false;\n if (hourCycle === 12) return true;\n return undefined;\n}\n","import { InputSignal } from '@angular/core';\nimport { DateFields, DateValue } from '@internationalized/date';\nimport { Granularity, isZonedDateTime, TIME_GRANULARITIES, 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, normalizeHourCycle } from './utils';\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, isTimeValue = false): 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 // A time-only field has no date segments, so they must not be seeded — otherwise they\n // stay null forever and block committing the value (every segment must be filled).\n if (isTimeValue && isDateSegmentPart(key)) 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 !TIME_GRANULARITIES.includes(key as Granularity) && 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 if (part === 'day') {\n return formatter.part(\n props.dateRef.set({\n [part as keyof DateFields]: value,\n /**\n * Edge case for the day field:\n *\n * 1. If the month is filled,\n * we need to ensure that the day snaps to the maximum value of that month.\n * 2. If the month is not filled,\n * we default to the month with the maximum number of days (here just using January, 31 days),\n * so that user can input any possible day.\n */\n month: segmentValues.month ?? 1\n }),\n part,\n { hourCycle: normalizeHourCycle(props.hourCycle) }\n );\n }\n return formatter.part(props.dateRef.set({ [part]: value }), part, {\n hourCycle: normalizeHourCycle(props.hourCycle)\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') {\n return formatter.part(\n props.dateRef.set({\n [part]: value,\n // Same logic as above for the day field\n month: segmentValues.month ?? 1\n }),\n part\n );\n }\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","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 { 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 DateStep = {\n year?: number;\n month?: number;\n day?: number;\n hour?: number;\n minute?: number;\n second?: number;\n millisecond?: number;\n};\n\nexport type DateRange = {\n start: DateValue | undefined;\n end: DateValue | undefined;\n};\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, Signal, 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, DateStep, HourCycle, SegmentPart, SegmentValueObj } from './types';\n\n/** Convert a canonical 24-hour value (0-23) to its 12-hour clock equivalent (1-12). */\nfunction to12Hour(hour: number): number {\n const h = hour % 12;\n return h === 0 ? 12 : h;\n}\n\n/** Combine a 12-hour clock value (1-12) with a day period into a canonical 24-hour value (0-23). */\nfunction to24Hour(hour: number, period: 'AM' | 'PM'): number {\n const h = hour % 12;\n return period === 'PM' ? h + 12 : h;\n}\n\n/** The day period a canonical 24-hour value belongs to. */\nfunction dayPeriodForHour(hour: number): 'AM' | 'PM' {\n return hour >= 12 ? 'PM' : 'AM';\n}\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> | WritableSignal<DateValue>;\n hourCycle: HourCycle;\n formatter: Formatter;\n segmentValues: WritableSignal<SegmentValueObj>;\n step: Signal<DateStep>;\n disabled: InputSignal<boolean>;\n readonly: InputSignal<boolean>;\n part: SegmentPart;\n modelValue: ModelSignal<DateValue | undefined> | WritableSignal<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\ntype NumericSegmentConfig = {\n field: 'day' | 'month' | 'year' | 'hour' | 'minute' | 'second';\n label: string;\n valueMin: number;\n valueMax: number | ((date: DateValue) => number);\n valueText?: (date: DateValue) => string;\n /** Time parts only exist on date-time values; bail out when the segment is absent. */\n timePart?: boolean;\n};\n\n/**\n * Shared spinbutton attributes for the numeric segments (day/month/year/hour/minute/second).\n * Each segment differs only in its field, bounds, label and optional value-text formatting.\n */\nfunction numericSegmentAttrs(props: SegmentAttrProps, config: NumericSegmentConfig) {\n const { segmentValues, placeholder } = props;\n const { field } = config;\n\n if (config.timePart && (!(field in segmentValues) || !(field in placeholder))) return {};\n\n const value = (segmentValues as Record<string, number | null>)[field];\n const isEmpty = value == null;\n const date = value != null ? placeholder.set({ [field]: value } as Partial<DateFields & TimeFields>) : placeholder;\n const valueNow = (date as unknown as Record<string, number>)[field];\n const valueMax = typeof config.valueMax === 'function' ? config.valueMax(date) : config.valueMax;\n const valueText = isEmpty ? 'Empty' : (config.valueText?.(date) ?? `${valueNow}`);\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': config.label,\n 'aria-valuemin': config.valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction daySegmentAttrs(props: SegmentAttrProps) {\n return numericSegmentAttrs(props, {\n field: 'day',\n label: 'day,',\n valueMin: 1,\n valueMax: (date) => getDaysInMonth(date)\n });\n}\n\nfunction monthSegmentAttrs(props: SegmentAttrProps) {\n return numericSegmentAttrs(props, {\n field: 'month',\n label: 'month, ',\n valueMin: 1,\n valueMax: 12,\n valueText: (date) => `${date.month} - ${props.formatter.fullMonth(toDate(date))}`\n });\n}\n\nfunction yearSegmentAttrs(props: SegmentAttrProps) {\n return numericSegmentAttrs(props, { field: 'year', label: 'year, ', valueMin: 1, valueMax: 9999 });\n}\n\nfunction hourSegmentAttrs(props: SegmentAttrProps) {\n const is12h = props.hourCycle === 12;\n return numericSegmentAttrs(props, {\n field: 'hour',\n label: 'hour, ',\n valueMin: is12h ? 1 : 0,\n valueMax: is12h ? 12 : 23,\n valueText: (date) =>\n `${(date as CalendarDateTime).hour} ${(props.segmentValues as DateAndTimeSegmentObj).dayPeriod ?? ''}`,\n timePart: true\n });\n}\n\nfunction minuteSegmentAttrs(props: SegmentAttrProps) {\n return numericSegmentAttrs(props, {\n field: 'minute',\n label: 'minute, ',\n valueMin: 0,\n valueMax: 59,\n timePart: true\n });\n}\n\nfunction secondSegmentAttrs(props: SegmentAttrProps) {\n return numericSegmentAttrs(props, {\n field: 'second',\n label: 'second, ',\n valueMin: 0,\n valueMax: 59,\n timePart: true\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 =\n segmentValues.hour != null ? (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 step = props.step()[part] ?? 1;\n const sign = e.key === ARROW_UP ? step : -step;\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 ];\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 /**\n * Shared two-digit entry state machine for the numeric segments (day, month, hour,\n * minute, second). Types one digit into `prev`, deciding the new value and whether focus\n * should advance to the next segment.\n *\n * @param emptyZero what a leading `0` produces on an empty segment — `0` for time parts\n * (midnight/`:00` are valid), `null` for day/month (no zeroth day/month).\n * @param moveOnOverflow also advance focus when the two-digit total exceeds `max`\n * (day/month behavior; time parts only advance on `num > maxStart`).\n */\n function updateNumberSegment(\n num: number,\n prev: number | null,\n max: number,\n { emptyZero = true, moveOnOverflow = false }: { emptyZero?: boolean; moveOnOverflow?: boolean } = {}\n ): { value: number | null; moveToNext: boolean } {\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n // If the user has left the segment, reset `prev` so typing restarts the segment.\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n // A leading 0 is tracked so the next digit can advance to the next segment.\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: emptyZero ? 0 : null, moveToNext };\n }\n // If the last key was 0, or the first digit can't start a valid two-digit number\n // (> the max start digit), advance to the next segment.\n if (props.lastKeyZero() || num > maxStart) {\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n return { value: num, moveToNext };\n }\n\n // Either the segment already holds two digits, or appending this digit overflows `max`:\n // reset the segment as if backspaced and then typed.\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n\n if (digits === 2 || total > max) {\n if (num > maxStart || (moveOnOverflow && total > max)) {\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function updateDayOrMonth(max: number, num: number, prev: number | null) {\n return updateNumberSegment(num, prev, max, { emptyZero: false, moveOnOverflow: true });\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, max: number) {\n return updateNumberSegment(num, prev, max);\n }\n\n function updateMinuteOrSecond(num: number, prev: number | null) {\n return updateNumberSegment(num, prev, 59);\n }\n\n function minuteSecondIncrementation({ e, part, dateRef, prevValue }: MinuteSecondIncrementProps): number {\n const step = props.step()[part] ?? 1;\n const sign = e.key === ARROW_UP ? step : -step;\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 // Keep the day period in sync with the (just-updated) 24-hour value.\n const updatedHour = (props.segmentValues() as DateAndTimeSegmentObj).hour;\n if ('dayPeriod' in props.segmentValues() && updatedHour != null) {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: dayPeriodForHour(updatedHour) }));\n }\n\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const is12h = hourCycle === 12;\n const period: 'AM' | 'PM' = (values.dayPeriod as 'AM' | 'PM') ?? 'AM';\n\n // Run the two-digit entry machine in the user-visible clock space (1-12 in 12h\n // mode, 0-23 otherwise), then store the canonical 24-hour value. The day period\n // is owned by its own segment, so typing the hour must not flip it.\n const prevDisplay = prevValue === null ? null : is12h ? to12Hour(prevValue) : prevValue;\n const { value, moveToNext } = updateHour(num, prevDisplay, is12h ? 12 : 23);\n const hour = value === null ? null : is12h ? to24Hour(value, period) : value;\n\n props.segmentValues.update((prev) => ({ ...prev, hour }));\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 // Minute and second segments behave identically; only the field differs.\n function handleMinuteOrSecondSegmentKeydown(e: KeyboardEvent, part: 'minute' | 'second') {\n const dateRef = props.placeholder();\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key) || !(part in dateRef) || !(part in values))\n return;\n\n const prevValue = values[part];\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n const next = minuteSecondIncrementation({ e, part, dateRef: props.placeholder(), prevValue });\n props.segmentValues.update((prev) => ({ ...prev, [part]: next }));\n }\n\n if (isNumberString(e.key)) {\n const { value, moveToNext } = updateMinuteOrSecond(Number.parseInt(e.key), prevValue);\n props.segmentValues.update((prev) => ({ ...prev, [part]: value }));\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, [part]: 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 const setPeriod = (period: 'AM' | 'PM') => {\n if (values.dayPeriod === period) return;\n // Re-anchor the canonical 24-hour value to the new period without ever leaving\n // range; keep it null while the hour segment is still empty.\n const hour = values.hour == null ? null : to24Hour(to12Hour(values.hour), period);\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: period, hour }));\n };\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n setPeriod(values.dayPeriod === 'AM' ? 'PM' : 'AM');\n return;\n }\n\n if (['a', 'A'].includes(e.key)) {\n setPeriod('AM');\n return;\n }\n\n if (['p', 'P'].includes(e.key)) {\n setPeriod('PM');\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: (e: KeyboardEvent) => handleMinuteOrSecondSegmentKeydown(e, 'minute'),\n second: (e: KeyboardEvent) => handleMinuteOrSecondSegmentKeydown(e, 'second'),\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","export function handleAndDispatchCustomEvent<E extends CustomEvent, OriginalEvent extends Event>(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent<infer D> ? D : never)\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, {\n bubbles: false,\n cancelable: true,\n detail\n });\n if (handler) target.addEventListener(name, handler, { once: true });\n\n target.dispatchEvent(event);\n}\n","import { APP_ID, inject, Injectable } from '@angular/core';\n\n/**\n * Per-prefix counters, kept module-global so generated IDs stay deterministic within a run.\n * Determinism keeps server and client renders in sync, which matters for hydration.\n */\nconst counters = new Map<string, number>();\n\n/**\n * Generates unique, SSR-stable IDs for DOM nodes.\n *\n * IDs are deterministic per prefix (a monotonic counter) so the server and the client produce the\n * same sequence and hydration does not mismatch. The application's `APP_ID` is folded into the\n * prefix so multiple Angular apps on one page don't collide; the default `ng` app id is omitted to\n * keep IDs short for the common single-app case.\n *\n * Prefer the {@link injectId} hook at call sites; inject this service directly only when you need to\n * generate IDs lazily outside an injection context.\n */\n@Injectable({ providedIn: 'root' })\nexport class RdxIdGenerator {\n private readonly appId = inject(APP_ID);\n\n /** Generates a unique ID with the given prefix. */\n getId(prefix: string): string {\n const key = this.appId === 'ng' ? prefix : prefix + this.appId;\n const next = counters.get(key) ?? 0;\n counters.set(key, next + 1);\n\n return `${key}${next}`;\n }\n}\n\n/**\n * Returns a unique, SSR-stable ID for the given prefix — the Angular counterpart of React's\n * `useId`. Must be called in an injection context (e.g. a field initializer or constructor).\n *\n * @example\n * readonly contentId = injectId('rdx-dialog-content-');\n */\nexport function injectId(prefix: string): string {\n return inject(RdxIdGenerator).getId(prefix);\n}\n","/** Narrows to `null | undefined`. */\nexport function isNullish(value: any): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Structural equality for the value shapes a primitive can hold: primitives (incl. `NaN`), arrays,\n * plain objects, and the common built-ins `Date`, `RegExp`, `Map`, and `Set`. Reference cycles are\n * handled. Other opaque objects (e.g. class instances with no own enumerable properties) fall back\n * to per-key comparison and so only match when they expose equal enumerable state.\n */\nexport function isEqual(a: any, b: any): boolean {\n return equals(a, b, new WeakMap());\n}\n\nfunction equals(a: any, b: any, seen: WeakMap<object, unknown>): boolean {\n if (a === b) {\n return true;\n }\n\n // NaN is the one primitive that is not reference-equal to itself.\n if (typeof a === 'number' && typeof b === 'number') {\n return Number.isNaN(a) && Number.isNaN(b);\n }\n\n if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object') {\n return false;\n }\n\n // Different prototypes (Date vs plain object, class A vs class B, …) are never structurally equal.\n if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) {\n return false;\n }\n\n // Break reference cycles: if this exact pair is already being compared on the current path,\n // the structure has matched so far — treat it as equal. Cleared on ascent so sibling branches\n // start fresh.\n if (seen.get(a) === b) {\n return true;\n }\n seen.set(a, b);\n\n try {\n if (a instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n if (a instanceof RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n\n if (Array.isArray(a)) {\n return a.length === b.length && a.every((item: unknown, index: number) => equals(item, b[index], seen));\n }\n\n if (a instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const [key, value] of a) {\n if (!b.has(key) || !equals(value, b.get(key), seen)) {\n return false;\n }\n }\n\n return true;\n }\n\n if (a instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const value of a) {\n if (!b.has(value)) {\n return false;\n }\n }\n\n return true;\n }\n\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) {\n return false;\n }\n\n return keys.every((key) => Object.prototype.hasOwnProperty.call(b, key) && equals(a[key], b[key], seen));\n } finally {\n seen.delete(a);\n }\n}\n","import { isEqual, isNullish } from './predicates';\n\n/**\n * A comparator for list-item values, aligned with Base UI's `isItemEqualToValue` naming.\n *\n * - a **function** `(a, b) => boolean` — full control over equality;\n * - a **string** — an object key whose values are compared with {@link isEqual} (Reka-style `by`);\n * - omitted — structural deep equality via {@link isEqual}.\n */\nexport type ItemValueComparator<T = unknown> = ((a: T, b: T) => boolean) | string;\n\n/**\n * Converts an item value to the string shown to the user.\n *\n * Strings pass through unchanged; `null`/`undefined` become an empty string; everything else is\n * coerced with `String()`. Primitives that hold object values (e.g. combobox) typically pass their\n * own `itemToStringLabel` to render a field off the object instead.\n */\nexport function itemToStringLabel(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n if (isNullish(value)) {\n return '';\n }\n return String(value);\n}\n\n/**\n * Converts an item value to the string used for form serialization. Defaults to the same rules as\n * {@link itemToStringLabel}; kept as a separate export so a primitive can diverge label vs. value.\n */\nexport function itemToStringValue(value: unknown): string {\n return itemToStringLabel(value);\n}\n\n/**\n * Compares two item values for equality using an optional {@link ItemValueComparator}.\n *\n * @example\n * isItemEqualToValue({ id: 1 }, { id: 1 }, 'id'); // true — compares the `id` key\n * isItemEqualToValue({ id: 1 }, { id: 1 }); // true — deep equality fallback\n */\nexport function isItemEqualToValue<T>(a: T, b: T, comparator?: ItemValueComparator<T>): boolean {\n if (typeof comparator === 'function') {\n return comparator(a, b);\n }\n\n if (typeof comparator === 'string') {\n if (isNullish(a) || isNullish(b)) {\n return a === b;\n }\n return isEqual((a as Record<string, unknown>)[comparator], (b as Record<string, unknown>)[comparator]);\n }\n\n return isEqual(a, b);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, DOCUMENT, inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nexport type AriaLivePoliteness = 'off' | 'polite' | 'assertive';\n\n/**\n * Announces messages to screen readers through an `aria-live` region, without moving focus.\n *\n * Own replacement for CDK's `LiveAnnouncer` — lazily appends a visually hidden live region to\n * the document body and writes messages into it. No-op on the server.\n */\n@Injectable({ providedIn: 'root' })\nexport class RdxLiveAnnouncer {\n private readonly document = inject(DOCUMENT);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n private liveElement: HTMLElement | null = null;\n private previousTimeout: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n clearTimeout(this.previousTimeout);\n this.liveElement?.remove();\n this.liveElement = null;\n });\n }\n\n /**\n * Announces a message to screen readers.\n *\n * @param message The message to announce.\n * @param politeness The politeness of the announcer element (defaults to `'polite'`).\n * @param duration If provided, the message is cleared after this many milliseconds.\n */\n announce(message: string, politeness: AriaLivePoliteness = 'polite', duration?: number): void {\n if (!this.isBrowser) {\n return;\n }\n\n const liveElement = this.getLiveElement();\n\n clearTimeout(this.previousTimeout);\n\n liveElement.setAttribute('aria-live', politeness);\n\n // Clear the live element first, then set the message after a tick so that screen\n // readers reliably pick up the change even when the text is identical.\n liveElement.textContent = '';\n this.previousTimeout = setTimeout(() => {\n liveElement.textContent = message;\n\n if (typeof duration === 'number') {\n this.previousTimeout = setTimeout(() => (liveElement.textContent = ''), duration);\n }\n });\n }\n\n /** Clears the current announcement. */\n clear(): void {\n if (this.liveElement) {\n this.liveElement.textContent = '';\n }\n }\n\n private getLiveElement(): HTMLElement {\n if (this.liveElement) {\n return this.liveElement;\n }\n\n const element = this.document.createElement('div');\n element.classList.add('rdx-live-announcer');\n element.setAttribute('aria-atomic', 'true');\n element.setAttribute('aria-live', 'polite');\n\n // Visually hide the region while keeping it available to assistive technology.\n element.style.position = 'absolute';\n element.style.width = '1px';\n element.style.height = '1px';\n element.style.margin = '-1px';\n element.style.padding = '0';\n element.style.border = '0';\n element.style.overflow = 'hidden';\n element.style.clip = 'rect(0 0 0 0)';\n element.style.clipPath = 'inset(100%)';\n element.style.whiteSpace = 'nowrap';\n\n this.document.body.appendChild(element);\n this.liveElement = element;\n\n return element;\n }\n}\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(RdxFooToken, RdxFooDirective),\n * provideValueAccessor(RdxFooDirective)\n * ]\n * })\n * export class RdxFooDirective {}\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 { DOCUMENT, inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\n}\n","import { afterNextRender, DestroyRef, ElementRef, Injector, signal } from '@angular/core';\n\nexport function elementSize({ elementRef, injector }: { elementRef: ElementRef<HTMLElement>; injector: Injector }) {\n const destroyRef = injector.get(DestroyRef);\n const result = signal({\n width: elementRef.nativeElement.offsetWidth,\n height: elementRef.nativeElement.offsetHeight\n });\n\n afterNextRender(\n () => {\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize'];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n } else {\n width = elementRef.nativeElement.offsetWidth;\n height = elementRef.nativeElement.offsetHeight;\n }\n\n result.set({ width, height });\n });\n\n destroyRef.onDestroy(() => resizeObserver.disconnect());\n },\n { injector: injector }\n );\n\n return result.asReadonly();\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","import { effect, EffectRef, ElementRef, Injector, Signal } from '@angular/core';\n\n/**\n * Creates a resize observer effect for element\n *\n * @param options Configuration options\n * @param options.injector Angular injector\n * @param options.element Signal returning the element to observe\n * @param options.onResize Callback when element is resized\n * @returns EffectRef that can be destroyed when needed\n */\nexport function resizeEffect(options: {\n injector: Injector;\n element: Signal<ElementRef | HTMLElement | null | undefined>;\n onResize: ResizeObserverCallback;\n}): EffectRef {\n return effect(\n (onCleanup) => {\n const elementOrRef = options.element();\n if (!elementOrRef) return;\n\n // Extract native element from ElementRef or use directly if it's HTMLElement\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n\n const resizeObserver = new ResizeObserver(options.onResize);\n resizeObserver.observe(element);\n\n onCleanup(() => resizeObserver.disconnect());\n },\n { injector: options.injector }\n );\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, effect, inject, Signal } from '@angular/core';\n\n/**\n * Process-wide ownership of the document scroller's overflow while one or more overlays lock\n * scrolling.\n *\n * A single shared counter across every primitive that locks scroll is essential: with separate\n * per-primitive counters, a popover and a dialog open at the same time would each capture the\n * other's already-locked state as the \"original\" and restore it on close, leaving the page\n * permanently unscrollable.\n */\nlet original: { bodyOverflow: string; htmlOverflow: string; htmlPaddingRight: string } | null = null;\nlet scrollLockCount = 0;\n\n/**\n * Locks page scrolling while `active()` is `true`, and restores the original state when it becomes\n * `false` or the calling context is destroyed.\n *\n * Locks **both** `<body>` and `<html>`: a `body { overflow: hidden }` lock alone does *not* stop the\n * page when `<html>` is the scroller (e.g. a global `overflow-y: scroll`, as Storybook sets), because\n * body-overflow only propagates to the viewport when `<html>`'s overflow is `visible`. The width of\n * the removed scrollbar is added as `padding-right` on `<html>` so the page doesn't shift.\n *\n * Lock ownership is shared across all callers via a single module-level counter, so nested or\n * concurrent overlays compose correctly. Must be called in an injection context.\n */\nexport function useScrollLock(active: Signal<boolean>): void {\n const document = inject(DOCUMENT);\n let isLocked = false;\n\n const lock = () => {\n if (isLocked) {\n return;\n }\n\n if (scrollLockCount === 0) {\n const html = document.documentElement;\n const body = document.body;\n const win = document.defaultView;\n const scrollbarWidth = win ? Math.max(0, win.innerWidth - html.clientWidth) : 0;\n\n original = {\n bodyOverflow: body.style.overflow,\n htmlOverflow: html.style.overflow,\n htmlPaddingRight: html.style.paddingRight\n };\n\n body.style.overflow = 'hidden';\n html.style.overflow = 'hidden';\n if (scrollbarWidth > 0) {\n const currentPadding = win ? parseFloat(win.getComputedStyle(html).paddingRight) || 0 : 0;\n html.style.paddingRight = `${currentPadding + scrollbarWidth}px`;\n }\n }\n\n scrollLockCount++;\n isLocked = true;\n };\n\n const unlock = () => {\n if (!isLocked) {\n return;\n }\n\n scrollLockCount--;\n isLocked = false;\n\n if (scrollLockCount === 0 && original !== null) {\n const html = document.documentElement;\n document.body.style.overflow = original.bodyOverflow;\n html.style.overflow = original.htmlOverflow;\n html.style.paddingRight = original.htmlPaddingRight;\n original = null;\n }\n };\n\n effect(() => {\n if (active()) {\n lock();\n } else {\n unlock();\n }\n });\n\n inject(DestroyRef).onDestroy(unlock);\n}\n","// made by https://reka-ui.com/\n\nimport { Direction } from '../types';\n\ntype ArrowKeyOptions = 'horizontal' | 'vertical' | 'both';\n\ninterface ArrowNavigationOptions {\n /**\n * The arrow key options to allow navigation\n *\n * @defaultValue \"both\"\n */\n arrowKeyOptions?: ArrowKeyOptions;\n\n /**\n * The attribute name to find the collection items in the parent element.\n *\n * @defaultValue \"data-rdx-collection-item\"\n */\n attributeName?: string;\n\n /**\n * The parent element where contains all the collection items, this will collect every item to be used when nav\n * It will be ignored if attributeName is provided\n *\n * @defaultValue []\n */\n itemsArray?: HTMLElement[];\n\n /**\n * Allow loop navigation. If false, it will stop at the first and last element\n *\n * @defaultValue true\n */\n loop?: boolean;\n\n /**\n * The orientation of the collection\n *\n * @defaultValue \"ltr\"\n */\n dir?: Direction;\n\n /**\n * Prevent the scroll when navigating. This happens when the direction of the\n * key matches the scroll direction of any ancestor scrollable elements.\n *\n * @defaultValue true\n */\n preventScroll?: boolean;\n\n /**\n * By default all currentElement would trigger navigation. If `true`, currentElement nodeName in the ignore list will return null\n *\n * @defaultValue false\n */\n enableIgnoredElement?: boolean;\n\n /**\n * Focus the element after navigation\n *\n * @defaultValue false\n */\n focus?: boolean;\n}\n\nconst ignoredElement = ['INPUT', 'TEXTAREA'];\n\n/**\n * Allow arrow navigation for every html element with data-rdx-collection-item tag\n *\n * @param e Keyboard event\n * @param currentElement Event initiator element or any element that wants to handle the navigation\n * @param parentElement Parent element where contains all the collection items, this will collect every item to be used when nav\n * @param options further options\n * @returns the navigated html element or null if none\n */\nexport function useArrowNavigation(\n e: KeyboardEvent,\n currentElement: HTMLElement,\n parentElement: HTMLElement | undefined,\n options: ArrowNavigationOptions = {}\n): HTMLElement | null {\n if (!currentElement || (options.enableIgnoredElement && ignoredElement.includes(currentElement.nodeName)))\n return null;\n\n const {\n arrowKeyOptions = 'both',\n attributeName = '[data-rdx-collection-item]',\n itemsArray = [],\n loop = true,\n dir = 'ltr',\n preventScroll = true,\n focus = false\n } = options;\n\n const [right, left, up, down, home, end] = [\n e.key === 'ArrowRight',\n e.key === 'ArrowLeft',\n e.key === 'ArrowUp',\n e.key === 'ArrowDown',\n e.key === 'Home',\n e.key === 'End'\n ];\n const goingVertical = up || down;\n const goingHorizontal = right || left;\n if (\n !home &&\n !end &&\n ((!goingVertical && !goingHorizontal) ||\n (arrowKeyOptions === 'vertical' && goingHorizontal) ||\n (arrowKeyOptions === 'horizontal' && goingVertical))\n ) {\n return null;\n }\n\n const allCollectionItems: HTMLElement[] = parentElement\n ? Array.from(parentElement.querySelectorAll(attributeName))\n : itemsArray;\n\n if (!allCollectionItems.length) return null;\n\n if (preventScroll) e.preventDefault();\n\n let item: HTMLElement | null = null;\n\n if (goingHorizontal || goingVertical) {\n const goForward = goingVertical ? down : dir === 'ltr' ? right : left;\n item = findNextFocusableElement(allCollectionItems, currentElement, {\n goForward,\n loop\n });\n } else if (home) {\n item = allCollectionItems.length ? allCollectionItems[0] : null;\n } else if (end) {\n item = allCollectionItems.length ? allCollectionItems[allCollectionItems.length - 1] : null;\n }\n\n if (focus) item?.focus();\n\n return item;\n}\n\ninterface FindNextFocusableElementOptions {\n /**\n * Whether to search forwards or backwards.\n */\n goForward: boolean;\n /**\n * Whether to allow looping the search. If false, it will stop at the first/last element.\n *\n * @default true\n */\n loop?: boolean;\n}\n\n/**\n * Recursive function to find the next focusable element to avoid disabled elements\n *\n * @param elements Elements to navigate\n * @param currentElement Current active element\n * @param options\n * @param iterations\n * @returns next focusable element\n */\nfunction findNextFocusableElement(\n elements: HTMLElement[],\n currentElement: HTMLElement,\n options: FindNextFocusableElementOptions,\n iterations = elements.length\n): HTMLElement | null {\n if (--iterations === 0) return null;\n\n const index = elements.indexOf(currentElement);\n const newIndex = options.goForward ? index + 1 : index - 1;\n\n if (!options.loop && (newIndex < 0 || newIndex >= elements.length)) return null;\n\n const adjustedNewIndex = (newIndex + elements.length) % elements.length;\n const candidate = elements[adjustedNewIndex];\n if (!candidate) return null;\n\n const isDisabled = candidate.hasAttribute('disabled') && candidate.getAttribute('disabled') !== 'false';\n if (isDisabled) {\n return findNextFocusableElement(elements, candidate, options, iterations);\n }\n return candidate;\n}\n","/**\n * Locale-aware string matching backed by `Intl.Collator`, mirroring Base UI's `useFilter`.\n *\n * The collator defaults to `sensitivity: 'base'`, so matching is both case-insensitive and\n * diacritic-insensitive (`\"Äpfel\"` matches `\"ap\"`, `\"résumé\"` matches `\"resume\"`). Pass `locale`\n * and/or any `Intl.Collator` options to override.\n */\nexport interface UseFilterOptions extends Intl.CollatorOptions {\n /** Locale(s) for the collator. Defaults to the runtime's default locale. */\n locale?: Intl.LocalesArgument;\n}\n\n/** Predicates returned by {@link useFilter}. An empty `query` always matches. */\nexport interface FilterPredicates {\n /** Whether `text` contains `query`. */\n contains: (text: string, query: string) => boolean;\n /** Whether `text` starts with `query`. */\n startsWith: (text: string, query: string) => boolean;\n /** Whether `text` ends with `query`. */\n endsWith: (text: string, query: string) => boolean;\n}\n\n/**\n * Creates locale-aware `contains` / `startsWith` / `endsWith` predicates.\n *\n * Matching uses `Intl.Collator` with `sensitivity: 'base'` and `usage: 'search'` by default, so\n * comparisons ignore case and diacritics. An empty (or whitespace-only) `query` matches everything,\n * which is the natural \"no filter applied\" state for a combobox.\n *\n * @example\n * const { contains } = useFilter();\n * contains('Äpfel', 'ap'); // true\n */\nexport function useFilter(options?: UseFilterOptions): FilterPredicates {\n const { locale, ...collatorOptions } = options ?? {};\n const collator = new Intl.Collator(locale, {\n usage: 'search',\n sensitivity: 'base',\n ...collatorOptions\n });\n\n // `Intl.Collator` only compares whole strings, so we scan every substring window of `text`\n // the same length as `query` and treat a collator match as a hit. This keeps the locale rules\n // (case/diacritic folding) consistent with `===`-style equality the collator provides.\n const matchesAt = (text: string, query: string, start: number): boolean =>\n collator.compare(text.slice(start, start + query.length), query) === 0;\n\n const isEmpty = (query: string): boolean => query.length === 0;\n\n return {\n contains(text, query) {\n if (isEmpty(query)) {\n return true;\n }\n for (let i = 0; i + query.length <= text.length; i++) {\n if (matchesAt(text, query, i)) {\n return true;\n }\n }\n return false;\n },\n startsWith(text, query) {\n if (isEmpty(query)) {\n return true;\n }\n return query.length <= text.length && matchesAt(text, query, 0);\n },\n endsWith(text, query) {\n if (isEmpty(query)) {\n return true;\n }\n return query.length <= text.length && matchesAt(text, query, text.length - query.length);\n }\n };\n}\n","import { effect, signal, type Signal, type WritableSignal } from '@angular/core';\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\nconst graceAreaContainers = new WeakMap<HTMLElement, HTMLElement>();\n\nfunction createSignalEvent<T = void>() {\n const handlers = new Set<(value: T) => void>();\n\n return {\n on(callback: (value: T) => void): () => void {\n handlers.add(callback);\n return () => handlers.delete(callback);\n },\n emitVoid(): void {\n handlers.forEach((handler) => handler(undefined as unknown as T));\n }\n };\n}\n\n/**\n * Keeps hover content open while the pointer crosses the gap between a trigger and a popup.\n */\nexport function useGraceArea(\n triggerEl: Signal<HTMLElement | null | undefined>,\n containerEl: Signal<HTMLElement | null | undefined>,\n resetMs = 300\n) {\n const isPointerInTransit: WritableSignal<boolean> = signal(false);\n const pointerExit = createSignalEvent<void>();\n\n let pointerGraceArea: Polygon | null = null;\n let resetTimer: number | null = null;\n\n function armInTransitAutoReset() {\n if (resetTimer !== null) window.clearTimeout(resetTimer);\n resetTimer = window.setTimeout(() => {\n isPointerInTransit.set(false);\n resetTimer = null;\n }, resetMs);\n }\n\n function clearGraceArea() {\n pointerGraceArea = null;\n isPointerInTransit.set(false);\n\n if (resetTimer !== null) {\n window.clearTimeout(resetTimer);\n resetTimer = null;\n }\n }\n\n function createGraceArea(event: PointerEvent, hoverTarget: HTMLElement) {\n const currentTarget = event.currentTarget as HTMLElement;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n pointerGraceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n isPointerInTransit.set(true);\n armInTransitAutoReset();\n }\n\n function trackPointerGrace(event: PointerEvent) {\n if (!pointerGraceArea || !(event.target instanceof HTMLElement)) return;\n\n const trigger = triggerEl();\n const container = containerEl();\n if (!trigger || !container) return;\n\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const enteredContainer = target.closest<HTMLElement>('[data-grace-area-container]');\n const nestedTrigger = enteredContainer ? graceAreaContainers.get(enteredContainer) : undefined;\n const hasEnteredTarget =\n trigger.contains(target) ||\n container.contains(target) ||\n (nestedTrigger ? container.contains(nestedTrigger) : false);\n const isOutsideGrace = !isPointInPolygon(pointerPosition, pointerGraceArea);\n const isAnotherGraceAreaTrigger = !!target.closest('[data-grace-area-trigger]');\n\n if (hasEnteredTarget) {\n clearGraceArea();\n } else if (isOutsideGrace || isAnotherGraceAreaTrigger) {\n clearGraceArea();\n pointerExit.emitVoid();\n }\n }\n\n effect((onCleanup) => {\n const trigger = triggerEl();\n const container = containerEl();\n const onTriggerLeave = (event: PointerEvent) => {\n if (container) createGraceArea(event, container);\n };\n const onContainerLeave = (event: PointerEvent) => {\n if (trigger) createGraceArea(event, trigger);\n };\n\n onCleanup(() => {\n const doc = trigger?.ownerDocument;\n trigger?.removeEventListener('pointerleave', onTriggerLeave as EventListener);\n container?.removeEventListener('pointerleave', onContainerLeave as EventListener);\n doc?.removeEventListener('pointermove', trackPointerGrace as EventListener);\n trigger?.removeAttribute('data-grace-area-trigger');\n container?.removeAttribute('data-grace-area-container');\n\n if (container && graceAreaContainers.get(container) === trigger) {\n graceAreaContainers.delete(container);\n }\n\n clearGraceArea();\n });\n\n if (!trigger || !container) return;\n\n trigger.setAttribute('data-grace-area-trigger', '');\n container.setAttribute('data-grace-area-container', '');\n graceAreaContainers.set(container, trigger);\n\n trigger.addEventListener('pointerleave', onTriggerLeave as EventListener, { passive: true });\n container.addEventListener('pointerleave', onContainerLeave as EventListener, { passive: true });\n trigger.ownerDocument.addEventListener('pointermove', trackPointerGrace as EventListener, { passive: true });\n });\n\n return {\n isPointerInTransit: isPointerInTransit.asReadonly(),\n onPointerExit: pointerExit.on\n };\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\ntype Polygon = Point[];\n\nfunction getExitSideFromRect(point: Point, rect: DOMRect): Side {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n const min = Math.min(top, bottom, right, left);\n\n if (!Number.isFinite(min)) {\n return 'bottom';\n }\n\n switch (min) {\n case left:\n return 'left';\n case right:\n return 'right';\n case top:\n return 'top';\n case bottom:\n return 'bottom';\n default:\n throw new Error('unreachable');\n }\n}\n\nfunction getPaddedExitPoints(exitPoint: Point, exitSide: Side, padding = 5) {\n const points: Point[] = [];\n\n switch (exitSide) {\n case 'top':\n points.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case 'bottom':\n points.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case 'left':\n points.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case 'right':\n points.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n\n return points;\n}\n\nfunction getPointsFromRect(rect: DOMRect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\n\nfunction isPointInPolygon(point: Point, polygon: Polygon) {\n const { x, y } = point;\n let inside = false;\n\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\nfunction getHull<PointType extends Point>(points: Readonly<Array<PointType>>): Array<PointType> {\n const sortedPoints: Array<PointType> = points.slice();\n sortedPoints.sort((a, b) => a.x - b.x || a.y - b.y);\n return getHullPresorted(sortedPoints);\n}\n\nfunction getHullPresorted<PointType extends Point>(points: Readonly<Array<PointType>>): Array<PointType> {\n if (points.length <= 1) return points.slice();\n\n const upper: Array<PointType> = [];\n for (const point of points) {\n while (upper.length >= 2) {\n const q = upper[upper.length - 1];\n const r = upper[upper.length - 2];\n if ((q.x - r.x) * (point.y - r.y) >= (q.y - r.y) * (point.x - r.x)) upper.pop();\n else break;\n }\n upper.push(point);\n }\n upper.pop();\n\n const lower: Array<PointType> = [];\n for (let index = points.length - 1; index >= 0; index--) {\n const point = points[index];\n while (lower.length >= 2) {\n const q = lower[lower.length - 1];\n const r = lower[lower.length - 2];\n if ((q.x - r.x) * (point.y - r.y) >= (q.y - r.y) * (point.x - r.x)) lower.pop();\n else break;\n }\n lower.push(point);\n }\n lower.pop();\n\n if (upper.length === 1 && lower.length === 1 && upper[0].x === lower[0].x && upper[0].y === lower[0].y) {\n return upper;\n }\n\n return upper.concat(lower);\n}\n","import { computed, effect, Injector, Signal, signal, untracked } from '@angular/core';\n\n/** Options for {@link useListHighlight}. */\nexport interface UseListHighlightOptions<T> {\n /** All items in DOM order (e.g. a collection provider's `items()`). */\n items: Signal<readonly T[]>;\n /**\n * Whether an item can be highlighted — must return `false` for hidden (filtered-out) and\n * disabled items. Navigation and self-healing both consult this.\n */\n isNavigable: (item: T) => boolean;\n /** Resolves the item's element id, exposed as {@link ListHighlight.activeId} for `aria-activedescendant`. */\n getId: (item: T) => string | undefined;\n /** Whether navigation wraps at the boundaries. Defaults to `true`. */\n loop?: Signal<boolean>;\n /** Injector to bind the self-healing effect to when not called in an injection context. */\n injector?: Injector;\n}\n\n/** Highlight-model navigation API returned by {@link useListHighlight}. */\nexport interface ListHighlight<T> {\n /** The currently highlighted item, or `null`. DOM focus is never moved by this state. */\n readonly highlightedItem: Signal<T | null>;\n /** The highlighted item's element id, or `undefined`. Bind to `aria-activedescendant`. */\n readonly activeId: Signal<string | undefined>;\n /** Highlight the first navigable item. */\n first(): void;\n /** Highlight the last navigable item. */\n last(): void;\n /** Highlight the next navigable item (wraps when `loop`). */\n next(): void;\n /** Highlight the previous navigable item (wraps when `loop`). */\n previous(): void;\n /** Highlight a specific item (ignored if not navigable); pass `null` to clear. */\n set(item: T | null): void;\n /** Clear the highlight. */\n clear(): void;\n}\n\n/**\n * Highlight-model list navigation over a set of items, decoupled from DOM focus.\n *\n * Unlike roving `tabindex`, the highlight is pure state: callers move it with the keyboard while DOM\n * focus stays on a single controlling element (e.g. a combobox `<input>`), which exposes\n * {@link ListHighlight.activeId} as `aria-activedescendant`. Navigation only ever lands on items for\n * which `isNavigable` returns `true`, so hidden (filtered-out) and disabled items are skipped. A\n * self-healing effect clears the highlight if its item stops being navigable or leaves the list, so\n * `activeId` never references a detached or hidden element.\n *\n * Must be called in an injection context, or given an `injector`.\n */\nexport function useListHighlight<T>(options: UseListHighlightOptions<T>): ListHighlight<T> {\n const { items, isNavigable, getId, loop, injector } = options;\n\n const highlighted = signal<T | null>(null);\n\n const navigable = computed(() => items().filter((item) => isNavigable(item)));\n\n const activeId = computed(() => {\n const item = highlighted();\n return item === null ? undefined : getId(item);\n });\n\n const setIfNavigable = (item: T | null): void => {\n if (item === null || isNavigable(item)) {\n highlighted.set(item);\n }\n };\n\n const step = (direction: 1 | -1): void => {\n const list = navigable();\n if (list.length === 0) {\n highlighted.set(null);\n return;\n }\n\n const current = highlighted();\n const currentIndex = current === null ? -1 : list.indexOf(current);\n\n // No valid anchor → enter from the appropriate end.\n if (currentIndex === -1) {\n highlighted.set(direction === 1 ? list[0] : list[list.length - 1]);\n return;\n }\n\n let nextIndex = currentIndex + direction;\n const shouldLoop = loop ? loop() : true;\n\n if (nextIndex < 0) {\n nextIndex = shouldLoop ? list.length - 1 : 0;\n } else if (nextIndex >= list.length) {\n nextIndex = shouldLoop ? 0 : list.length - 1;\n }\n\n highlighted.set(list[nextIndex]);\n };\n\n // Self-heal: drop a highlight that is no longer navigable (filtered out, disabled, destroyed).\n effect(\n () => {\n const list = navigable();\n const current = untracked(highlighted);\n if (current !== null && !list.includes(current)) {\n highlighted.set(null);\n }\n },\n injector ? { injector } : undefined\n );\n\n return {\n highlightedItem: highlighted.asReadonly(),\n activeId,\n first() {\n const list = navigable();\n highlighted.set(list.length > 0 ? list[0] : null);\n },\n last() {\n const list = navigable();\n highlighted.set(list.length > 0 ? list[list.length - 1] : null);\n },\n next() {\n step(1);\n },\n previous() {\n step(-1);\n },\n set: setIfNavigable,\n clear() {\n highlighted.set(null);\n }\n };\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { assertInInjectionContext, DestroyRef, ElementRef, inject, PLATFORM_ID } from '@angular/core';\n\nexport interface RdxPointerDragHandlers {\n /** Whether a press may begin a drag (e.g. enabled, not on an opt-out element, at a scroll edge). */\n canStart: (event: PointerEvent) => boolean;\n /** A drag actually began (the pointer moved past the start threshold). */\n onStart: (event: PointerEvent) => void;\n /** Pointer moved during a drag. Return `false` to end the gesture early (treated as not committed). */\n onMove: (event: PointerEvent) => void | boolean;\n /** The drag ended. `committed` is true only for a normal `pointerup`, false for cancel/lost-capture/early-stop. */\n onEnd: (event: PointerEvent, committed: boolean) => void;\n}\n\n/** Pointer travel (px) before a press becomes a drag — below this a press stays a click/tap. */\nconst DRAG_THRESHOLD = 4;\n\n/**\n * Shared pointer-drag lifecycle for gesture primitives (drawer swipe, toast swipe, etc.).\n *\n * A press only becomes a drag once the pointer moves past {@link DRAG_THRESHOLD}; until then it is a\n * plain tap, so clicks on buttons inside the element keep working (the gesture never captures the\n * pointer for a tap). Once dragging, the pointer is captured so a drag that leaves the element still\n * completes, and `lostpointercapture` / `pointercancel` count as a non-committed end — a swallowed\n * `pointerup` (native context menu, OS gesture, tab switch) can never wedge the gesture. Only the\n * primary pointer is tracked, so a second finger can't start a parallel gesture. No-op outside the\n * browser, keeping SSR safe.\n *\n * `onEnd` is NOT called if the host is destroyed mid-drag — callers that pair `onStart`/`onEnd`\n * (e.g. to pause/resume timers) should balance that case in their own `DestroyRef` cleanup.\n *\n * Must be called from an injection context (a directive/component constructor).\n */\nexport function usePointerDrag(handlers: RdxPointerDragHandlers): void {\n assertInInjectionContext(usePointerDrag);\n\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return;\n }\n\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n let pointerId: number | null = null;\n let downEvent: PointerEvent | null = null;\n let dragging = false;\n\n const removeWindowListeners = () => {\n window.removeEventListener('pointermove', onPointerMove);\n window.removeEventListener('pointerup', onPointerUp);\n window.removeEventListener('pointercancel', onPointerUp);\n };\n\n const reset = (event: PointerEvent, committed: boolean) => {\n if (pointerId === null) {\n return;\n }\n\n const wasDragging = dragging;\n\n try {\n host.releasePointerCapture?.(pointerId);\n } catch {\n // Capture may already be gone (e.g. on lostpointercapture); ignore.\n }\n\n pointerId = null;\n downEvent = null;\n dragging = false;\n removeWindowListeners();\n\n // A press that never crossed the threshold was a tap — leave the click untouched.\n if (wasDragging) {\n handlers.onEnd(event, committed);\n }\n };\n\n function onPointerMove(event: PointerEvent) {\n if (event.pointerId !== pointerId || !downEvent) {\n return;\n }\n\n if (!dragging) {\n const dx = event.clientX - downEvent.clientX;\n const dy = event.clientY - downEvent.clientY;\n\n if (Math.hypot(dx, dy) < DRAG_THRESHOLD) {\n return;\n }\n\n dragging = true;\n\n try {\n host.setPointerCapture?.(pointerId);\n } catch {\n // Not all environments support pointer capture; the window listeners still drive the gesture.\n }\n\n handlers.onStart(downEvent);\n }\n\n if (handlers.onMove(event) === false) {\n reset(event, false);\n }\n }\n\n function onPointerUp(event: PointerEvent) {\n if (event.pointerId !== pointerId) {\n return;\n }\n\n reset(event, event.type === 'pointerup');\n }\n\n const onLostCapture = (event: PointerEvent) => {\n if (event.pointerId === pointerId) {\n reset(event, false);\n }\n };\n\n const onPointerDown = (event: PointerEvent) => {\n if (pointerId !== null || !event.isPrimary || event.button !== 0 || !handlers.canStart(event)) {\n return;\n }\n\n pointerId = event.pointerId;\n downEvent = event;\n dragging = false;\n\n window.addEventListener('pointermove', onPointerMove);\n window.addEventListener('pointerup', onPointerUp);\n window.addEventListener('pointercancel', onPointerUp);\n };\n\n host.addEventListener('pointerdown', onPointerDown);\n host.addEventListener('lostpointercapture', onLostCapture as EventListener);\n\n inject(DestroyRef).onDestroy(() => {\n host.removeEventListener('pointerdown', onPointerDown);\n host.removeEventListener('lostpointercapture', onLostCapture as EventListener);\n removeWindowListeners();\n });\n}\n","import { afterNextRender, DestroyRef, inject, Injector, signal, Signal } from '@angular/core';\n\n/**\n * Lifecycle phase of an open/close transition.\n *\n * - `'starting'` — the part has just mounted/opened; the enter animation is about to run.\n * - `'ending'` — the part is closing; the exit animation is running.\n * - `undefined` — settled (no transition in progress).\n */\nexport type RdxTransitionStatus = 'starting' | 'ending' | undefined;\n\n/**\n * Grace period (ms) added to an element's declared transition duration before the\n * safety-net timer force-completes a transition. Only matters when the real\n * `animationend`/`transitionend` never arrives (interrupted, replaced without a\n * cancel event, reduced motion, …).\n */\nconst TRANSITION_FALLBACK_BUFFER = 50;\n\nexport interface RdxTransitionStatusRef {\n /** Reactive transition phase, intended for `data-starting-style` / `data-ending-style` bindings. */\n readonly status: Signal<RdxTransitionStatus>;\n /**\n * Registers the element whose CSS transition/animation duration determines when the close\n * transition is considered complete. Returns a cleanup that unregisters it.\n */\n registerElement: (element: HTMLElement) => () => void;\n /** Drives a new transition for the given open state. Cancels any in-flight transition. */\n start: (open: boolean) => void;\n}\n\n/**\n * Shared open/close transition state machine used by overlay primitives (dialog, popover, …).\n *\n * On `start(open)` it flips `status` to `'starting'`/`'ending'`, then — after the next render and\n * (for opening) one animation frame — clears it and waits for the registered element's running CSS\n * animations/transitions to finish (via the Web Animations API) before invoking `onComplete(open)`.\n * Completing on the real `animationend` rather than a duration timer keeps it from firing a frame\n * late. A duration-based timer remains as a safety net, and if no element is registered or it has no\n * animation (also SSR / jsdom, where computed durations are `0`) completion is synchronous.\n *\n * Must be called in an injection context (uses {@link Injector} and {@link DestroyRef}).\n */\nexport function useTransitionStatus(onComplete: (open: boolean) => void): RdxTransitionStatusRef {\n const injector = inject(Injector);\n const destroyRef = inject(DestroyRef);\n const status = signal<RdxTransitionStatus>(undefined);\n\n let element: HTMLElement | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let frame: number | undefined;\n let version = 0;\n\n const clearTimers = () => {\n if (frame !== undefined) {\n cancelAnimationFrame(frame);\n frame = undefined;\n }\n\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n };\n\n const complete = (open: boolean, currentVersion: number) => {\n if (currentVersion !== version) {\n return;\n }\n\n clearTimers();\n status.set(undefined);\n\n if (!destroyRef.destroyed) {\n onComplete(open);\n }\n };\n\n const waitForTransition = (open: boolean, currentVersion: number) => {\n const node = element;\n const duration = node ? getMaxTransitionDuration(node) : 0;\n\n // Nothing animating (also the SSR / jsdom path, where computed durations are\n // 0): settle synchronously, exactly as before.\n if (!node || duration === 0) {\n complete(open, currentVersion);\n return;\n }\n\n // Prefer the Web Animations API so completion lands on the real\n // `animationend` / `transitionend` instead of a timer that can fire a frame\n // late — that lateness is what let a closing collapsible flash back to its\n // natural size before `hidden` was applied.\n const animations = typeof node.getAnimations === 'function' ? node.getAnimations() : [];\n\n // Safety net: if an animation never settles (interrupted, replaced without a\n // cancel event, reduced motion, or simply not exposed by the engine yet)\n // still complete shortly after the declared duration.\n timer = setTimeout(() => complete(open, currentVersion), duration + TRANSITION_FALLBACK_BUFFER);\n\n if (animations.length === 0) {\n return;\n }\n\n // A cancelled animation rejects `finished`; swallow it so reopening (which\n // cancels the in-flight animation) still resolves and settles.\n void Promise.all(animations.map((animation) => animation.finished.catch(() => undefined))).then(() =>\n complete(open, currentVersion)\n );\n };\n\n destroyRef.onDestroy(clearTimers);\n\n return {\n status: status.asReadonly(),\n registerElement: (registered: HTMLElement) => {\n element = registered;\n\n return () => {\n if (element === registered) {\n element = undefined;\n }\n };\n },\n start: (open: boolean) => {\n const currentVersion = ++version;\n clearTimers();\n status.set(open ? 'starting' : 'ending');\n\n afterNextRender(\n () => {\n if (destroyRef.destroyed || currentVersion !== version) {\n return;\n }\n\n if (open) {\n frame = requestAnimationFrame(() => {\n frame = undefined;\n\n if (destroyRef.destroyed || currentVersion !== version) {\n return;\n }\n\n status.set(undefined);\n waitForTransition(open, currentVersion);\n });\n } else {\n waitForTransition(open, currentVersion);\n }\n },\n { injector }\n );\n }\n };\n}\n\n/** Longest of an element's CSS transition / animation durations (including delays), in milliseconds. */\nexport function getMaxTransitionDuration(element: HTMLElement): number {\n const styles = getComputedStyle(element);\n\n return Math.max(\n getMaxCssDuration(styles.transitionDuration, styles.transitionDelay),\n getMaxCssDuration(styles.animationDuration, styles.animationDelay)\n );\n}\n\nfunction getMaxCssDuration(durations: string, delays: string): number {\n const parsedDurations = durations.split(',').map(parseCssTime);\n const parsedDelays = delays.split(',').map(parseCssTime);\n\n return parsedDurations.reduce(\n (max, duration, index) => Math.max(max, duration + parsedDelays[index % parsedDelays.length]),\n 0\n );\n}\n\nfunction parseCssTime(value: string): number {\n const trimmed = value.trim();\n const parsed = Number.parseFloat(trimmed);\n\n if (!Number.isFinite(parsed)) {\n return 0;\n }\n\n return trimmed.endsWith('ms') ? parsed : parsed * 1000;\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","export 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DOCUMENT"],"mappings":"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AAE,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,EA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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,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,IAAI,EAAE;A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"}
|