{"version":3,"file":"eui-components-eui-date-range-selector.mjs","sources":["../../eui-date-range-selector/eui-time-range-picker/eui-time-range-picker.component.ts","../../eui-date-range-selector/eui-time-range-picker/eui-time-range-picker.component.html","../../eui-date-range-selector/eui-date-range-selector.component.ts","../../eui-date-range-selector/eui-date-range-selector.component.html","../../eui-date-range-selector/eui-date-range-selector.validators.ts","../../eui-date-range-selector/index.ts","../../eui-date-range-selector/eui-components-eui-date-range-selector.ts"],"sourcesContent":["import {\n    Component,\n    inject,\n    ViewEncapsulation,\n    HostBinding,\n    OnInit,\n    OnDestroy,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { DYNAMIC_COMPONENT_CONFIG, injectOptional } from '@eui/core';\nimport { EUI_TIMEPICKER } from '@eui/components/eui-timepicker';\nimport { EuiTimeRangePickerConfig } from '../models/eui-time-range-picker.config.model';\n\n/**\n * Provides a dual time picker interface for selecting start and end times within a time range.\n * Typically used within date range selection workflows where time precision is required.\n * Receives configuration via DYNAMIC_COMPONENT_CONFIG injection token and invokes a callback\n * whenever either time value changes.\n * \n * @usageNotes\n * ### Basic Usage (Internal Component)\n * This component is typically used internally by `eui-date-range-selector` when `isTimeRange` is enabled.\n * It's dynamically created and configured via the portal system.\n * \n * ```typescript\n * // Configuration passed to component\n * const config: EuiTimeRangePickerConfig = {\n *   hours: 9,\n *   mins: 0,\n *   secs: 0,\n *   endHours: 17,\n *   endMins: 30,\n *   endSecs: 0,\n *   hasSeconds: false,\n *   stepHours: 1,\n *   stepMinutes: 15,\n *   stepSeconds: 1,\n *   callback: (h, m, s, eh, em, es) => {\n *     console.log('Time range changed');\n *   }\n * };\n * ```\n * \n * ### Accessibility\n * - Each time picker has accessible labels for start and end times\n * - Keyboard navigation supported through underlying timepicker components\n * - Time values announced to screen readers on change\n * - Step increments help users select valid time values\n * \n * ### Notes\n * - Automatically created by `eui-date-range-selector` when time selection enabled\n * - Displays two timepickers side-by-side for start and end times\n * - Callback invoked on any time value change\n * - Supports hours, minutes, and optional seconds\n * - Step values control increment/decrement behavior\n * - Labels automatically translated via TranslateService\n */\n@Component({\n    selector: 'eui-time-range-picker',\n    templateUrl: './eui-time-range-picker.component.html',\n    styleUrl: './eui-time-range-picker.scss',\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        FormsModule,\n        ReactiveFormsModule,\n        ...EUI_TIMEPICKER,\n    ],\n})\nexport class EuiTimeRangepickerComponent implements OnInit, OnDestroy {\n    /** Current hour value for the start time (0-23) */\n    hours: number;\n    /** Current minute value for the start time (0-59) */\n    mins: number;\n    /** Current second value for the start time (0-59) */\n    secs: number;\n    /** Current hour value for the end time (0-23) */\n    endHours: number;\n    /** Current minute value for the end time (0-59) */\n    endMins: number;\n    /** Current second value for the end time (0-59) */\n    endSecs: number;\n    /** Increment step for hour selection in the time picker */\n    stepHours: number;\n    /** Increment step for minute selection in the time picker */\n    stepMinutes: number;\n    /** Increment step for second selection in the time picker */\n    stepSeconds: number;\n    /** Determines whether seconds selection is displayed in the time pickers */\n    hasSeconds: boolean;\n    /** Translated label for the start time picker */\n    startDateLabel: string;\n    /** Translated label for the end time picker */\n    endDateLabel: string;\n    /** Form control managing the start time picker value */\n    startTimeFormControl = new FormControl();\n    /** Form control managing the end time picker value */\n    endTimeFormControl = new FormControl();\n    @HostBinding('class')\n    get class(): string {\n        return ['eui-timerange'].join(' ').trim();\n    }\n    @HostBinding('attr.data-e2e') e2eAttr = 'eui-time-range-picker';\n\n    protected translateService = injectOptional(TranslateService);\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n\n    constructor() {\n        const config = inject<EuiTimeRangePickerConfig>(DYNAMIC_COMPONENT_CONFIG, { optional: true })!;\n\n        this.hours = config?.hours || 0;\n        this.mins = config?.mins || 0;\n        this.secs = config?.secs || 0;\n        this.endHours = config?.endHours || 0;\n        this.endMins = config?.endMins || 0;\n        this.endSecs = config?.endSecs || 0;\n        this.hasSeconds = config?.hasSeconds;\n        this.stepHours = config? config.stepHours: this.stepHours;\n        this.stepMinutes = config? config.stepMinutes: this.stepMinutes;\n        this.stepSeconds = config? config.stepSeconds: this.stepSeconds;\n        this.callback = config?.callback || this.callback;\n    }\n\n    ngOnInit(): void {\n        this.translateService\n            ?.stream('eui.daterangeselector.FIRSTPICKERSLABEL')\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((result: string) => {\n                this.startDateLabel = result;\n            });\n\n        this.translateService\n            ?.stream('eui.daterangeselector.SECONDPICKERSLABEL')\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((result: string) => {\n                this.endDateLabel = result;\n        });\n\n        this.startTimeFormControl = new FormControl({ value: { hours: this.hours, mins: this.mins, secs: this.secs }, disabled: false });\n        this.endTimeFormControl = new FormControl({ value: { hours: this.endHours, mins: this.endMins, secs: this.endSecs }, disabled: false });\n\n        this.startTimeFormControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {\n            this.hours = value.hours;\n            this.mins = value.mins;\n            this.secs = value.secs;\n            this.callback(this.hours, this.mins, this.secs, this.endHours, this.endMins, this.endSecs);\n        });\n        this.endTimeFormControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {\n            this.endHours = value.hours;\n            this.endMins = value.mins;\n            this.endSecs = value.secs;\n            this.callback(this.hours, this.mins, this.secs, this.endHours, this.endMins, this.endSecs);\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    private callback: (hours: number, mins: number, secs?: number, endHours?: number, endMins?: number, endSecs?: number) => void = () => {};\n\n}\n","<div class=\"eui-timerange__time-container\">\n    <span class=\"eui-timerange__time-container-label\">{{ startDateLabel }}</span>\n    <eui-timepicker iconSize=\"m\" [hasSeconds]=\"hasSeconds\" [formControl]=\"startTimeFormControl\"></eui-timepicker>\n</div>\n\n<div class=\"eui-timerange__time-container\">\n    <span class=\"eui-timerange__time-container-label\">{{ endDateLabel }}</span>\n    <eui-timepicker iconSize=\"m\" [hasSeconds]=\"hasSeconds\" [formControl]=\"endTimeFormControl\"></eui-timepicker>\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n    ApplicationRef,\n    Component,\n    ComponentRef,\n    DoCheck,\n    EventEmitter,\n    HostBinding,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    StaticProvider,\n    ViewEncapsulation,\n    booleanAttribute,\n    inject,\n} from '@angular/core';\nimport {\n    ControlValueAccessor,\n    FormControl,\n    FormsModule,\n    NgControl,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport { MatDatepickerInputEvent, MatDatepickerModule } from '@angular/material/datepicker';\nimport { DateAdapter } from '@angular/material/core';\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport moment from 'moment';\nimport 'moment/min/locales.js';\n\nimport { DYNAMIC_COMPONENT_CONFIG, injectOptional, LocaleService, uniqueId } from '@eui/core';\nimport { EuiDateRangeSelectorDates } from './models/eui-date-range-selector-dates.model';\nimport { EuiTimeRangepickerComponent } from './eui-time-range-picker/eui-time-range-picker.component';\nimport { EuiTimeRangePickerConfig } from './models/eui-time-range-picker.config.model';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\n/**\n * A date range selector component that allows users to select start and end dates with optional time selection.\n * Provides a dual-input interface with calendar picker integration and supports form validation.\n * Commonly used for filtering data by date ranges, booking systems, and reporting interfaces.\n * Implements ControlValueAccessor for seamless integration with Angular reactive forms.\n * \n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-date-range-selector \n *   [firstInputPlaceholder]=\"'Start date'\" \n *   [secondInputPlaceholder]=\"'End date'\">\n * </eui-date-range-selector>\n * ```\n * \n * ### With Form Control\n * ```typescript\n * // Component\n * dateRange = new FormControl({ startRange: null, endRange: null });\n * \n * // Template\n * <eui-date-range-selector \n *   [formControl]=\"dateRange\"\n *   [minDate]=\"minDate\"\n *   [maxDate]=\"maxDate\">\n * </eui-date-range-selector>\n * ```\n * \n * ### With Time Selection\n * ```html\n * <eui-date-range-selector \n *   [isTimeRange]=\"true\"\n *   [hasSeconds]=\"true\"\n *   [stepMinutes]=\"15\">\n * </eui-date-range-selector>\n * ```\n * \n * ### Accessibility\n * - Provides `firstInputAriaLabel` and `secondInputAriaLabel` for screen readers\n * - Automatically announces date format to assistive technologies\n * - Supports keyboard navigation through calendar and time pickers\n * - Clear buttons are keyboard accessible when `isClearable` is enabled\n * - Required state is properly communicated via `aria-required` attribute\n * \n * ### Notes\n * - Model must be `EuiDateRangeSelectorDates` with `startRange` and `endRange` properties\n * - Use `islongDateFormat` for extended date display with time\n * - `isResponsive` enables mobile-friendly stacked layout\n * - Comparison ranges can be visualized with `comparisonStart` and `comparisonEnd`\n * - Time picker appears in calendar overlay when `isTimeRange` is true\n */\n@Component({\n    selector: 'eui-date-range-selector',\n    templateUrl: './eui-date-range-selector.component.html',\n    styleUrl: './eui-date-range-selector.scss',\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        FormsModule,\n        ReactiveFormsModule,\n        TranslateModule,\n        MatDatepickerModule,\n        ...EUI_BUTTON,\n        ...EUI_ICON,\n        ...EUI_INPUT_TEXT,\n    ],\n})\nexport class EuiDateRangeSelectorComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, DoCheck {\n    selectedDates: EuiDateRangeSelectorDates = { startRange: null, endRange: null };\n    public isInvalid: boolean;\n    public isTouched: boolean;\n    public startRangeFormControl = new FormControl();\n    public endRangeFormControl = new FormControl();\n    /**\n     * Emitted when the start date is selected or changed. Payload contains the selected date value.\n     */\n    @Output() firstSelectedDate = new EventEmitter<any>();\n    /**\n     * Emitted when the end date is selected or changed. Payload contains the selected date value.\n     */\n    @Output() secondSelectedDate = new EventEmitter<any>();\n\n    @HostBinding('class')\n    get class(): string {\n        return [\n            'eui-date-range-selector',\n            this.isClearable ? 'eui-date-range-selector--clearable' : '',\n            this.islongDateFormat || this.isTimeRange ? 'eui-date-range-selector--long-date-format' : '',\n            this.isResponsive ? 'eui-date-range-selector--responsive' : '',\n        ].join(' ').trim();\n    }\n    /**\n     * Data attribute for end-to-end testing identification.\n     * @default 'eui-date-range-selector'\n     */\n    @HostBinding('attr.data-e2e')\n    @Input() e2eAttr = 'eui-date-range-selector';\n    /**\n     * Minimum selectable date. Dates before this value will be disabled in the calendar picker.\n     */\n    @Input() minDate: any;\n    /**\n     * Maximum selectable date. Dates after this value will be disabled in the calendar picker.\n     */\n    @Input() maxDate: any;\n    /**\n     * SVG icon name displayed on the calendar toggle button.\n     * @default 'eui-calendar'\n     */\n    @Input() togglerIconSvg = 'eui-calendar';\n    /**\n     * Accessible label text for the calendar toggle button. Used for screen readers.\n     */\n    @Input() togglerLabel: string;\n    /**\n     * Placeholder text displayed in the start date input field when empty.\n     */\n    @Input() firstInputPlaceholder: string;\n    /**\n     * Placeholder text displayed in the end date input field when empty.\n     */\n    @Input() secondInputPlaceholder: string;\n    /**\n     * ARIA label for the start date input field. Provides accessible description for screen readers.\n     */\n    @Input() firstInputAriaLabel: string;\n    /**\n     * ARIA label for the end date input field. Provides accessible description for screen readers.\n     */\n    @Input() secondInputAriaLabel: string;\n    /**\n     * Initial value for the start date input field. Pre-populates the field on component initialization.\n     */\n    @Input() startDateDefaultValue: any;\n    /**\n     * Initial value for the end date input field. Pre-populates the field on component initialization.\n     */\n    @Input() endDateDefaultValue: any;\n    /**\n     * Start date for comparison range visualization. Displays as a secondary range in the calendar picker.\n     */\n    @Input() comparisonStart: any;\n    /**\n     * End date for comparison range visualization. Displays as a secondary range in the calendar picker.\n     */\n    @Input() comparisonEnd: any;\n    /**\n     * Initial calendar view when the picker opens. Determines the granularity of date selection.\n     * @default 'month'\n     */\n    @Input() startView: 'month' | 'year' | 'multi-year' = 'month';\n    /**\n     * Unique identifier for the start date input field. Used for form association and accessibility.\n     * @default 'start-date-<uniqueId>'\n     */\n    @Input() startDateId = `start-date-${uniqueId()}`;\n    /**\n     * Hour increment step for the time picker. Controls the granularity of hour selection.\n     * @default 1\n     */\n    @Input() stepHours = 1;\n    /**\n     * Minute increment step for the time picker. Controls the granularity of minute selection.\n     * @default 1\n     */\n    @Input() stepMinutes = 1;\n    /**\n     * Second increment step for the time picker. Controls the granularity of second selection.\n     * @default 1\n     */\n    @Input() stepSeconds = 1;\n    /**\n     * Enables extended date format display with additional date information. Affects input field width and layout.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) islongDateFormat = false;\n    /**\n     * Shows clear buttons in the input fields allowing users to reset selected dates.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isClearable = false;\n    /**\n     * Makes the input fields read-only. Users can view but cannot modify the selected dates.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isReadOnly = false;\n    /**\n     * Disables the entire component. Prevents user interaction and applies disabled styling.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isDisabled = false;\n    /**\n     * Enables responsive layout behavior. Adjusts component layout for different screen sizes.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isResponsive = false;\n    /**\n     * Enables time selection in addition to date selection. Adds time picker controls to the interface.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isTimeRange = false;\n    /**\n     * Shows seconds selection in the time picker. Only effective when isTimeRange is enabled.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasSeconds = false;\n\n    protected hasAriaRequiredAttribute: boolean;\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private portalHost: DomPortalOutlet;\n    private portal: ComponentPortal<EuiTimeRangepickerComponent>;\n    protected timeRangeInstance: EuiTimeRangepickerComponent;\n    protected translateService = inject(TranslateService);\n    protected localeService = injectOptional(LocaleService);\n    protected adapter = inject<DateAdapter<any>>(DateAdapter);\n    protected control = inject(NgControl, { self: true, optional: true })!;\n    private injector = inject(Injector);\n    private appRef = inject(ApplicationRef);\n\n    constructor() {\n        if (this.control) {\n            this.control.valueAccessor = this;\n        }\n    }\n\n    ngOnInit(): void {\n        this.localeService\n            ?.getState()\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((state) => {\n                this.adapter.setLocale(state.id);\n            });\n\n        this.startRangeFormControl = new FormControl({ value: this.startDateDefaultValue, disabled: this.isDisabled });\n        this.endRangeFormControl = new FormControl({ value: this.endDateDefaultValue, disabled: this.isDisabled });\n\n        if (!this.firstInputPlaceholder) {\n            this.translateService\n                .stream('eui.daterangeselector.FIRSTPICKERSLABEL')\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((result: string) => {\n                    this.firstInputPlaceholder = result;\n                });\n        }\n        // by setting the firstInputAriaLabel to dd/mm/yyyy(or the desired format) the format can be announced to the screen reader users before the users start typing\n        if (!this.firstInputAriaLabel) {\n            this.translateService\n                .stream('eui.daterangeselector.FIRSTPICKERSPLACEHOLDER')\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((result: string) => {\n                    this.firstInputAriaLabel = result;\n                });\n        }\n        if (!this.secondInputPlaceholder) {\n            this.translateService\n                .stream('eui.daterangeselector.SECONDPICKERSLABEL')\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((result: string) => {\n                    this.secondInputPlaceholder = result;\n                });\n        }\n        // by setting the secondInputAriaLabel to dd/mm/yyyy(or the desired format) the format can be announced to the screen reader users before the users start typing\n        if (!this.secondInputAriaLabel) {\n            this.translateService\n                .stream('eui.daterangeselector.SECONDPICKERSPLACEHOLDER')\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((result: string) => {\n                    this.secondInputAriaLabel = result;\n                });\n        }\n\n        this.updateInputAriaRequiredAttribute(this.control);\n        this.control?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {\n            this.updateInputAriaRequiredAttribute(this.control);\n        });\n    }\n\n    ngDoCheck(): void {\n        if (this.control) {\n            // marks the input controls as touched/invalid if the form control is touched/invalid\n            // eslint-disable-next-line\n            this.control?.touched ? this.startRangeFormControl?.markAsTouched() : this.startRangeFormControl.markAsUntouched();\n            // eslint-disable-next-line\n            this.control?.touched ? this.endRangeFormControl.markAsTouched() : this.endRangeFormControl?.markAsUntouched();\n            // eslint-disable-next-line\n            this.control?.touched ? (this.isTouched = true) : (this.isTouched = false);\n            // eslint-disable-next-line\n            this.control?.invalid ? this.startRangeFormControl.setErrors(this.control.errors) : this.startRangeFormControl.setErrors(null);\n            // eslint-disable-next-line\n            this.control?.invalid ? this.endRangeFormControl.setErrors(this.control.errors) : this.endRangeFormControl.setErrors(null);\n            // eslint-disable-next-line\n            this.control?.invalid ? (this.isInvalid = true) : (this.isInvalid = false);\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes && changes['startDateDefaultValue']) {\n            this.startRangeFormControl.setValue(this.startDateDefaultValue);\n        }\n        if (changes && changes['endDateDefaultValue']) {\n            this.endRangeFormControl.setValue(this.endDateDefaultValue);\n        }\n\n        if (changes && changes['isDisabled']) {\n            this.setDisabledState(this.isDisabled);\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n    /**\n     * Method fired when the first date field changes.\n     * @param e Event emitted when the first date changes.\n     */\n    public onFirstDateChange(e: MatDatepickerInputEvent<any>): void {\n        this.startDateDefaultValue = e.value;\n        this.selectedDates.startRange = e.value;\n        this.firstSelectedDate.emit(e.value);\n        this.propagateChange(this.selectedDates);\n        this.propagateTouched();\n    }\n    /**\n     * Method fired when the second date field changes.\n     * @param e Event emitted when the second date changes.\n     */\n    public onSecondDateChange(e: MatDatepickerInputEvent<any>): void {\n        this.endDateDefaultValue = e.value;\n        this.selectedDates.endRange = e.value;\n        this.secondSelectedDate.emit(e.value);\n        this.propagateChange(this.selectedDates);\n        this.propagateTouched();\n    }\n    /**\n     * Method fired when the first date field is cleared.\n     */\n    onFirstDateClear(): void {\n        this.startDateDefaultValue = null;\n        this.selectedDates.startRange = null;\n        this.firstSelectedDate.emit(null);\n        this.propagateChange(this.selectedDates);\n    }\n    /**\n     * Method fired when the second date field is cleared.\n     */\n    onSecondDateClear(): void {\n        this.endDateDefaultValue = null;\n        this.selectedDates.endRange = null;\n        this.secondSelectedDate.emit(null);\n        this.propagateChange(this.selectedDates);\n    }\n\n    writeValue(values: EuiDateRangeSelectorDates): void {\n        if (values && values.startRange === undefined) {\n            throw new Error('startRange of EuiDateRangeSelectorDates model must be defined');\n        }\n        if (values && values.endRange === undefined) {\n            throw new Error('endRange of EuiDateRangeSelectorDates model must be defined');\n        }\n\n        this.startDateDefaultValue = values?.startRange;\n        this.endDateDefaultValue = values?.endRange;\n        this.startRangeFormControl.setValue(values?.startRange);\n        this.endRangeFormControl.setValue(values?.endRange);\n        this.selectedDates = values || { startRange: null, endRange: null };\n    }\n    /**\n     * Sets the disabled state of the component based on the boolean value passed.\n     * @param isDisabled - The boolean value indicating whether the component should be disabled or not.\n     */\n    public setDisabledState?(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n        if (this.isDisabled) {\n            this.startRangeFormControl.disable();\n            this.endRangeFormControl.disable();\n        } else {\n            this.startRangeFormControl.enable();\n            this.endRangeFormControl.enable();\n        }\n    }\n\n    registerOnChange(fn: any): void {\n        this.propagateChange = fn;\n    }\n\n    registerOnTouched(fn: any): void {\n        this.propagateTouched = fn;\n    }\n\n    /**\n     * Creates an injector for the timepicker component.\n     * @param data - The data to be passed to the timepicker component.\n     * @return {Injector} - The created injector.\n     * @protected\n     */\n    protected createInjector(data: any): Injector {\n        const injectorTokens: StaticProvider = [{ provide: DYNAMIC_COMPONENT_CONFIG, useValue: data }];\n        return Injector.create({\n            parent: this.injector,\n            providers: injectorTokens,\n        });\n    }\n\n    /**\n     * Fires when the picker opens.\n     * @protected\n     */\n    protected onOpened(): void {\n        if (this.isTimeRange) {\n            this.portalHost = new DomPortalOutlet(\n                document.querySelector('mat-calendar'),\n                this.appRef,\n                this.injector,\n            );\n            const timeConfig: EuiTimeRangePickerConfig = {\n                hours: this.startDateDefaultValue ? moment(this.startDateDefaultValue).hours() : 0,\n                mins: this.startDateDefaultValue ? moment(this.startDateDefaultValue).minutes() : 0,\n                secs: this.startDateDefaultValue ? moment(this.startDateDefaultValue).seconds() : 0,\n                endHours: this.endDateDefaultValue ? moment(this.endDateDefaultValue).hours() : 0,\n                endMins: this.endDateDefaultValue ? moment(this.endDateDefaultValue).minutes() : 0,\n                endSecs: this.endDateDefaultValue ? moment(this.endDateDefaultValue).seconds() : 0,\n                hasSeconds: this.hasSeconds,\n                stepHours: this.stepHours,\n                stepMinutes: this.stepMinutes,\n                stepSeconds: this.stepSeconds,\n                callback: (hours: number, mins: number, secs: number, endHours: number, endMins: number, endSecs: number) => {\n                    this.updateStartDateTime(hours, mins, secs);\n\n                    this.updateEndDateTime(endHours, endMins, endSecs);\n                },\n            };\n\n            this.portal = new ComponentPortal(EuiTimeRangepickerComponent, null, this.createInjector(timeConfig));\n            const componentRef: ComponentRef<EuiTimeRangepickerComponent> = this.portalHost.attachComponentPortal(this.portal);\n            this.timeRangeInstance = componentRef.instance;\n        }\n    }\n    /**\n     * Fires then the time of the first date field changes.\n     * @param e The event emitted when the time changes.\n     * @protected\n     */\n    protected onStartTimeChange(e: string | Event): void {\n        const time = this.extractTime(e);\n        this.updateStartDateTime(time.hours, time.mins, time.secs);\n    }\n    /**\n     * Fires then the time of the second date field changes.\n     * @param e The event emitted when the time changes.\n     * @protected\n     */\n    protected onEndTimeChange(e: string | Event): void {\n        const time = this.extractTime(e);\n        this.updateEndDateTime(time.hours, time.mins, time.secs);\n    }\n    /**\n     * Extracts the time from the date input field.\n     * @param e The event or string containing the time.\n     * @return {hours: number, mins: number, secs: number} The extracted time.\n     * @protected\n     */\n    protected extractTime(e: string | Event): { hours: number, mins: number, secs: number } {\n        const dateTimeString = typeof e === 'string' ? e : (e.target as HTMLInputElement).value;\n        // Split the string by space to separate date and time components\n        const [datePart, timePart] = dateTimeString.split(' ');\n        // Ensure timePart exists to avoid errors\n        if (!timePart) {\n            return { hours: 0, mins: 0, secs: 0 };\n        }\n        const [hours, mins, secs] = timePart.split(':').map(part => parseInt(part, 10));\n        return {\n            hours: hours || 0,\n            mins: mins || 0,\n            secs: secs || 0,\n        };\n    }\n    /**\n     * Updates the start date time based on the provided hours, minutes, and seconds.\n     * @param hours The hours to set.\n     * @param mins The minutes to set.\n     * @param secs The seconds to set.\n     * @protected\n     */\n    protected updateStartDateTime(hours: number, mins: number, secs: number): void {\n        if (this.startDateDefaultValue) {\n            this.startDateDefaultValue = moment(this.startDateDefaultValue).set({ hour: hours, minute: mins, second: secs });\n            this.startRangeFormControl.setValue(this.startDateDefaultValue);\n            this.selectedDates.startRange = this.startDateDefaultValue;\n        }\n        this.propagateChange(this.selectedDates);\n    }\n    /**\n     * Updates the end date time based on the provided hours, minutes, and seconds.\n     * @param hours The hours to set.\n     * @param mins The minutes to set.\n     * @param secs The seconds to set.\n     * @protected\n     */\n    protected updateEndDateTime(hours: number, mins: number, secs: number): void {\n        if (this.endDateDefaultValue) {\n            this.endDateDefaultValue = moment(this.endDateDefaultValue).set({ hour: hours, minute: mins, second: secs });\n            this.endRangeFormControl.setValue(this.endDateDefaultValue);\n            this.selectedDates.endRange = this.endDateDefaultValue;\n        }\n        this.propagateChange(this.selectedDates);\n    }\n    /**\n     * Returns the class for the container based on the time range and hasSeconds conditions.\n     * @return {string} The class for the container.\n     * @protected\n     */\n    protected adaptContainerClasses(): string {\n        if(this.isTimeRange && this.hasSeconds) {\n            return 'eui-date-range-selector--container-large';\n        } else if(this.isTimeRange) {\n            return 'eui-date-range-selector--container-height-large';\n        } else {\n            return null;\n        }\n    }\n\n    private propagateChange = (_: any): void => {/* empty */};\n\n    private propagateTouched = (): void => {/* empty */};\n\n    /**\n     * Updates the `aria-required` attribute on the input element.\n     * @param control The NgControl instance to check for required validators.\n     * @private\n     */\n    private updateInputAriaRequiredAttribute(control: NgControl): void {\n        this.hasAriaRequiredAttribute = control?.control?.hasValidator(Validators.required);\n    }\n}\n","<mat-date-range-input\n    [class.mat-date-range-input--read-only]=\"isReadOnly\"\n    [class.mat-date-range-input--disabled]=\"isDisabled\"\n    [class.mat-date-range-input--invalid]=\"isInvalid && isTouched\"\n    [rangePicker]=\"picker\"\n    [min]=\"minDate\"\n    [max]=\"maxDate\"\n    [comparisonStart]=\"comparisonStart\"\n    [comparisonEnd]=\"comparisonEnd\">\n    <input\n        #inputStartDate\n        class=\"eui-date-range-selector__start-date\"\n        euiInputText\n        [id]=\"startDateId\"\n        [readonly]=\"isReadOnly\"\n        matStartDate\n        placeholder=\"{{ firstInputPlaceholder }}\"\n        attr.aria-label=\"{{ firstInputAriaLabel }}\"\n        [attr.aria-required]=\"hasAriaRequiredAttribute ? 'true' : null\"\n        [formControl]=\"startRangeFormControl\"\n        (dateInput)=\"onFirstDateChange($event)\"\n        [euiClearable]=\"isClearable\"\n        (change)=\"isTimeRange ? onStartTimeChange($event) : null\"\n        (clear)=\"onFirstDateClear()\" />\n    <input\n        #inputEndDate\n        class=\"eui-date-range-selector__end-date\"\n        euiInputText\n        [readonly]=\"isReadOnly\"\n        matEndDate\n        placeholder=\"{{ secondInputPlaceholder }}\"\n        attr.aria-label=\"{{ secondInputAriaLabel }}\"\n        [attr.aria-required]=\"hasAriaRequiredAttribute ? 'true' : null\"\n        [formControl]=\"endRangeFormControl\"\n        (dateInput)=\"onSecondDateChange($event)\"\n        [euiClearable]=\"isClearable\"\n        (change)=\"isTimeRange ? onEndTimeChange($event) : null\"\n        (clear)=\"onSecondDateClear()\" />\n</mat-date-range-input>\n<mat-date-range-picker\n    #picker\n    [startView]=\"startView\"\n    (opened)=\"onOpened()\"\n    [panelClass]=\"adaptContainerClasses()\" />\n@if (!isReadOnly) {\n    <button\n        class=\"eui-date-range-selector__toggler eui-date-range-selector__toggler-{{ !togglerLabel ? 'icon' : 'label' }}\"\n        (click)=\"picker.open()\"\n        euiButton\n        euiSecondary\n        [euiIconButton]=\"!togglerLabel ? true : false\"\n        type=\"button\"\n        [euiDisabled]=\"isDisabled\"\n        aria-label=\"Open Calendar\"\n        aria-haspopup=\"dialog\">\n        @if (!togglerLabel) {\n            <eui-icon-svg icon=\"{{ togglerIconSvg }}\" size=\"s\"></eui-icon-svg>\n        } @else {\n            <span>{{ togglerLabel }}</span>\n        }\n    </button>\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { DateAdapter } from '@angular/material/core';\nimport moment, { Moment } from 'moment';\n\n/**\n * @description\n * Validator that checks that the start date isn't after the end date.\n *\n * @usageNotes\n * If the user types a value in the input field that is not aligned with the provided format the component propagates a null value that\n * can be used to validate the input field.\n *\n * @returns An error map with the\n * `euiDateRangeInvalid` if the validation check fails, otherwise `null`.\n */\nexport const euiStartEndDateValidator =\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (adapter: DateAdapter<any>): ValidatorFn =>\n    (control: AbstractControl): ValidationErrors | null => {\n        const start = moment(adapter.getValidDateOrNull(adapter.deserialize(control.value?.startRange)));\n        const end = moment(control.value?.endRange);\n        return !start || !end || adapter.compareDate(start, end) <= 0 ? null : { euiDateRangeInvalid: { end, actual: start } };\n    };\n","import { EuiDateRangeSelectorComponent } from './eui-date-range-selector.component';\nimport { EuiTimeRangepickerComponent } from './eui-time-range-picker/eui-time-range-picker.component';\n\nexport * from './eui-date-range-selector.component';\nexport * from './eui-time-range-picker/eui-time-range-picker.component';\nexport * from './models/eui-date-range-selector-dates.model';\nexport * from './models/eui-time-range-picker.config.model';\nexport * from './eui-date-range-selector.validators';\n\nexport const EUI_DATE_RANGE_SELECTOR = [\n    EuiTimeRangepickerComponent, \n    EuiDateRangeSelectorComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil","i2"],"mappings":"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"}