@eui/eds 22.0.0-alpha.27 → 22.0.0-alpha.28

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.
@@ -1 +1 @@
1
- {"version":3,"file":"eui-eds-eds-datepicker.mjs","sources":["../../eds-datepicker/eds-date-adapter.ts","../../eds-datepicker/eds-datepicker.ts","../../eds-datepicker/eds-datepicker.html","../../eds-datepicker/eds-luxon-date-adapter.ts","../../eds-datepicker/index.ts","../../eds-datepicker/eui-eds-eds-datepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Abstract date adapter interface for eds-datepicker.\n * Implement this to support different date libraries (native Date, Luxon, etc.)\n */\nexport interface EdsDateAdapter<D = unknown> {\n /** Create a date from year, month (0-based), day. */\n create(year: number, month: number, day: number): D;\n /** Get today's date. */\n today(): D;\n /** Get the year of a date. */\n getYear(date: D): number;\n /** Get the month (0-based) of a date. */\n getMonth(date: D): number;\n /** Get the day of the month. */\n getDate(date: D): number;\n /** Get day of week (1=Monday, 7=Sunday). */\n getDayOfWeek(date: D): number;\n /** Get number of days in the given month. */\n getDaysInMonth(date: D): number;\n /** Add months to a date. */\n addMonths(date: D, months: number): D;\n /** Format a date for display (dd/mm/yyyy by default). */\n format(date: D, formatStr?: string): string;\n /** Parse a string into a date. Returns null if invalid. */\n parse(value: string, formatStr?: string): D | null;\n /** Check if a date is before another. */\n isBefore(date: D, compare: D): boolean;\n /** Check if a date is after another. */\n isAfter(date: D, compare: D): boolean;\n /** Check if two dates are the same day. */\n isSameDay(a: D, b: D): boolean;\n /** Check if a value is a valid date. */\n isValid(date: unknown): date is D;\n}\n\n/** Injection token for the EDS date adapter. */\nexport const EDS_DATE_ADAPTER = new InjectionToken<EdsDateAdapter>('EDS_DATE_ADAPTER');\n\n/**\n * Default native Date adapter.\n */\nexport class EdsNativeDateAdapter implements EdsDateAdapter<Date> {\n create(year: number, month: number, day: number): Date {\n return new Date(year, month, day);\n }\n\n today(): Date {\n return new Date();\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n // Convert Sunday=0 to Monday=1...Sunday=7\n const dow = date.getDay();\n return dow === 0 ? 7 : dow;\n }\n\n getDaysInMonth(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n addMonths(date: Date, months: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n }\n\n format(date: Date, _formatStr?: string): string {\n const d = String(date.getDate()).padStart(2, '0');\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const y = date.getFullYear();\n return `${d}/${m}/${y}`;\n }\n\n parse(value: string, _formatStr?: string): Date | null {\n const parts = value.split('/');\n if (parts.length !== 3) {\n return null;\n }\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n if (isNaN(day) || isNaN(month) || isNaN(year)) {\n return null;\n }\n const date = new Date(year, month, day);\n if (date.getDate() !== day || date.getMonth() !== month || date.getFullYear() !== year) {\n return null;\n }\n return date;\n }\n\n isBefore(date: Date, compare: Date): boolean {\n return date.getTime() < compare.getTime();\n }\n\n isAfter(date: Date, compare: Date): boolean {\n return date.getTime() > compare.getTime();\n }\n\n isSameDay(a: Date, b: Date): boolean {\n return a.getDate() === b.getDate() &&\n a.getMonth() === b.getMonth() &&\n a.getFullYear() === b.getFullYear();\n }\n\n isValid(date: unknown): date is Date {\n return date instanceof Date && !isNaN(date.getTime());\n }\n}\n\n/** Provider helper for using the native Date adapter. */\nexport function provideEdsNativeDateAdapter(): { provide: typeof EDS_DATE_ADAPTER; useClass: typeof EdsNativeDateAdapter } {\n return { provide: EDS_DATE_ADAPTER, useClass: EdsNativeDateAdapter };\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n model,\n signal,\n computed,\n booleanAttribute,\n inject,\n ElementRef,\n HostListener,\n OnDestroy,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_INPUT_TEXT } from '@eui/eds/eds-input-text';\nimport { EDS_INPUT_GROUP } from '@eui/eds/eds-input-group';\nimport { EDS_BUTTON } from '@eui/eds/eds-button';\nimport { EDS_TIMEPICKER } from '@eui/eds/eds-timepicker';\nimport { EDS_DATE_ADAPTER, EdsDateAdapter, EdsNativeDateAdapter } from './eds-date-adapter';\n\n@Component({\n selector: 'eds-datepicker',\n templateUrl: './eds-datepicker.html',\n styleUrl: './eds-datepicker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [...EDS_ICON, ...EDS_INPUT_TEXT, ...EDS_INPUT_GROUP, ...EDS_BUTTON, ...EDS_TIMEPICKER],\n host: {\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsDatepicker implements ControlValueAccessor, OnDestroy {\n /** Data attribute for e2e testing. */\n e2eAttr = input('eds-datepicker');\n\n /** Input element id. */\n inputId = input('eds-datepicker-input');\n\n /** Placeholder text. */\n placeholder = input('dd/mm/yyyy');\n\n /** Aria label for the input. */\n ariaLabel = input('Date input');\n\n /** Date format for display (default: dd/mm/yyyy). */\n dateFormat = input('dd/mm/yyyy');\n\n /** Minimum selectable date. */\n minDate = input<Date | null>(null);\n\n /** Maximum selectable date. */\n maxDate = input<Date | null>(null);\n\n /** Whether the datepicker is disabled. */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the datepicker is readonly. */\n readonly = input(false, { transform: booleanAttribute });\n\n /** Whether to show a timepicker alongside the calendar. */\n isDatetimepicker = input(false, { transform: booleanAttribute });\n\n /** Whether the timepicker shows seconds. */\n hasSeconds = input(false, { transform: booleanAttribute });\n\n /** Emitted when a date is selected. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dateChange = output<any>();\n\n /** The selected date value. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value = model<any>(null);\n\n /** Whether the calendar dropdown is open. */\n isOpen = signal(false);\n\n /** Whether the dropdown should open above the input. */\n dropUp = signal(false);\n\n /** Current viewed month/year for the calendar. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n viewDate = signal<any>(null);\n\n /** Weekday header labels. */\n weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\n /** Current time selection (for datetime mode). */\n selectedTime = signal<{ hours: number; minutes: number; seconds?: number }>({ hours: 0, minutes: 0, seconds: 0 });\n\n /** The date adapter (native Date or Luxon). */\n adapter: EdsDateAdapter = inject(EDS_DATE_ADAPTER, { optional: true }) || new EdsNativeDateAdapter();\n\n /** Computed display value for the input. */\n displayValue = computed(() => {\n const date = this.value();\n if (!date || !this.adapter.isValid(date)) {\n return '';\n }\n const dateStr = this.adapter.format(date);\n if (this.isDatetimepicker()) {\n const time = this.selectedTime();\n const h = String(time.hours).padStart(2, '0');\n const m = String(time.minutes).padStart(2, '0');\n if (this.hasSeconds() && time.seconds !== undefined) {\n const s = String(time.seconds).padStart(2, '0');\n return `${dateStr} ${h}:${m}:${s}`;\n }\n return `${dateStr} ${h}:${m}`;\n }\n return dateStr;\n });\n\n /** Computed month/year label for the header. */\n monthLabel = computed(() => {\n const d = this.viewDate() || this.adapter.today();\n const months = ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'];\n return `${months[this.adapter.getMonth(d)]} ${this.adapter.getYear(d)}`;\n });\n\n /** Computed calendar day grid. */\n calendarDays = computed(() => {\n const vd = this.viewDate() || this.adapter.today();\n const year = this.adapter.getYear(vd);\n const month = this.adapter.getMonth(vd);\n const firstDay = this.adapter.create(year, month, 1);\n // Monday-based: 1=Mon, 7=Sun\n const startDay = this.adapter.getDayOfWeek(firstDay) - 1;\n const daysInMonth = this.adapter.getDaysInMonth(firstDay);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const days: (any | null)[] = [];\n\n // Empty slots before first day\n for (let i = 0; i < startDay; i++) {\n days.push(null);\n }\n // Actual days\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(this.adapter.create(year, month, i));\n }\n return days;\n });\n\n private _elementRef = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n private _documentClickListener: ((e: Event) => void) | null = null;\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n this.viewDate.set(this.adapter.today());\n }\n\n ngOnDestroy(): void {\n this._removeDocumentListener();\n }\n\n // --- Public API ---\n\n toggle(): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.isOpen.set(!this.isOpen());\n if (this.isOpen()) {\n // Set view to selected date or today\n this.viewDate.set(this.adapter.isValid(this.value()) ? this.value() : this.adapter.today());\n\n // Check if there's enough space below — if not, open above\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n const dropdownHeight = this.isDatetimepicker() ? 420 : 320;\n const spaceBelow = window.innerHeight - rect.bottom;\n this.dropUp.set(spaceBelow < dropdownHeight && rect.top > dropdownHeight);\n\n this._addDocumentListener();\n } else {\n this._removeDocumentListener();\n }\n }\n\n onInputClick(): void {\n if (!this.isOpen()) {\n this.toggle();\n }\n }\n\n prevMonth(): void {\n this.viewDate.set(this.adapter.addMonths(this.viewDate(), -1));\n }\n\n nextMonth(): void {\n this.viewDate.set(this.adapter.addMonths(this.viewDate(), 1));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n selectDay(date: any): void {\n this.value.set(date);\n this._onChange(date);\n this.dateChange.emit(date);\n this.isOpen.set(false);\n this._removeDocumentListener();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isToday(date: any): boolean {\n return this.adapter.isSameDay(date, this.adapter.today());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isSelected(date: any): boolean {\n const sel = this.value();\n if (!sel || !this.adapter.isValid(sel)) {\n return false;\n }\n return this.adapter.isSameDay(date, sel);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isOutsideRange(date: any): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min && this.adapter.isBefore(date, min)) {\n return true;\n }\n if (max && this.adapter.isAfter(date, max)) {\n return true;\n }\n return false;\n }\n\n onInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n if (val === '') {\n this.value.set(null);\n this._onChange(null);\n this.dateChange.emit(null);\n return;\n }\n const parsed = this.adapter.parse(val);\n if (parsed) {\n this.value.set(parsed);\n this._onChange(parsed);\n this.dateChange.emit(parsed);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTimeChange(time: any): void {\n this.selectedTime.set(time);\n // If a date is already selected, re-emit with the time applied\n // (consumer is responsible for combining date + time as needed)\n }\n\n // --- ControlValueAccessor ---\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // Handled via input signal\n }\n\n // ControlValueAccessor\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n // --- Private ---\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any\n private _onChange: (value: any) => void = () => { /* noop */ };\n\n private _addDocumentListener(): void {\n if (!this._documentClickListener) {\n this._documentClickListener = (e: Event): void => {\n if (!this._elementRef.nativeElement.contains(e.target)) {\n this.isOpen.set(false);\n this._removeDocumentListener();\n }\n };\n document.addEventListener('click', this._documentClickListener);\n }\n }\n\n private _removeDocumentListener(): void {\n if (this._documentClickListener) {\n document.removeEventListener('click', this._documentClickListener);\n this._documentClickListener = null;\n }\n }\n}\n","<div edsInputGroup class=\"eds-datepicker__group\">\n <div edsInputGroupAddon>\n <input edsInputText\n [edsClearable]=\"false\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n (click)=\"onInputClick()\"/>\n @if (!readonly() && !disabled()) {\n <button edsButton variant=\"secondary\" color=\"neutral\" size=\"s\" type=\"button\" [attr.aria-label]=\"'Open calendar'\" (click)=\"toggle()\">\n <eds-icon icon=\"calendar-blank:core\"/>\n </button>\n }\n </div>\n</div>\n\n@if (isOpen()) {\n <div class=\"eds-datepicker__dropdown\" [class.eds-datepicker__dropdown--up]=\"dropUp()\" (click)=\"$event.stopPropagation()\">\n <div class=\"eds-datepicker__header\">\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Previous month\">‹</button>\n <span class=\"eds-datepicker__month-label\">{{ monthLabel() }}</span>\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Next month\">›</button>\n </div>\n <div class=\"eds-datepicker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"eds-datepicker__weekday\">{{ day }}</span>\n }\n </div>\n <div class=\"eds-datepicker__days\">\n @for (day of calendarDays(); track $index) {\n @if (day === null) {\n <span class=\"eds-datepicker__day eds-datepicker__day--empty\"></span>\n } @else {\n <button class=\"eds-datepicker__day\"\n type=\"button\"\n [class.eds-datepicker__day--today]=\"isToday(day)\"\n [class.eds-datepicker__day--selected]=\"isSelected(day)\"\n [class.eds-datepicker__day--outside]=\"isOutsideRange(day)\"\n [disabled]=\"isOutsideRange(day)\"\n (click)=\"selectDay(day)\">\n {{ adapter.getDate(day) }}\n </button>\n }\n }\n </div>\n\n @if (isDatetimepicker()) {\n <div class=\"eds-datepicker__time\">\n <eds-timepicker [hasSeconds]=\"hasSeconds()\" [disabled]=\"disabled()\" (timeChange)=\"onTimeChange($event)\"/>\n </div>\n }\n </div>\n}\n","import { EdsDateAdapter, EDS_DATE_ADAPTER } from './eds-date-adapter';\n\n// Luxon is expected to be available as a peer dependency\n// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any\nlet luxonDateTime: any = null;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-explicit-any\n luxonDateTime = (globalThis as any).__luxon_DateTime;\n} catch {\n // Will be set on first use\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLuxonDateTime(): any {\n if (!luxonDateTime) {\n // Attempt to access luxon from the global scope (loaded via import in consumer app)\n throw new Error('Luxon DateTime not available. Ensure luxon is imported in your application and call setLuxonDateTime(DateTime) before using EdsLuxonDateAdapter.');\n }\n return luxonDateTime;\n}\n\n/**\n * Call this function to provide the Luxon DateTime class to the adapter.\n * Usage in your app:\n * ```typescript\n * import { DateTime } from 'luxon';\n * import { setLuxonDateTime } from '@eui/eds/eds-datepicker';\n * setLuxonDateTime(DateTime);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setLuxonDateTime(dt: any): void {\n luxonDateTime = dt;\n}\n\n/**\n * Luxon DateTime adapter for eds-datepicker.\n * Requires `luxon` package to be installed and `setLuxonDateTime(DateTime)` to be called.\n */\nexport class EdsLuxonDateAdapter implements EdsDateAdapter<unknown> {\n create(year: number, month: number, day: number): unknown {\n const DT = getLuxonDateTime();\n // Luxon months are 1-based\n return DT.local(year, month + 1, day);\n }\n\n today(): unknown {\n return getLuxonDateTime().now();\n }\n\n getYear(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).year;\n }\n\n getMonth(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).month - 1;\n }\n\n getDate(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).day;\n }\n\n getDayOfWeek(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).weekday;\n }\n\n getDaysInMonth(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).daysInMonth;\n }\n\n addMonths(date: unknown, months: number): unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).plus({ months }).startOf('month');\n }\n\n format(date: unknown, formatStr?: string): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).toFormat(formatStr || 'dd/MM/yyyy');\n }\n\n parse(value: string, formatStr?: string): unknown | null {\n const DT = getLuxonDateTime();\n const parsed = DT.fromFormat(value, formatStr || 'dd/MM/yyyy');\n return parsed.isValid ? parsed : null;\n }\n\n isBefore(date: unknown, compare: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any) < (compare as any);\n }\n\n isAfter(date: unknown, compare: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any) > (compare as any);\n }\n\n isSameDay(a: unknown, b: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (a as any).hasSame(b, 'day');\n }\n\n isValid(date: unknown): date is unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return date != null && (date as any).isValid === true;\n }\n}\n\n/** Provider helper for using the Luxon adapter. */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function provideEdsLuxonDateAdapter() {\n return { provide: EDS_DATE_ADAPTER, useClass: EdsLuxonDateAdapter };\n}\n","import { EdsDatepicker } from './eds-datepicker';\n\nexport { EdsDatepicker };\nexport { EDS_DATE_ADAPTER, EdsDateAdapter, EdsNativeDateAdapter, provideEdsNativeDateAdapter } from './eds-date-adapter';\nexport { EdsLuxonDateAdapter, provideEdsLuxonDateAdapter, setLuxonDateTime } from './eds-luxon-date-adapter';\n\n/** Convenience array for importing eds-datepicker. */\nexport const EDS_DATEPICKER = [\n EdsDatepicker,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-eds-eds-datepicker.mjs","sources":["../../eds-datepicker/eds-date-adapter.ts","../../eds-datepicker/eds-datepicker.ts","../../eds-datepicker/eds-datepicker.html","../../eds-datepicker/eds-luxon-date-adapter.ts","../../eds-datepicker/index.ts","../../eds-datepicker/eui-eds-eds-datepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Abstract date adapter interface for eds-datepicker.\n * Implement this to support different date libraries (native Date, Luxon, etc.)\n */\nexport interface EdsDateAdapter<D = unknown> {\n /** Create a date from year, month (0-based), day. */\n create(year: number, month: number, day: number): D;\n /** Get today's date. */\n today(): D;\n /** Get the year of a date. */\n getYear(date: D): number;\n /** Get the month (0-based) of a date. */\n getMonth(date: D): number;\n /** Get the day of the month. */\n getDate(date: D): number;\n /** Get day of week (1=Monday, 7=Sunday). */\n getDayOfWeek(date: D): number;\n /** Get number of days in the given month. */\n getDaysInMonth(date: D): number;\n /** Add months to a date. */\n addMonths(date: D, months: number): D;\n /** Format a date for display (dd/mm/yyyy by default). */\n format(date: D, formatStr?: string): string;\n /** Parse a string into a date. Returns null if invalid. */\n parse(value: string, formatStr?: string): D | null;\n /** Check if a date is before another. */\n isBefore(date: D, compare: D): boolean;\n /** Check if a date is after another. */\n isAfter(date: D, compare: D): boolean;\n /** Check if two dates are the same day. */\n isSameDay(a: D, b: D): boolean;\n /** Check if a value is a valid date. */\n isValid(date: unknown): date is D;\n}\n\n/** Injection token for the EDS date adapter. */\nexport const EDS_DATE_ADAPTER = new InjectionToken<EdsDateAdapter>('EDS_DATE_ADAPTER');\n\n/**\n * Default native Date adapter.\n */\nexport class EdsNativeDateAdapter implements EdsDateAdapter<Date> {\n create(year: number, month: number, day: number): Date {\n return new Date(year, month, day);\n }\n\n today(): Date {\n return new Date();\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n // Convert Sunday=0 to Monday=1...Sunday=7\n const dow = date.getDay();\n return dow === 0 ? 7 : dow;\n }\n\n getDaysInMonth(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n addMonths(date: Date, months: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n }\n\n format(date: Date, _formatStr?: string): string {\n const d = String(date.getDate()).padStart(2, '0');\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const y = date.getFullYear();\n return `${d}/${m}/${y}`;\n }\n\n parse(value: string, _formatStr?: string): Date | null {\n const parts = value.split('/');\n if (parts.length !== 3) {\n return null;\n }\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n if (isNaN(day) || isNaN(month) || isNaN(year)) {\n return null;\n }\n const date = new Date(year, month, day);\n if (date.getDate() !== day || date.getMonth() !== month || date.getFullYear() !== year) {\n return null;\n }\n return date;\n }\n\n isBefore(date: Date, compare: Date): boolean {\n return date.getTime() < compare.getTime();\n }\n\n isAfter(date: Date, compare: Date): boolean {\n return date.getTime() > compare.getTime();\n }\n\n isSameDay(a: Date, b: Date): boolean {\n return a.getDate() === b.getDate() &&\n a.getMonth() === b.getMonth() &&\n a.getFullYear() === b.getFullYear();\n }\n\n isValid(date: unknown): date is Date {\n return date instanceof Date && !isNaN(date.getTime());\n }\n}\n\n/** Provider helper for using the native Date adapter. */\nexport function provideEdsNativeDateAdapter(): { provide: typeof EDS_DATE_ADAPTER; useClass: typeof EdsNativeDateAdapter } {\n return { provide: EDS_DATE_ADAPTER, useClass: EdsNativeDateAdapter };\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n model,\n signal,\n computed,\n booleanAttribute,\n inject,\n ElementRef,\n HostListener,\n OnDestroy,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_INPUT_TEXT } from '@eui/eds/eds-input-text';\nimport { EDS_INPUT_BUTTON } from '@eui/eds/eds-input-button';\nimport { EDS_BUTTON } from '@eui/eds/eds-button';\nimport { EDS_TIMEPICKER } from '@eui/eds/eds-timepicker';\nimport { EDS_DATE_ADAPTER, EdsDateAdapter, EdsNativeDateAdapter } from './eds-date-adapter';\n\n@Component({\n selector: 'eds-datepicker',\n templateUrl: './eds-datepicker.html',\n styleUrl: './eds-datepicker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [...EDS_ICON, ...EDS_INPUT_TEXT, ...EDS_INPUT_BUTTON, ...EDS_BUTTON, ...EDS_TIMEPICKER],\n host: {\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsDatepicker implements ControlValueAccessor, OnDestroy {\n /** Data attribute for e2e testing. */\n e2eAttr = input('eds-datepicker');\n\n /** Input element id. */\n inputId = input('eds-datepicker-input');\n\n /** Placeholder text. */\n placeholder = input('dd/mm/yyyy');\n\n /** Aria label for the input. */\n ariaLabel = input('Date input');\n\n /** Date format for display (default: dd/mm/yyyy). */\n dateFormat = input('dd/mm/yyyy');\n\n /** Minimum selectable date. */\n minDate = input<Date | null>(null);\n\n /** Maximum selectable date. */\n maxDate = input<Date | null>(null);\n\n /** Whether the datepicker is disabled. */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the datepicker is readonly. */\n readonly = input(false, { transform: booleanAttribute });\n\n /** Whether to show a timepicker alongside the calendar. */\n isDatetimepicker = input(false, { transform: booleanAttribute });\n\n /** Whether the timepicker shows seconds. */\n hasSeconds = input(false, { transform: booleanAttribute });\n\n /** Emitted when a date is selected. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dateChange = output<any>();\n\n /** The selected date value. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value = model<any>(null);\n\n /** Whether the calendar dropdown is open. */\n isOpen = signal(false);\n\n /** Whether the dropdown should open above the input. */\n dropUp = signal(false);\n\n /** Current viewed month/year for the calendar. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n viewDate = signal<any>(null);\n\n /** Weekday header labels. */\n weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\n /** Current time selection (for datetime mode). */\n selectedTime = signal<{ hours: number; minutes: number; seconds?: number }>({ hours: 0, minutes: 0, seconds: 0 });\n\n /** The date adapter (native Date or Luxon). */\n adapter: EdsDateAdapter = inject(EDS_DATE_ADAPTER, { optional: true }) || new EdsNativeDateAdapter();\n\n /** Computed display value for the input. */\n displayValue = computed(() => {\n const date = this.value();\n if (!date || !this.adapter.isValid(date)) {\n return '';\n }\n const dateStr = this.adapter.format(date);\n if (this.isDatetimepicker()) {\n const time = this.selectedTime();\n const h = String(time.hours).padStart(2, '0');\n const m = String(time.minutes).padStart(2, '0');\n if (this.hasSeconds() && time.seconds !== undefined) {\n const s = String(time.seconds).padStart(2, '0');\n return `${dateStr} ${h}:${m}:${s}`;\n }\n return `${dateStr} ${h}:${m}`;\n }\n return dateStr;\n });\n\n /** Computed month/year label for the header. */\n monthLabel = computed(() => {\n const d = this.viewDate() || this.adapter.today();\n const months = ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'];\n return `${months[this.adapter.getMonth(d)]} ${this.adapter.getYear(d)}`;\n });\n\n /** Computed calendar day grid. */\n calendarDays = computed(() => {\n const vd = this.viewDate() || this.adapter.today();\n const year = this.adapter.getYear(vd);\n const month = this.adapter.getMonth(vd);\n const firstDay = this.adapter.create(year, month, 1);\n // Monday-based: 1=Mon, 7=Sun\n const startDay = this.adapter.getDayOfWeek(firstDay) - 1;\n const daysInMonth = this.adapter.getDaysInMonth(firstDay);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const days: (any | null)[] = [];\n\n // Empty slots before first day\n for (let i = 0; i < startDay; i++) {\n days.push(null);\n }\n // Actual days\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(this.adapter.create(year, month, i));\n }\n return days;\n });\n\n private _elementRef = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n private _documentClickListener: ((e: Event) => void) | null = null;\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n this.viewDate.set(this.adapter.today());\n }\n\n ngOnDestroy(): void {\n this._removeDocumentListener();\n }\n\n // --- Public API ---\n\n toggle(): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.isOpen.set(!this.isOpen());\n if (this.isOpen()) {\n // Set view to selected date or today\n this.viewDate.set(this.adapter.isValid(this.value()) ? this.value() : this.adapter.today());\n\n // Check if there's enough space below — if not, open above\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n const dropdownHeight = this.isDatetimepicker() ? 420 : 320;\n const spaceBelow = window.innerHeight - rect.bottom;\n this.dropUp.set(spaceBelow < dropdownHeight && rect.top > dropdownHeight);\n\n this._addDocumentListener();\n } else {\n this._removeDocumentListener();\n }\n }\n\n onInputClick(): void {\n if (!this.isOpen()) {\n this.toggle();\n }\n }\n\n prevMonth(): void {\n this.viewDate.set(this.adapter.addMonths(this.viewDate(), -1));\n }\n\n nextMonth(): void {\n this.viewDate.set(this.adapter.addMonths(this.viewDate(), 1));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n selectDay(date: any): void {\n this.value.set(date);\n this._onChange(date);\n this.dateChange.emit(date);\n this.isOpen.set(false);\n this._removeDocumentListener();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isToday(date: any): boolean {\n return this.adapter.isSameDay(date, this.adapter.today());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isSelected(date: any): boolean {\n const sel = this.value();\n if (!sel || !this.adapter.isValid(sel)) {\n return false;\n }\n return this.adapter.isSameDay(date, sel);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isOutsideRange(date: any): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min && this.adapter.isBefore(date, min)) {\n return true;\n }\n if (max && this.adapter.isAfter(date, max)) {\n return true;\n }\n return false;\n }\n\n onInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n if (val === '') {\n this.value.set(null);\n this._onChange(null);\n this.dateChange.emit(null);\n return;\n }\n const parsed = this.adapter.parse(val);\n if (parsed) {\n this.value.set(parsed);\n this._onChange(parsed);\n this.dateChange.emit(parsed);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTimeChange(time: any): void {\n this.selectedTime.set(time);\n // If a date is already selected, re-emit with the time applied\n // (consumer is responsible for combining date + time as needed)\n }\n\n // --- ControlValueAccessor ---\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // Handled via input signal\n }\n\n // ControlValueAccessor\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n // --- Private ---\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any\n private _onChange: (value: any) => void = () => { /* noop */ };\n\n private _addDocumentListener(): void {\n if (!this._documentClickListener) {\n this._documentClickListener = (e: Event): void => {\n if (!this._elementRef.nativeElement.contains(e.target)) {\n this.isOpen.set(false);\n this._removeDocumentListener();\n }\n };\n document.addEventListener('click', this._documentClickListener);\n }\n }\n\n private _removeDocumentListener(): void {\n if (this._documentClickListener) {\n document.removeEventListener('click', this._documentClickListener);\n this._documentClickListener = null;\n }\n }\n}\n","<eds-input-button class=\"eds-datepicker__group\">\n <input edsInputText\n [edsClearable]=\"false\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n (click)=\"onInputClick()\"/>\n @if (!readonly() && !disabled()) {\n <button edsButton variant=\"secondary\" color=\"neutral\" size=\"s\" type=\"button\" [attr.aria-label]=\"'Open calendar'\" (click)=\"toggle()\">\n <eds-icon icon=\"calendar-blank:core\"/>\n </button>\n }\n</eds-input-button>\n\n@if (isOpen()) {\n <div class=\"eds-datepicker__dropdown\" [class.eds-datepicker__dropdown--up]=\"dropUp()\" (click)=\"$event.stopPropagation()\">\n <div class=\"eds-datepicker__header\">\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Previous month\">‹</button>\n <span class=\"eds-datepicker__month-label\">{{ monthLabel() }}</span>\n <button class=\"eds-datepicker__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Next month\">›</button>\n </div>\n <div class=\"eds-datepicker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"eds-datepicker__weekday\">{{ day }}</span>\n }\n </div>\n <div class=\"eds-datepicker__days\">\n @for (day of calendarDays(); track $index) {\n @if (day === null) {\n <span class=\"eds-datepicker__day eds-datepicker__day--empty\"></span>\n } @else {\n <button class=\"eds-datepicker__day\"\n type=\"button\"\n [class.eds-datepicker__day--today]=\"isToday(day)\"\n [class.eds-datepicker__day--selected]=\"isSelected(day)\"\n [class.eds-datepicker__day--outside]=\"isOutsideRange(day)\"\n [disabled]=\"isOutsideRange(day)\"\n (click)=\"selectDay(day)\">\n {{ adapter.getDate(day) }}\n </button>\n }\n }\n </div>\n\n @if (isDatetimepicker()) {\n <div class=\"eds-datepicker__time\">\n <eds-timepicker [hasSeconds]=\"hasSeconds()\" [disabled]=\"disabled()\" (timeChange)=\"onTimeChange($event)\"/>\n </div>\n }\n </div>\n}\n","import { EdsDateAdapter, EDS_DATE_ADAPTER } from './eds-date-adapter';\n\n// Luxon is expected to be available as a peer dependency\n// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any\nlet luxonDateTime: any = null;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-explicit-any\n luxonDateTime = (globalThis as any).__luxon_DateTime;\n} catch {\n // Will be set on first use\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLuxonDateTime(): any {\n if (!luxonDateTime) {\n // Attempt to access luxon from the global scope (loaded via import in consumer app)\n throw new Error('Luxon DateTime not available. Ensure luxon is imported in your application and call setLuxonDateTime(DateTime) before using EdsLuxonDateAdapter.');\n }\n return luxonDateTime;\n}\n\n/**\n * Call this function to provide the Luxon DateTime class to the adapter.\n * Usage in your app:\n * ```typescript\n * import { DateTime } from 'luxon';\n * import { setLuxonDateTime } from '@eui/eds/eds-datepicker';\n * setLuxonDateTime(DateTime);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setLuxonDateTime(dt: any): void {\n luxonDateTime = dt;\n}\n\n/**\n * Luxon DateTime adapter for eds-datepicker.\n * Requires `luxon` package to be installed and `setLuxonDateTime(DateTime)` to be called.\n */\nexport class EdsLuxonDateAdapter implements EdsDateAdapter<unknown> {\n create(year: number, month: number, day: number): unknown {\n const DT = getLuxonDateTime();\n // Luxon months are 1-based\n return DT.local(year, month + 1, day);\n }\n\n today(): unknown {\n return getLuxonDateTime().now();\n }\n\n getYear(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).year;\n }\n\n getMonth(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).month - 1;\n }\n\n getDate(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).day;\n }\n\n getDayOfWeek(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).weekday;\n }\n\n getDaysInMonth(date: unknown): number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).daysInMonth;\n }\n\n addMonths(date: unknown, months: number): unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).plus({ months }).startOf('month');\n }\n\n format(date: unknown, formatStr?: string): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any).toFormat(formatStr || 'dd/MM/yyyy');\n }\n\n parse(value: string, formatStr?: string): unknown | null {\n const DT = getLuxonDateTime();\n const parsed = DT.fromFormat(value, formatStr || 'dd/MM/yyyy');\n return parsed.isValid ? parsed : null;\n }\n\n isBefore(date: unknown, compare: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any) < (compare as any);\n }\n\n isAfter(date: unknown, compare: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (date as any) > (compare as any);\n }\n\n isSameDay(a: unknown, b: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (a as any).hasSame(b, 'day');\n }\n\n isValid(date: unknown): date is unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return date != null && (date as any).isValid === true;\n }\n}\n\n/** Provider helper for using the Luxon adapter. */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function provideEdsLuxonDateAdapter() {\n return { provide: EDS_DATE_ADAPTER, useClass: EdsLuxonDateAdapter };\n}\n","import { EdsDatepicker } from './eds-datepicker';\n\nexport { EdsDatepicker };\nexport { EDS_DATE_ADAPTER, EdsDateAdapter, EdsNativeDateAdapter, provideEdsNativeDateAdapter } from './eds-date-adapter';\nexport { EdsLuxonDateAdapter, provideEdsLuxonDateAdapter, setLuxonDateTime } from './eds-luxon-date-adapter';\n\n/** Convenience array for importing eds-datepicker. */\nexport const EDS_DATEPICKER = [\n EdsDatepicker,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eui/eds",
3
- "version": "22.0.0-alpha.27",
3
+ "version": "22.0.0-alpha.28",
4
4
  "tag": "next",
5
5
  "description": "eUI EDS components package",
6
6
  "homepage": "https://eui.ecdevops.eu",
@@ -51,6 +51,11 @@ declare class EdsBreadcrumbItem {
51
51
  icon: _angular_core.InputSignal<string>;
52
52
  /** ARIA label for accessibility (especially useful for icon-only items). */
53
53
  ariaLabel: _angular_core.InputSignal<string>;
54
+ /**
55
+ * Data attribute value for end-to-end testing identification.
56
+ * @default 'eds-breadcrumb-item'
57
+ */
58
+ e2eAttr: _angular_core.InputSignal<string>;
54
59
  /** Navigation target — string URL or Router commands array. Undefined makes item non-clickable. */
55
60
  link: _angular_core.InputSignal<string | any[]>;
56
61
  /** Additional navigation options passed to Angular Router. */
@@ -62,7 +67,7 @@ declare class EdsBreadcrumbItem {
62
67
  private _router;
63
68
  onClick(): void;
64
69
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EdsBreadcrumbItem, never>;
65
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EdsBreadcrumbItem, "eds-breadcrumb-item", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "navigationExtras": { "alias": "navigationExtras"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
70
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EdsBreadcrumbItem, "eds-breadcrumb-item", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "e2eAttr": { "alias": "e2eAttr"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "navigationExtras": { "alias": "navigationExtras"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
66
71
  }
67
72
 
68
73
  /** Convenience array for importing all eds-breadcrumb components. */
@@ -1 +1 @@
1
- {"version":3,"file":"eui-eds-eds-breadcrumb.d.ts","sources":["../../eds-breadcrumb/eds-breadcrumb.ts","../../eds-breadcrumb/eds-breadcrumb-item.ts","../../eds-breadcrumb/index.ts"],"mappings":";;;AASA;;;;;;;;;;;;;AAaG;AACH,cAWa,aAAa;AACtB;;;AAGG;AACH,eAAS,aAAA,CAAA,WAAA;AAET;;;AAGG;AACH,aAAO,aAAA,CAAA,WAAA;;;oDAXE,aAAa;sDAAb,aAAa;AAwBzB;;ACjDD;;;;;;;;;;;AAWG;AACH,cAgBa,iBAAiB;;AAE1B,WAAK,aAAA,CAAA,WAAA;;AAGL,UAAI,aAAA,CAAA,WAAA;;AAGJ,eAAS,aAAA,CAAA,WAAA;;AAIT,UAAI,aAAA,CAAA,WAAA;;AAGJ,sBAAgB,aAAA,CAAA,WAAA,CAAA,gBAAA;;AAGhB;;AAGA;;AAIA;oDAzBS,iBAAiB;sDAAjB,iBAAiB;AAuC7B;;ACvED;AACA,cAAa,cAAc,mBAAA,aAAA,SAAA,iBAAA;;;;","names":[]}
1
+ {"version":3,"file":"eui-eds-eds-breadcrumb.d.ts","sources":["../../eds-breadcrumb/eds-breadcrumb.ts","../../eds-breadcrumb/eds-breadcrumb-item.ts","../../eds-breadcrumb/index.ts"],"mappings":";;;AASA;;;;;;;;;;;;;AAaG;AACH,cAWa,aAAa;AACtB;;;AAGG;AACH,eAAS,aAAA,CAAA,WAAA;AAET;;;AAGG;AACH,aAAO,aAAA,CAAA,WAAA;;;oDAXE,aAAa;sDAAb,aAAa;AAwBzB;;ACjDD;;;;;;;;;;;AAWG;AACH,cAiBa,iBAAiB;;AAE1B,WAAK,aAAA,CAAA,WAAA;;AAGL,UAAI,aAAA,CAAA,WAAA;;AAGJ,eAAS,aAAA,CAAA,WAAA;AAET;;;AAGG;AACH,aAAO,aAAA,CAAA,WAAA;;AAIP,UAAI,aAAA,CAAA,WAAA;;AAGJ,sBAAgB,aAAA,CAAA,WAAA,CAAA,gBAAA;;AAGhB;;AAGA;;AAIA;oDA/BS,iBAAiB;sDAAjB,iBAAiB;AA6C7B;;AC9ED;AACA,cAAa,cAAc,mBAAA,aAAA,SAAA,iBAAA;;;;","names":[]}