{"version":3,"file":"oncehub-ui.mjs","sources":["../../../ui/src/components/datepicker/datepicker-errors.ts","../../../ui/src/components/datepicker/datepicker-intl.ts","../../../ui/src/components/datepicker/calendar-body.html","../../../ui/src/components/datepicker/calendar-body.ts","../../../ui/src/components/datepicker/date-formats.ts","../../../ui/src/components/datepicker/date-adapter.ts","../../../ui/src/components/datepicker/month-view.html","../../../ui/src/components/datepicker/month-view.ts","../../../ui/src/components/datepicker/multi-year-view.ts","../../../ui/src/components/datepicker/multi-year-view.html","../../../ui/src/components/datepicker/year-view.ts","../../../ui/src/components/datepicker/year-view.html","../../../ui/src/components/icon/icon-registery.ts","../../../ui/src/components/core/shared/icons.ts","../../../ui/src/components/core/version.ts","../../../ui/src/components/core/common-behaviors/common-module.ts","../../../ui/src/components/core/common-behaviors/color.ts","../../../ui/src/components/core/common-behaviors/disabled.ts","../../../ui/src/components/core/common-behaviors/tabIndex.ts","../../../ui/src/components/core/common-behaviors/initialized.ts","../../../ui/src/components/core/common-behaviors/error-state.ts","../../../ui/src/components/core/common-behaviors/disable-ripple.ts","../../../ui/src/components/core/option/optgroup.ts","../../../ui/src/components/core/option/optgroup.html","../../../ui/src/components/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../../../ui/src/components/core/option/option.html","../../../ui/src/components/core/option/option.ts","../../../ui/src/components/core/selection/index.ts","../../../ui/src/components/core/option/index.ts","../../../ui/src/components/core/keycodes/keycodes.ts","../../../ui/src/components/core/animation/animation.ts","../../../ui/src/components/core/error/error-options.ts","../../../ui/src/components/button/progress.ts","../../../ui/src/components/button/button.ts","../../../ui/src/components/button/button.html","../../../ui/src/components/icon/icon.ts","../../../ui/src/components/datepicker/calendar.html","../../../ui/src/components/datepicker/calendar.ts","../../../ui/src/components/datepicker/calendar-header.html","../../../ui/src/components/dialog/dialog-config.ts","../../../ui/src/components/dialog/dialog-container.ts","../../../ui/src/components/dialog/dialog-container.html","../../../ui/src/components/dialog/dialog-ref.ts","../../../ui/src/components/dialog/dialog-scroll-strategy.ts","../../../ui/src/components/dialog/dialog.ts","../../../ui/src/components/dialog/dialog-content.ts","../../../ui/src/components/icon/icon.module.ts","../../../ui/src/components/dialog/dialog-module.ts","../../../ui/src/components/datepicker/datepicker-animations.ts","../../../ui/src/components/datepicker/datepicker.ts","../../../ui/src/components/datepicker/datepicker-content.html","../../../ui/src/components/form-field/form-field-control.ts","../../../ui/src/components/form-field/form-field-errors.ts","../../../ui/src/components/form-field/form-field.ts","../../../ui/src/components/form-field/form-field.html","../../../ui/src/components/input/input-value-accessor.ts","../../../ui/src/components/datepicker/datepicker-input.ts","../../../ui/src/components/datepicker/datepicker-toggle.html","../../../ui/src/components/datepicker/datepicker-toggle.ts","../../../ui/src/components/button/button-module.ts","../../../ui/src/components/datepicker/native-date-adapter.ts","../../../ui/src/components/datepicker/native-date-formats.ts","../../../ui/src/components/datepicker/native-date.module.ts","../../../ui/src/components/datepicker/datepicker-module.ts","../../../ui/src/components/icon/testing/fake-icon-registry.ts","../../../ui/src/components/autocomplete/autocomplete.html","../../../ui/src/components/autocomplete/autocomplete.ts","../../../ui/src/components/autocomplete/autocomplete-origin.ts","../../../ui/src/components/autocomplete/autocomplete-trigger.ts","../../../ui/src/components/autocomplete/autocomplete-module.ts","../../../ui/src/components/form-field/error.ts","../../../ui/src/components/form-field/form-field-module.ts","../../../ui/src/components/input/input-errors.ts","../../../ui/src/components/core/common-behaviors/error-options.ts","../../../ui/src/components/input/input.ts","../../../ui/src/components/input/input-module.ts","../../../ui/src/components/menu/menu-content.ts","../../../ui/src/components/menu/menu-errors.ts","../../../ui/src/components/menu/menu-panel.ts","../../../ui/src/components/menu/menu-item.ts","../../../ui/src/components/menu/menu-item.html","../../../ui/src/components/menu/menu.html","../../../ui/src/components/menu/menu-directive.ts","../../../ui/src/components/menu/menu-trigger.ts","../../../ui/src/components/menu/menu-icon.ts","../../../ui/src/components/menu/menu-module.ts","../../../ui/src/components/checkbox/checkbox.ts","../../../ui/src/components/checkbox/checkbox.html","../../../ui/src/components/checkbox/checkbox.module.ts","../../../ui/src/components/tooltip/tooltip-animations.ts","../../../ui/src/components/tooltip/tooltip.ts","../../../ui/src/components/tooltip/tooltip.html","../../../ui/src/components/tooltip/tooltip-module.ts","../../../ui/src/components/paginator/paginator-intl.ts","../../../ui/src/components/paginator/paginator.ts","../../../ui/src/components/paginator/paginator.html","../../../ui/src/components/paginator/paginator-module.ts","../../../ui/src/components/sort/sort-errors.ts","../../../ui/src/components/sort/sort.ts","../../../ui/src/components/sort/sort-header-intl.ts","../../../ui/src/components/sort/sort-animations.ts","../../../ui/src/components/sort/sort-header.ts","../../../ui/src/components/sort/sort-header.html","../../../ui/src/components/sort/sort-module.ts","../../../ui/src/components/table/cell.ts","../../../ui/src/components/table/row.ts","../../../ui/src/components/table/table.ts","../../../ui/src/components/table/table-data-source.ts","../../../ui/src/components/table/table-module.ts","../../../ui/src/components/progress-spinner/progress-spinner.ts","../../../ui/src/components/progress-spinner/progress-spinner.html","../../../ui/src/components/progress-spinner/progress-spinner.module.ts","../../../ui/src/components/radio/radio.ts","../../../ui/src/components/radio/radio.html","../../../ui/src/components/radio/radio-module.ts","../../../ui/src/components/progress-bar/progress-bar.ts","../../../ui/src/components/progress-bar/progress-bar.html","../../../ui/src/components/progress-bar/progress-bar.module.ts","../../../ui/src/components/panel/panel-content.ts","../../../ui/src/components/panel/panel-errors.ts","../../../ui/src/components/panel/panel-overlay.ts","../../../ui/src/components/panel/panel-positions.ts","../../../ui/src/components/panel/panel-trigger.ts","../../../ui/src/components/panel/panel.html","../../../ui/src/components/panel/panel.ts","../../../ui/src/components/panel/panel-module.ts","../../../ui/src/components/select/select-errors.ts","../../../ui/src/components/select/select.html","../../../ui/src/components/select/select.component.ts","../../../ui/src/components/select/filter.pipe.ts","../../../ui/src/components/select/search/option-search.html","../../../ui/src/components/select/search/index.ts","../../../ui/src/components/select/select-module.ts","../../../ui/src/components/slide-toggle/slide-toggle.ts","../../../ui/src/components/slide-toggle/slide-toggle.html","../../../ui/src/components/slide-toggle/slide-toggle-module.ts","../../../ui/src/components/scrollbar/scrollbar.ts","../../../ui/src/components/scrollbar/scrollbar-module.ts","../../../ui/src/components/tabs/tabs-animations.ts","../../../ui/src/components/tabs/tab-body.ts","../../../ui/src/components/tabs/tab-body.html","../../../ui/src/components/tabs/tab-content.ts","../../../ui/src/components/tabs/tab-label.ts","../../../ui/src/components/tabs/ink-bar.ts","../../../ui/src/components/tabs/tab-label-wrapper.ts","../../../ui/src/components/tabs/tab.ts","../../../ui/src/components/tabs/tab.html","../../../ui/src/components/tabs/paginated-tab-header.ts","../../../ui/src/components/tabs/tab-header.ts","../../../ui/src/components/tabs/tab-header.html","../../../ui/src/components/tabs/tab-config.ts","../../../ui/src/components/tabs/tab-group.ts","../../../ui/src/components/tabs/tab-group.html","../../../ui/src/components/tabs/tab-nav-bar/tab-nav-bar.ts","../../../ui/src/components/tabs/tab-nav-bar/tab-nav-bar.html","../../../ui/src/components/tabs/tab-nav-bar/tab-link.html","../../../ui/src/components/tabs/module.ts","../../../ui/src/components/tabs/public-api.ts","../../../ui/src/public-api.ts","../../../ui/src/oncehub-ui.ts"],"sourcesContent":["export function createMissingDateImplError(provider: string) {\n  return Error(\n    `OuiDatepicker: No provider found for ${provider}. You must import one of the following ` +\n      `modules at your application root: OuiNativeDateModule, or provide a ` +\n      `custom implementation.`\n  );\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/** Datepicker data that requires internationalization. */\n@Injectable({ providedIn: 'root' })\nexport class OuiDatepickerIntl {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n\n  /** A label for the calendar popup (used by screen readers). */\n  calendarLabel = 'Calendar';\n\n  /** A label for the button used to open the calendar popup (used by screen readers). */\n  openCalendarLabel = 'Open calendar';\n\n  /** A label for the previous month button (used by screen readers). */\n  prevMonthLabel = 'Previous month';\n\n  /** A label for the next month button (used by screen readers). */\n  nextMonthLabel = 'Next month';\n\n  /** A label for the previous year button (used by screen readers). */\n  prevYearLabel = 'Previous year';\n\n  /** A label for the next year button (used by screen readers). */\n  nextYearLabel = 'Next year';\n\n  /** A label for the previous multi-year button (used by screen readers). */\n  prevMultiYearLabel = 'Previous 20 years';\n\n  /** A label for the next multi-year button (used by screen readers). */\n  nextMultiYearLabel = 'Next 20 years';\n\n  /** A label for the 'switch to month view' button (used by screen readers). */\n  switchToMonthViewLabel = 'Choose date';\n\n  /** A label for the 'switch to year view' button (used by screen readers). */\n  switchToMultiYearViewLabel = 'Choose month and year';\n}\n","<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n  <!--\n    We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n    The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n    percentage of the width (a variant of the trick described here:\n    https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n  -->\n  <td\n    *ngIf=\"rowIndex === 0 && _firstRowOffset\"\n    aria-hidden=\"true\"\n    class=\"oui-calendar-body-label\"\n    [attr.colspan]=\"_firstRowOffset\"\n    [style.paddingTop]=\"_cellPadding\"\n    [style.paddingBottom]=\"_cellPadding\"\n  >\n    {{label}}\n  </td>\n  <td\n    *ngFor=\"let item of row; let colIndex = index\"\n    role=\"gridcell\"\n    class=\"oui-calendar-body-cell\"\n    [ngClass]=\"item.cssClasses\"\n    [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n    [class.oui-calendar-body-disabled]=\"!item.enabled\"\n    [class.oui-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\n    [attr.aria-label]=\"item.ariaLabel\"\n    [attr.aria-disabled]=\"!item.enabled || null\"\n    [attr.aria-selected]=\"selectedValue === item.value\"\n    (click)=\"_cellClicked(item)\"\n    [style.width]=\"_cellWidth\"\n    [style.paddingTop]=\"_cellPadding\"\n    [style.paddingBottom]=\"_cellPadding\"\n  >\n    <span class=\"oui-selected-focus\"></span>\n    <div\n      class=\"oui-calendar-body-cell-content\"\n      [class.oui-calendar-body-selected]=\"selectedValue === item.value\"\n      [class.oui-calendar-body-today]=\"todayValue === item.value\"\n    >\n      {{item.displayValue}}\n    </div>\n  </td>\n</tr>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewEncapsulation,\n  NgZone,\n  OnChanges,\n  SimpleChanges,\n  inject,\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\n\n/**\n * Extra CSS classes that can be associated with a calendar cell.\n */\nexport type OuiCalendarCellCssClasses =\n  | string\n  | string[]\n  | Set<string>\n  | { [key: string]: any };\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n */\nexport class OuiCalendarCell {\n  constructor(\n    public value: number,\n    public displayValue: string,\n    public ariaLabel: string,\n    public enabled: boolean,\n    public cssClasses?: OuiCalendarCellCssClasses\n  ) {}\n}\n\n/**\n * An internal component used to display calendar data in a table.\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[oui-calendar-body]',\n  templateUrl: 'calendar-body.html',\n  styleUrls: ['calendar-body.scss'],\n  host: {\n    class: 'oui-calendar-body',\n    role: 'grid',\n    'aria-readonly': 'true',\n  },\n  exportAs: 'ouiCalendarBody',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiCalendarBody implements OnChanges {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _ngZone = inject(NgZone);\n\n  /** The label for the table. (e.g. \"Jan 2017\"). */\n  @Input() label: string;\n\n  /** The cells to display in the table. */\n  @Input() rows: OuiCalendarCell[][];\n\n  /** The value in the table that corresponds to today. */\n  @Input() todayValue: number;\n\n  /** The value in the table that is currently selected. */\n  @Input() selectedValue: number;\n\n  /** The minimum number of free cells needed to fit the label in the first row. */\n  @Input() labelMinRequiredCells: number;\n\n  /** The number of columns in the table. */\n  @Input() numCols = 7;\n\n  /** The cell number of the active cell in the table. */\n  @Input() activeCell = 0;\n\n  /**\n   * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n   * maintained even as the table resizes.\n   */\n  @Input() cellAspectRatio = 1;\n\n  /** Emits when a new value is selected. */\n  @Output()\n  readonly selectedValueChange: EventEmitter<number> =\n    new EventEmitter<number>();\n\n  /** The number of blank cells to put at the beginning for the first row. */\n  _firstRowOffset: number;\n\n  /** Padding for the individual date cells. */\n  _cellPadding: string;\n\n  /** Width of an individual cell. */\n  _cellWidth: string;\n\n  constructor() {}\n\n  _cellClicked(cell: OuiCalendarCell): void {\n    if (cell.enabled) {\n      this.selectedValueChange.emit(cell.value);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const columnChanges = changes.numCols;\n    const { rows, numCols } = this;\n\n    if (changes.rows || columnChanges) {\n      this._firstRowOffset =\n        rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n    }\n\n    if (changes.cellAspectRatio || columnChanges || !this._cellPadding) {\n      this._cellPadding = `${(50 * this.cellAspectRatio) / numCols}%`;\n    }\n\n    if (columnChanges || !this._cellWidth) {\n      this._cellWidth = `${100 / numCols}%`;\n    }\n  }\n\n  _isActiveCell(rowIndex: number, colIndex: number): boolean {\n    let cellNumber = rowIndex * this.numCols + colIndex;\n\n    // Account for the fact that the first row may not have as many cells.\n    if (rowIndex) {\n      cellNumber -= this._firstRowOffset;\n    }\n\n    return cellNumber === this.activeCell;\n  }\n\n  /** Focuses the active cell after the microtask queue is empty. */\n  _focusActiveCell() {\n    this._ngZone.runOutsideAngular(() => {\n      this._ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          const activeCell: HTMLElement | null =\n            this._elementRef.nativeElement.querySelector(\n              '.oui-calendar-body-active'\n            );\n\n          if (activeCell) {\n            activeCell.focus();\n          }\n        });\n    });\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport type OuiDateFormats = {\n  parse: {\n    dateInput: any;\n  };\n  display: {\n    dateInput: any;\n    monthYearLabel: any;\n    dateA11yLabel: any;\n    monthYearA11yLabel: any;\n  };\n};\n\nexport const OUI_DATE_FORMATS = new InjectionToken<OuiDateFormats>(\n  'oui-date-formats'\n);\n","import { inject, Injectable, InjectionToken, LOCALE_ID } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const OUI_DATE_LOCALE = new InjectionToken<string>('OUI_DATE_LOCALE', {\n  providedIn: 'root',\n  factory: OUI_DATE_LOCALE_FACTORY,\n});\n\nexport function OUI_DATE_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/**\n * No longer needed since OUI_DATE_LOCALE has been changed to a scoped injectable.\n * If you are importing and providing this in your code you can simply remove it.\n *\n * @deprecated\n * @breaking-change 8.0.0\n */\nexport const OUI_DATE_LOCALE_PROVIDER = {\n  provide: OUI_DATE_LOCALE,\n  useExisting: LOCALE_ID,\n};\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\n@Injectable()\nexport abstract class DateAdapter<D> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n\n  /** A stream that emits when the locale changes. */\n  get localeChanges(): Observable<void> {\n    return this._localeChanges;\n  }\n  protected _localeChanges = new Subject<void>();\n\n  /**\n   * Gets the year component of the given date.\n   *\n   * @param date The date to extract the year from.\n   * @returns The year component.\n   */\n  abstract getYear(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   *\n   * @param date The date to extract the month from.\n   * @returns The month component (0-indexed, 0 = January).\n   */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the date of the month component of the given date.\n   *\n   * @param date The date to extract the date of the month from.\n   * @returns The month component (1-indexed, 1 = first of month).\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the day of the week component of the given date.\n   *\n   * @param date The date to extract the day of the week from.\n   * @returns The month component (0-indexed, 0 = Sunday).\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Gets a list of names for the months.\n   *\n   * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n   * @returns An ordered list of all month names, starting with January.\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   *\n   * @returns An ordered list of all date of the month names, starting with '1'.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Gets a list of names for the days of the week.\n   *\n   * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n   * @returns An ordered list of all weekday names, starting with Sunday.\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets the name for the year of the given date.\n   *\n   * @param date The date to get the year name for.\n   * @returns The name of the given year (e.g. '2017').\n   */\n  abstract getYearName(date: D): string;\n\n  /**\n   * Gets the first day of the week.\n   *\n   * @returns The first day of the week (0-indexed, 0 = Sunday).\n   */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   *\n   * @param date The date whose month should be checked.\n   * @returns The number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: D): number;\n\n  /**\n   * Clones the given date.\n   *\n   * @param date The date to clone\n   * @returns A new date equal to the given date.\n   */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n   * month and date.\n   *\n   * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n   * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n   * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n   * @returns The new date, or null if invalid.\n   */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Gets today's date.\n   *\n   * @returns Today's date.\n   */\n  abstract today(): D;\n\n  /**\n   * Parses a date from a user-provided value.\n   *\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed date.\n   */\n  abstract parse(value: any, parseFormat: any): D | null;\n\n  /**\n   * Formats a date as a string according to the given format.\n   *\n   * @param date The value to format.\n   * @param displayFormat The format to use to display the date as a string.\n   * @returns The formatted date string.\n   */\n  abstract format(date: D, displayFormat: any): string;\n\n  /**\n   * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n   * calendar for each year and then finding the closest date in the new month. For example when\n   * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n   *\n   * @param date The date to add years to.\n   * @param years The number of years to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of years added.\n   */\n  abstract addCalendarYears(date: D, years: number): D;\n\n  /**\n   * Adds the given number of months to the date. Months are counted as if flipping a page on the\n   * calendar for each month and then finding the closest date in the new month. For example when\n   * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n   *\n   * @param date The date to add months to.\n   * @param months The number of months to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of months added.\n   */\n  abstract addCalendarMonths(date: D, months: number): D;\n\n  /**\n   * Adds the given number of days to the date. Days are counted as if moving one cell on the\n   * calendar for each day.\n   *\n   * @param date The date to add days to.\n   * @param days The number of days to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of days added.\n   */\n  abstract addCalendarDays(date: D, days: number): D;\n\n  /**\n   * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n   * This method is used to generate date strings that are compatible with native HTML attributes\n   * such as the `min` or `max` attribute of an `<input>`.\n   *\n   * @param date The date to get the ISO date string for.\n   * @returns The ISO date string date string.\n   */\n  abstract toIso8601(date: D): string;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateAdapter.\n   *\n   * @param obj The object to check\n   * @returns Whether the object is a date instance.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   *\n   * @param date The date to check.\n   * @returns Whether the date is valid.\n   */\n  abstract isValid(date: D): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   *\n   * @returns An invalid date.\n   */\n  abstract invalid(): D;\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<oui-datepicker>` will call this\n   * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   *\n   * @param value The value to be deserialized into a date object.\n   * @returns The deserialized date object, either a valid date, null if the value can be\n   *     deserialized into a null date (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): D | null {\n    if (\n      value == null ||\n      (this.isDateInstance(value) && this.isValid(value as any as D))\n    ) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   *\n   * @param locale The new locale.\n   */\n  setLocale(locale: any) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Compares two dates.\n   *\n   * @param first The first date to compare.\n   * @param second The second date to compare.\n   * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n   *     a number greater than 0 if the first date is later.\n   */\n  compareDate(first: D, second: D): number {\n    return (\n      this.getYear(first) - this.getYear(second) ||\n      this.getMonth(first) - this.getMonth(second) ||\n      this.getDate(first) - this.getDate(second)\n    );\n  }\n\n  /**\n   * Checks if two dates are equal.\n   *\n   * @param first The first date to check.\n   * @param second The second date to check.\n   * @returns Whether the two dates are equal.\n   *     Null dates are considered equal to other null dates.\n   */\n  sameDate(first: D | null, second: D | null): boolean {\n    if (first && second) {\n      const firstValid = this.isValid(first);\n      const secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareDate(first, second);\n      }\n      return firstValid === secondValid;\n    }\n    return first === second;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   *\n   * @param date The date to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n   *     otherwise `date`.\n   */\n  clampDate(date: D, min?: D | null, max?: D | null): D {\n    if (min && this.compareDate(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compareDate(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","<table class=\"oui-calendar-table\">\n  <thead class=\"oui-calendar-table-header\">\n    <tr>\n      <th *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">\n        {{day.narrow}}\n      </th>\n    </tr>\n    <tr>\n      <th class=\"oui-calendar-table-header-divider\" colspan=\"7\"></th>\n    </tr>\n  </thead>\n  <tbody\n    oui-calendar-body\n    [rows]=\"_weeks\"\n    [todayValue]=\"_todayDate\"\n    [selectedValue]=\"_selectedDate\"\n    [labelMinRequiredCells]=\"3\"\n    [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n    (selectedValueChange)=\"_dateSelected($event)\"\n    (keydown)=\"_handleCalendarBodyKeydown($event)\"\n  ></tbody>\n</table>\n","import {\n  DOWN_ARROW,\n  END,\n  ENTER,\n  HOME,\n  LEFT_ARROW,\n  PAGE_DOWN,\n  PAGE_UP,\n  RIGHT_ARROW,\n  UP_ARROW,\n  SPACE,\n} from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewEncapsulation,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n  OuiCalendarBody,\n  OuiCalendarCell,\n  OuiCalendarCellCssClasses,\n} from './calendar-body';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { OuiDateFormats, OUI_DATE_FORMATS } from './date-formats';\nimport { DateAdapter } from './date-adapter';\n\nconst DAYS_PER_WEEK = 7;\n\n/**\n * An internal component used to display a single month in the datepicker.\n */\n@Component({\n  selector: 'oui-month-view',\n  templateUrl: 'month-view.html',\n  exportAs: 'ouiMonthView',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiMonthView<D> implements AfterContentInit {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _dateFormats = inject<OuiDateFormats>(OUI_DATE_FORMATS, {\n    optional: true,\n  })!;\n  _dateAdapter = inject<DateAdapter<D>>(DateAdapter, { optional: true })!;\n  private _dir = inject(Directionality, { optional: true });\n\n  /**\n   * The date to display in this month view (everything other than the month and year is ignored).\n   */\n  @Input()\n  get activeDate(): D {\n    return this._activeDate;\n  }\n  set activeDate(value: D) {\n    const oldActiveDate = this._activeDate;\n    const validDate =\n      this._getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n      this._dateAdapter.today();\n    this._activeDate = this._dateAdapter.clampDate(\n      validDate,\n      this.minDate,\n      this.maxDate\n    );\n    if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n      this._init();\n    }\n  }\n  private _activeDate: D;\n\n  /** The currently selected date. */\n  @Input()\n  get selected(): D | null {\n    return this._selected;\n  }\n  set selected(value: D | null) {\n    this._selected = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n    this._selectedDate = this._getDateInCurrentMonth(this._selected);\n  }\n  private _selected: D | null;\n\n  /** The minimum selectable date. */\n  @Input()\n  get minDate(): D | null {\n    return this._minDate;\n  }\n  set minDate(value: D | null) {\n    this._minDate = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _minDate: D | null;\n\n  /** The maximum selectable date. */\n  @Input()\n  get maxDate(): D | null {\n    return this._maxDate;\n  }\n  set maxDate(value: D | null) {\n    this._maxDate = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _maxDate: D | null;\n\n  /** Function used to filter which dates are selectable. */\n  @Input() dateFilter: (date: D) => boolean;\n\n  /** Function that can be used to add custom CSS classes to dates. */\n  @Input() dateClass: (date: D) => OuiCalendarCellCssClasses;\n\n  /** Emits when a new date is selected. */\n  @Output()\n  readonly selectedChange: EventEmitter<D | null> =\n    new EventEmitter<D | null>();\n\n  /** Emits when any date is selected. */\n  @Output()\n  readonly _userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Emits when any date is activated. */\n  @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** The body of calendar table */\n  @ViewChild(OuiCalendarBody)\n  _ouiCalendarBody: OuiCalendarBody;\n\n  /** The label for this month (e.g. \"January 2017\"). */\n  _monthLabel: string;\n\n  /** Grid of calendar cells representing the dates of the month. */\n  _weeks: OuiCalendarCell[][];\n\n  /** The number of blank cells in the first row before the 1st of the month. */\n  _firstWeekOffset: number;\n\n  /**\n   * The date of the month that the currently selected Date falls on.\n   * Null if the currently selected Date is in another month.\n   */\n  _selectedDate: number | null;\n\n  /** The date of the month that today falls on. Null if today is in another month. */\n  _todayDate: number | null;\n\n  /** The names of the weekdays. */\n  _weekdays: { long: string; narrow: string }[];\n\n  constructor() {\n    if (!this._dateAdapter) {\n      throw createMissingDateImplError('DateAdapter');\n    }\n    if (!this._dateFormats) {\n      throw createMissingDateImplError('OUI_DATE_FORMATS');\n    }\n\n    const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n    const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n    const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n    // Rotate the labels for days of the week based on the configured first day of the week.\n    const weekdays = longWeekdays.map((long, i) => ({\n      long,\n      narrow: narrowWeekdays[i],\n    }));\n    this._weekdays = weekdays.slice(firstDayOfWeek).concat();\n    this._activeDate = this._dateAdapter.today();\n  }\n\n  ngAfterContentInit() {\n    this._init();\n  }\n\n  /** Handles when a new date is selected. */\n  _dateSelected(date: number) {\n    if (this._selectedDate !== date) {\n      const selectedYear = this._dateAdapter.getYear(this.activeDate);\n      const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n      const selectedDate = this._dateAdapter.createDate(\n        selectedYear,\n        selectedMonth,\n        date\n      );\n\n      this.selectedChange.emit(selectedDate);\n    }\n\n    this._userSelection.emit();\n  }\n\n  /** Handles keydown events on the calendar body when calendar is in month view. */\n  _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n    // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n    // disabled ones from being selected. This may not be ideal, we should look into whether\n    // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n    const oldActiveDate = this._activeDate;\n    const isRtl = this._isRtl();\n\n    switch (event.keyCode) {\n      case LEFT_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarDays(\n          this._activeDate,\n          isRtl ? 1 : -1\n        );\n        break;\n      case RIGHT_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarDays(\n          this._activeDate,\n          isRtl ? -1 : 1\n        );\n        break;\n      case UP_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarDays(\n          this._activeDate,\n          -7\n        );\n        break;\n      case DOWN_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarDays(\n          this._activeDate,\n          7\n        );\n        break;\n      case HOME:\n        this.activeDate = this._dateAdapter.addCalendarDays(\n          this._activeDate,\n          1 - this._dateAdapter.getDate(this._activeDate)\n        );\n        break;\n      case END:\n        this.activeDate = this._dateAdapter.addCalendarDays(\n          this._activeDate,\n          this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n            this._dateAdapter.getDate(this._activeDate)\n        );\n        break;\n      case PAGE_UP:\n        this.activeDate = event.altKey\n          ? this._dateAdapter.addCalendarYears(this._activeDate, -1)\n          : this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n        break;\n      case PAGE_DOWN:\n        this.activeDate = event.altKey\n          ? this._dateAdapter.addCalendarYears(this._activeDate, 1)\n          : this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n        break;\n      case ENTER:\n      case SPACE:\n        if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n          this._dateSelected(this._dateAdapter.getDate(this._activeDate));\n          this._userSelection.emit();\n          // Prevent unexpected default actions such as form submission.\n          event.preventDefault();\n        }\n        return;\n      default:\n        // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n        return;\n    }\n\n    if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n      this.activeDateChange.emit(this.activeDate);\n    }\n\n    this._focusActiveCell();\n    // Prevent unexpected default actions such as form submission.\n    event.preventDefault();\n  }\n\n  /** Initializes this month view. */\n  _init() {\n    this._selectedDate = this._getDateInCurrentMonth(this.selected);\n    this._todayDate = this._getDateInCurrentMonth(this._dateAdapter.today());\n    this._monthLabel =\n      this._dateAdapter.getMonthNames('short')[\n        this._dateAdapter.getMonth(this.activeDate)\n      ];\n\n    const firstOfMonth = this._dateAdapter.createDate(\n      this._dateAdapter.getYear(this.activeDate),\n      this._dateAdapter.getMonth(this.activeDate),\n      1\n    );\n    this._firstWeekOffset =\n      (DAYS_PER_WEEK +\n        this._dateAdapter.getDayOfWeek(firstOfMonth) -\n        this._dateAdapter.getFirstDayOfWeek()) %\n      DAYS_PER_WEEK;\n\n    this._createWeekCells();\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Focuses the active cell after the microtask queue is empty. */\n  _focusActiveCell() {\n    this._ouiCalendarBody._focusActiveCell();\n  }\n\n  /** Creates OuiCalendarCells for the dates in this month. */\n  private _createWeekCells() {\n    const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n    const dateNames = this._dateAdapter.getDateNames();\n    this._weeks = [[]];\n    for (\n      let i = 0, cell = this._firstWeekOffset;\n      i < daysInMonth;\n      i++, cell++\n    ) {\n      if (cell === DAYS_PER_WEEK) {\n        this._weeks.push([]);\n        cell = 0;\n      }\n      const date = this._dateAdapter.createDate(\n        this._dateAdapter.getYear(this.activeDate),\n        this._dateAdapter.getMonth(this.activeDate),\n        i + 1\n      );\n      const enabled = this._shouldEnableDate(date);\n      const ariaLabel = this._dateAdapter.format(\n        date,\n        this._dateFormats.display.dateA11yLabel\n      );\n      const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\n\n      this._weeks[this._weeks.length - 1].push(\n        new OuiCalendarCell(\n          i + 1,\n          dateNames[i],\n          ariaLabel,\n          enabled,\n          cellClasses\n        )\n      );\n    }\n  }\n\n  /** Date filter for the month */\n  private _shouldEnableDate(date: D): boolean {\n    return (\n      !!date &&\n      (!this.dateFilter || this.dateFilter(date)) &&\n      (!this.minDate ||\n        this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n      (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0)\n    );\n  }\n\n  /**\n   * Gets the date in this month that the given Date falls on.\n   * Returns null if the given Date is in another month.\n   */\n  private _getDateInCurrentMonth(date: D | null): number | null {\n    return date && this._hasSameMonthAndYear(date, this.activeDate)\n      ? this._dateAdapter.getDate(date)\n      : null;\n  }\n\n  /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n  private _hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n    return !!(\n      d1 &&\n      d2 &&\n      this._dateAdapter.getMonth(d1) === this._dateAdapter.getMonth(d2) &&\n      this._dateAdapter.getYear(d1) === this._dateAdapter.getYear(d2)\n    );\n  }\n\n  /**\n   * @param obj The object to check.\n   * @returns The given object if it is both a date instance and valid, otherwise null.\n   */\n  private _getValidDateOrNull(obj: any): D | null {\n    return this._dateAdapter.isDateInstance(obj) &&\n      this._dateAdapter.isValid(obj as any as D)\n      ? obj\n      : null;\n  }\n\n  /** Determines whether the user has the RTL layout direction. */\n  private _isRtl() {\n    return this._dir && this._dir.value === 'rtl';\n  }\n}\n","import {\n  DOWN_ARROW,\n  END,\n  ENTER,\n  HOME,\n  LEFT_ARROW,\n  PAGE_DOWN,\n  PAGE_UP,\n  RIGHT_ARROW,\n  UP_ARROW,\n  SPACE,\n} from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { OuiCalendarBody, OuiCalendarCell } from './calendar-body';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './date-adapter';\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n/**\n * An internal component used to display a year selector in the datepicker.\n */\n@Component({\n  selector: 'oui-multi-year-view',\n  templateUrl: 'multi-year-view.html',\n  exportAs: 'ouiMultiYearView',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiMultiYearView<D> implements AfterContentInit {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  _dateAdapter = inject<DateAdapter<D>>(DateAdapter, { optional: true })!;\n  private _dir = inject(Directionality, { optional: true });\n\n  /** The date to display in this multi-year view (everything other than the year is ignored). */\n  @Input()\n  get activeDate(): D {\n    return this._activeDate;\n  }\n  set activeDate(value: D) {\n    const oldActiveDate = this._activeDate;\n    const validDate =\n      this._getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n      this._dateAdapter.today();\n    this._activeDate = this._dateAdapter.clampDate(\n      validDate,\n      this.minDate,\n      this.maxDate\n    );\n    if (\n      Math.floor(this._dateAdapter.getYear(oldActiveDate) / yearsPerPage) !==\n      Math.floor(this._dateAdapter.getYear(this._activeDate) / yearsPerPage)\n    ) {\n      this._init();\n    }\n  }\n  private _activeDate: D;\n\n  /** The currently selected date. */\n  @Input()\n  get selected(): D | null {\n    return this._selected;\n  }\n  set selected(value: D | null) {\n    this._selected = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n    this._selectedYear =\n      this._selected && this._dateAdapter.getYear(this._selected);\n  }\n  private _selected: D | null;\n\n  /** The minimum selectable date. */\n  @Input()\n  get minDate(): D | null {\n    return this._minDate;\n  }\n  set minDate(value: D | null) {\n    this._minDate = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _minDate: D | null;\n\n  /** The maximum selectable date. */\n  @Input()\n  get maxDate(): D | null {\n    return this._maxDate;\n  }\n  set maxDate(value: D | null) {\n    this._maxDate = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _maxDate: D | null;\n\n  /** A function used to filter which dates are selectable. */\n  @Input() dateFilter: (date: D) => boolean;\n\n  /** Emits when a new year is selected. */\n  @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits the selected year. This doesn't imply a change on the selected date */\n  @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits when any date is activated. */\n  @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** The body of calendar table */\n  @ViewChild(OuiCalendarBody)\n  _ouiCalendarBody: OuiCalendarBody;\n\n  /** Grid of calendar cells representing the currently displayed years. */\n  _years: OuiCalendarCell[][];\n\n  /** The year that today falls on. */\n  _todayYear: number;\n\n  /** The year of the selected date. Null if the selected date is null. */\n  _selectedYear: number | null;\n\n  constructor() {\n    if (!this._dateAdapter) {\n      throw createMissingDateImplError('DateAdapter');\n    }\n\n    this._activeDate = this._dateAdapter.today();\n  }\n\n  ngAfterContentInit() {\n    this._init();\n  }\n\n  /** Initializes this multi-year view. */\n  _init() {\n    this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n    const activeYear = this._dateAdapter.getYear(this._activeDate);\n    const activeOffset = activeYear % yearsPerPage;\n    this._years = [];\n    for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n      row.push(activeYear - activeOffset + i);\n      if (row.length === yearsPerRow) {\n        this._years.push(row.map((year) => this._createCellForYear(year)));\n        row = [];\n      }\n    }\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Handles when a new year is selected. */\n  _yearSelected(year: number) {\n    this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\n    const month = this._dateAdapter.getMonth(this.activeDate);\n    const daysInMonth = this._dateAdapter.getNumDaysInMonth(\n      this._dateAdapter.createDate(year, month, 1)\n    );\n    this.selectedChange.emit(\n      this._dateAdapter.createDate(\n        year,\n        month,\n        Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)\n      )\n    );\n  }\n\n  /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n  _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n    // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n    // disabled ones from being selected. This may not be ideal, we should look into whether\n    // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n    const oldActiveDate = this._activeDate;\n    const isRtl = this._isRtl();\n\n    switch (event.keyCode) {\n      case LEFT_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          isRtl ? 1 : -1\n        );\n        break;\n      case RIGHT_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          isRtl ? -1 : 1\n        );\n        break;\n      case UP_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          -yearsPerRow\n        );\n        break;\n      case DOWN_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          yearsPerRow\n        );\n        break;\n      case HOME:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          -this._dateAdapter.getYear(this._activeDate) % yearsPerPage\n        );\n        break;\n      case END:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          yearsPerPage -\n            (this._dateAdapter.getYear(this._activeDate) % yearsPerPage) -\n            1\n        );\n        break;\n      case PAGE_UP:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          event.altKey ? -yearsPerPage * 10 : -yearsPerPage\n        );\n        break;\n      case PAGE_DOWN:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          event.altKey ? yearsPerPage * 10 : yearsPerPage\n        );\n        break;\n      case ENTER:\n      case SPACE:\n        this._yearSelected(this._dateAdapter.getYear(this._activeDate));\n        break;\n      default:\n        // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n        return;\n    }\n\n    if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n      this.activeDateChange.emit(this.activeDate);\n    }\n\n    this._focusActiveCell();\n    // Prevent unexpected default actions such as form submission.\n    event.preventDefault();\n  }\n\n  _getActiveCell(): number {\n    return this._dateAdapter.getYear(this.activeDate) % yearsPerPage;\n  }\n\n  /** Focuses the active cell after the microtask queue is empty. */\n  _focusActiveCell() {\n    this._ouiCalendarBody._focusActiveCell();\n  }\n\n  /** Creates an OuiCalendarCell for the given year. */\n  private _createCellForYear(year: number) {\n    const yearName = this._dateAdapter.getYearName(\n      this._dateAdapter.createDate(year, 0, 1)\n    );\n    return new OuiCalendarCell(\n      year,\n      yearName,\n      yearName,\n      this._shouldEnableYear(year)\n    );\n  }\n\n  /** Whether the given year is enabled. */\n  private _shouldEnableYear(year: number) {\n    // disable if the year is greater than maxDate lower than minDate\n    if (\n      year === undefined ||\n      year === null ||\n      (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n      (this.minDate && year < this._dateAdapter.getYear(this.minDate))\n    ) {\n      return false;\n    }\n\n    // enable if it reaches here and there's no filter defined\n    if (!this.dateFilter) {\n      return true;\n    }\n\n    const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n\n    // If any date in the year is enabled count the year as enabled.\n    for (\n      let date = firstOfYear;\n      this._dateAdapter.getYear(date) === year;\n      date = this._dateAdapter.addCalendarDays(date, 1)\n    ) {\n      if (this.dateFilter(date)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * @param obj The object to check.\n   * @returns The given object if it is both a date instance and valid, otherwise null.\n   */\n  private _getValidDateOrNull(obj: any): D | null {\n    return this._dateAdapter.isDateInstance(obj) &&\n      this._dateAdapter.isValid(obj as any as D)\n      ? (obj as any as D)\n      : null;\n  }\n\n  /** Determines whether the user has the RTL layout direction. */\n  private _isRtl() {\n    return this._dir && this._dir.value === 'rtl';\n  }\n}\n","<table class=\"oui-calendar-table\">\n  <thead class=\"oui-calendar-table-header\">\n    <tr>\n      <th class=\"oui-calendar-table-header-divider\" colspan=\"4\"></th>\n    </tr>\n  </thead>\n  <tbody\n    oui-calendar-body\n    [rows]=\"_years\"\n    [todayValue]=\"_todayYear\"\n    [selectedValue]=\"_selectedYear\"\n    [numCols]=\"4\"\n    [cellAspectRatio]=\"4 / 7\"\n    [activeCell]=\"_getActiveCell()\"\n    (selectedValueChange)=\"_yearSelected($event)\"\n    (keydown)=\"_handleCalendarBodyKeydown($event)\"\n  ></tbody>\n</table>\n","import {\n  DOWN_ARROW,\n  END,\n  ENTER,\n  HOME,\n  LEFT_ARROW,\n  PAGE_DOWN,\n  PAGE_UP,\n  RIGHT_ARROW,\n  UP_ARROW,\n  SPACE,\n} from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { OuiCalendarBody, OuiCalendarCell } from './calendar-body';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { OUI_DATE_FORMATS, OuiDateFormats } from './date-formats';\nimport { DateAdapter } from './date-adapter';\n\n/**\n * An internal component used to display a single year in the datepicker.\n */\n@Component({\n  selector: 'oui-year-view',\n  templateUrl: 'year-view.html',\n  exportAs: 'ouiYearView',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiYearView<D> implements AfterContentInit {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _dateFormats = inject<OuiDateFormats>(OUI_DATE_FORMATS, {\n    optional: true,\n  })!;\n  _dateAdapter = inject<DateAdapter<D>>(DateAdapter, { optional: true })!;\n  private _dir = inject(Directionality, { optional: true });\n\n  /** The date to display in this year view (everything other than the year is ignored). */\n  @Input()\n  get activeDate(): D {\n    return this._activeDate;\n  }\n  set activeDate(value: D) {\n    const oldActiveDate = this._activeDate;\n    const validDate =\n      this._getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n      this._dateAdapter.today();\n    this._activeDate = this._dateAdapter.clampDate(\n      validDate,\n      this.minDate,\n      this.maxDate\n    );\n    if (\n      this._dateAdapter.getYear(oldActiveDate) !==\n      this._dateAdapter.getYear(this._activeDate)\n    ) {\n      this._init();\n    }\n  }\n  private _activeDate: D;\n\n  /** The currently selected date. */\n  @Input()\n  get selected(): D | null {\n    return this._selected;\n  }\n  set selected(value: D | null) {\n    this._selected = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n    this._selectedMonth = this._getMonthInCurrentYear(this._selected);\n  }\n  private _selected: D | null;\n\n  /** The minimum selectable date. */\n  @Input()\n  get minDate(): D | null {\n    return this._minDate;\n  }\n  set minDate(value: D | null) {\n    this._minDate = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _minDate: D | null;\n\n  /** The maximum selectable date. */\n  @Input()\n  get maxDate(): D | null {\n    return this._maxDate;\n  }\n  set maxDate(value: D | null) {\n    this._maxDate = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _maxDate: D | null;\n\n  /** A function used to filter which dates are selectable. */\n  @Input() dateFilter: (date: D) => boolean;\n\n  /** Emits when a new month is selected. */\n  @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits the selected month. This doesn't imply a change on the selected date */\n  @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits when any date is activated. */\n  @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** The body of calendar table */\n  @ViewChild(OuiCalendarBody)\n  _ouiCalendarBody: OuiCalendarBody;\n\n  /** Grid of calendar cells representing the months of the year. */\n  _months: OuiCalendarCell[][];\n\n  /** The label for this year (e.g. \"2017\"). */\n  _yearLabel: string;\n\n  /** The month in this year that today falls on. Null if today is in a different year. */\n  _todayMonth: number | null;\n\n  /**\n   * The month in this year that the selected Date falls on.\n   * Null if the selected Date is in a different year.\n   */\n  _selectedMonth: number | null;\n\n  constructor() {\n    if (!this._dateAdapter) {\n      throw createMissingDateImplError('DateAdapter');\n    }\n    if (!this._dateFormats) {\n      throw createMissingDateImplError('OUI_DATE_FORMATS');\n    }\n\n    this._activeDate = this._dateAdapter.today();\n  }\n\n  ngAfterContentInit() {\n    this._init();\n  }\n\n  /** Handles when a new month is selected. */\n  _monthSelected(month: number) {\n    const normalizedDate = this._dateAdapter.createDate(\n      this._dateAdapter.getYear(this.activeDate),\n      month,\n      1\n    );\n\n    this.monthSelected.emit(normalizedDate);\n\n    const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n\n    this.selectedChange.emit(\n      this._dateAdapter.createDate(\n        this._dateAdapter.getYear(this.activeDate),\n        month,\n        Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)\n      )\n    );\n  }\n\n  /** Handles keydown events on the calendar body when calendar is in year view. */\n  _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n    // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n    // disabled ones from being selected. This may not be ideal, we should look into whether\n    // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n    const oldActiveDate = this._activeDate;\n    const isRtl = this._isRtl();\n\n    switch (event.keyCode) {\n      case LEFT_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarMonths(\n          this._activeDate,\n          isRtl ? 1 : -1\n        );\n        break;\n      case RIGHT_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarMonths(\n          this._activeDate,\n          isRtl ? -1 : 1\n        );\n        break;\n      case UP_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarMonths(\n          this._activeDate,\n          -4\n        );\n        break;\n      case DOWN_ARROW:\n        this.activeDate = this._dateAdapter.addCalendarMonths(\n          this._activeDate,\n          4\n        );\n        break;\n      case HOME:\n        this.activeDate = this._dateAdapter.addCalendarMonths(\n          this._activeDate,\n          -this._dateAdapter.getMonth(this._activeDate)\n        );\n        break;\n      case END:\n        this.activeDate = this._dateAdapter.addCalendarMonths(\n          this._activeDate,\n          11 - this._dateAdapter.getMonth(this._activeDate)\n        );\n        break;\n      case PAGE_UP:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          event.altKey ? -10 : -1\n        );\n        break;\n      case PAGE_DOWN:\n        this.activeDate = this._dateAdapter.addCalendarYears(\n          this._activeDate,\n          event.altKey ? 10 : 1\n        );\n        break;\n      case ENTER:\n      case SPACE:\n        this._monthSelected(this._dateAdapter.getMonth(this._activeDate));\n        break;\n      default:\n        // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n        return;\n    }\n\n    if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n      this.activeDateChange.emit(this.activeDate);\n    }\n\n    this._focusActiveCell();\n    // Prevent unexpected default actions such as form submission.\n    event.preventDefault();\n  }\n\n  /** Initializes this year view. */\n  _init() {\n    this._selectedMonth = this._getMonthInCurrentYear(this.selected);\n    this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n    this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n\n    const monthNames = this._dateAdapter.getMonthNames('short');\n    // First row of months only contains 3 elements so we can fit the year label on the same row.\n    this._months = [[0, 1, 2], [3, 4, 5, 6], [7, 8, 9, 10], [11]].map((row) =>\n      row.map((month) => this._createCellForMonth(month, monthNames[month]))\n    );\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Focuses the active cell after the microtask queue is empty. */\n  _focusActiveCell() {\n    this._ouiCalendarBody._focusActiveCell();\n  }\n\n  /**\n   * Gets the month in this year that the given Date falls on.\n   * Returns null if the given Date is in another year.\n   */\n  private _getMonthInCurrentYear(date: D | null) {\n    return date &&\n      this._dateAdapter.getYear(date) ===\n        this._dateAdapter.getYear(this.activeDate)\n      ? this._dateAdapter.getMonth(date)\n      : null;\n  }\n\n  /** Creates an OuiCalendarCell for the given month. */\n  private _createCellForMonth(month: number, monthName: string) {\n    const ariaLabel = this._dateAdapter.format(\n      this._dateAdapter.createDate(\n        this._dateAdapter.getYear(this.activeDate),\n        month,\n        1\n      ),\n      this._dateFormats.display.monthYearA11yLabel\n    );\n    return new OuiCalendarCell(\n      month,\n      monthName.toLocaleUpperCase(),\n      ariaLabel,\n      this._shouldEnableMonth(month)\n    );\n  }\n\n  /** Whether the given month is enabled. */\n  private _shouldEnableMonth(month: number) {\n    const activeYear = this._dateAdapter.getYear(this.activeDate);\n\n    if (\n      month === undefined ||\n      month === null ||\n      this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n      this._isYearAndMonthBeforeMinDate(activeYear, month)\n    ) {\n      return false;\n    }\n\n    if (!this.dateFilter) {\n      return true;\n    }\n\n    const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n\n    // If any date in the month is enabled count the month as enabled.\n    for (\n      let date = firstOfMonth;\n      this._dateAdapter.getMonth(date) === month;\n      date = this._dateAdapter.addCalendarDays(date, 1)\n    ) {\n      if (this.dateFilter(date)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Tests whether the combination month/year is after this.maxDate, considering\n   * just the month and year of this.maxDate\n   */\n  private _isYearAndMonthAfterMaxDate(year: number, month: number) {\n    if (this.maxDate) {\n      const maxYear = this._dateAdapter.getYear(this.maxDate);\n      const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n\n      return year > maxYear || (year === maxYear && month > maxMonth);\n    }\n\n    return false;\n  }\n\n  /**\n   * Tests whether the combination month/year is before this.minDate, considering\n   * just the month and year of this.minDate\n   */\n  private _isYearAndMonthBeforeMinDate(year: number, month: number) {\n    if (this.minDate) {\n      const minYear = this._dateAdapter.getYear(this.minDate);\n      const minMonth = this._dateAdapter.getMonth(this.minDate);\n\n      return year < minYear || (year === minYear && month < minMonth);\n    }\n\n    return false;\n  }\n\n  /**\n   * @param obj The object to check.\n   * @returns The given object if it is both a date instance and valid, otherwise null.\n   */\n  private _getValidDateOrNull(obj: any): D | null {\n    return this._dateAdapter.isDateInstance(obj) &&\n      this._dateAdapter.isValid(obj as any as D)\n      ? obj\n      : null;\n  }\n\n  /** Determines whether the user has the RTL layout direction. */\n  private _isRtl() {\n    return this._dir && this._dir.value === 'rtl';\n  }\n}\n","<table class=\"oui-calendar-table\">\n  <thead class=\"oui-calendar-table-header\">\n    <tr>\n      <th class=\"oui-calendar-table-header-divider\" colspan=\"4\"></th>\n    </tr>\n  </thead>\n  <tbody\n    oui-calendar-body\n    [label]=\"_yearLabel\"\n    [rows]=\"_months\"\n    [todayValue]=\"_todayMonth\"\n    [selectedValue]=\"_selectedMonth\"\n    [labelMinRequiredCells]=\"2\"\n    [numCols]=\"4\"\n    [cellAspectRatio]=\"4 / 7\"\n    [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n    (selectedValueChange)=\"_monthSelected($event)\"\n    (keydown)=\"_handleCalendarBodyKeydown($event)\"\n  ></tbody>\n</table>\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, SecurityContext, inject } from '@angular/core';\nimport {\n  DomSanitizer,\n  SafeResourceUrl,\n  SafeHtml,\n} from '@angular/platform-browser';\nimport {\n  forkJoin,\n  Observable,\n  of as observableOf,\n  throwError as observableThrow,\n} from 'rxjs';\nimport { catchError, finalize, map, share, tap } from 'rxjs/operators';\n\n/**\n * Returns an exception to be thrown in the case when attempting to\n * load an icon with a name that cannot be found.\n *\n * @docs-private\n */\nexport function getOuiIconNameNotFoundError(iconName: string): Error {\n  return Error(`Unable to find icon with the name \"${iconName}\"`);\n}\n\n/**\n * Returns an exception to be thrown when the consumer attempts to use\n * `<oui-icon>` without including @angular/http.\n *\n * @docs-private\n */\nexport function getOuiIconNoHttpProviderError(): Error {\n  return Error(\n    'Could not find HttpClient provider for use with OuiIcon. ' +\n      'Please include the HttpClientModule from @angular/common/http in your ' +\n      'app imports.'\n  );\n}\n\n/**\n * Returns an exception to be thrown when a URL couldn't be sanitized.\n *\n * @param url URL that was attempted to be sanitized.\n * @docs-private\n */\nexport function getOuiIconFailedToSanitizeUrlError(\n  url: SafeResourceUrl\n): Error {\n  return Error(\n    `The URL provided to OuiIconRegistry was not trusted as a resource URL ` +\n      `via Angular's DomSanitizer. Attempted URL was \"${url}\".`\n  );\n}\n\n/**\n * Returns an exception to be thrown when a HTML string couldn't be sanitized.\n *\n * @param literal HTML that was attempted to be sanitized.\n * @docs-private\n */\nexport function getOuiIconFailedToSanitizeLiteralError(\n  literal: SafeHtml\n): Error {\n  return Error(\n    `The literal provided to OuiIconRegistry was not trusted as safe HTML by ` +\n      `Angular's DomSanitizer. Attempted literal was \"${literal}\".`\n  );\n}\n\n/**\n * Configuration for an icon, including the URL and possibly the cached SVG element.\n */\nclass SvgIconConfig {\n  url: SafeResourceUrl | null;\n  svgElement: SVGElement | null;\n  constructor(url: SafeResourceUrl);\n  constructor(data: SafeResourceUrl | SVGElement) {\n    // Note that we can't use `instanceof SVGElement` here,\n\n    if ((data as any).nodeName) {\n      this.svgElement = data as SVGElement;\n    } else {\n      this.url = data as SafeResourceUrl;\n    }\n  }\n}\n\n/**\n * Service to register and display icons used by the `<oui-icon>` component.\n * - Registers icon URLs by namespace and name.\n * - Registers icon set URLs by namespace.\n * - Loads icons from URLs and extracts individual icons from icon sets.\n */\n@Injectable({ providedIn: 'root' })\nexport class OuiIconRegistry {\n  private _httpClient = inject(HttpClient, { optional: true })!;\n  private _sanitizer = inject(DomSanitizer);\n\n  private _document: Document;\n\n  /**\n   * URLs and cached SVG elements for individual icons. Keys are of the format\n   */\n  private _svgIconConfigs = new Map<string, SvgIconConfig>();\n\n  /**\n   * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.\n   * Multiple icon sets can be registered under the same namespace.\n   */\n  private _iconSetConfigs = new Map<string, SvgIconConfig[]>();\n\n  /** In-progress icon fetches. Used to coalesce multiple requests to the same URL. */\n  private _inProgressUrlFetches = new Map<string, Observable<string>>();\n\n  constructor() {\n    const document = inject(DOCUMENT, { optional: true })!;\n\n    this._document = document;\n  }\n\n  /**\n   * Registers an icon by URL in the default namespace.\n   *\n   * @param iconName Name under which the icon should be registered.\n   * @param url\n   */\n  addSvgIcon(iconName: string, url: SafeResourceUrl): this {\n    this._svgIconConfigs.set(iconKey('', iconName), new SvgIconConfig(url));\n    return this;\n  }\n\n  /**\n   * Registers an icon using an HTML string in the default namespace.\n   *\n   * @param iconName Name under which the icon should be registered.\n   * @param literal SVG source of the icon.\n   */\n  addSvgIconLiteral(iconName: string, literal: SafeHtml): this {\n    const sanitizedLiteral = this._sanitizer.sanitize(\n      SecurityContext.HTML,\n      literal\n    );\n\n    if (!sanitizedLiteral) {\n      throw getOuiIconFailedToSanitizeLiteralError(literal);\n    }\n\n    const svgElement = this._createSvgElementForSingleIcon(sanitizedLiteral);\n\n    this._svgIconConfigs.set(\n      iconKey('', iconName),\n      new SvgIconConfig(svgElement)\n    );\n    return this;\n  }\n\n  /**\n   * Registers an icon set by URL in the default namespace.\n   *\n   * @param url\n   */\n  addSvgIconSet(url: SafeResourceUrl): this {\n    const config = new SvgIconConfig(url);\n    const configNamespace = this._iconSetConfigs.get('');\n\n    if (configNamespace) {\n      configNamespace.push(config);\n    } else {\n      this._iconSetConfigs.set('', [config]);\n    }\n\n    return this;\n  }\n\n  /**\n   * Returns an Observable that produces the icon (as an `<svg>` DOM element) with the given name\n   * and namespace. The icon must have been previously registered with addIcon or addIconSet;\n   * if not, the Observable will throw an error.\n   *\n   * @param name\n   * @param namespace\n   */\n  getNamedSvgIcon(name: string, namespace = ''): Observable<SVGElement> {\n    // Return (copy of) cached icon if possible.\n    const key = iconKey(namespace, name);\n    const config = this._svgIconConfigs.get(key);\n    if (config) {\n      return this._getSvgFromConfig(config);\n    }\n\n    // See if we have any icon sets registered for the namespace.\n    const iconSetConfigs = this._iconSetConfigs.get(namespace);\n\n    if (iconSetConfigs) {\n      return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\n    }\n\n    return observableThrow(getOuiIconNameNotFoundError(key));\n  }\n\n  /**\n   * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\n   */\n  private _getSvgFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n    if (config.svgElement) {\n      // We already have the SVG element for this icon, return a copy.\n      return observableOf(cloneSvg(config.svgElement));\n    } else {\n      // Fetch the icon from the config's URL, cache it, and return a copy.\n      return this._loadSvgIconFromConfig(config).pipe(\n        tap((svg) => (config.svgElement = svg)),\n        map((svg) => cloneSvg(svg))\n      );\n    }\n  }\n\n  /**\n   * Attempts to find an icon with the specified name in any of the SVG icon sets.\n   * First searches the available cached icons for a nested element with a matching name, and\n   * if found copies the element to a new `<svg>` element. If not found, fetches all icon sets\n   * that have not been cached, and searches again after all fetches are completed.\n   * The returned Observable produces the SVG element if possible, and throws\n   * an error if no icon with the specified name can be found.\n   */\n  private _getSvgFromIconSetConfigs(\n    name: string,\n    iconSetConfigs: SvgIconConfig[]\n  ): Observable<SVGElement> {\n    // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n    // requested name.\n    const namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n    if (namedIcon) {\n      // We could cache namedIcon in _svgIconConfigs, but since we have to make a copy every\n      // time anyway, there's probably not much advantage compared to just always extracting\n      // it from the icon set.\n      return observableOf(namedIcon);\n    }\n\n    // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n    // fetched, fetch them now and look for iconName in the results.\n    const iconSetFetchRequests: Observable<SVGElement | null>[] = iconSetConfigs\n      .filter((iconSetConfig) => !iconSetConfig.svgElement)\n      .map((iconSetConfig) =>\n        this._loadSvgIconSetFromConfig(iconSetConfig).pipe(\n          catchError(\n            (err: HttpErrorResponse): Observable<SVGElement | null> => {\n              const url = this._sanitizer.sanitize(\n                SecurityContext.RESOURCE_URL,\n                iconSetConfig.url\n              );\n\n              // Swallow errors fetching individual URLs so the\n              // combined Observable won't necessarily fail.\n              console.error(\n                `Loading icon set URL: ${url} failed: ${err.message}`\n              );\n              return observableOf(null);\n            }\n          )\n        )\n      );\n\n    // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n    // cached SVG element (unless the request failed), and we can check again for the icon.\n    return forkJoin(iconSetFetchRequests).pipe(\n      map(() => {\n        const foundIcon = this._extractIconWithNameFromAnySet(\n          name,\n          iconSetConfigs\n        );\n\n        if (!foundIcon) {\n          throw getOuiIconNameNotFoundError(name);\n        }\n\n        return foundIcon;\n      })\n    );\n  }\n\n  /**\n   * Searches the cached SVG elements for the given icon sets for a nested icon element whose \"id\"\n   * tag matches the specified name. If found, copies the nested element to a new SVG element and\n   * returns it. Returns null if no matching element is found.\n   */\n  private _extractIconWithNameFromAnySet(\n    iconName: string,\n    iconSetConfigs: SvgIconConfig[]\n  ): SVGElement | null {\n    // Iterate backwards, so icon sets added later have precedence.\n    for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\n      const config = iconSetConfigs[i];\n      if (config.svgElement) {\n        const foundIcon = this._extractSvgIconFromSet(\n          config.svgElement,\n          iconName\n        );\n        if (foundIcon) {\n          return foundIcon;\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\n   * from it.\n   */\n  private _loadSvgIconFromConfig(\n    config: SvgIconConfig\n  ): Observable<SVGElement> {\n    return this._fetchUrl(config.url).pipe(\n      map((svgText) => this._createSvgElementForSingleIcon(svgText))\n    );\n  }\n\n  /**\n   * Loads the content of the icon set URL specified in the SvgIconConfig and creates an SVG element\n   * from it.\n   */\n  private _loadSvgIconSetFromConfig(\n    config: SvgIconConfig\n  ): Observable<SVGElement> {\n    // If the SVG for this icon set has already been parsed, do nothing.\n    if (config.svgElement) {\n      return observableOf(config.svgElement);\n    }\n\n    return this._fetchUrl(config.url).pipe(\n      map((svgText) => {\n        // It is possible that the icon set was parsed and cached by an earlier request, so parsing\n        // only needs to occur if the cache is yet unset.\n        if (!config.svgElement) {\n          config.svgElement = this._svgElementFromString(svgText);\n        }\n\n        return config.svgElement;\n      })\n    );\n  }\n\n  /**\n   * Creates a DOM element from the given SVG string, and adds default attributes.\n   */\n  private _createSvgElementForSingleIcon(responseText: string): SVGElement {\n    const svg = this._svgElementFromString(responseText);\n    this._setSvgAttributes(svg);\n    return svg;\n  }\n\n  /**\n   * Searches the cached element of the given SvgIconConfig for a nested icon element whose \"id\"\n   * tag matches the specified name. If found, copies the nested element to a new SVG element and\n   * returns it. Returns null if no matching element is found.\n   */\n  private _extractSvgIconFromSet(\n    iconSet: SVGElement,\n    iconName: string\n  ): SVGElement | null {\n    const iconSource = iconSet.querySelector('#' + iconName);\n\n    if (!iconSource) {\n      return null;\n    }\n\n    // Clone the element and remove the ID to prevent multiple elements from being added\n    // to the page with the same ID.\n    const iconElement = iconSource.cloneNode(true) as Element;\n    iconElement.removeAttribute('id');\n\n    // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n    // the content of a new <svg> node.\n    if (iconElement.nodeName.toLowerCase() === 'svg') {\n      return this._setSvgAttributes(iconElement as SVGElement);\n    }\n\n    // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n    // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n    // tag is problematic on Firefox, because it needs to include the current page path.\n    if (iconElement.nodeName.toLowerCase() === 'symbol') {\n      return this._setSvgAttributes(this._toSvgElement(iconElement));\n    }\n\n    // createElement('SVG') doesn't work as expected; the DOM ends up with\n    // the correct nodes, but the SVG content doesn't render. Instead we\n    // have to create an empty SVG node using innerHTML and append its content.\n    // Elements created using DOMParser.parseFromString have the same problem.\n    // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n    const svg = this._svgElementFromString('<svg></svg>');\n    // Clone the node so we don't remove it from the parent icon set element.\n    svg.appendChild(iconElement);\n\n    return this._setSvgAttributes(svg);\n  }\n\n  /**\n   * Creates a DOM element from the given SVG string.\n   */\n  private _svgElementFromString(str: string): SVGElement {\n    const div = this._document.createElement('DIV');\n    div.innerHTML = str;\n    const svg = div.querySelector('svg') as SVGElement;\n\n    if (!svg) {\n      throw Error('<svg> tag not found');\n    }\n\n    return svg;\n  }\n\n  /**\n   * Converts an element into an SVG node by cloning all of its children.\n   */\n  private _toSvgElement(element: Element): SVGElement {\n    const viewBox = element.getAttribute('viewBox').split(' ');\n    const width = `${viewBox[2]}px`;\n    const height = `${viewBox[3]}px`;\n    const svgTag = `<svg height=\"${height}\" width=\"${width}\"></svg>`;\n\n    const svg = this._svgElementFromString(svgTag);\n    for (let i = 0; i < element.childNodes.length; i++) {\n      if (element.childNodes[i].nodeType === this._document.ELEMENT_NODE) {\n        svg.appendChild(element.childNodes[i].cloneNode(true));\n      }\n    }\n    return svg;\n  }\n\n  /**\n   * Sets the default attributes for an SVG element to be used as an icon.\n   */\n  private _setSvgAttributes(svg: SVGElement): SVGElement {\n    svg.setAttribute('fit', '');\n    svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n    svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n\n    return svg;\n  }\n\n  /**\n   * Returns an Observable which produces the string contents of the given URL. Results may be\n   * cached, so future calls with the same URL may not cause another HTTP request.\n   */\n  private _fetchUrl(safeUrl: SafeResourceUrl | null): Observable<string> {\n    try {\n      if (!this._httpClient) {\n        throw getOuiIconNoHttpProviderError();\n      }\n\n      if (safeUrl == null) {\n        throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\n      }\n\n      const url = this._sanitizer.sanitize(\n        SecurityContext.RESOURCE_URL,\n        safeUrl\n      );\n\n      if (!url) {\n        throw getOuiIconFailedToSanitizeUrlError(safeUrl);\n      }\n\n      // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n      // already a request in progress for that URL. It's necessary to call share() on the\n      // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n      const inProgressFetch = this._inProgressUrlFetches.get(url);\n\n      if (inProgressFetch) {\n        return inProgressFetch;\n      }\n      // Observable. Figure out why and fix it.\n      const req = this._httpClient.get(url, { responseType: 'text' }).pipe(\n        finalize(() => this._inProgressUrlFetches.delete(url)),\n        share()\n      );\n\n      this._inProgressUrlFetches.set(url, req);\n      return req;\n    } catch (e) {\n      throw Error(`Cannot fetch icon from URL \"${e.Message}\".`);\n    }\n  }\n}\n\n/** Clones an SVGElement while preserving type information. */\nfunction cloneSvg(svg: SVGElement): SVGElement {\n  return svg.cloneNode(true) as SVGElement;\n}\n\n/** Returns the cache key to use for an icon namespace and name. */\nfunction iconKey(namespace: string, name: string) {\n  return namespace + ':' + name;\n}\n","export const ICONS = {\n  DOWN_ARROW: `\n  <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"12px\" height=\"12px\" viewBox=\"0 0 12 12\" version=\"1.1\">\n<g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n    <g id=\"DropDown\" transform=\"translate(-527.000000, -179.000000)\" fill=\"#4A4A4A\">\n        <path d=\"M530.684211,183.315789 L537,183.315789 L537,185 L530.684211,185 L529,185 L529,177 L530.684211,177 L530.684211,183.315789 Z\" id=\"Combined-Shape-Copy-3\" transform=\"translate(533.000000, 181.000000) scale(-1, -1) rotate(-225.000000) translate(-533.000000, -181.000000) \"/>\n    </g>\n</g>\n</svg>`,\n  PANEL_ICON: `<svg width=\"18\" height=\"18\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 17.5a8.5 8.5 0 0 1 0-17 8.5 8.5 0 0 1 0 17zm0-1a7.5 7.5 0 0 0 0-15 7.5 7.5 0 0 0 0 15z\"/><path d=\"M7 12h4v1H7v-1zm0-5h3v1H7V7z\"/><path d=\"M8 7h2v5H8V7zm0-3h2v2H8V4z\"/></svg>`,\n  VIDEO_ICON: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"><g fill=\"#006BB1\" fill-rule=\"evenodd\"><path d=\"M10 18.5c-4.694 0-8.5-3.806-8.5-8.5s3.806-8.5 8.5-8.5v0c4.694 0 8.5 3.806 8.5 8.5s-3.806 8.5-8.5 8.5v0zM10 17.5c4.142 0 7.5-3.358 7.5-7.5s-3.358-7.5-7.5-7.5v0c-4.142 0-7.5 3.358-7.5 7.5s3.358 7.5 7.5 7.5v0z\"></path><path d=\"M9 7.407v5.702l4.147-2.804-4.147-2.898zM8 14.89v-9.297l6.799 4.726-6.799 4.571z\"></path></g></svg>`,\n  ARTICLE_ICON: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\"><g fill=\"#006BB1\" fill-rule=\"evenodd\"><path d=\"M1 1v13h13V1H1zM0 0h15v15H0V0z\" fill-rule=\"nonzero\"/><path d=\"M6.617 9.158v-.433c0-.375.08-.702.24-.979.16-.277.454-.572.88-.885.41-.293.68-.53.81-.715.132-.183.197-.388.197-.615 0-.254-.094-.447-.281-.58-.188-.133-.45-.199-.785-.199-.586 0-1.254.191-2.004.574l-.639-1.283a5.582 5.582 0 0 1 2.772-.732c.804 0 1.444.193 1.919.58.474.386.711.902.711 1.546 0 .43-.097.801-.292 1.114-.196.312-.567.664-1.114 1.054-.375.278-.612.489-.712.633-.1.145-.15.334-.15.569v.351H6.618zm-.187 2.004c0-.328.088-.576.263-.744.176-.168.432-.252.768-.252.324 0 .575.086.753.258.178.172.266.418.266.738 0 .309-.09.552-.27.73-.179.177-.429.266-.75.266-.327 0-.581-.087-.76-.26-.18-.174-.27-.42-.27-.736z\"/></g></svg>`,\n  CLOSE_ICON: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"><g fill=\"#666\" fill-rule=\"evenodd\"><path d=\"M3.456 4.521l1.060-1.060 12.021 12.020-1.060 1.060z\"></path><path d=\"M15.477 3.46l1.060 1.061-12.020 12.021-1.060-1.060z\"></path></g></svg>`,\n  THREE_DOT_MENU_ICON: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"8\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g transform=\"translate(1 2)\" fill=\"#000\" fill-rule=\"evenodd\"><circle cx=\"2\" cy=\"2\" r=\"2\"/><circle cx=\"9\" cy=\"2\" r=\"2\"/><circle cx=\"16\" cy=\"2\" r=\"2\"/></g></svg>`,\n  ARROW_ICON: `<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" class=\"svg-inline--fa fa-angle-right fa-w-6 fa-fw fa-2x\" data-icon=\"angle-right\" data-prefix=\"fal\" viewBox=\"0 0 192 512\"><path d=\"M166.9 264.5l-117.8 116c-4.7 4.7-12.3 4.7-17 0l-7.1-7.1c-4.7-4.7-4.7-12.3 0-17L127.3 256 25.1 155.6c-4.7-4.7-4.7-12.3 0-17l7.1-7.1c4.7-4.7 12.3-4.7 17 0l117.8 116c4.6 4.7 4.6 12.3-.1 17z\" fill=\"#4a4a4a\"/></svg>`,\n  SELECT_ARROW_ICON: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\"><path d=\"M6 5.275L10.466.809 11.656 2 7.192 6.466 6 7.656.343 2 1.534.81 6 5.274z\" fill=\"#4A4A4A\" fill-rule=\"evenodd\"/></svg>`,\n  CLOSE_ICON_8X8: `<svg width=\"8\" height=\"8\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.059 0L8 .941 4.941 4 8 7.059 7.059 8 4 4.941.941 8 0 7.059 3.059 4 0 .941.941 0 4 3.058 7.059 0z\" fill-rule=\"evenodd\"/></svg>`,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Version } from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('0.0.0-PLACEHOLDER');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { HighContrastModeDetector } from '@angular/cdk/a11y';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { inject, InjectionToken, NgModule } from '@angular/core';\nimport { VERSION as CDK_VERSION } from '@angular/cdk';\nimport { DOCUMENT } from '@angular/common';\nimport { Platform, _isTestEnvironment } from '@angular/cdk/platform';\nimport { VERSION } from '../version';\nimport { isDevMode } from '@angular/core';\n\n/** @docs-private */\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): SanityChecks {\n  return true;\n}\n\n/** Injection token that configures whether the Material sanity checks are enabled. */\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<SanityChecks>(\n  'mat-sanity-checks',\n  {\n    providedIn: 'root',\n    factory: MATERIAL_SANITY_CHECKS_FACTORY,\n  }\n);\n\n/**\n * Possible sanity checks that can be enabled. If set to\n * true/false, all checks will be enabled/disabled.\n */\nexport type SanityChecks = boolean | GranularSanityChecks;\n\n/** Object that can be used to configure the sanity checks granularly. */\nexport interface GranularSanityChecks {\n  doctype: boolean;\n  theme: boolean;\n  version: boolean;\n}\n\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., OuiTabsModule).\n */\n@NgModule({\n  imports: [BidiModule],\n  exports: [BidiModule],\n})\nexport class OuiCommonModule {\n  private _sanityChecks = inject<SanityChecks>(MATERIAL_SANITY_CHECKS, {\n    optional: true,\n  })!;\n  private _document = inject<Document>(DOCUMENT);\n\n  /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n  private _hasDoneGlobalChecks = false;\n\n  constructor() {\n    const highContrastModeDetector = inject(HighContrastModeDetector);\n\n    // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n    // in OuiCommonModule.\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n\n    if (!this._hasDoneGlobalChecks) {\n      this._hasDoneGlobalChecks = true;\n\n      if (typeof isDevMode === 'undefined' || isDevMode) {\n        // Inject in here so the reference to `Platform` can be removed in production mode.\n        const platform = inject(Platform, { optional: true });\n\n        if (this._checkIsEnabled('doctype')) {\n          _checkDoctypeIsDefined(this._document);\n        }\n\n        if (this._checkIsEnabled('theme')) {\n          _checkThemeIsPresent(this._document, !!platform?.isBrowser);\n        }\n\n        if (this._checkIsEnabled('version')) {\n          _checkCdkVersionMatch();\n        }\n      }\n    }\n  }\n\n  /** Gets whether a specific sanity check is enabled. */\n  private _checkIsEnabled(name: keyof GranularSanityChecks): boolean {\n    if (_isTestEnvironment()) {\n      return false;\n    }\n\n    if (typeof this._sanityChecks === 'boolean') {\n      return this._sanityChecks;\n    }\n\n    return !!this._sanityChecks[name];\n  }\n}\n\n/** Checks that the page has a doctype. */\nfunction _checkDoctypeIsDefined(doc: Document): void {\n  if (!doc.doctype) {\n    console.warn(\n      'Current document does not have a doctype. This may cause ' +\n        'some Angular Material components not to behave as expected.'\n    );\n  }\n}\n\n/** Checks that a theme has been included. */\nfunction _checkThemeIsPresent(doc: Document, isBrowser: boolean): void {\n  // We need to assert that the `body` is defined, because these checks run very early\n  // and the `body` won't be defined if the consumer put their scripts in the `head`.\n  if (!doc.body || !isBrowser) {\n    return;\n  }\n\n  const testElement = doc.createElement('div');\n  testElement.classList.add('mat-theme-loaded-marker');\n  doc.body.appendChild(testElement);\n\n  const computedStyle = getComputedStyle(testElement);\n\n  // In some situations the computed style of the test element can be null. For example in\n  // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n  if (computedStyle && computedStyle.display !== 'none') {\n    console.warn(\n      'Could not find Angular Material core theme. Most Material ' +\n        'components may not work as expected. For more info refer ' +\n        'to the theming guide: https://material.angular.io/guide/theming'\n    );\n  }\n\n  testElement.remove();\n}\n\n/** Checks whether the Material version matches the CDK version. */\nfunction _checkCdkVersionMatch(): void {\n  if (VERSION.full !== CDK_VERSION.full) {\n    console.warn(\n      'The Angular Material version (' +\n        VERSION.full +\n        ') does not match ' +\n        'the Angular CDK version (' +\n        CDK_VERSION.full +\n        ').\\n' +\n        'Please ensure the versions of these two packages exactly match.'\n    );\n  }\n}\n","import { Constructor } from './constructor';\nimport { ElementRef } from '@angular/core';\n\n/** @docs-private */\nexport interface CanColor {\n  /** Theme color palette for the component. */\n  color: ThemePalette;\n}\n\n/** Possible color palette values. */\nexport type ThemePalette = 'primary' | 'accent' | 'warn' | undefined;\n\n/** @docs-private */\nexport interface HasElementRef {\n  _elementRef: ElementRef;\n}\n\n/** @docs-private */\nexport type CanColorCtor = Constructor<CanColor>;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinColor<T extends Constructor<HasElementRef>>(\n  base: T,\n  defaultColor?: ThemePalette\n): CanColorCtor & T {\n  return class extends base {\n    private _color: ThemePalette;\n\n    get color(): ThemePalette {\n      return this._color;\n    }\n    set color(value: ThemePalette) {\n      const colorPalette = value || defaultColor;\n\n      if (colorPalette !== this._color) {\n        if (this._color) {\n          this._elementRef.nativeElement.classList.remove(`oui-${this._color}`);\n        }\n        if (colorPalette) {\n          this._elementRef.nativeElement.classList.add(`oui-${colorPalette}`);\n        }\n\n        this._color = colorPalette;\n      }\n    }\n\n    constructor(...args: any[]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      super(...args);\n      // Set the default color that can be specified from the mixin.\n      this.color = defaultColor;\n    }\n  };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Constructor } from './constructor';\n\nexport interface CanDisable {\n  /** Whether the component is disabled. */\n  disabled: boolean;\n}\n\n/** @docs-private */\nexport type CanDisableCtor = Constructor<CanDisable>;\n\n/** Mixin to augment a directive with a `disabled` property. */\nexport function mixinDisabled<T extends Constructor<{}>>(\n  base: T\n): CanDisableCtor & T {\n  return class extends base {\n    private _disabled = false;\n\n    get disabled() {\n      return this._disabled;\n    }\n    set disabled(value: any) {\n      this._disabled = coerceBooleanProperty(value);\n    }\n\n    constructor(...args: any[]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      super(...args);\n    }\n  };\n}\n","import { Constructor } from './constructor';\nimport { CanDisable } from './disabled';\n\n/** @docs-private */\nexport interface HasTabIndex {\n  /** Tabindex of the component. */\n  tabIndex: number;\n}\n\n/** @docs-private */\nexport type HasTabIndexCtor = Constructor<HasTabIndex>;\n\n/** Mixin to augment a directive with a `tabIndex` property. */\nexport function mixinTabIndex<T extends Constructor<CanDisable>>(\n  base: T,\n  defaultTabIndex = 0\n): HasTabIndexCtor & T {\n  return class extends base {\n    private _tabIndex: number = defaultTabIndex;\n\n    get tabIndex(): number {\n      return this.disabled ? -1 : this._tabIndex;\n    }\n    set tabIndex(value: number) {\n      // If the specified tabIndex value is null or undefined, fall back to the default value.\n      this._tabIndex = value != null ? value : defaultTabIndex;\n    }\n\n    constructor(...args: any[]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      super(...args);\n    }\n  };\n}\n","import { Observable, Subscriber } from 'rxjs';\nimport { Constructor } from './constructor';\n\n/**\n * Mixin that adds an initialized property to a directive which, when subscribed to, will emit a\n * value once markInitialized has been called, which should be done during the ngOnInit function.\n * If the subscription is made after it has already been marked as initialized, then it will trigger\n * an emit immediately.\n *\n * @docs-private\n */\nexport interface HasInitialized {\n  /** Stream that emits once during the directive/component's ngOnInit. */\n  initialized: Observable<void>;\n\n  /**\n   * Sets the state as initialized and must be called during ngOnInit to notify subscribers that\n   * the directive has been initialized.\n   *\n   * @docs-private\n   */\n  _markInitialized: () => void;\n}\n\n/** @docs-private */\nexport type HasInitializedCtor = Constructor<HasInitialized>;\n\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nexport function mixinInitialized<T extends Constructor<{}>>(\n  base: T\n): HasInitializedCtor & T {\n  return class extends base {\n    /** Whether this directive has been marked as initialized. */\n    _isInitialized = false;\n\n    /**\n     * List of subscribers that subscribed before the directive was initialized. Should be notified\n     * during _markInitialized. Set to null after pending subscribers are notified, and should\n     * not expect to be populated after.\n     */\n    _pendingSubscribers: Subscriber<void>[] | null = [];\n\n    /**\n     * Observable stream that emits when the directive initializes. If already initialized, the\n     * subscriber is stored to be notified once _markInitialized is called.\n     */\n    initialized = new Observable<void>((subscriber) => {\n      // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n      // when _markInitialized is called.\n      if (this._isInitialized) {\n        this._notifySubscriber(subscriber);\n      } else {\n        this._pendingSubscribers!.push(subscriber);\n      }\n    });\n\n    constructor(...args: any[]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      super(...args);\n    }\n\n    /**\n     * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n     * of ngOnInit.\n     *\n     * @docs-private\n     */\n    _markInitialized(): void {\n      if (this._isInitialized) {\n        throw Error(\n          'This directive has already been marked as initialized and ' +\n            'should not be called twice.'\n        );\n      }\n\n      this._isInitialized = true;\n\n      this._pendingSubscribers!.forEach(this._notifySubscriber);\n      this._pendingSubscribers = null;\n    }\n\n    /** Emits and completes the subscriber stream (should only emit once). */\n    _notifySubscriber(subscriber: Subscriber<void>): void {\n      subscriber.next();\n      subscriber.complete();\n    }\n  };\n}\n","import {\n  UntypedFormControl,\n  FormGroupDirective,\n  NgControl,\n  NgForm,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { ErrorStateMatcher } from './error-options';\nimport { Constructor } from './constructor';\n\n/** @docs-private */\nexport interface CanUpdateErrorState {\n  readonly stateChanges: Subject<void>;\n  errorState: boolean;\n  errorStateMatcher: ErrorStateMatcher;\n  updateErrorState(): void;\n}\n\n/** @docs-private */\nexport type CanUpdateErrorStateCtor = Constructor<CanUpdateErrorState>;\n\n/** @docs-private */\nexport interface HasErrorState {\n  _parentFormGroup: FormGroupDirective;\n  _parentForm: NgForm;\n  _defaultErrorStateMatcher: ErrorStateMatcher;\n  ngControl: NgControl;\n}\n\n/**\n * Mixin to augment a directive with updateErrorState method.\n * For component with `errorState` and need to update `errorState`.\n */\nexport function mixinErrorState<T extends Constructor<HasErrorState>>(\n  base: T\n): CanUpdateErrorStateCtor & T {\n  return class extends base {\n    /** Whether the component is in an error state. */\n    errorState = false;\n\n    /**\n     * Stream that emits whenever the state of the input changes such that the wrapping\n     * `MatFormField` needs to run change detection.\n     */\n    readonly stateChanges = new Subject<void>();\n\n    errorStateMatcher: ErrorStateMatcher;\n\n    updateErrorState() {\n      const oldState = this.errorState;\n      const parent = this._parentFormGroup || this._parentForm;\n      const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n      const control = this.ngControl\n        ? (this.ngControl.control as UntypedFormControl)\n        : null;\n      const newState = matcher.isErrorState(control, parent);\n\n      if (newState !== oldState) {\n        this.errorState = newState;\n        this.stateChanges.next();\n      }\n    }\n\n    constructor(...args: any[]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      super(...args);\n    }\n  };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AbstractConstructor, Constructor } from './constructor';\n\n/** @docs-private */\nexport interface CanDisableRipple {\n  /** Whether ripples are disabled. */\n  disableRipple: boolean;\n}\n\ntype CanDisableRippleCtor = Constructor<CanDisableRipple> &\n  AbstractConstructor<CanDisableRipple>;\n\n/** Mixin to augment a directive with a `disableRipple` property. */\nexport function mixinDisableRipple<T extends AbstractConstructor<{}>>(\n  base: T\n): CanDisableRippleCtor & T;\nexport function mixinDisableRipple<T extends Constructor<{}>>(\n  base: T\n): CanDisableRippleCtor & T {\n  return class extends base {\n    private _disableRipple = false;\n\n    /** Whether the ripple effect is disabled or not. */\n    get disableRipple(): boolean {\n      return this._disableRipple;\n    }\n    set disableRipple(value: any) {\n      this._disableRipple = coerceBooleanProperty(value);\n    }\n\n    constructor(...args: any[]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      super(...args);\n    }\n  };\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  CanDisable,\n  CanDisableCtor,\n  mixinDisabled,\n} from '../common-behaviors/disabled';\n\n// Boilerplate for applying mixins to OuiOptgroup.\n/** @docs-private */\nexport class OuiOptgroupBase {}\nexport const _OuiOptgroupMixinBase: CanDisableCtor & typeof OuiOptgroupBase =\n  mixinDisabled(OuiOptgroupBase);\n\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n\n/**\n * Component that is used to group instances of `oui-option`.\n */\n@Component({\n  selector: 'oui-optgroup',\n  exportAs: 'ouiOptgroup',\n  templateUrl: 'optgroup.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled'],\n  styleUrls: ['optgroup.scss'],\n  host: {\n    class: 'oui-optgroup',\n    role: 'group',\n    '[class.oui-optgroup-disabled]': 'disabled',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[attr.aria-labelledby]': '_labelId',\n  },\n  standalone: false,\n})\nexport class OuiOptgroup extends _OuiOptgroupMixinBase implements CanDisable {\n  /** Label for the option group. */\n  @Input()\n  label: string;\n\n  /** Unique id for the underlying label. */\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  _labelId: string = `oui-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n}\n","<label class=\"oui-optgroup-label\" [id]=\"_labelId\"\n  >{{ label }} <ng-content></ng-content\n></label>\n<ng-content select=\"oui-option, ng-container\"></ng-content>\n","import {\n  Component,\n  ViewEncapsulation,\n  Input,\n  ChangeDetectionStrategy,\n  OnDestroy,\n  ElementRef,\n  NgZone,\n  inject,\n} from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Subscription } from 'rxjs';\n\n/**\n * Possible states for a pseudo checkbox.\n *\n * @docs-private\n */\nexport type OuiPseudoCheckboxState = 'unchecked' | 'checked';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `oui-primary .oui-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<oui-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n *\n * @docs-private\n */\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'oui-pseudo-checkbox',\n  styleUrls: ['pseudo-checkbox.scss'],\n  template: '',\n  host: {\n    class: 'oui-pseudo-checkbox',\n    '[class.oui-pseudo-checkbox-checked]': 'state === \"checked\"',\n    '[class.oui-pseudo-checkbox-disabled]': 'disabled',\n  },\n  standalone: false,\n})\nexport class OuiPseudoCheckbox implements OnDestroy {\n  protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n  _animationMode? = inject(ANIMATION_MODULE_TYPE, { optional: true });\n\n  /** Display state of the checkbox. */\n  @Input() state: OuiPseudoCheckboxState = 'unchecked';\n\n  /** Whether the checkbox is disabled. */\n  @Input() disabled = false;\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  constructor() {\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n  }\n  ngOnDestroy() {\n    this._monitorSubscription.unsubscribe();\n    this._focusMonitor.stopMonitoring(this.elementRef);\n  }\n}\n","<oui-pseudo-checkbox\n  *ngIf=\"multiple\"\n  class=\"oui-option-pseudo-checkbox\"\n  [state]=\"selected ? 'checked' : ''\"\n  [disabled]=\"disabled\"\n></oui-pseudo-checkbox>\n\n<span class=\"oui-option-text\"> <ng-content></ng-content> </span>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  NgZone,\n  inject,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { OuiOptgroup } from './optgroup';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n\n/** Event object emitted by OuiOption when selected or deselected. */\nexport class OuiOptionSelectionChange {\n  constructor(\n    /** Reference to the option that emitted the event. */\n    public source: OuiOption,\n    /** Whether the change in the option's value was a result of a user action. */\n    public isUserInput = false\n  ) {}\n}\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n *\n * @docs-private\n */\nexport interface OuiOptionParentComponent {\n  multiple?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const OUI_OPTION_PARENT_COMPONENT =\n  new InjectionToken<OuiOptionParentComponent>('OUI_OPTION_PARENT_COMPONENT');\n\n/**\n * Single option inside of a `<oui-select>` element.\n */\n@Component({\n  selector: 'oui-option',\n  exportAs: 'ouiOption',\n  host: {\n    role: 'option',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[class.oui-selected]': 'selected',\n    '[class.oui-option-multiple]': 'multiple',\n    '[class.oui-active]': 'active',\n    '[id]': 'id',\n    '[attr.aria-selected]': 'selected.toString()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[class.oui-option-disabled]': 'disabled',\n    '(click)': '_selectViaInteraction()',\n    '(keydown)': '_handleKeydown($event)',\n    class: 'oui-option',\n  },\n  styleUrls: ['option.scss'],\n  templateUrl: 'option.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiOption implements AfterViewChecked, OnDestroy {\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n  private _parent = inject<OuiOptionParentComponent>(\n    OUI_OPTION_PARENT_COMPONENT,\n    { optional: true }\n  )!;\n  readonly group = inject(OuiOptgroup, { optional: true })!;\n\n  private _selected = false;\n  private _active = false;\n  private _disabled = false;\n  private _mostRecentViewValue = '';\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  /** Whether the wrapping component is in multiple selection mode. */\n  get multiple() {\n    return this._parent && this._parent.multiple;\n  }\n\n  /** Whether or not the option is currently selected. */\n  get selected(): boolean {\n    return this._selected;\n  }\n\n  /** The form value of the option. */\n  @Input()\n  value: any;\n\n  /** The unique ID of the option. */\n  @Input()\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  id = `oui-option-${_uniqueIdCounter++}`;\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() {\n    return (this.group && this.group.disabled) || this._disabled;\n  }\n  set disabled(value: any) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n\n  /** Event emitted when the option is selected or deselected. */\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output()\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  readonly onSelectionChange = new EventEmitter<OuiOptionSelectionChange>();\n\n  /** Emits when the state of the option changes and any parents have to be notified. */\n  readonly _stateChanges = new Subject<void>();\n\n  constructor() {\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n  }\n\n  /**\n   * Whether or not the option is currently active and ready to be selected.\n   * An active option displays styles as if it is focused, but the\n   * focus is actually retained somewhere else. This comes in handy\n   * for components like autocomplete where focus must remain on the input.\n   */\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * The displayed value of the option. It is necessary to show the selected option in the\n   * select's trigger.\n   */\n  get viewValue(): string {\n    return (this._getHostElement().textContent || '').trim();\n  }\n\n  /**\n   * The displayed value of the option. It is necessary to show the selected option in the\n   * select's trigger.\n   */\n  get viewValueForSelect(): string {\n    return this._getHostElement().querySelector('.oui-option-text').innerHTML;\n  }\n\n  /** Selects the option. */\n  select(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Deselects the option. */\n  deselect(): void {\n    if (this._selected) {\n      this._selected = false;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent();\n    }\n  }\n\n  /** Sets focus onto this option. */\n  focus(): void {\n    const element = this._getHostElement();\n\n    if (typeof element.focus === 'function') {\n      element.focus();\n    }\n  }\n\n  /**\n   * This method sets display styles on the option to make it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setActiveStyles(): void {\n    if (!this._active) {\n      this._active = true;\n      setTimeout((_) => {\n        const focusedElement = document.querySelector(\n          '.oui-active'\n        ) as HTMLElement;\n        const multiSelect = document.querySelector(\n          '.oui-option-pseudo-checkbox'\n        ) as HTMLElement;\n        const ouiSearch = document.querySelector('.oui-select-search-input');\n        if (focusedElement && !multiSelect && !ouiSearch) {\n          focusedElement?.focus();\n        }\n      });\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * This method removes display styles on the option that made it appear\n   * active. This is used by the ActiveDescendantKeyManager so key\n   * events will display the proper options as active on arrow key events.\n   */\n  setInactiveStyles(): void {\n    if (this._active) {\n      this._active = false;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    return this.viewValue;\n  }\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if (event.keyCode === ENTER || event.keyCode === SPACE) {\n      this._selectViaInteraction();\n\n      // Prevent the page from scrolling down and form submits.\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * `Selects the option while indicating the selection came from the user. Used to\n   * determine if the select's view -> model callback should be invoked.`\n   */\n  _selectViaInteraction(): void {\n    if (!this.disabled) {\n      this._selected = this.multiple ? !this._selected : true;\n      this._changeDetectorRef.markForCheck();\n      this._emitSelectionChangeEvent(true);\n    }\n  }\n\n  /** Returns the correct tabindex for the option depending on disabled state. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Gets the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  ngAfterViewChecked() {\n    // Since parent components could be using the option's label to display the selected values\n    // (e.g. `oui-select`) and they don't have a way of knowing if the option's label has changed\n    // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n    // relatively cheap, however we still limit them only to selected options in order to avoid\n    // hitting the DOM too often.\n    if (this._selected) {\n      const viewValue = this.viewValue;\n\n      if (viewValue !== this._mostRecentViewValue) {\n        this._mostRecentViewValue = viewValue;\n        this._stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n    this._monitorSubscription.unsubscribe();\n    this._focusMonitor.stopMonitoring(this.elementRef);\n  }\n\n  /** Emits the selection change event. */\n  private _emitSelectionChangeEvent(isUserInput = false): void {\n    this.onSelectionChange.emit(\n      new OuiOptionSelectionChange(this, isUserInput)\n    );\n  }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n *\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(\n  optionIndex: number,\n  options: QueryList<OuiOption>,\n  optionGroups: QueryList<OuiOptgroup>\n): number {\n  if (optionGroups.length) {\n    const optionsArray = options.toArray();\n    const groups = optionGroups.toArray();\n    let groupCounter = 0;\n\n    for (let i = 0; i <= optionIndex; i++) {\n      if (\n        optionsArray[i].group &&\n        optionsArray[i].group === groups[groupCounter]\n      ) {\n        groupCounter++;\n      }\n    }\n\n    return groupCounter;\n  }\n\n  return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n *\n * @param optionIndex Index of the option to be scrolled into the view.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(\n  optionIndex: number,\n  optionHeight: number,\n  currentScrollPosition: number,\n  panelHeight: number,\n  selectedOptionOffset?: number\n): number {\n  const optionOffset = selectedOptionOffset || optionIndex * optionHeight;\n\n  if (optionOffset < currentScrollPosition) {\n    return optionOffset;\n  }\n\n  if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n    return Math.max(0, optionOffset - panelHeight + optionHeight);\n  }\n\n  return currentScrollPosition;\n}\n","import { NgModule } from '@angular/core';\nimport { OuiPseudoCheckbox } from './pseudo-checkbox/pseudo-checkbox';\n\n@NgModule({\n  exports: [OuiPseudoCheckbox],\n  declarations: [OuiPseudoCheckbox],\n})\nexport class OuiPseudoCheckboxModule {}\n\nexport * from './pseudo-checkbox/pseudo-checkbox';\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OuiOption } from './option';\nimport { OuiOptgroup } from './optgroup';\nimport { OuiPseudoCheckboxModule } from '../selection/index';\n\n@NgModule({\n  imports: [CommonModule, OuiPseudoCheckboxModule],\n  exports: [OuiOption, OuiOptgroup],\n  declarations: [OuiOption, OuiOptgroup],\n})\nexport class OuiOptionModule {}\n\nexport * from './option';\nexport * from './optgroup';\n","export enum keycodes {\n  DOWN_ARROW = 'ArrowDown',\n  ENTER = 'Enter',\n  ESCAPE = 'Escape',\n  TAB = 'Tab',\n  UP_ARROW = 'ArrowUp',\n}\n","/** @docs-private */\nexport class AnimationCurves {\n  static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n  static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n  static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n  static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n/** @docs-private */\nexport class AnimationDurations {\n  static COMPLEX = '375ms';\n  static ENTERING = '225ms';\n  static EXITING = '195ms';\n}\n","import { Injectable } from '@angular/core';\nimport { FormGroupDirective, NgForm, UntypedFormControl } from '@angular/forms';\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n  isErrorState(\n    control: UntypedFormControl | null,\n    form: FormGroupDirective | NgForm | null\n  ): boolean {\n    return !!(\n      control &&\n      control.invalid &&\n      (control.touched || (form && form.submitted))\n    );\n  }\n}\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n  isErrorState(\n    control: UntypedFormControl | null,\n    form: FormGroupDirective | NgForm | null\n  ): boolean {\n    return !!(\n      control &&\n      control.invalid &&\n      (control.dirty || (form && form.submitted))\n    );\n  }\n}\n","import { Constructor } from '../core/common-behaviors/constructor';\nimport { ElementRef, ChangeDetectorRef } from '@angular/core';\n\n/** @docs-private */\nexport interface CanProgress {\n  /** progress texts */\n  progress: string[] | string;\n  setToProgress: Function;\n  setToDone: Function;\n  setToDefault: Function;\n}\n\n/** @docs-private */\nexport interface HasElementRef {\n  _elementRef: ElementRef;\n}\n\n/** @docs-private */\nexport type CanProgressCtor = Constructor<CanProgress>;\n\n/** Mixin to augment a directive with a `color` property. */\nexport function mixinProgress<T extends Constructor<HasElementRef>>(\n  base: T\n): CanProgressCtor & T {\n  return class extends base {\n    private _progress: string[] | string;\n    private _stage: 'default' | 'progress' | 'done' = 'default';\n    get progress(): string[] | string {\n      return this._progress;\n    }\n    set progress(value: string[] | string) {\n      if (value === '') {\n        this._progress = ['Save', 'Saving...', 'Saved'];\n      } else {\n        this._progress = value;\n      }\n      setTimeout(() => {\n        this._changeStage();\n        // Access _cdr from the base class\n        const cdr = (this as any)._cdr as ChangeDetectorRef;\n        if (cdr) {\n          cdr.detectChanges();\n        }\n      }, 0);\n    }\n\n    constructor(...args: any[]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      super(...args);\n      this._progress = null;\n    }\n\n    private _setButtonText(text: string) {\n      this._elementRef.nativeElement.children[0].innerHTML = text;\n    }\n\n    private _addClass(className: string) {\n      this._elementRef.nativeElement.classList.add(className);\n    }\n\n    private _checkAttribute() {\n      if (this._elementRef.nativeElement.tagName === 'A') {\n        throw Error('please use <button> tag to use progress button');\n      }\n      if (!this._progress) {\n        throw Error(\n          'please add progress input attribute to change button state'\n        );\n      }\n    }\n\n    private _changeStage() {\n      if (!this._progress) {\n        return;\n      }\n      const indexes = { default: 0, progress: 1, done: 2 };\n      const labelIndex = indexes[this._stage];\n      this._setButtonText(this._progress[labelIndex]);\n      this._removeClasses();\n      this._addClass(`oui-stage-${this._stage}`);\n    }\n\n    private _removeClasses() {\n      const stages = ['default', 'progress', 'done'];\n      for (const stage of stages) {\n        this._elementRef.nativeElement.classList.remove(`oui-stage-${stage}`);\n      }\n    }\n\n    setToDefault() {\n      this._checkAttribute();\n      this._elementRef.nativeElement.disabled = false;\n      this._stage = 'default';\n      this._changeStage();\n    }\n\n    setToProgress() {\n      this._checkAttribute();\n      this._elementRef.nativeElement.disabled = true;\n      this._stage = 'progress';\n      this._changeStage();\n    }\n\n    setToDone() {\n      this._checkAttribute();\n      this._elementRef.nativeElement.disabled = false;\n      this._stage = 'done';\n      this._changeStage();\n      this._resetToDefault();\n    }\n\n    private _resetToDefault() {\n      setTimeout(() => {\n        this._stage = 'default';\n        this._changeStage();\n      }, 3000);\n    }\n  };\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  ViewEncapsulation,\n  OnDestroy,\n  ChangeDetectorRef,\n  NgZone,\n  Input,\n  inject,\n} from '@angular/core';\nimport {\n  CanDisable,\n  CanColor,\n  CanDisableCtor,\n  CanColorCtor,\n  mixinColor,\n  mixinDisabled,\n} from '../core';\n\nimport { CanProgress, CanProgressCtor, mixinProgress } from './progress';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Subscription } from 'rxjs';\n/**\n * List of classes to add to Button instances based on host attributes to\n * style as different variants.\n */\nconst BUTTON_HOST_ATTRIBUTES = [\n  'oui-button',\n  'oui-ghost-button',\n  'oui-link-button',\n  'oui-icon-button',\n  'oui-icon-text-button',\n];\n\n/** Default color palette for round buttons (oui-fab and oui-mini-fab) */\nconst DEFAULT_COLOR = 'primary';\n\n// Boilerplate for applying mixins to OuiButton.\n/** @docs-private */\nexport class OuiButtonBase {\n  public _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  public _cdr = inject(ChangeDetectorRef);\n}\n\nexport const OuiButtonMixinBase: CanDisableCtor &\n  CanColorCtor &\n  CanProgressCtor &\n  typeof OuiButtonBase = mixinProgress(\n  mixinColor(mixinDisabled(OuiButtonBase))\n);\n\n/**\n * Once Ui button.\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: `button[oui-button], button[oui-ghost-button], button[oui-link-button], button[oui-icon-button],\n               button[oui-icon-text-button]`,\n  exportAs: 'ouiButton',\n  host: {\n    '[disabled]': 'disabled || null',\n    '[tabindex]': 'tabIndex || 0',\n  },\n  templateUrl: 'button.html',\n  styleUrls: ['button.scss'],\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled', 'color', 'progress', 'tabIndex'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiButton\n  extends OuiButtonMixinBase\n  implements OnDestroy, CanDisable, CanColor, CanProgress\n{\n  protected elementRef: ElementRef<HTMLElement>;\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  constructor() {\n    super();\n    this.elementRef = this._elementRef;\n\n    this.addClass();\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() =>\n        this._ngZone.run(() => {\n          this._cdr.markForCheck();\n        })\n      );\n  }\n\n  protected addClass() {\n    for (const attr of BUTTON_HOST_ATTRIBUTES) {\n      if (this.hasHostAttributes(attr)) {\n        (this.elementRef.nativeElement as HTMLElement).classList.add(attr);\n      }\n    }\n    if (!this.color) {\n      this.color = DEFAULT_COLOR;\n    }\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this.elementRef);\n    this._monitorSubscription.unsubscribe();\n  }\n\n  /** Focuses the button. */\n  focus(): void {\n    this.getHostElement().focus();\n  }\n\n  getHostElement() {\n    return this.elementRef.nativeElement;\n  }\n  /** Gets whether the button has one of the given attributes. */\n  hasHostAttributes(...attributes: string[]) {\n    return attributes.some((attribute) =>\n      this.getHostElement().hasAttribute(attribute)\n    );\n  }\n}\n\n/**\n * Once UI anchor.\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: `a[oui-button], a[oui-ghost-button], a[oui-link-button], a[oui-icon-button],\n    a[oui-icon-text-button]`,\n  exportAs: 'ouiButton, ouiAnchor',\n  host: {\n    '[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)',\n    '[attr.disabled]': 'disabled || null',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '(click)': '_haltDisabledEvents($event)',\n  },\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled', 'color'],\n  templateUrl: 'button.html',\n  styleUrls: ['button.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiAnchor extends OuiButton {\n  /** Tabindex of the button. */\n  @Input() tabIndex: number;\n\n  constructor() {\n    super();\n  }\n\n  _haltDisabledEvents(event: Event) {\n    // A disabled button shouldn't apply any actions\n    if (this.disabled) {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    }\n  }\n}\n","<span class=\"oui-button-wrapper\"><ng-content></ng-content></span>\n","import {\n  Component,\n  ViewEncapsulation,\n  Input,\n  OnInit,\n  ElementRef,\n  ChangeDetectionStrategy,\n  InjectionToken,\n  inject,\n  HostAttributeToken,\n} from '@angular/core';\nimport { CanColor, CanColorCtor, mixinColor } from '../core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OuiIconRegistry } from './icon-registery';\nimport { take } from 'rxjs/operators';\nimport { TitleCasePipe } from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\n\n// Boilerplate for applying mixins to OuiButton.\n/** @docs-private */\nexport class OuiIconBase {\n  constructor(public _elementRef: ElementRef) {}\n}\n\nexport const OuiIconMixinBase: CanColorCtor & typeof OuiIconBase =\n  mixinColor(OuiIconBase);\n\n/**\n * Injection token used to provide the current location to `OuiIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n *\n * @docs-private\n */\nexport const OUI_ICON_LOCATION = new InjectionToken<OuiIconLocation>(\n  'oui-icon-location',\n  {\n    providedIn: 'root',\n    factory: OUI_ICON_LOCATION_FACTORY,\n  }\n);\n\n/**\n * Stubbed out location for `OuiIcon`.\n *\n * @docs-private\n */\nexport interface OuiIconLocation {\n  getPathname: () => string;\n}\n\n/** @docs-private */\nexport function OUI_ICON_LOCATION_FACTORY(): OuiIconLocation {\n  const _document = inject(DOCUMENT);\n  const _location = _document ? _document.location : null;\n\n  return {\n    // Note that this needs to be a function, rather than a property, because Angular\n    // will only resolve it once, but we want the current path on each call.\n    getPathname: () => (_location ? _location.pathname + _location.search : ''),\n  };\n}\n\n/**\n * oui-icon makes it easier to use vector-based icons in your app. This directive supports only SVG icons.\n * To associate a name with an icon URL, use the addSvgIcon. The methods of OuiIconRegistry. After registering an icon, it\n * can be displayed by setting the svgIcon input. For an icon in the default namespace, use the name directly.\n * Component to display an icon. It can be used in the following ways:\n * -  Specify the svgIcon input to load an SVG icon from a URL previously registered with the addSvgIcon, addSvgIconSet.\n *    Examples:\n *    <oui-icon svgIcon=\"[name]\"></oui-icon>\n * -  Use a font ligature as an icon by putting the ligature text in the content of the <oui-icon> component.\n *    Example: <oui-icon>home</oui-icon> <oui-icon>sun</oui-icon>\n */\n@Component({\n  template: '<ng-content></ng-content>',\n  selector: 'oui-icon',\n  exportAs: 'ouiIcon',\n  styleUrls: ['icon.scss'],\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['color'],\n  host: {\n    role: 'img',\n    class: 'oui-icon',\n    '[class.oui-icon-inline]': 'inline',\n    '[attr.aria-label]': 'this.titleCasePipe.transform(this.svgIcon)',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class Icon extends OuiIconMixinBase implements OnInit, CanColor {\n  private _iconRegistry = inject(OuiIconRegistry);\n  _elementRef: ElementRef;\n  titleCasePipe = inject(TitleCasePipe);\n\n  /**\n   * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n   * the element the icon is contained in.\n   */\n  @Input()\n  get inline(): boolean {\n    return this._inline;\n  }\n  set inline(inline: boolean) {\n    this._inline = coerceBooleanProperty(inline);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  private _inline: boolean = false;\n\n  /**\n   * Implemented as part of CanColor.\n   */\n  color: any;\n\n  /** Name of the icon in the SVG icon set. */\n  @Input()\n  svgIcon: string;\n  /** User will be able to supply a size property for overriding the size. */\n  @Input()\n  size: number;\n\n  constructor() {\n    const _elementRef = inject(ElementRef);\n    const ariaHidden = inject(new HostAttributeToken('aria-hidden'), {\n      optional: true,\n    })!;\n\n    super(_elementRef);\n    this._elementRef = _elementRef;\n\n    // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n    // the right thing to do for the majority of icon use-cases.\n    if (!ariaHidden) {\n      _elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n    }\n  }\n\n  ngOnInit() {\n    if (this.svgIcon) {\n      this._iconRegistry\n        .getNamedSvgIcon(this.svgIcon)\n        .pipe(take(1))\n        .subscribe(\n          (svg) => this._setSvgElement(svg),\n          (err: Error) => console.log(`Error retrieving icon: ${err.message}`)\n        );\n    }\n  }\n\n  private _setSvgElement(svg: SVGElement) {\n    this._clearSvgElement();\n    this._elementRef.nativeElement.appendChild(svg);\n    let svgSize = svg.getAttribute('height');\n    if (this.size) {\n      //noinspection TypeScriptUnresolvedFunction\n      const { x, y, width, height } = (<any>svg).getBBox();\n      svg.setAttribute('height', '100%');\n      svg.setAttribute('width', '100%');\n      svg.setAttribute('viewBox', `${x} ${y} ${width} ${height}`);\n      svgSize = `${this.size}px`;\n    }\n    this._elementRef.nativeElement.style.height = svgSize;\n    this._elementRef.nativeElement.style.width = svgSize;\n  }\n\n  private _clearSvgElement() {\n    const layoutElement: HTMLElement = this._elementRef.nativeElement;\n    let childCount = layoutElement.childNodes.length;\n\n    // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n    // we can't use innerHTML, because IE will throw if the element has a data binding.\n    while (childCount--) {\n      const child = layoutElement.childNodes[childCount];\n\n      // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n      // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n      if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n        layoutElement.removeChild(child);\n      }\n    }\n  }\n}\n","<ng-template [cdkPortalOutlet]=\"_calendarHeaderPortal\"></ng-template>\n\n<div\n  class=\"oui-calendar-content\"\n  [ngSwitch]=\"currentView\"\n  cdkMonitorSubtreeFocus\n  tabindex=\"-1\"\n>\n  <oui-month-view\n    *ngSwitchCase=\"'month'\"\n    [(activeDate)]=\"activeDate\"\n    [selected]=\"selected\"\n    [dateFilter]=\"dateFilter\"\n    [maxDate]=\"maxDate\"\n    [minDate]=\"minDate\"\n    [dateClass]=\"dateClass\"\n    (selectedChange)=\"_dateSelected($event)\"\n    (_userSelection)=\"_userSelected()\"\n  >\n  </oui-month-view>\n\n  <oui-year-view\n    *ngSwitchCase=\"'year'\"\n    [(activeDate)]=\"activeDate\"\n    [selected]=\"selected\"\n    [dateFilter]=\"dateFilter\"\n    [maxDate]=\"maxDate\"\n    [minDate]=\"minDate\"\n    (monthSelected)=\"_monthSelectedInYearView($event)\"\n    (selectedChange)=\"_goToDateInView($event, 'month')\"\n  >\n  </oui-year-view>\n\n  <oui-multi-year-view\n    *ngSwitchCase=\"'multi-year'\"\n    [(activeDate)]=\"activeDate\"\n    [selected]=\"selected\"\n    [dateFilter]=\"dateFilter\"\n    [maxDate]=\"maxDate\"\n    [minDate]=\"minDate\"\n    (yearSelected)=\"_yearSelectedInMultiYearView($event)\"\n    (selectedChange)=\"_goToDateInView($event, 'year')\"\n  >\n  </oui-multi-year-view>\n</div>\n","import { ComponentPortal, ComponentType, Portal } from '@angular/cdk/portal';\nimport {\n  AfterContentInit,\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { OuiDatepickerIntl } from './datepicker-intl';\nimport { OuiMonthView } from './month-view';\nimport { OuiMultiYearView, yearsPerPage } from './multi-year-view';\nimport { OuiYearView } from './year-view';\nimport { OuiCalendarCellCssClasses } from './calendar-body';\nimport { DateAdapter } from './date-adapter';\nimport { OuiDateFormats, OUI_DATE_FORMATS } from './date-formats';\nimport { OuiIconRegistry } from '../icon/icon-registery';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ICONS } from '../core/shared/icons';\n\n/**\n * Possible views for the calendar.\n */\nexport type OuiCalendarView = 'month' | 'year' | 'multi-year';\n\n/**\n * A calendar that is used as part of the datepicker.\n */\n@Component({\n  selector: 'oui-calendar',\n  templateUrl: 'calendar.html',\n  styleUrls: ['calendar.scss'],\n  host: {\n    class: 'oui-calendar',\n  },\n  exportAs: 'ouiCalendar',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiCalendar<D>\n  implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges\n{\n  private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {\n    optional: true,\n  })!;\n  private _dateFormats = inject<OuiDateFormats>(OUI_DATE_FORMATS, {\n    optional: true,\n  })!;\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  /** An input indicating the type of the header component, if set. */\n  @Input() headerComponent: ComponentType<any>;\n\n  /** A portal containing the header component type for this calendar. */\n  _calendarHeaderPortal: Portal<any>;\n\n  private _intlChanges: Subscription;\n\n  /**\n   * Used for scheduling that focus should be moved to the active cell on the next tick.\n   * We need to schedule it, rather than do it immediately, because we have to wait\n   * for Angular to re-evaluate the view children.\n   */\n  private _moveFocusOnNextTick = false;\n\n  /** A date representing the period (month or year) to start the calendar in. */\n  @Input()\n  get startAt(): D | null {\n    return this._startAt;\n  }\n  set startAt(value: D | null) {\n    this._startAt = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _startAt: D | null;\n\n  /** Whether the calendar should be started in month or year view. */\n  @Input() startView: OuiCalendarView = 'month';\n\n  /** The currently selected date. */\n  @Input()\n  get selected(): D | null {\n    return this._selected;\n  }\n  set selected(value: D | null) {\n    this._selected = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _selected: D | null;\n\n  /** The minimum selectable date. */\n  @Input()\n  get minDate(): D | null {\n    return this._minDate;\n  }\n  set minDate(value: D | null) {\n    this._minDate = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _minDate: D | null;\n\n  /** The maximum selectable date. */\n  @Input()\n  get maxDate(): D | null {\n    return this._maxDate;\n  }\n  set maxDate(value: D | null) {\n    this._maxDate = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _maxDate: D | null;\n\n  /** Function used to filter which dates are selectable. */\n  @Input() dateFilter: (date: D) => boolean;\n\n  /** Function that can be used to add custom CSS classes to dates. */\n  @Input() dateClass: (date: D) => OuiCalendarCellCssClasses;\n\n  /** Emits when the currently selected date changes. */\n  @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /**\n   * Emits the year chosen in multiyear view.\n   * This doesn't imply a change on the selected date.\n   */\n  @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /**\n   * Emits the month chosen in year view.\n   * This doesn't imply a change on the selected date.\n   */\n  @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits when any date is selected. */\n  @Output()\n  readonly _userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Reference to the current month view component. */\n  @ViewChild(OuiMonthView) monthView: OuiMonthView<D>;\n\n  /** Reference to the current year view component. */\n  @ViewChild(OuiYearView) yearView: OuiYearView<D>;\n\n  /** Reference to the current multi-year view component. */\n  @ViewChild(OuiMultiYearView)\n  multiYearView: OuiMultiYearView<D>;\n\n  /**\n   * The current active date. This determines which time period is shown and which date is\n   * highlighted when using keyboard navigation.\n   */\n  get activeDate(): D {\n    return this._clampedActiveDate;\n  }\n  set activeDate(value: D) {\n    this._clampedActiveDate = this._dateAdapter.clampDate(\n      value,\n      this.minDate,\n      this.maxDate\n    );\n    this.stateChanges.next();\n  }\n  private _clampedActiveDate: D;\n\n  /** Whether the calendar is in month view. */\n  get currentView(): OuiCalendarView {\n    return this._currentView;\n  }\n  set currentView(value: OuiCalendarView) {\n    this._currentView = value;\n    this._moveFocusOnNextTick = true;\n  }\n  private _currentView: OuiCalendarView;\n\n  /**\n   * Emits whenever there is a state change that the header may need to respond to.\n   */\n  stateChanges = new Subject<void>();\n\n  constructor() {\n    const _intl = inject(OuiDatepickerIntl);\n    const _changeDetectorRef = this._changeDetectorRef;\n\n    if (!this._dateAdapter) {\n      throw createMissingDateImplError('DateAdapter');\n    }\n\n    if (!this._dateFormats) {\n      throw createMissingDateImplError('OuiDATE_FORMATS');\n    }\n\n    this._intlChanges = _intl.changes.subscribe(() => {\n      _changeDetectorRef.markForCheck();\n      this.stateChanges.next();\n    });\n  }\n\n  ngAfterContentInit() {\n    this._calendarHeaderPortal = new ComponentPortal(\n      this.headerComponent || OuiCalendarHeader\n    );\n    this.activeDate = this.startAt || this._dateAdapter.today();\n\n    // Assign to the private property since we don't want to move focus on init.\n    this._currentView = this.startView;\n  }\n\n  ngAfterViewChecked() {\n    if (this._moveFocusOnNextTick) {\n      this._moveFocusOnNextTick = false;\n      this.focusActiveCell();\n    }\n  }\n\n  ngOnDestroy() {\n    this._intlChanges.unsubscribe();\n    this.stateChanges.complete();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const change = changes.minDate || changes.maxDate || changes.dateFilter;\n\n    if (change && !change.firstChange) {\n      const view = this._getCurrentViewComponent();\n\n      if (view) {\n        // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n        // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n        this._changeDetectorRef.detectChanges();\n        view._init();\n      }\n    }\n\n    this.stateChanges.next();\n  }\n\n  focusActiveCell() {\n    this._getCurrentViewComponent()._focusActiveCell();\n  }\n\n  /** Updates today's date after an update of the active date */\n  updateTodaysDate() {\n    const view =\n      this.currentView === 'month'\n        ? this.monthView\n        : this.currentView === 'year'\n        ? this.yearView\n        : this.multiYearView;\n\n    view.ngAfterContentInit();\n  }\n\n  /** Handles date selection in the month view. */\n  _dateSelected(date: D): void {\n    if (!this._dateAdapter.sameDate(date, this.selected)) {\n      this.selectedChange.emit(date);\n    }\n  }\n\n  /** Handles year selection in the multiyear view. */\n  _yearSelectedInMultiYearView(normalizedYear: D) {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  /** Handles month selection in the year view. */\n  _monthSelectedInYearView(normalizedMonth: D) {\n    this.monthSelected.emit(normalizedMonth);\n  }\n\n  _userSelected(): void {\n    this._userSelection.emit();\n  }\n\n  /** Handles year/month selection in the multi-year/year views. */\n  _goToDateInView(date: D, view: 'month' | 'year' | 'multi-year'): void {\n    this.activeDate = date;\n    this.currentView = view;\n  }\n\n  /**\n   * @param obj The object to check.\n   * @returns The given object if it is both a date instance and valid, otherwise null.\n   */\n  private _getValidDateOrNull(obj: any): D | null {\n    return this._dateAdapter.isDateInstance(obj) &&\n      this._dateAdapter.isValid(obj as any as D)\n      ? obj\n      : null;\n  }\n\n  /** Returns the component instance that corresponds to the current calendar view. */\n  private _getCurrentViewComponent() {\n    return this.monthView || this.yearView || this.multiYearView;\n  }\n}\n\n/** Default header for OuiCalendar */\n@Component({\n  selector: 'oui-calendar-header',\n  templateUrl: 'calendar-header.html',\n  exportAs: 'ouiCalendarHeader',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiCalendarHeader<D> {\n  private _intl = inject(OuiDatepickerIntl);\n  calendar = inject<OuiCalendar<D>>(OuiCalendar);\n  private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {\n    optional: true,\n  })!;\n  private ouiIconRegistry = inject(OuiIconRegistry);\n  private domSanitizer = inject(DomSanitizer);\n\n  constructor() {\n    const changeDetectorRef = inject(ChangeDetectorRef);\n\n    this.calendar.stateChanges.subscribe(() =>\n      changeDetectorRef.markForCheck()\n    );\n    this.ouiIconRegistry.addSvgIconLiteral(\n      `arrow-icon`,\n      this.domSanitizer.bypassSecurityTrustHtml(ICONS.ARROW_ICON)\n    );\n  }\n\n  /** The label for the current calendar view. */\n  get periodButtonText(): string {\n    if (this.calendar.currentView === 'month') {\n      return (\n        this._dateAdapter.getMonthNames('short')[\n          this._dateAdapter.getMonth(this.calendar.activeDate)\n        ] +\n        ' ' +\n        this._dateAdapter.getYearName(this.calendar.activeDate)\n      );\n    }\n    if (this.calendar.currentView === 'year') {\n      return this._dateAdapter.getYearName(this.calendar.activeDate);\n    }\n    const activeYear = this._dateAdapter.getYear(this.calendar.activeDate);\n    const firstYearInView = this._dateAdapter.getYearName(\n      this._dateAdapter.createDate(activeYear - (activeYear % 24), 0, 1)\n    );\n    const lastYearInView = this._dateAdapter.getYearName(\n      this._dateAdapter.createDate(\n        activeYear + yearsPerPage - 1 - (activeYear % 24),\n        0,\n        1\n      )\n    );\n    return `${firstYearInView} \\u2013 ${lastYearInView}`;\n  }\n\n  get periodButtonLabel(): string {\n    return this.calendar.currentView === 'month'\n      ? this._intl.switchToMultiYearViewLabel\n      : this._intl.switchToMonthViewLabel;\n  }\n\n  /** The label for the the previous button. */\n  get prevButtonLabel(): string {\n    return {\n      month: this._intl.prevMonthLabel,\n      year: this._intl.prevYearLabel,\n      'multi-year': this._intl.prevMultiYearLabel,\n    }[this.calendar.currentView];\n  }\n\n  /** The label for the the next button. */\n  get nextButtonLabel(): string {\n    return {\n      month: this._intl.nextMonthLabel,\n      year: this._intl.nextYearLabel,\n      'multi-year': this._intl.nextMultiYearLabel,\n    }[this.calendar.currentView];\n  }\n\n  /** Handles user clicks on the period label. */\n  currentPeriodClicked(): void {\n    this.calendar.currentView =\n      this.calendar.currentView === 'month' ? 'multi-year' : 'month';\n  }\n\n  /** Handles user clicks on the previous button. */\n  previousClicked(): void {\n    this.calendar.activeDate =\n      this.calendar.currentView === 'month'\n        ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\n        : this._dateAdapter.addCalendarYears(\n            this.calendar.activeDate,\n            this.calendar.currentView === 'year' ? -1 : -yearsPerPage\n          );\n  }\n\n  /** Handles user clicks on the next button. */\n  nextClicked(): void {\n    this.calendar.activeDate =\n      this.calendar.currentView === 'month'\n        ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\n        : this._dateAdapter.addCalendarYears(\n            this.calendar.activeDate,\n            this.calendar.currentView === 'year' ? 1 : yearsPerPage\n          );\n  }\n\n  /** Whether the previous period button is enabled. */\n  previousEnabled(): boolean {\n    if (!this.calendar.minDate) {\n      return true;\n    }\n    return (\n      !this.calendar.minDate ||\n      !this._isSameView(this.calendar.activeDate, this.calendar.minDate)\n    );\n  }\n\n  /** Whether the next period button is enabled. */\n  nextEnabled(): boolean {\n    return (\n      !this.calendar.maxDate ||\n      !this._isSameView(this.calendar.activeDate, this.calendar.maxDate)\n    );\n  }\n\n  /** Whether the two dates represent the same view in the current view mode (month or year). */\n  private _isSameView(date1: D, date2: D): boolean {\n    if (this.calendar.currentView === 'month') {\n      return (\n        this._dateAdapter.getYear(date1) === this._dateAdapter.getYear(date2) &&\n        this._dateAdapter.getMonth(date1) === this._dateAdapter.getMonth(date2)\n      );\n    }\n    if (this.calendar.currentView === 'year') {\n      return (\n        this._dateAdapter.getYear(date1) === this._dateAdapter.getYear(date2)\n      );\n    }\n    // Otherwise we are in 'multi-year' view.\n    return (\n      Math.floor(this._dateAdapter.getYear(date1) / yearsPerPage) ===\n      Math.floor(this._dateAdapter.getYear(date2) / yearsPerPage)\n    );\n  }\n}\n","<div class=\"oui-calendar-header\">\n  <div class=\"oui-calendar-controls\">\n    <button\n      oui-button\n      type=\"button\"\n      class=\"oui-calendar-period-button\"\n      (click)=\"currentPeriodClicked()\"\n      [attr.aria-label]=\"periodButtonLabel\"\n      cdkAriaLive=\"polite\"\n    >\n      {{ periodButtonText }}\n\n      <oui-icon\n        svgIcon=\"arrow-icon\"\n        class=\"oui-calendar-arrow\"\n        [class.oui-calendar-invert]=\"calendar.currentView !== 'month'\"\n      ></oui-icon>\n    </button>\n\n    <div class=\"oui-calendar-spacer\"></div>\n\n    <ng-content></ng-content>\n\n    <button\n      oui-icon-button\n      type=\"button\"\n      class=\"oui-calendar-previous-button\"\n      [disabled]=\"!previousEnabled()\"\n      (click)=\"previousClicked()\"\n      [attr.aria-label]=\"prevButtonLabel\"\n    >\n      <svg\n        aria-hidden=\"true\"\n        focusable=\"false\"\n        data-prefix=\"fal\"\n        data-icon=\"angle-left\"\n        role=\"img\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 192 512\"\n        class=\"svg-inline--fa fa-angle-left fa-w-6 fa-fw fa-2x\"\n      >\n        <path\n          fill=\"currentColor\"\n          d=\"M25.1 247.5l117.8-116c4.7-4.7 12.3-4.7 17 0l7.1 7.1c4.7 4.7 4.7 12.3 0 17L64.7 256l102.2 100.4c4.7 4.7 4.7 12.3 0 17l-7.1 7.1c-4.7 4.7-12.3 4.7-17 0L25 264.5c-4.6-4.7-4.6-12.3.1-17z\"\n          class=\"\"\n        ></path>\n      </svg>\n    </button>\n\n    <button\n      oui-icon-button\n      type=\"button\"\n      class=\"oui-calendar-next-button\"\n      [disabled]=\"!nextEnabled()\"\n      (click)=\"nextClicked()\"\n      [attr.aria-label]=\"nextButtonLabel\"\n    >\n      <svg\n        aria-hidden=\"true\"\n        focusable=\"false\"\n        data-prefix=\"fal\"\n        data-icon=\"angle-right\"\n        role=\"img\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 192 512\"\n        class=\"svg-inline--fa fa-angle-right fa-w-6 fa-fw fa-2x\"\n      >\n        <path\n          fill=\"currentColor\"\n          d=\"M166.9 264.5l-117.8 116c-4.7 4.7-12.3 4.7-17 0l-7.1-7.1c-4.7-4.7-4.7-12.3 0-17L127.3 256 25.1 155.6c-4.7-4.7-4.7-12.3 0-17l7.1-7.1c4.7-4.7 12.3-4.7 17 0l117.8 116c4.6 4.7 4.6 12.3-.1 17z\"\n          class=\"\"\n        ></path>\n      </svg>\n    </button>\n  </div>\n</div>\n","import { ViewContainerRef } from '@angular/core';\nimport { Direction } from '@angular/cdk/bidi';\nimport { ScrollStrategy } from '@angular/cdk/overlay';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n  /** Override for the dialog's top position. */\n  top?: string;\n\n  /** Override for the dialog's bottom position. */\n  bottom?: string;\n\n  /** Override for the dialog's left position. */\n  left?: string;\n\n  /** Override for the dialog's right position. */\n  right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the OuiDialog service.\n */\nexport class OuiDialogConfig<D = any> {\n  /**\n   * Where the attached component should live in Angular's *logical* component tree.\n   * This affects what is available for injection and the change detection order for the\n   * component instantiated inside of the dialog. This does not affect where the dialog\n   * content will be rendered.\n   */\n  viewContainerRef?: ViewContainerRef;\n\n  /** ID for the dialog. If omitted, a unique one will be generated. */\n  id?: string;\n\n  /** The ARIA role of the dialog element. */\n  role? = 'dialog';\n\n  /** Custom class for the overlay pane. */\n  panelClass?: string | string[] = '';\n\n  /** Whether the dialog has a backdrop. */\n  hasBackdrop? = true;\n\n  /** Custom class for the backdrop, */\n  backdropClass? = '';\n\n  /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n  disableClose? = false;\n\n  /** Width of the dialog. */\n  width? = '607px';\n\n  /** Height of the dialog. */\n  height? = '';\n\n  /** Min-width of the dialog. If a number is provided, pixel units are assumed. */\n  minWidth?: number | string = '607px';\n\n  /** Min-height of the dialog. If a number is provided, pixel units are assumed. */\n  minHeight?: number | string;\n\n  /** Max-width of the dialog. If a number is provided, pixel units are assumed. Defaults to 80vw */\n  maxWidth?: number | string = '80vw';\n\n  /** Max-height of the dialog. If a number is provided, pixel units are assumed. */\n  maxHeight?: number | string;\n\n  /** Position overrides. */\n  position?: DialogPosition;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** Layout direction for the dialog's content. */\n  direction?: Direction;\n\n  /** ID of the element that describes the dialog. */\n  ariaDescribedBy?: string | null = null;\n\n  /** Aria label to assign to the dialog element */\n  ariaLabel?: string | null = null;\n\n  /** Whether the dialog should focus the first focusable element on open. */\n  autoFocus? = false;\n\n  /**\n   * Whether the dialog should restore focus to the\n   * previously-focused element, after it's closed.\n   */\n  restoreFocus? = true;\n\n  /** Scroll strategy to be used for the dialog. */\n  scrollStrategy?: ScrollStrategy;\n\n  // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n}\n","import {\n  Component,\n  ComponentRef,\n  EmbeddedViewRef,\n  ViewChild,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ElementRef,\n  OnInit,\n  inject,\n} from '@angular/core';\nimport {\n  BasePortalOutlet,\n  ComponentPortal,\n  CdkPortalOutlet,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { OuiDialogConfig } from './dialog-config';\nimport { FocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n *\n * @docs-private\n */\nexport function throwOuiDialogContentAlreadyAttachedError() {\n  throw Error(\n    'Attempting to attach dialog content after content is already attached'\n  );\n}\n\n/**\n * Internal component that wraps user-provided dialog content.\n *\n * @docs-private\n */\n@Component({\n  selector: 'oui-dialog-container',\n  templateUrl: 'dialog-container.html',\n  styleUrls: ['dialog.scss'],\n  encapsulation: ViewEncapsulation.None,\n  // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n  // eslint-disable-next-line\n  changeDetection: ChangeDetectionStrategy.Default,\n  host: {\n    class: 'oui-dialog-container',\n    tabindex: '-1',\n    'aria-modal': 'true',\n    '[attr.id]': '_id',\n    '[attr.role]': '_config.role',\n    '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n    '[attr.aria-label]': '_config.ariaLabel',\n    '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n  },\n  standalone: false,\n})\nexport class OuiDialogContainer extends BasePortalOutlet implements OnInit {\n  private _focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n  _config = inject(OuiDialogConfig);\n  elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _document = inject<Document>(DOCUMENT, { optional: true })!;\n\n  /** The portal outlet inside of this container into which the dialog content will be loaded. */\n  @ViewChild(CdkPortalOutlet, { static: true })\n  _portalOutlet: CdkPortalOutlet;\n\n  /** The class that traps and manages focus within the dialog. */\n  private _focusTrap: FocusTrap;\n\n  /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n  private _elementFocusedBeforeDialogWasOpened: HTMLElement = null;\n\n  /** ID of the element that should be considered as the dialog's label. */\n  _ariaLabelledBy: string | null = null;\n\n  /** ID for the container DOM element. */\n  _id: string;\n\n  constructor() {\n    super();\n  }\n\n  ngOnInit() {\n    this._addMarginForDefaultScroll();\n  }\n  private _addMarginForDefaultScroll() {\n    if (!this._config.scrollStrategy) {\n      this.elementRef.nativeElement.style.marginTop = '40px';\n      this.elementRef.nativeElement.style.marginBottom = '40px';\n    }\n  }\n  /**\n   * Attach a ComponentPortal as content to this dialog container.\n   *\n   * @param portal Portal to be attached as the dialog content.\n   */\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    if (this._portalOutlet.hasAttached()) {\n      throwOuiDialogContentAlreadyAttachedError();\n    }\n    this._addFocusTrap();\n    return this._portalOutlet.attachComponentPortal(portal);\n  }\n\n  /**\n   * Attach a TemplatePortal as content to this dialog container.\n   *\n   * @param portal Portal to be attached as the dialog content.\n   */\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    if (this._portalOutlet.hasAttached()) {\n      throwOuiDialogContentAlreadyAttachedError();\n    }\n    this._addFocusTrap();\n    return this._portalOutlet.attachTemplatePortal(portal);\n  }\n\n  /** Moves the focus inside the focus trap. */\n  public _trapFocus() {\n    // If we were to attempt to focus immediately, then the content of the dialog would not yet be\n    // ready in instances where change detection has to run first. To deal with this, we simply\n    // wait for the microtask queue to be empty.\n    if (this._config.autoFocus) {\n      this._focusTrap.focusInitialElementWhenReady();\n    } else if (!this._containsFocus()) {\n      // Otherwise ensure that focus is on the dialog container. It's possible that a different\n      // component tried to move focus while the open animation was running.\n      // if the focus isn't inside the dialog already, because it's possible that the consumer\n      // turned off `autoFocus` in order to move focus themselves.\n      this.elementRef.nativeElement.focus();\n    }\n  }\n\n  /** Restores focus to the element that was focused before the dialog opened. */\n  public _restoreFocus() {\n    const toFocus = this._elementFocusedBeforeDialogWasOpened;\n\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (\n      this._config.restoreFocus &&\n      toFocus &&\n      typeof toFocus.focus === 'function'\n    ) {\n      const activeElement = this._document.activeElement as HTMLElement;\n      const element = this.elementRef.nativeElement;\n      if (\n        !activeElement ||\n        activeElement === this._document.body ||\n        activeElement === element ||\n        element.contains(activeElement)\n      ) {\n        toFocus.focus();\n      }\n    }\n\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n  }\n\n  /**\n   * Dynamically adds or removes focus from the dialog container.\n   *\n   * @param addFocus Whether to add focus (true) or remove focus (false).\n   */\n  public _toggleFocus(addFocus: boolean): void {\n    if (addFocus) {\n      this._addFocusTrap(); // Add focus\n    } else {\n      this._removeFocusTrap(); // Remove focus\n    }\n  }\n\n  /**\n   * Setting up the focus trap and saves a reference to the element that was focused before the dialog was open.\n   */\n  private _addFocusTrap() {\n    if (!this._focusTrap) {\n      this._focusTrap = this._focusTrapFactory.create(\n        this.elementRef.nativeElement\n      );\n    }\n    if (this._document) {\n      this._elementFocusedBeforeDialogWasOpened = this._document\n        .activeElement as HTMLElement;\n      // Note that there is no focus method when rendering on the server.\n      if (this.elementRef.nativeElement.focus) {\n        // Move focus onto the dialog immediately in order to prevent the user from accidentally\n        // opening multiple dialogs at the same time. Needs to be async, because the element\n        // may not be focusable immediately.\n        Promise.resolve().then(() => this.elementRef.nativeElement.focus());\n      }\n    }\n  }\n\n  /** Only return when there is focus inside the dialog */\n  private _containsFocus() {\n    const element = this.elementRef.nativeElement as HTMLElement;\n    const activeElement = this._document.activeElement;\n    return element === activeElement || element.contains(activeElement);\n  }\n\n  /**\n   * Removes the focus trap from the dialog.\n   * This method is called to clean up resources and ensure the dialog no longer traps focus.\n   */\n  private _removeFocusTrap() {\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n      // Clear the reference to help with garbage collection\n      this._focusTrap = null;\n    }\n  }\n}\n","<ng-template cdkPortalOutlet></ng-template>\n","import { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { DialogPosition, OuiDialogConfig } from './dialog-config';\nimport { OuiDialogContainer } from './dialog-container';\n\n// TODO(jelbourn): resizing\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/**\n * Reference to a dialog opened via the OuiDialog service.\n */\nexport class OuiDialogRef<T, R = any> {\n  /** The instance of component opened into the dialog. */\n  componentInstance: T;\n\n  /** Whether the user is allowed to close the dialog. */\n  disableClose: boolean | undefined =\n    this._containerInstance._config.disableClose;\n\n  /** Subject for notifying the user that the dialog has finished opening. */\n  private readonly _afterOpened = new Subject<void>();\n\n  /** Subject for notifying the user that the dialog has finished closing. */\n  private readonly _afterClosed = new Subject<R | undefined>();\n\n  /** Subject for notifying the user that the dialog has started closing. */\n  private readonly _beforeClosed = new Subject<R | undefined>();\n\n  /** Result to be passed to afterClosed. */\n  private _result: R | undefined;\n\n  private _dialogConfig: OuiDialogConfig;\n\n  public get dialogConfig(): OuiDialogConfig {\n    return this._dialogConfig;\n  }\n\n  public set dialogConfig(config: OuiDialogConfig) {\n    this._dialogConfig = config;\n  }\n\n  constructor(\n    private _overlayRef: OverlayRef,\n    public _containerInstance: OuiDialogContainer,\n    readonly id: string = `oui-dialog-${uniqueId++}`\n  ) {\n    // Pass the id along to the container.\n    _containerInstance._id = id;\n\n    this._afterOpened.next();\n    this._afterOpened.complete();\n\n    _overlayRef.detachments().subscribe(() => {\n      this._beforeClosed.next(this._result);\n      this._beforeClosed.complete();\n      this._afterClosed.next(this._result);\n      this._afterClosed.complete();\n      this.componentInstance = null!;\n      this._overlayRef.dispose();\n    });\n\n    _overlayRef\n      .keydownEvents()\n      .pipe(filter((event) => event.key === 'Escape' && !this.disableClose))\n      .subscribe(() => this.close());\n  }\n\n  /**\n   * Close the dialog.\n   *\n   * @param dialogResult Optional result to return to the dialog opener.\n   */\n  close(dialogResult?: R): void {\n    this._result = dialogResult;\n    this._beforeClosed.next(dialogResult);\n    this._beforeClosed.complete();\n    this._overlayRef.detachBackdrop();\n    this._overlayRef.dispose();\n  }\n\n  /**\n   * Dynamically adds or removes focus from all open dialog containers.\n   *\n   * @param addFocus Whether to add focus (true) or remove focus (false).\n   */\n  toggleFocus(addFocus: boolean): void {\n    this._containerInstance._toggleFocus(addFocus);\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog is finished opening.\n   */\n  afterOpened(): Observable<void> {\n    return this._afterOpened.asObservable();\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog is finished closing.\n   */\n  afterClosed(): Observable<R | undefined> {\n    return this._afterClosed.asObservable();\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog has started closing.\n   */\n  beforeClosed(): Observable<R | undefined> {\n    return this._beforeClosed.asObservable();\n  }\n\n  /**\n   * Gets an observable that emits when the overlay's backdrop has been clicked.\n   */\n  backdropClick(): Observable<MouseEvent> {\n    return this._overlayRef.backdropClick();\n  }\n\n  /**\n   * Gets an observable that emits when keydown events are targeted on the overlay.\n   */\n  keydownEvents(): Observable<KeyboardEvent> {\n    return this._overlayRef.keydownEvents();\n  }\n\n  /**\n   * Updates the dialog's position.\n   *\n   * @param position New dialog position.\n   */\n  updatePosition(position?: DialogPosition): this {\n    const strategy = this._getPositionStrategy();\n\n    if (position && (position.left || position.right)) {\n      if (position.left) {\n        strategy.left(position.left);\n      } else {\n        strategy.right(position.right);\n      }\n    } else {\n      strategy.centerHorizontally();\n    }\n\n    if (position && (position.top || position.bottom)) {\n      if (position.top) {\n        strategy.top(position.top);\n      } else {\n        strategy.bottom(position.bottom);\n      }\n    } else {\n      strategy.centerVertically();\n    }\n\n    this._overlayRef.updatePosition();\n\n    return this;\n  }\n\n  /**\n   * Updates the dialog's width and height.\n   *\n   * @param width New width of the dialog.\n   * @param height New height of the dialog.\n   */\n  updateSize(width = '', height = ''): this {\n    this._getPositionStrategy()\n      // eslint-disable-next-line\n      .width(width)\n      // eslint-disable-next-line\n      .height(height);\n    this._overlayRef.updatePosition();\n    return this;\n  }\n\n  /** Fetches the position strategy object from the overlay ref. */\n  private _getPositionStrategy(): GlobalPositionStrategy {\n    return this._overlayRef.getConfig()\n      .positionStrategy as GlobalPositionStrategy;\n  }\n}\n","/* This file provides dialog-scroll strategy which prevents inner content scroll \n   and adds scrollbar at document level. This is default strategy but it can be overidded\n   by other angular cdk overlay strategies.\n **/\n\nimport { Injectable } from '@angular/core';\nimport { ScrollStrategy, OverlayRef } from '@angular/cdk/overlay';\n\n/** Scroll strategy that scrolls only overflowed dialog (prevent inner scroll) */\n@Injectable()\nexport class DialogScrollStrategy implements ScrollStrategy {\n  private _document: Document;\n  private _overlayRef: OverlayRef;\n  private _previousBodyOverflow: string;\n\n  constructor() {\n    this._document = document;\n  }\n  /** Attaches this scroll strategy to an overlay. */\n  attach(overlayRef: OverlayRef) {\n    this._overlayRef = overlayRef;\n  }\n  /** scroll only dialog overlay */\n  enable() {\n    this._setOverlayStyle();\n    const body = this._document.body;\n    this._previousBodyOverflow = body.style.overflow;\n    body.style.overflow = 'hidden';\n  }\n\n  disable() {\n    const body = this._document.body;\n    body.style.overflow = this._previousBodyOverflow;\n  }\n\n  private _setOverlayStyle() {\n    this._overlayRef.hostElement.style.pointerEvents = 'auto';\n    this._overlayRef.hostElement.style.position = 'fixed';\n    this._overlayRef.hostElement.style.overflow = 'auto';\n  }\n}\n","import {\n  Overlay,\n  OverlayConfig,\n  OverlayContainer,\n  OverlayRef,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {\n  ComponentPortal,\n  ComponentType,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n  Injectable,\n  InjectionToken,\n  Injector,\n  OnDestroy,\n  TemplateRef,\n  inject,\n} from '@angular/core';\nimport { defer, Observable, Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { OuiDialogConfig } from './dialog-config';\nimport { OuiDialogContainer } from './dialog-container';\nimport { OuiDialogRef } from './dialog-ref';\nimport { DialogScrollStrategy } from './dialog-scroll-strategy';\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const OUI_DIALOG_DATA = new InjectionToken<any>('OuiDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const OUI_DIALOG_DEFAULT_OPTIONS = new InjectionToken<OuiDialogConfig>(\n  'oui-dialog-default-options'\n);\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const OUI_DIALOG_SCROLL_STRATEGY = new InjectionToken<\n  () => ScrollStrategy\n>('oui-dialog-scroll-strategy');\n\n/** @docs-private */\nexport function OUI_DIALOG_SCROLL_STRATEGY_FACTORY(\n  overlay: Overlay\n): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport function OUI_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n  overlay: Overlay\n): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const OUI_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n  provide: OUI_DIALOG_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: OUI_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Service to open Once UI Design modal dialogs.\n */\n@Injectable()\nexport class OuiDialog implements OnDestroy {\n  private _overlay = inject<Overlay>(Overlay);\n  private _injector = inject(Injector);\n  private _defaultOptions = inject<OuiDialogConfig>(\n    OUI_DIALOG_DEFAULT_OPTIONS,\n    { optional: true }\n  )!;\n  private _parentDialog = inject(OuiDialog, {\n    optional: true,\n    skipSelf: true,\n  })!;\n  private _overlayContainer = inject<OverlayContainer>(OverlayContainer);\n\n  private _openDialogsAtThisLevel: OuiDialogRef<any>[] = [];\n  private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n  private readonly _afterOpenedAtThisLevel = new Subject<OuiDialogRef<any>>();\n  private _ariaHiddenElements = new Map<Element, string | null>();\n  private _dialogCloseSubscription: Subscription = Subscription.EMPTY;\n\n  /** Keeps track of the currently-open dialogs. */\n  get openDialogs(): OuiDialogRef<any>[] {\n    return this._parentDialog\n      ? this._parentDialog.openDialogs\n      : this._openDialogsAtThisLevel;\n  }\n\n  /** Stream that emits when a dialog has been opened. */\n  get afterOpened(): Subject<OuiDialogRef<any>> {\n    return this._parentDialog\n      ? this._parentDialog.afterOpened\n      : this._afterOpenedAtThisLevel;\n  }\n\n  get _afterAllClosed(): Subject<void> {\n    const parent = this._parentDialog;\n    return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n  }\n\n  /**\n   * Stream that emits when all open dialog have finished closing.\n   * Will emit on subscribe if there are no open dialogs to begin with.\n   */\n  readonly afterAllClosed: Observable<void> = defer(() =>\n    this.openDialogs.length\n      ? this._afterAllClosed\n      : this._afterAllClosed.pipe(startWith(undefined))\n  );\n\n  constructor() {}\n\n  /**\n   * Opens a modal dialog containing the given component.\n   *\n   * @param componentOrTemplateRef Type of the component to load into the dialog,\n   *     or a TemplateRef to instantiate as the dialog content.\n   * @param config Extra configuration options.\n   * @returns Reference to the newly-opened dialog.\n   */\n  open<T, D = any, R = any>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    config?: OuiDialogConfig<D>\n  ): OuiDialogRef<T, R> {\n    const overlaySelector = document.querySelector(\n      '.cdk-overlay-backdrop-showing'\n    );\n    if (overlaySelector) {\n      (overlaySelector as HTMLElement).style.display = 'none';\n    }\n    config = _applyConfigDefaults(\n      config,\n      this._defaultOptions || new OuiDialogConfig()\n    );\n\n    if (config.id && this.getDialogById(config.id)) {\n      throw Error(\n        `Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`\n      );\n    }\n    const overlayRef = this._createOverlay(config);\n    const dialogContainer = this._attachDialogContainer(overlayRef, config);\n    const dialogRef = this._attachDialogContent<T, R>(\n      componentOrTemplateRef,\n      dialogContainer,\n      overlayRef,\n      config\n    );\n    // If this is the first dialog that we're opening, hide all the non-overlay content.\n    if (!this.openDialogs.length) {\n      this._hideNonDialogContentFromAssistiveTechnology();\n    }\n\n    this.openDialogs.push(dialogRef);\n    this._dialogCloseSubscription = dialogRef.afterClosed().subscribe(() => {\n      this._removeOpenDialog(dialogRef);\n      dialogRef._containerInstance._restoreFocus();\n    });\n    this.afterOpened.next(dialogRef);\n    dialogRef._containerInstance._trapFocus();\n    return dialogRef;\n  }\n\n  /**\n   * Closes all of the currently-open dialogs.\n   */\n  closeAll(): void {\n    this._closeDialogs(this.openDialogs);\n  }\n\n  /**\n   * Finds an open dialog by its id.\n   *\n   * @param id ID to use when looking up the dialog.\n   */\n  getDialogById(id: string): OuiDialogRef<any> | undefined {\n    return this.openDialogs.find((dialog) => dialog.id === id);\n  }\n\n  ngOnDestroy() {\n    // Only close the dialogs at this level on destroy\n    // since the parent service may still be active.\n    this._closeDialogs(this._openDialogsAtThisLevel);\n    if (this._dialogCloseSubscription) {\n      this._dialogCloseSubscription.unsubscribe();\n    }\n  }\n\n  /**\n   * Creates the overlay into which the dialog will be loaded.\n   *\n   * @param config The dialog configuration.\n   * @returns A promise resolving to the OverlayRef for the created overlay.\n   */\n  private _createOverlay(config: OuiDialogConfig): OverlayRef {\n    const overlayConfig = this._getOverlayConfig(config);\n    return this._overlay.create(overlayConfig);\n  }\n\n  /**\n   * Creates an overlay config from a dialog config.\n   *\n   * @param dialogConfig The dialog configuration.\n   * @returns The overlay configuration.\n   */\n  private _getOverlayConfig(dialogConfig: OuiDialogConfig): OverlayConfig {\n    const state = new OverlayConfig({\n      positionStrategy: this._overlay.position().global(),\n      scrollStrategy: dialogConfig.scrollStrategy || new DialogScrollStrategy(),\n      panelClass: dialogConfig.panelClass,\n      hasBackdrop: dialogConfig.hasBackdrop,\n      direction: dialogConfig.direction,\n      minWidth: dialogConfig.minWidth,\n      minHeight: dialogConfig.minHeight,\n      maxWidth: dialogConfig.maxWidth,\n      maxHeight: dialogConfig.maxHeight,\n      disposeOnNavigation: true,\n    });\n\n    if (dialogConfig.backdropClass) {\n      state.backdropClass = dialogConfig.backdropClass;\n    }\n\n    return state;\n  }\n\n  /**\n   * Attaches an OuiDialogContainer to a dialog's already-created overlay.\n   *\n   * @param overlay Reference to the dialog's underlying overlay.\n   * @param config The dialog configuration.\n   * @returns A promise resolving to a ComponentRef for the attached container.\n   */\n  private _attachDialogContainer(\n    overlay: OverlayRef,\n    config: OuiDialogConfig\n  ): OuiDialogContainer {\n    const userInjector =\n      config && config.viewContainerRef && config.viewContainerRef.injector;\n    const injector = Injector.create({\n      parent: userInjector || this._injector,\n      providers: [{ provide: OuiDialogConfig, useValue: config }],\n    });\n    const containerPortal = new ComponentPortal(\n      OuiDialogContainer,\n      config.viewContainerRef,\n      injector\n    );\n    const containerRef = overlay.attach<OuiDialogContainer>(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  /**\n   * Attaches the user-provided component to the already-created OuiDialogContainer.\n   *\n   * @param componentOrTemplateRef The type of component being loaded into the dialog,\n   *     or a TemplateRef to instantiate as the content.\n   * @param dialogContainer Reference to the wrapping OuiDialogContainer.\n   * @param overlayRef Reference to the overlay in which the dialog resides.\n   * @param config The dialog configuration.\n   * @returns A promise resolving to the OuiDialogRef that should be returned to the user.\n   */\n  private _attachDialogContent<T, R>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    dialogContainer: OuiDialogContainer,\n    overlayRef: OverlayRef,\n    config: OuiDialogConfig\n  ): OuiDialogRef<T, R> {\n    // Create a reference to the dialog we're creating in order to give the user a handle\n    // to modify and close it.\n    const dialogRef = new OuiDialogRef<T, R>(\n      overlayRef,\n      dialogContainer,\n      config.id\n    );\n\n    dialogRef.dialogConfig = config;\n\n    // When the dialog backdrop is clicked, we want to close it.\n    if (config.hasBackdrop) {\n      overlayRef.backdropClick().subscribe(() => {\n        if (!dialogRef.disableClose) {\n          dialogRef.close();\n        }\n      });\n    }\n\n    if (componentOrTemplateRef instanceof TemplateRef) {\n      dialogContainer.attachTemplatePortal(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        new TemplatePortal<T>(componentOrTemplateRef, null!, {\n          $implicit: config.data,\n          dialogRef,\n        } as any)\n      );\n    } else {\n      const injector = this._createInjector<T>(\n        config,\n        dialogRef,\n        dialogContainer\n      );\n      const contentRef = dialogContainer.attachComponentPortal<T>(\n        new ComponentPortal(componentOrTemplateRef, undefined, injector)\n      );\n      dialogRef.componentInstance = contentRef.instance;\n    }\n    dialogRef\n      .updateSize(config.width, config.height)\n      .updatePosition(config.position);\n\n    return dialogRef;\n  }\n\n  /**\n   * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n   * of a dialog to close itself and, optionally, to return a value.\n   *\n   * @param config Config object that is used to construct the dialog.\n   * @param dialogRef Reference to the dialog.\n   * @param container Dialog container element that wraps all of the contents.\n   * @returns The custom injector that can be used inside the dialog.\n   */\n  private _createInjector<T>(\n    config: OuiDialogConfig,\n    dialogRef: OuiDialogRef<T>,\n    dialogContainer: OuiDialogContainer\n  ): Injector {\n    const userInjector =\n      config && config.viewContainerRef && config.viewContainerRef.injector;\n\n    // The OuiDialogContainer is injected in the portal as the OuiDialogContainer and the dialog's\n    // content are created out of the same ViewContainerRef and as such, are siblings for injector\n    // purposes. To allow the hierarchy that is expected, the OuiDialogContainer is explicitly\n    // added to the injection tokens.\n    const providers = [\n      { provide: OuiDialogContainer, useValue: dialogContainer },\n      { provide: OUI_DIALOG_DATA, useValue: config.data },\n      { provide: OuiDialogRef, useValue: dialogRef },\n    ];\n\n    return Injector.create({\n      parent: userInjector || this._injector,\n      providers: providers,\n    });\n  }\n\n  /**\n   * Removes a dialog from the array of open dialogs.\n   *\n   * @param dialogRef Dialog to be removed.\n   */\n  private _removeOpenDialog(dialogRef: OuiDialogRef<any>) {\n    const index = this.openDialogs.indexOf(dialogRef);\n\n    if (index > -1) {\n      this.openDialogs.splice(index, 1);\n\n      // If all the dialogs were closed, remove/restore the `aria-hidden`\n      // to a the siblings and emit to the `afterAllClosed` stream.\n      if (!this.openDialogs.length) {\n        this._ariaHiddenElements.forEach((previousValue, element) => {\n          if (previousValue) {\n            element.setAttribute('aria-hidden', previousValue);\n          } else {\n            element.removeAttribute('aria-hidden');\n          }\n        });\n\n        this._ariaHiddenElements.clear();\n        this._afterAllClosed.next();\n      }\n    }\n  }\n\n  /**\n   * Hides all of the content that isn't an overlay from assistive technology.\n   */\n  private _hideNonDialogContentFromAssistiveTechnology() {\n    const overlayContainer = this._overlayContainer.getContainerElement();\n\n    // Ensure that the overlay container is attached to the DOM.\n    if (overlayContainer.parentElement) {\n      const siblings = overlayContainer.parentElement.children;\n\n      for (let i = siblings.length - 1; i > -1; i--) {\n        const sibling = siblings[i];\n\n        if (\n          sibling !== overlayContainer &&\n          sibling.nodeName !== 'SCRIPT' &&\n          sibling.nodeName !== 'STYLE' &&\n          !sibling.hasAttribute('aria-live')\n        ) {\n          this._ariaHiddenElements.set(\n            sibling,\n            sibling.getAttribute('aria-hidden')\n          );\n          sibling.setAttribute('aria-hidden', 'true');\n        }\n      }\n    }\n  }\n\n  /** Closes all of the dialogs in an array. */\n  private _closeDialogs(dialogs: OuiDialogRef<any>[]) {\n    let i = dialogs.length;\n\n    while (i--) {\n      // The `_openDialogs` property isn't updated after close until the rxjs subscription\n      // runs on the next microtask, in addition to modifying the array as we're going\n      // through it. We loop through all of them and call close without assuming that\n      // they'll be removed from the list instantaneously.\n      dialogs[i].close();\n    }\n  }\n}\n\n/**\n * Applies default options to the dialog config.\n *\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(\n  config?: OuiDialogConfig,\n  defaultOptions?: OuiDialogConfig\n): OuiDialogConfig {\n  return { ...defaultOptions, ...config };\n}\n","import {\n  Directive,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  ElementRef,\n  Component,\n  NgZone,\n  OnDestroy,\n  inject,\n} from '@angular/core';\nimport { OuiDialog } from './dialog';\nimport { OuiDialogRef } from './dialog-ref';\nimport { OuiIconRegistry } from '../icon/icon-registery';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ICONS } from '../core/shared/icons';\nimport { Subscription } from 'rxjs';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Header section of ui.\n */\n@Directive({\n  selector: '[oui-dialog-header], [ouiDialogHeader]',\n  exportAs: 'ouiDialogHeader',\n  host: {\n    class: 'oui-dialog-header',\n  },\n  standalone: false,\n})\nexport class OuiDialogHeader {\n  constructor() {}\n}\n\n/**\n * Header Title of ui.\n */\n@Directive({\n  selector: '[oui-dialog-header-title], [ouiDialogHeaderTitle]',\n  exportAs: 'ouiDialogHeaderTitle',\n  host: {\n    class: 'oui-dialog-header-title',\n  },\n  standalone: false,\n})\nexport class OuiDialogHeaderTitle {\n  constructor() {}\n}\n\n/**\n * Header Image of ui.\n */\n@Directive({\n  selector: '[oui-dialog-header-image], [ouiDialogHeaderImage]',\n  exportAs: 'ouiDialogHeaderImage',\n  host: {\n    class: 'oui-dialog-header-image',\n  },\n  standalone: false,\n})\nexport class OuiDialogHeaderImage {\n  constructor() {}\n}\n\n/**\n * Header action area of dialog.\n */\n@Directive({\n  selector: '[oui-dialog-header-action], [ouiDialogHeaderAction]',\n  exportAs: 'ouiDialogHeaderAction',\n  host: {\n    class: 'oui-dialog-header-action',\n  },\n  standalone: false,\n})\nexport class OuiDialogHeaderAction {\n  constructor() {}\n}\n\n/**\n * header action article.\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[oui-dialog-header-article], [ouiDialogHeaderArticle]',\n  template: '<oui-icon svgIcon=\"help-library\"></oui-icon>',\n  exportAs: 'ouiDialogHeaderArticle',\n  host: {\n    class: 'oui-dialog-header-article',\n  },\n  standalone: false,\n})\nexport class OuiDialogHeaderArticle implements OnDestroy {\n  private ouiIconRegistry = inject(OuiIconRegistry);\n  private domSanitizer = inject(DomSanitizer);\n  protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  constructor() {\n    this.ouiIconRegistry.addSvgIconSet(\n      this.domSanitizer.bypassSecurityTrustResourceUrl(\n        'https://cdn.icomoon.io/135790/oncehub-20/symbol-defs.svg?5df5gz'\n      )\n    );\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n  }\n  ngOnDestroy() {\n    this._monitorSubscription.unsubscribe();\n  }\n}\n\n/**\n * header action article.\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[oui-dialog-header-video], [ouiDialogHeaderVideo]',\n  template: '<oui-icon svgIcon=\"video-icon\"></oui-icon>',\n  exportAs: 'ouiDialogHeaderVideo',\n  host: {\n    class: 'oui-dialog-header-video',\n  },\n  standalone: false,\n})\nexport class OuiDialogHeaderVideo implements OnDestroy {\n  private ouiIconRegistry = inject(OuiIconRegistry);\n  private domSanitizer = inject(DomSanitizer);\n  protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  constructor() {\n    this.ouiIconRegistry.addSvgIconLiteral(\n      `video-icon`,\n      this.domSanitizer.bypassSecurityTrustHtml(ICONS.VIDEO_ICON)\n    );\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n  }\n  ngOnDestroy() {\n    this._monitorSubscription.unsubscribe();\n  }\n}\n\n/**\n * header action close\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[oui-dialog-header-close], [ouiDialogHeaderClose]',\n  template: '<oui-icon svgIcon=\"close-icon\"></oui-icon>',\n  exportAs: 'ouiDialogHeaderClose',\n  host: {\n    class: 'oui-dialog-header-close',\n    '[attr.tabindex]': '0',\n  },\n  standalone: false,\n})\nexport class OuiDialogHeaderClose implements OnDestroy {\n  private ouiIconRegistry = inject(OuiIconRegistry);\n  private domSanitizer = inject(DomSanitizer);\n  protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  constructor() {\n    this.ouiIconRegistry.addSvgIconLiteral(\n      `close-icon`,\n      this.domSanitizer.bypassSecurityTrustHtml(ICONS.CLOSE_ICON)\n    );\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n  }\n  ngOnDestroy() {\n    this._monitorSubscription.unsubscribe();\n  }\n}\n\n/**\n * header action separator close\n */\n@Directive({\n  selector: '[oui-dialog-header-separator], [ouiDialogHeaderSeparator]',\n  exportAs: 'ouiDialogHeaderSeparator',\n  host: {\n    class: 'oui-dialog-header-separator',\n  },\n  standalone: false,\n})\nexport class OuiDialogHeaderSeparator {\n  constructor() {}\n}\n\n/**\n * directive for close the current dialog.\n */\n@Directive({\n  selector: `[oui-dialog-close], [ouiDialogClose]`,\n  exportAs: 'ouiDialogClose',\n  host: {\n    '[class.cross-disabled]': 'dialogResult===false',\n    '(click)': 'closeDialog()',\n    '[attr.aria-label]': 'ariaLabel',\n    '(keyup.space)': 'handleKeydown($event)',\n    '(keydown.enter)': 'handleKeydown($event)',\n  },\n  standalone: false,\n})\nexport class OuiDialogClose implements OnInit, OnChanges {\n  dialogRef = inject<OuiDialogRef<any>>(OuiDialogRef, { optional: true })!;\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _dialog = inject(OuiDialog);\n\n  /** Screenreader label for the button. */\n  @Input('aria-label')\n  ariaLabel = 'Close dialog';\n\n  /** Dialog close input. */\n  @Input('oui-dialog-close')\n  dialogResult: any;\n\n  @Input('ouiDialogClose')\n  _ouiDialogClose: any;\n\n  constructor() {}\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  handleKeydown(event: KeyboardEvent): void {\n    this.closeDialog();\n    event.preventDefault();\n  }\n\n  closeDialog() {\n    if (this.dialogResult !== false) {\n      this.dialogRef.close(this.dialogResult);\n    }\n  }\n\n  ngOnInit() {\n    if (!this.dialogRef) {\n      // When this directive is included in a dialog via TemplateRef (rather than being\n      // in a Component), the DialogRef isn't available via injection because embedded\n      // views cannot be given a custom injector. Instead, we look up the DialogRef by\n      // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n      // be resolved at constructor time.\n      this.dialogRef = getClosestDialog(\n        this._elementRef,\n        this._dialog.openDialogs\n      )!;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const proxiedChange =\n      changes._ouiDialogClose || changes._ouiDialogCloseResult;\n    if (proxiedChange) {\n      this.dialogResult = proxiedChange.currentValue;\n    }\n  }\n}\n\n/**\n * Content section of dialog.\n */\n@Directive({\n  selector: '[oui-dialog-content], [ouiDialogContent]',\n  exportAs: 'ouiDialogContent',\n  host: {\n    class: 'oui-dialog-content',\n  },\n  standalone: false,\n})\nexport class OuiDialogContent implements OnInit {\n  dialogRef = inject<OuiDialogRef<any>>(OuiDialogRef, { optional: true })!;\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _dialog = inject(OuiDialog);\n\n  constructor() {}\n\n  ngOnInit() {\n    if (!this.dialogRef) {\n      // When this directive is included in a dialog via TemplateRef (rather than being\n      // in a Component), the DialogRef isn't available via injection because embedded\n      // views cannot be given a custom injector. Instead, we look up the DialogRef by\n      // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n      // be resolved at constructor time.\n      this.dialogRef = getClosestDialog(\n        this._elementRef,\n        this._dialog.openDialogs\n      )!;\n    }\n    this._setContentHeight();\n  }\n  /* prevent content scroll in default scroll strategy **/\n  private _setContentHeight() {\n    if (!this.dialogRef.dialogConfig.scrollStrategy) {\n      this._elementRef.nativeElement.style.maxHeight = 'none';\n      this._elementRef.nativeElement.style.overflow = 'visible';\n    }\n  }\n}\n\n/**\n * Content section of dialog.\n */\n@Directive({\n  selector: '[oui-dialog-footer], [ouiDialogFooter]',\n  exportAs: 'ouiDialogFooter',\n  host: {\n    class: 'oui-dialog-footer',\n  },\n  standalone: false,\n})\nexport class OuiDialogFooter {\n  @Input()\n  id = `oui-dialog-footer-${dialogElementUid++}`;\n  constructor() {}\n}\n\n/**\n * footer action left\n */\n@Directive({\n  selector: '[oui-dialog-footer-action-left], [ouiDialogFooterActionLeft]',\n  exportAs: 'ouiDialogFooterActionLeft',\n  host: {\n    class: 'oui-dialog-footer-action-left',\n  },\n  standalone: false,\n})\nexport class OuiDialogFooterActionLeft {\n  constructor() {}\n}\n\n/**\n * footer action right\n */\n@Directive({\n  selector: '[oui-dialog-footer-action-right], [ouiDialogFooterActionRight]',\n  exportAs: 'ouiDialogFooterActionRight',\n  host: {\n    class: 'oui-dialog-footer-action-right',\n  },\n  standalone: false,\n})\nexport class OuiDialogFooterActionRight {\n  constructor() {}\n}\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n *\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(\n  element: ElementRef<HTMLElement>,\n  openDialogs: OuiDialogRef<any>[]\n) {\n  let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n  while (parent && !parent.classList.contains('oui-dialog-container')) {\n    parent = parent.parentElement;\n  }\n\n  return parent ? openDialogs.find((dialog) => dialog.id === parent!.id) : null;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, TitleCasePipe } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { Icon } from './icon';\nimport { OuiIconRegistry } from './icon-registery';\n\n@NgModule({\n  imports: [CommonModule, HttpClientModule],\n  exports: [Icon],\n  declarations: [Icon],\n  providers: [OuiIconRegistry, TitleCasePipe],\n})\nexport class OuiIconModule {}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OUI_DIALOG_SCROLL_STRATEGY_PROVIDER, OuiDialog } from './dialog';\nimport { OuiDialogContainer } from './dialog-container';\nimport { DialogScrollStrategy } from './dialog-scroll-strategy';\nimport {\n  OuiDialogHeader,\n  OuiDialogContent,\n  OuiDialogFooter,\n  OuiDialogHeaderAction,\n  OuiDialogHeaderArticle,\n  OuiDialogHeaderClose,\n  OuiDialogHeaderTitle,\n  OuiDialogHeaderVideo,\n  OuiDialogClose,\n  OuiDialogHeaderSeparator,\n  OuiDialogFooterActionLeft,\n  OuiDialogFooterActionRight,\n  OuiDialogHeaderImage,\n} from './dialog-content';\nimport { OuiIconModule } from '../icon/icon.module';\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, PortalModule, OuiIconModule],\n  exports: [\n    OuiDialogContainer,\n    OuiDialogHeader,\n    OuiDialogHeaderImage,\n    OuiDialogContent,\n    OuiDialogFooter,\n    OuiDialogHeaderAction,\n    OuiDialogHeaderArticle,\n    OuiDialogHeaderClose,\n    OuiDialogHeaderTitle,\n    OuiDialogHeaderVideo,\n    OuiDialogClose,\n    OuiDialogHeaderSeparator,\n    OuiDialogFooterActionLeft,\n    OuiDialogFooterActionRight,\n  ],\n  declarations: [\n    OuiDialogContainer,\n    OuiDialogHeader,\n    OuiDialogHeaderImage,\n    OuiDialogContent,\n    OuiDialogFooter,\n    OuiDialogHeaderAction,\n    OuiDialogHeaderArticle,\n    OuiDialogHeaderClose,\n    OuiDialogHeaderTitle,\n    OuiDialogHeaderVideo,\n    OuiDialogClose,\n    OuiDialogHeaderSeparator,\n    OuiDialogFooterActionLeft,\n    OuiDialogFooterActionRight,\n  ],\n  providers: [\n    OuiDialog,\n    DialogScrollStrategy,\n    OUI_DIALOG_SCROLL_STRATEGY_PROVIDER,\n  ],\n})\nexport class OuiDialogModule {}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the datepicker.\n */\nexport const ouiDatepickerAnimations: {\n  readonly transformPanel: AnimationTriggerMetadata;\n  readonly fadeInCalendar: AnimationTriggerMetadata;\n} = {\n  /** Transforms the height of the datepicker's calendar. */\n  transformPanel: trigger('transformPanel', [\n    state(\n      'void',\n      style({\n        opacity: 0,\n        transform: 'scale(1, 0.8)',\n      })\n    ),\n    transition(\n      'void => enter',\n      animate(\n        '120ms cubic-bezier(0, 0, 0.2, 1)',\n        style({\n          opacity: 1,\n          transform: 'scale(1, 1)',\n        })\n      )\n    ),\n    transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n  ]),\n\n  /** Fades in the content of the calendar. */\n  fadeInCalendar: trigger('fadeInCalendar', [\n    state('void', style({ opacity: 0 })),\n    state('enter', style({ opacity: 1 })),\n\n    // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n    // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n    transition(\n      'void => *',\n      animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n    ),\n  ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  PositionStrategy,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EventEmitter,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { OuiDialog, OuiDialogRef } from '../dialog/public-api';\nimport { merge, Subject, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { OuiCalendar } from './calendar';\nimport { ouiDatepickerAnimations } from './datepicker-animations';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { OuiDatepickerInput } from './datepicker-input';\nimport { OuiCalendarCellCssClasses } from './calendar-body';\nimport { CanColorCtor, mixinColor, CanColor, ThemePalette } from '../core';\nimport { DateAdapter } from './date-adapter';\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const OUI_DATEPICKER_SCROLL_STRATEGY = new InjectionToken<\n  () => ScrollStrategy\n>('oui-datepicker-scroll-strategy');\n\nexport function OUI_DATEPICKER_SCROLL_STRATEGY_FACTORY(\n  overlay: Overlay\n): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\nexport const OUI_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: OUI_DATEPICKER_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: OUI_DATEPICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n// Boilerplate for applying mixins to OuiDatepickerContent.\nexport class OuiDatepickerContentBase {\n  constructor(public _elementRef: ElementRef) {}\n}\nexport const _OuiDatepickerContentMixinBase: CanColorCtor &\n  typeof OuiDatepickerContentBase = mixinColor(OuiDatepickerContentBase);\n\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * OuiCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n */\n@Component({\n  selector: 'oui-datepicker-content',\n  templateUrl: 'datepicker-content.html',\n  styleUrls: ['datepicker-content.scss'],\n  host: {\n    class: 'oui-datepicker-content',\n    '[@transformPanel]': '\"enter\"',\n    '[class.oui-datepicker-content-touch]': 'datepicker.touchUi',\n  },\n  animations: [\n    ouiDatepickerAnimations.transformPanel,\n    ouiDatepickerAnimations.fadeInCalendar,\n  ],\n  exportAs: 'ouiDatepickerContent',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['color'],\n  standalone: false,\n})\nexport class OuiDatepickerContent<D>\n  extends _OuiDatepickerContentMixinBase\n  implements AfterViewInit, CanColor\n{\n  /** Reference to the internal calendar component. */\n  @ViewChild(OuiCalendar) _calendar: OuiCalendar<D>;\n\n  /** Reference to the datepicker that created the overlay. */\n  datepicker: OuiDatepicker<D>;\n\n  /** Whether the datepicker is above or below the input. */\n  _isAbove: boolean;\n\n  constructor() {\n    const elementRef = inject(ElementRef);\n\n    super(elementRef);\n  }\n\n  ngAfterViewInit() {\n    this._calendar.focusActiveCell();\n  }\n}\n\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"ouiDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\n@Component({\n  selector: 'oui-datepicker',\n  template: '',\n  exportAs: 'ouiDatepicker',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.oui-datepicker-disabled]': 'disabled',\n  },\n  standalone: false,\n})\nexport class OuiDatepicker<D> implements OnDestroy, CanColor {\n  private _dialog = inject(OuiDialog);\n  private _overlay = inject(Overlay);\n  private _ngZone = inject(NgZone);\n  protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {\n    optional: true,\n  })!;\n  private _dir = inject(Directionality, { optional: true })!;\n  private _document = inject(DOCUMENT, { optional: true })!;\n\n  private _scrollStrategy: () => ScrollStrategy;\n\n  /** An input indicating the type of the custom header component for the calendar, if set. */\n  @Input() calendarHeaderComponent: ComponentType<any>;\n\n  /** The date to open the calendar to initially. */\n  @Input()\n  get startAt(): D | null {\n    // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n    // selected value is.\n    return (\n      this._startAt ||\n      (this._datepickerInput ? this._datepickerInput.value : null)\n    );\n  }\n  set startAt(value: D | null) {\n    this._startAt = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _startAt: D | null;\n\n  /** The view that the calendar should start in. */\n  @Input() startView: 'month' | 'year' | 'multi-year' = 'month';\n\n  /** Color palette to use on the datepicker's calendar. */\n  @Input()\n  get color(): ThemePalette {\n    return (\n      this._color ||\n      (this._datepickerInput\n        ? this._datepickerInput._getThemePalette()\n        : undefined)\n    );\n  }\n  set color(value: ThemePalette) {\n    this._color = value;\n  }\n  _color: ThemePalette;\n\n  /**\n   * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n   * than a popup and elements have more padding to allow for bigger touch targets.\n   */\n  @Input()\n  get touchUi(): boolean {\n    return this._touchUi;\n  }\n  set touchUi(value: boolean) {\n    this._touchUi = coerceBooleanProperty(value);\n  }\n  private _touchUi = false;\n\n  /** Whether the datepicker pop-up should be disabled. */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled === undefined && this._datepickerInput\n      ? this._datepickerInput.disabled\n      : !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._disabled) {\n      this._disabled = newValue;\n      this._disabledChange.next(newValue);\n      this._datepickerInput._datepickerDisabled = newValue;\n    }\n  }\n  private _disabled = false;\n\n  /**\n   * Emits selected year in multiyear view.\n   * This doesn't imply a change on the selected date.\n   */\n  @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /**\n   * Emits selected month in year view.\n   * This doesn't imply a change on the selected date.\n   */\n  @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\n  @Input() panelClass: string | string[];\n\n  /** Function that can be used to add custom CSS classes to dates. */\n  @Input() dateClass: (date: D) => OuiCalendarCellCssClasses;\n\n  /** Emits when the datepicker has been opened. */\n  // eslint-disable-next-line @angular-eslint/no-output-rename\n  @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Emits when the datepicker has been closed. */\n  // eslint-disable-next-line @angular-eslint/no-output-rename\n  @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Whether the calendar is open. */\n  @Input()\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: boolean) {\n    if (value) {\n      this.open();\n    } else {\n      this.close();\n    }\n  }\n  private _opened = false;\n\n  /** The id for the datepicker calendar. */\n  id = `oui-datepicker-${datepickerUid++}`;\n\n  /** The currently selected date. */\n  get _selected(): D | null {\n    return this._validSelected;\n  }\n  set _selected(value: D | null) {\n    this._validSelected = value;\n  }\n  private _validSelected: D | null = null;\n\n  /** The minimum selectable date. */\n  get _minDate(): D | null {\n    return this._datepickerInput && this._datepickerInput.min;\n  }\n\n  /** The maximum selectable date. */\n  get _maxDate(): D | null {\n    return this._datepickerInput && this._datepickerInput.max;\n  }\n\n  get _dateFilter(): (date: D | null) => boolean {\n    return this._datepickerInput && this._datepickerInput._dateFilter;\n  }\n\n  /** A reference to the overlay when the calendar is opened as a popup. */\n  _popupRef: OverlayRef;\n\n  /** A reference to the dialog when the calendar is opened as a dialog. */\n  private _dialogRef: OuiDialogRef<OuiDatepickerContent<D>> | null;\n\n  /** A portal containing the calendar for this datepicker. */\n  private _calendarPortal: ComponentPortal<OuiDatepickerContent<D>>;\n\n  /** Reference to the component instantiated in popup mode. */\n  private _popupComponentRef: ComponentRef<OuiDatepickerContent<D>> | null;\n\n  /** The element that was focused before the datepicker was opened. */\n  private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n  /** Subscription to value changes in the associated input element. */\n  private _inputSubscription = Subscription.EMPTY;\n\n  /** The input element this datepicker is associated with. */\n  _datepickerInput: OuiDatepickerInput<D>;\n\n  /** Emits when the datepicker is disabled. */\n  readonly _disabledChange = new Subject<boolean>();\n\n  /** Emits new selected date when selected date changes. */\n  readonly _selectedChanged = new Subject<D>();\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  constructor() {\n    const scrollStrategy = inject(OUI_DATEPICKER_SCROLL_STRATEGY);\n\n    if (!this._dateAdapter) {\n      throw createMissingDateImplError('DateAdapter');\n    }\n    this._scrollStrategy = scrollStrategy;\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n  }\n\n  ngOnDestroy() {\n    this.close();\n    this._inputSubscription.unsubscribe();\n    this._disabledChange.complete();\n    this._monitorSubscription.unsubscribe();\n\n    if (this._popupRef) {\n      this._popupRef.dispose();\n      this._popupComponentRef = null;\n    }\n  }\n\n  /** Selects the given date */\n  select(date: D): void {\n    const oldValue = this._selected;\n    this._selected = date;\n    if (!this._dateAdapter.sameDate(oldValue, this._selected)) {\n      this._selectedChanged.next(date);\n    }\n  }\n\n  /** Emits the selected year in multiyear view */\n  _selectYear(normalizedYear: D): void {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  /** Emits selected month in year view */\n  _selectMonth(normalizedMonth: D): void {\n    this.monthSelected.emit(normalizedMonth);\n  }\n\n  /**\n   * Register an input with this datepicker.\n   *\n   * @param input The datepicker input to register with this datepicker.\n   */\n  _registerInput(input: OuiDatepickerInput<D>): void {\n    if (this._datepickerInput) {\n      throw Error(\n        'A OuiDatepicker can only be associated with a single input.'\n      );\n    }\n    this._datepickerInput = input;\n    this._inputSubscription = this._datepickerInput._valueChange.subscribe(\n      (value: D | null) => (this._selected = value)\n    );\n  }\n\n  /** Open the calendar. */\n  open(): void {\n    if (this._opened || this.disabled) {\n      return;\n    }\n    if (!this._datepickerInput) {\n      throw Error(\n        'Attempted to open an OuiDatepicker with no associated input.'\n      );\n    }\n    if (this._document) {\n      this._focusedElementBeforeOpen = this._document\n        .activeElement as HTMLElement;\n    }\n\n    if (this.touchUi) {\n      this._openAsDialog();\n    } else {\n      this._openAsPopup();\n    }\n    this._opened = true;\n    // add input focus here\n    this._datepickerInput.focus();\n    this.openedStream.emit();\n  }\n\n  /** Close the calendar. */\n  close(): void {\n    if (!this._opened) {\n      return;\n    }\n    if (this._popupRef && this._popupRef.hasAttached()) {\n      this._popupRef.detach();\n    }\n    if (this._dialogRef) {\n      this._dialogRef.close();\n      this._dialogRef = null;\n    }\n    if (this._calendarPortal && this._calendarPortal.isAttached) {\n      this._calendarPortal.detach();\n    }\n\n    const completeClose = () => {\n      // The `_opened` could've been reset already if\n      // we got two events in quick succession.\n      if (this._opened) {\n        this._opened = false;\n        this.closedStream.emit();\n        this._focusedElementBeforeOpen = null;\n        this._datepickerInput.blur();\n      }\n    };\n\n    if (\n      this._focusedElementBeforeOpen &&\n      typeof this._focusedElementBeforeOpen.focus === 'function'\n    ) {\n      // Because IE moves focus asynchronously, we can't count on it being restored before we've\n      // marked the datepicker as closed. If the event fires out of sequence and the element that\n      // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n      // able to close the calendar at all. We work around it by making the logic, that marks\n      // the datepicker as closed, async as well.\n      this._focusedElementBeforeOpen.focus();\n      setTimeout(completeClose);\n    } else {\n      completeClose();\n    }\n  }\n\n  /** Open the calendar as a dialog. */\n  private _openAsDialog(): void {\n    // Usually this would be handled by `open` which ensures that we can only have one overlay\n    // open at a time, however since we reset the variables in async handlers some overlays\n    // may slip through if the user opens and closes multiple times in quick succession (e.g.\n    // by holding down the enter key).\n    if (this._dialogRef) {\n      this._dialogRef.close();\n    }\n\n    this._dialogRef = this._dialog.open<OuiDatepickerContent<D>>(\n      OuiDatepickerContent,\n      {\n        direction: this._dir ? this._dir.value : 'ltr',\n        viewContainerRef: this._viewContainerRef,\n        panelClass: 'oui-datepicker-dialog',\n      }\n    );\n\n    this._dialogRef.afterClosed().subscribe(() => this.close());\n    this._dialogRef.componentInstance.datepicker = this;\n    this._setColor();\n  }\n\n  /** Open the calendar as a popup. */\n  private _openAsPopup(): void {\n    if (!this._calendarPortal) {\n      this._calendarPortal = new ComponentPortal<OuiDatepickerContent<D>>(\n        OuiDatepickerContent,\n        this._viewContainerRef\n      );\n    }\n\n    if (!this._popupRef) {\n      this._createPopup();\n    }\n\n    if (!this._popupRef.hasAttached()) {\n      this._popupComponentRef = this._popupRef.attach(this._calendarPortal);\n      this._popupComponentRef.instance.datepicker = this;\n      this._setColor();\n\n      // Update the position once the calendar has rendered.\n      this._ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this._popupRef.updatePosition();\n        });\n    }\n  }\n\n  /** Create the popup. */\n  private _createPopup(): void {\n    const overlayConfig = new OverlayConfig({\n      positionStrategy: this._createPopupPositionStrategy(),\n      hasBackdrop: true,\n      backdropClass: 'oui-overlay-transparent-backdrop',\n      direction: this._dir,\n      scrollStrategy: this._scrollStrategy(),\n      panelClass: 'oui-datepicker-popup',\n    });\n\n    this._popupRef = this._overlay.create(overlayConfig);\n    this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n    merge(\n      this._popupRef.backdropClick(),\n      this._popupRef.detachments(),\n      this._popupRef.keydownEvents().pipe(\n        filter(\n          (event) =>\n            // Closing on alt + up is only valid when there's an input associated with the datepicker.\n            event.keyCode === ESCAPE ||\n            (this._datepickerInput &&\n              event.altKey &&\n              event.keyCode === UP_ARROW)\n        )\n      )\n    ).subscribe(() => this.close());\n  }\n\n  /** Create the popup PositionStrategy. */\n  private _createPopupPositionStrategy(): PositionStrategy {\n    return this._overlay\n      .position()\n      .flexibleConnectedTo(this._datepickerInput.getConnectedOverlayOrigin())\n      .withTransformOriginOn('.oui-datepicker-content')\n      .withFlexibleDimensions(false)\n      .withViewportMargin(8)\n      .withLockedPosition()\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n        },\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top',\n        },\n        {\n          originX: 'end',\n          originY: 'top',\n          overlayX: 'end',\n          overlayY: 'bottom',\n        },\n      ]);\n  }\n\n  /**\n   * @param obj The object to check.\n   * @returns The given object if it is both a date instance and valid, otherwise null.\n   */\n  private _getValidDateOrNull(obj: any): D | null {\n    return this._dateAdapter.isDateInstance(obj) &&\n      this._dateAdapter.isValid(obj as any as D)\n      ? obj\n      : null;\n  }\n\n  /** Passes the current theme color along to the calendar overlay. */\n  private _setColor(): void {\n    const color = this.color;\n    if (this._popupComponentRef) {\n      this._popupComponentRef.instance.color = color;\n    }\n    if (this._dialogRef) {\n      this._dialogRef.componentInstance.color = color;\n    }\n  }\n}\n","<oui-calendar\n  cdkTrapFocus\n  [id]=\"datepicker.id\"\n  [ngClass]=\"datepicker.panelClass\"\n  [startAt]=\"datepicker.startAt\"\n  [startView]=\"datepicker.startView\"\n  [minDate]=\"datepicker._minDate\"\n  [maxDate]=\"datepicker._maxDate\"\n  [dateFilter]=\"datepicker._dateFilter\"\n  [headerComponent]=\"datepicker.calendarHeaderComponent\"\n  [selected]=\"datepicker._selected\"\n  [dateClass]=\"datepicker.dateClass\"\n  [@fadeInCalendar]=\"'enter'\"\n  (selectedChange)=\"datepicker.select($event)\"\n  (yearSelected)=\"datepicker._selectYear($event)\"\n  (monthSelected)=\"datepicker._selectMonth($event)\"\n  (_userSelection)=\"datepicker.close()\"\n>\n</oui-calendar>\n","import { Observable } from 'rxjs';\nimport { NgControl } from '@angular/forms';\n\n/** An interface which allows a control to work inside of a `OuiFormField`. */\nexport abstract class OuiFormFieldControl<T> {\n  /** The value of the control. */\n  value: T | null;\n\n  /**\n   * Stream that emits whenever the state of the control changes such that the parent `OuiFormField`\n   * needs to run change detection.\n   */\n  readonly stateChanges: Observable<void>;\n\n  /** The element ID for this control. */\n  readonly id: string;\n\n  /** The placeholder for this control. */\n  readonly placeholder: string;\n\n  /** Gets the NgControl for this control. */\n  readonly ngControl: NgControl | null;\n\n  /** Whether the control is focused. */\n  readonly focused: boolean;\n\n  /** Whether the control is empty. */\n  readonly empty: boolean;\n\n  /** Whether the `OuiFormField` label should try to float. */\n  readonly shouldLabelFloat: boolean;\n\n  /** Whether the control is required. */\n  readonly required: boolean;\n\n  /** Whether the control is disabled. */\n  readonly disabled: boolean;\n\n  /** Whether the control is in an error state. */\n  readonly errorState: boolean;\n\n  /**\n   * An optional name for the control type that can be used to distinguish `oui-form-field` elements\n   * based on their control type. The form field will add a class,\n   * `oui-form-field-type-{{controlType}}` to its root element.\n   */\n  readonly controlType?: string;\n\n  /**\n   * Whether the input is currently in an autofilled state. If property is not present on the\n   * control it is assumed to be false.\n   */\n  readonly autofilled?: boolean;\n\n  /** Sets the list of element IDs that currently describe this control. */\n  abstract setDescribedByIds(ids: string[]): void;\n\n  /** Handles a click on the control's container. */\n  abstract onContainerClick(event: MouseEvent): void;\n}\n","/** @docs-private */\nexport function getOuiFormFieldMissingControlError(): Error {\n  return Error('oui-form-field must contain a OuiFormFieldControl.');\n}\n","import {\n  AfterContentChecked,\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  InjectionToken,\n  ViewChild,\n  ViewEncapsulation,\n  OnDestroy,\n  Input,\n  inject,\n} from '@angular/core';\nimport { mixinColor, ThemePalette } from '../core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { OuiFormFieldControl } from './form-field-control';\nimport { getOuiFormFieldMissingControlError } from './form-field-errors';\n\n/**\n * Boilerplate for applying mixins to OuiFormField.\n *\n * @docs-private\n */\nexport class OuiFormFieldBase {\n  constructor(public _elementRef: ElementRef) {}\n}\n\n/**\n * Base class to which we're applying the form field mixins.\n *\n * @docs-private\n */\nexport const _OuiFormFieldMixinBase: typeof OuiFormFieldBase =\n  mixinColor(OuiFormFieldBase);\n\n/** Possible appearance styles for the form field. */\nexport type OuiFormFieldAppearance = 'standard' | 'underline';\n\n/**\n * Represents the default options form the form field that can be configured\n * using the `OUI_FORM_FIELD_DEFAULT_OPTIONS` injection token.\n */\nexport interface OuiFormFieldDefaultOptions {\n  appearance?: OuiFormFieldAppearance;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nexport const OUI_FORM_FIELD_DEFAULT_OPTIONS =\n  new InjectionToken<OuiFormFieldDefaultOptions>(\n    'OUI_FORM_FIELD_DEFAULT_OPTIONS'\n  );\n\n/** Container for form controls that applies Oncehub Design styling and behavior. */\n@Component({\n  selector: 'oui-form-field',\n  exportAs: 'ouiFormField',\n  templateUrl: 'form-field.html',\n  // OuiInput is a directive and can't have styles, so we need to include its styles here\n  // in form-field-input.css. The OuiInput styles are fairly minimal so it shouldn't be a\n  // big deal for people who aren't using OuiInput.\n  styleUrls: ['form-field.scss'],\n  host: {\n    class: 'oui-form-field',\n    '[class.oui-focused]': '_control.focused',\n    '[class.oui-disabled]': '_control.disabled',\n    '[class.oui-form-field-appearance-standard]': 'appearance == \"standard\"',\n    '[class.oui-form-field-appearance-underline]': 'appearance == \"underline\"',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiFormField\n  extends _OuiFormFieldMixinBase\n  implements AfterContentInit, AfterContentChecked, OnDestroy\n{\n  _elementRef: ElementRef;\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _defaults = inject<OuiFormFieldDefaultOptions>(\n    OUI_FORM_FIELD_DEFAULT_OPTIONS,\n    { optional: true }\n  )!;\n\n  private _destroyed = new Subject<void>();\n  @Input() color: ThemePalette;\n  /** The form-field appearance style. */\n  @Input()\n  get appearance(): OuiFormFieldAppearance {\n    return this._appearance;\n  }\n  set appearance(value: OuiFormFieldAppearance) {\n    this._appearance =\n      value || (this._defaults && this._defaults.appearance) || 'standard';\n  }\n  _appearance: OuiFormFieldAppearance;\n\n  @ViewChild('connectionContainer')\n  _connectionContainerRef: ElementRef;\n  @ViewChild('inputContainer')\n  _inputContainerRef: ElementRef;\n  @ContentChild(OuiFormFieldControl)\n  _control: OuiFormFieldControl<any>;\n\n  constructor() {\n    const _elementRef = inject(ElementRef);\n\n    super(_elementRef);\n    this._elementRef = _elementRef;\n    const _defaults = this._defaults;\n\n    // Set the default through here so we invoke the setter on the first run.\n    this.appearance =\n      _defaults && _defaults.appearance ? _defaults.appearance : 'standard';\n  }\n\n  ngAfterContentInit() {\n    this._validateControlChild();\n    const control = this._control;\n\n    if (control.controlType) {\n      this._elementRef.nativeElement.classList.add(\n        `oui-form-field-type-${control.controlType}`\n      );\n    }\n\n    // Run change detection if the value changes.\n    if (control.ngControl && control.ngControl.valueChanges) {\n      control.ngControl.valueChanges\n        .pipe(takeUntil(this._destroyed))\n        .subscribe(() => this._changeDetectorRef.markForCheck());\n    }\n  }\n\n  getConnectedOverlayOrigin(): ElementRef {\n    return this._connectionContainerRef || this._elementRef;\n  }\n\n  ngAfterContentChecked() {\n    this._validateControlChild();\n  }\n\n  ngOnDestroy() {\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** Throws an error if the form field's control is missing. */\n  protected _validateControlChild() {\n    if (!this._control) {\n      throw getOuiFormFieldMissingControlError();\n    }\n  }\n}\n","<div class=\"oui-form-field-wrapper\">\n  <div\n    class=\"oui-form-field-flex\"\n    #connectionContainer\n    (click)=\"_control.onContainerClick && _control.onContainerClick($event)\"\n  >\n    <!-- TODO: uncomment for prefix\n    <div class=\"oui-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n      <ng-content select=\"[ouiPrefix]\"></ng-content>\n    </div>-->\n\n    <div class=\"oui-form-field-infix\" #inputContainer>\n      <ng-content></ng-content>\n    </div>\n\n    <!-- TODO: uncomment for suffix\n    <div class=\"oui-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n      <ng-content select=\"[ouiSuffix]\"></ng-content>\n    </div>-->\n  </div>\n</div>\n","import { InjectionToken } from '@angular/core';\n\n/**\n * This token is used to inject the object whose value should be set into `OuiInput`. If none is\n * provided, the native `HTMLInputElement` is used.\n */\nexport const OUI_INPUT_VALUE_ACCESSOR = new InjectionToken<{ value: any }>(\n  'OUI_INPUT_VALUE_ACCESSOR'\n);\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  Output,\n  AfterViewInit,\n  inject,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { OuiFormField } from '../form-field/form-field';\nimport { OUI_INPUT_VALUE_ACCESSOR } from '../input/input-value-accessor';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { OuiDatepicker } from './datepicker';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { ThemePalette } from '../core/public-api';\nimport { DateAdapter } from './date-adapter';\nimport { OuiDateFormats, OUI_DATE_FORMATS } from './date-formats';\n\nexport const OUI_DATEPICKER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => OuiDatepickerInput),\n  multi: true,\n};\n\nexport const OUI_DATEPICKER_VALIDATORS: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => OuiDatepickerInput),\n  multi: true,\n};\n\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use OuiDatepickerInputEvent instead.\n */\nexport class OuiDatepickerInputEvent<D> {\n  /** The new value for the target datepicker input. */\n  value: D | null;\n\n  constructor(\n    /** Reference to the datepicker input component that emitted the event. */\n    public target: OuiDatepickerInput<D>,\n    /** Reference to the native input element associated with the datepicker input. */\n    public targetElement: HTMLElement\n  ) {\n    this.value = this.target.value;\n  }\n}\nconst DATEPICKER_FOCUS_CLASS = 'oui-datepicker-focused';\n\n/** Directive used to connect an input to a OuiDatepicker. */\n@Directive({\n  selector: 'input[ouiDatepicker]',\n  providers: [\n    OUI_DATEPICKER_VALUE_ACCESSOR,\n    OUI_DATEPICKER_VALIDATORS,\n    { provide: OUI_INPUT_VALUE_ACCESSOR, useExisting: OuiDatepickerInput },\n  ],\n  host: {\n    class: 'oui-datepicker-input',\n    '[attr.aria-haspopup]': 'true',\n    '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n    '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n    '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n    '[disabled]': 'disabled',\n    '(input)': '_onInput($event.target.value)',\n    '(change)': '_onChange()',\n    '(blur)': '_onBlur()',\n    '(keydown)': '_onKeydown($event)',\n    '[class.oui-datepicker-disabled]': '_datepickerDisabled',\n  },\n  exportAs: 'ouiDatepickerInput',\n  standalone: false,\n})\nexport class OuiDatepickerInput<D>\n  implements ControlValueAccessor, OnDestroy, AfterViewInit, Validator\n{\n  private _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n  _dateAdapter = inject<DateAdapter<D>>(DateAdapter, { optional: true })!;\n  private _dateFormats = inject<OuiDateFormats>(OUI_DATE_FORMATS, {\n    optional: true,\n  })!;\n  private _formField = inject(OuiFormField, { optional: true })!;\n\n  private _disabled: boolean;\n  /** Emits when a `change` event is fired on this `<input>`. */\n  @Output() readonly dateChange: EventEmitter<OuiDatepickerInputEvent<D>> =\n    new EventEmitter<OuiDatepickerInputEvent<D>>();\n\n  /** Emits when an `input` event is fired on this `<input>`. */\n  @Output() readonly dateInput: EventEmitter<OuiDatepickerInputEvent<D>> =\n    new EventEmitter<OuiDatepickerInputEvent<D>>();\n\n  /** Emits when the value changes (either due to user input or programmatic change). */\n  _valueChange = new EventEmitter<D | null>();\n\n  /** Emits when the disabled state has changed */\n  _disabledChange = new EventEmitter<boolean>();\n\n  private _datepickerSubscription = Subscription.EMPTY;\n\n  private _localeSubscription = Subscription.EMPTY;\n\n  /** Whether the last value set on the input was valid. */\n  private _lastValueValid = false;\n\n  private _parentNodeClickSubscription: Subscription = Subscription.EMPTY;\n\n  _datepickerDisabled = false;\n  /** The datepicker that this input is associated with. */\n  @Input()\n  set ouiDatepicker(value: OuiDatepicker<D>) {\n    if (!value) {\n      return;\n    }\n\n    this._datepicker = value;\n    this._datepicker._registerInput(this);\n    this._datepickerSubscription.unsubscribe();\n\n    this._datepickerSubscription = this._datepicker._selectedChanged.subscribe(\n      (selected: D) => {\n        this.value = selected;\n        this._cvaOnChange(selected);\n        this._onTouched();\n        this.dateInput.emit(\n          new OuiDatepickerInputEvent(this, this._elementRef.nativeElement)\n        );\n        this.dateChange.emit(\n          new OuiDatepickerInputEvent(this, this._elementRef.nativeElement)\n        );\n      }\n    );\n  }\n  _datepicker: OuiDatepicker<D>;\n\n  /** Function that can be used to filter out dates within the datepicker. */\n  @Input()\n  set ouiDatepickerFilter(value: (date: D | null) => boolean) {\n    this._dateFilter = value;\n    this._validatorOnChange();\n  }\n  _dateFilter: (date: D | null) => boolean;\n\n  /** The value of the input. */\n  @Input()\n  get value(): D | null {\n    return this._value;\n  }\n  set value(value: D | null) {\n    value = this._dateAdapter.deserialize(value);\n    this._lastValueValid = !value || this._dateAdapter.isValid(value);\n    value = this._getValidDateOrNull(value);\n    const oldDate = this.value;\n    this._value = value;\n    this._formatValue(value);\n\n    if (!this._dateAdapter.sameDate(oldDate, value)) {\n      this._valueChange.emit(value);\n    }\n  }\n  private _value: D | null;\n\n  /** The minimum valid date. */\n  @Input()\n  get min(): D | null {\n    return this._min;\n  }\n  set min(value: D | null) {\n    this._min = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    this._validatorOnChange();\n  }\n  private _min: D | null;\n\n  /** The maximum valid date. */\n  @Input()\n  get max(): D | null {\n    return this._max;\n  }\n  set max(value: D | null) {\n    this._max = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    this._validatorOnChange();\n  }\n  private _max: D | null;\n\n  focus() {\n    this._elementRef.nativeElement.classList.add(DATEPICKER_FOCUS_CLASS);\n  }\n  blur() {\n    this._elementRef.nativeElement.classList.remove(DATEPICKER_FOCUS_CLASS);\n  }\n\n  /** Whether the datepicker-input is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n    const element = this._elementRef.nativeElement;\n\n    if (this._disabled !== newValue) {\n      this._disabled = newValue;\n      this._disabledChange.emit(newValue);\n    }\n\n    // We need to null check the `blur` method, because it's undefined during SSR.\n    if (newValue && element.blur) {\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\n      // is problematic, because it would mean that it triggers another change detection cycle,\n      // which then causes a changed after checked error if the input element was focused before.\n      element.blur();\n    }\n  }\n\n  _onTouched = () => {};\n\n  private _cvaOnChange: (value: any) => void = () => {};\n\n  private _validatorOnChange = () => {};\n\n  /** The form control validator for whether the input parses. */\n  private _parseValidator: ValidatorFn = (): ValidationErrors | null =>\n    this._lastValueValid\n      ? null\n      : { ouiDatepickerParse: { text: this._elementRef.nativeElement.value } };\n\n  /** The form control validator for the min date. */\n  private _minValidator: ValidatorFn = (\n    control: AbstractControl\n  ): ValidationErrors | null => {\n    const controlValue = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(control.value)\n    );\n    return !this.min ||\n      !controlValue ||\n      this._dateAdapter.compareDate(this.min, controlValue) <= 0\n      ? null\n      : { ouiDatepickerMin: { min: this.min, actual: controlValue } };\n  };\n\n  /** The form control validator for the max date. */\n  private _maxValidator: ValidatorFn = (\n    control: AbstractControl\n  ): ValidationErrors | null => {\n    const controlValue = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(control.value)\n    );\n    return !this.max ||\n      !controlValue ||\n      this._dateAdapter.compareDate(this.max, controlValue) >= 0\n      ? null\n      : { ouiDatepickerMax: { max: this.max, actual: controlValue } };\n  };\n\n  /** The form control validator for the date filter. */\n  private _filterValidator: ValidatorFn = (\n    control: AbstractControl\n  ): ValidationErrors | null => {\n    const controlValue = this._getValidDateOrNull(\n      this._dateAdapter.deserialize(control.value)\n    );\n    return !this._dateFilter || !controlValue || this._dateFilter(controlValue)\n      ? null\n      : { ouiDatepickerFilter: true };\n  };\n\n  /** The combined form control validator for this input. */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  private _validator: ValidatorFn | null = Validators.compose([\n    this._parseValidator,\n    this._minValidator,\n    this._maxValidator,\n    this._filterValidator,\n  ]);\n\n  constructor() {\n    const _dateAdapter = this._dateAdapter;\n\n    if (!this._dateAdapter) {\n      throw createMissingDateImplError('DateAdapter');\n    }\n    if (!this._dateFormats) {\n      throw createMissingDateImplError('OUI_DATE_FORMATS');\n    }\n\n    // Update the displayed date when the locale changes.\n    this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n      this.value = this.value;\n    });\n  }\n\n  ngOnDestroy() {\n    this._datepickerSubscription.unsubscribe();\n    this._localeSubscription.unsubscribe();\n    this._parentNodeClickSubscription.unsubscribe();\n    this._valueChange.complete();\n    this._disabledChange.complete();\n  }\n\n  ngAfterViewInit() {\n    this._elementRef.nativeElement.setAttribute('disabled', 'true');\n    this._parentNodeClickSubscription = fromEvent(\n      this._elementRef.nativeElement.parentNode,\n      'click'\n    ).subscribe(() => {\n      this._datepicker.open();\n    });\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorOnChange = fn;\n  }\n\n  validate(c: AbstractControl): ValidationErrors | null {\n    return this._validator ? this._validator(c) : null;\n  }\n\n  /**\n   * @deprecated\n   * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n   */\n  getPopupConnectionElementRef(): ElementRef {\n    return this.getConnectedOverlayOrigin();\n  }\n\n  /**\n   * Gets the element that the datepicker popup should be connected to.\n   *\n   * @return The element to connect the popup to.\n   */\n  getConnectedOverlayOrigin(): ElementRef {\n    return this._formField\n      ? this._formField.getConnectedOverlayOrigin()\n      : this._elementRef;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: D): void {\n    this.value = value;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => void): void {\n    this._cvaOnChange = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  _onKeydown(event: KeyboardEvent) {\n    const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n    if (\n      this._datepicker &&\n      isAltDownArrow &&\n      !this._elementRef.nativeElement.readOnly\n    ) {\n      this._datepicker.open();\n      event.preventDefault();\n    }\n  }\n\n  _onInput(value: string) {\n    let date = this._dateAdapter.parse(\n      value,\n      this._dateFormats.parse.dateInput\n    );\n    this._lastValueValid = !date || this._dateAdapter.isValid(date);\n    date = this._getValidDateOrNull(date);\n\n    if (!this._dateAdapter.sameDate(date, this._value)) {\n      this._value = date;\n      this._cvaOnChange(date);\n      this._valueChange.emit(date);\n      this.dateInput.emit(\n        new OuiDatepickerInputEvent(this, this._elementRef.nativeElement)\n      );\n    }\n  }\n\n  _onChange() {\n    this.dateChange.emit(\n      new OuiDatepickerInputEvent(this, this._elementRef.nativeElement)\n    );\n  }\n\n  /** Returns the palette used by the input's form field, if any. */\n  _getThemePalette(): ThemePalette {\n    return this._formField ? this._formField.color : undefined;\n  }\n\n  /** Handles blur events on the input. */\n  _onBlur() {\n    // Reformat the input only if we have a valid value.\n    if (this.value) {\n      this._formatValue(this.value);\n    }\n\n    this._onTouched();\n  }\n\n  /** Formats a value and sets it on the input element. */\n  private _formatValue(value: D | null) {\n    this._elementRef.nativeElement.value = value\n      ? this._dateAdapter.format(value, this._dateFormats.display.dateInput)\n      : '';\n  }\n\n  /**\n   * @param obj The object to check.\n   * @returns The given object if it is both a date instance and valid, otherwise null.\n   */\n  private _getValidDateOrNull(obj: any): D | null {\n    return this._dateAdapter.isDateInstance(obj) &&\n      this._dateAdapter.isValid(obj as any as D)\n      ? obj\n      : null;\n  }\n}\n","<button\n  #button\n  oui-icon-button\n  type=\"button\"\n  aria-haspopup=\"true\"\n  [attr.aria-label]=\"_intl.openCalendarLabel\"\n  [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n  [disabled]=\"disabled\"\n  (click)=\"_open($event)\"\n>\n  <svg\n    *ngIf=\"!_customIcon\"\n    class=\"oui-datepicker-toggle-default-icon\"\n    viewBox=\"0 0 24 24\"\n    width=\"24px\"\n    height=\"24px\"\n    fill=\"currentColor\"\n    focusable=\"false\"\n  >\n    <path d=\"M3 4v13h14v-13h-14zM2 3h16v15h-16v-15z\"></path>\n    <path d=\"M2 7v-1h16v1z\"></path>\n    <path\n      d=\"M5 9h2v2h-2zM9 9h2v2h-2zM13 9h2v2h-2zM5 13h2v2h-2zM9 13h2v2h-2zM13 13h2v2h-2z\"\n    ></path>\n  </svg>\n  <ng-content select=\"[ouiDatepickerToggleIcon]\"></ng-content>\n</button>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  ViewEncapsulation,\n  ViewChild,\n  inject,\n  HostAttributeToken,\n} from '@angular/core';\nimport { OuiButton } from '../button/button';\nimport { merge, Observable, of as observableOf, Subscription } from 'rxjs';\nimport { OuiDatepicker } from './datepicker';\nimport { OuiDatepickerIntl } from './datepicker-intl';\n\n/** Can be used to override the icon of a `ouiDatepickerToggle`. */\n@Directive({\n  selector: '[ouiDatepickerToggleIcon]',\n  standalone: false,\n})\nexport class OuiDatepickerToggleIcon {}\n\n@Component({\n  selector: 'oui-datepicker-toggle',\n  templateUrl: 'datepicker-toggle.html',\n  styleUrls: ['datepicker-toggle.scss'],\n  host: {\n    class: 'oui-datepicker-toggle',\n    // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n    // consumer may have provided, while still being able to receive focus.\n    '[attr.tabindex]': '-1',\n    '[class.oui-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n    '[class.oui-accent]': 'datepicker && datepicker.color === \"accent\"',\n    '[class.oui-warn]': 'datepicker && datepicker.color === \"warn\"',\n    '(focus)': '_button.focus()',\n    '[class.oui-datepicker-disabled]': 'disabled',\n  },\n  exportAs: 'ouiDatepickerToggle',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiDatepickerToggle<D>\n  implements AfterContentInit, OnChanges, OnDestroy\n{\n  _intl = inject(OuiDatepickerIntl);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  private _stateChanges = Subscription.EMPTY;\n\n  /** Datepicker instance that the button will toggle. */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('for') datepicker: OuiDatepicker<D>;\n\n  /** Tabindex for the toggle. */\n  @Input() tabIndex: number | null;\n\n  /** Whether the toggle button is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled === undefined\n      ? this.datepicker.disabled\n      : !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled: boolean;\n\n  /** Custom icon set by the consumer. */\n  @ContentChild(OuiDatepickerToggleIcon)\n  _customIcon: OuiDatepickerToggleIcon;\n\n  /** Underlying button element. */\n  @ViewChild('button') _button: OuiButton;\n\n  constructor() {\n    const defaultTabIndex = inject(new HostAttributeToken('tabindex'), {\n      optional: true,\n    })!;\n\n    const parsedTabIndex = Number(defaultTabIndex);\n    this.tabIndex =\n      parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.datepicker) {\n      this._watchStateChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.unsubscribe();\n  }\n\n  ngAfterContentInit() {\n    this._watchStateChanges();\n  }\n\n  _open(event: Event): void {\n    if (this.datepicker && !this.disabled) {\n      this.datepicker.open();\n      event.stopPropagation();\n    }\n  }\n\n  private _watchStateChanges() {\n    const datepickerDisabled = this.datepicker\n      ? this.datepicker._disabledChange\n      : observableOf();\n    const inputDisabled =\n      this.datepicker && this.datepicker._datepickerInput\n        ? this.datepicker._datepickerInput._disabledChange\n        : observableOf();\n    const datepickerToggled = this.datepicker\n      ? merge(this.datepicker.openedStream, this.datepicker.closedStream)\n      : observableOf();\n\n    this._stateChanges.unsubscribe();\n    this._stateChanges = merge(\n      this._intl.changes,\n      datepickerDisabled as Observable<void>,\n      inputDisabled as Observable<void>,\n      datepickerToggled\n    ).subscribe(() => this._changeDetectorRef.markForCheck());\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OuiAnchor, OuiButton } from './button';\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [OuiButton, OuiAnchor],\n  declarations: [OuiButton, OuiAnchor],\n})\nexport class OuiButtonModule {}\n","import { Platform } from '@angular/cdk/platform';\nimport { Injectable, inject } from '@angular/core';\nimport { DateAdapter, OUI_DATE_LOCALE } from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nconst SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n  long: [\n    'January',\n    'February',\n    'March',\n    'April',\n    'May',\n    'June',\n    'July',\n    'August',\n    'September',\n    'October',\n    'November',\n    'December',\n  ],\n  short: [\n    'Jan',\n    'Feb',\n    'Mar',\n    'Apr',\n    'May',\n    'Jun',\n    'Jul',\n    'Aug',\n    'Sep',\n    'Oct',\n    'Nov',\n    'Dec',\n  ],\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n};\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, (i) => String(i + 1));\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n  long: [\n    'Sunday',\n    'Monday',\n    'Tuesday',\n    'Wednesday',\n    'Thursday',\n    'Friday',\n    'Saturday',\n  ],\n  short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sat'],\n};\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n  /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   *\n   * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n   * getting the string representation of a Date object from it's utc representation. We're keeping\n   * it here for sometime, just for precaution, in case we decide to revert some of these changes\n   * though.\n   */\n  useUtcForDisplay = true;\n\n  constructor() {\n    const ouiDateLocale = inject(OUI_DATE_LOCALE, { optional: true })!;\n    const platform = inject(Platform);\n\n    super();\n    super.setLocale(ouiDateLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\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    return date.getDay();\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  getDateNames(): string[] {\n    return DEFAULT_DATE_NAMES;\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  getYearName(date: Date): string {\n    return String(this.getYear(date));\n  }\n\n  getFirstDayOfWeek(): number {\n    // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n    return 0;\n  }\n\n  getNumDaysInMonth(date: Date): number {\n    return this.getDate(\n      this._createDateWithOverflow(\n        this.getYear(date),\n        this.getMonth(date) + 1,\n        0\n      )\n    );\n  }\n\n  clone(date: Date): Date {\n    return this.createDate(\n      this.getYear(date),\n      this.getMonth(date),\n      this.getDate(date)\n    );\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    // Check for invalid month and date (except upper bound on date which we have to check after\n    // creating the Date).\n    if (month < 0 || month > 11) {\n      throw Error(\n        `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n      );\n    }\n\n    if (date < 1) {\n      throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n    }\n\n    const result = this._createDateWithOverflow(year, month, date);\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    if (result.getMonth() !== month) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  parse(value: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value === 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value as string)) : null;\n  }\n\n  format(date: Date, displayFormat: object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateAdapter: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n      // if we attempt to format a date whose year is less than 1 or greater than 9999.\n      if (\n        this._clampDate &&\n        (date.getFullYear() < 1 || date.getFullYear() > 9999)\n      ) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = { ...displayFormat, timeZone: 'utc' };\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return this._stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return this._stripDirectionalityCharacters(date.toDateString());\n  }\n\n  addCalendarYears(date: Date, years: number): Date {\n    return this.addCalendarMonths(date, years * 12);\n  }\n\n  addCalendarMonths(date: Date, months: number): Date {\n    let newDate = this._createDateWithOverflow(\n      this.getYear(date),\n      this.getMonth(date) + months,\n      this.getDate(date)\n    );\n\n    // It's possible to wind up in the wrong month if the original month has more days than the new\n    // month. In this case we want to go to the last day of the desired month.\n    // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n    // guarantee this.\n    if (\n      this.getMonth(newDate) !==\n      (((this.getMonth(date) + months) % 12) + 12) % 12\n    ) {\n      newDate = this._createDateWithOverflow(\n        this.getYear(newDate),\n        this.getMonth(newDate),\n        0\n      );\n    }\n\n    return newDate;\n  }\n\n  addCalendarDays(date: Date, days: number): Date {\n    return this._createDateWithOverflow(\n      this.getYear(date),\n      this.getMonth(date),\n      this.getDate(date) + days\n    );\n  }\n\n  toIso8601(date: Date): string {\n    return [\n      date.getUTCFullYear(),\n      this._2digit(date.getUTCMonth() + 1),\n      this._2digit(date.getUTCDate()),\n    ].join('-');\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        const date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: any): boolean {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date) {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  /** Creates a date but allows the month and date to overflow. */\n  private _createDateWithOverflow(year: number, month: number, date: number) {\n    const result = new Date(year, month, date);\n\n    // We need to correct for the fact that JS native Date treats years in range [0, 99] as\n    // abbreviations for 19xx.\n    if (year >= 0 && year < 100) {\n      result.setFullYear(this.getYear(result) - 1900);\n    }\n    return result;\n  }\n\n  /**\n   * Pads a number to make it two digits.\n   *\n   * @param n The number to pad.\n   * @returns The padded number.\n   */\n  private _2digit(n: number) {\n    return `00${n}`.slice(-2);\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   *\n   * @param str The string to strip direction characters from.\n   * @returns The stripped string.\n   */\n  private _stripDirectionalityCharacters(str: string) {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   *\n   * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    const d = new Date(\n      Date.UTC(\n        date.getFullYear(),\n        date.getMonth(),\n        date.getDate(),\n        date.getHours(),\n        date.getMinutes(),\n        date.getSeconds(),\n        date.getMilliseconds()\n      )\n    );\n    return dtf.format(d);\n  }\n}\n","import { OuiDateFormats } from './date-formats';\n\nexport const OUI_NATIVE_DATE_FORMATS: OuiDateFormats = {\n  parse: {\n    dateInput: null,\n  },\n  display: {\n    dateInput: { year: 'numeric', month: 'short', day: 'numeric' },\n    monthYearLabel: { year: 'numeric', month: 'short' },\n    dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n    monthYearA11yLabel: { year: 'numeric', month: 'long' },\n  },\n};\n","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { DateAdapter } from './date-adapter';\nimport { OUI_DATE_FORMATS } from './date-formats';\nimport { NativeDateAdapter } from './native-date-adapter';\nimport { OUI_NATIVE_DATE_FORMATS } from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }],\n})\nexport class NativeDateModule {}\n\n@NgModule({\n  imports: [NativeDateModule],\n  providers: [{ provide: OUI_DATE_FORMATS, useValue: OUI_NATIVE_DATE_FORMATS }],\n})\nexport class OuiNativeDateModule {}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OuiButtonModule } from '../button/button-module';\nimport { OuiDialogModule } from '../dialog/dialog-module';\nimport { OuiCalendar, OuiCalendarHeader } from './calendar';\nimport { OuiCalendarBody } from './calendar-body';\nimport {\n  OuiDatepicker,\n  OuiDatepickerContent,\n  OUI_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './datepicker';\nimport { OuiDatepickerInput } from './datepicker-input';\nimport { OuiDatepickerIntl } from './datepicker-intl';\nimport {\n  OuiDatepickerToggle,\n  OuiDatepickerToggleIcon,\n} from './datepicker-toggle';\nimport { OuiMonthView } from './month-view';\nimport { OuiMultiYearView } from './multi-year-view';\nimport { OuiYearView } from './year-view';\nimport { OuiNativeDateModule } from './native-date.module';\nimport { OuiIconModule } from '../icon/icon.module';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OuiButtonModule,\n    OuiDialogModule,\n    OverlayModule,\n    A11yModule,\n    PortalModule,\n    OuiNativeDateModule,\n    OuiIconModule,\n  ],\n  exports: [\n    OuiCalendar,\n    OuiCalendarBody,\n    OuiDatepicker,\n    OuiDatepickerContent,\n    OuiDatepickerInput,\n    OuiDatepickerToggle,\n    OuiDatepickerToggleIcon,\n    OuiMonthView,\n    OuiYearView,\n    OuiMultiYearView,\n    OuiCalendarHeader,\n  ],\n  declarations: [\n    OuiCalendar,\n    OuiCalendarBody,\n    OuiDatepicker,\n    OuiDatepickerContent,\n    OuiDatepickerInput,\n    OuiDatepickerToggle,\n    OuiDatepickerToggleIcon,\n    OuiMonthView,\n    OuiYearView,\n    OuiMultiYearView,\n    OuiCalendarHeader,\n  ],\n  providers: [\n    OuiDatepickerIntl,\n    OUI_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n  ],\n})\nexport class OuiDatepickerModule {}\n","import { Injectable, NgModule } from '@angular/core';\nimport { OuiIconRegistry } from '../icon-registery';\nimport { Observable, of as observableOf } from 'rxjs';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype PublicApi<T> = {\n  [K in keyof T]: T[K] extends (...x: any[]) => T\n    ? (...x: any[]) => PublicApi<T>\n    : T[K];\n};\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * A null icon registry that must be imported to allow disabling of custom icons\n */\n@Injectable()\nexport class FakeOuiIconRegistry implements PublicApi<OuiIconRegistry> {\n  addSvgIcon(): this {\n    return this;\n  }\n\n  addSvgIconLiteral(): this {\n    return this;\n  }\n\n  addSvgIconSet(): this {\n    return this;\n  }\n\n  getNamedSvgIcon(): Observable<SVGElement> {\n    return observableOf(this._generateEmptySvg());\n  }\n\n  private _generateEmptySvg(): SVGElement {\n    const emptySvg = document.createElementNS(\n      'http://www.w3.org/2000/svg',\n      'svg'\n    );\n    emptySvg.classList.add('fake-testing-svg');\n    // Emulate real icon characteristics from `OuiIconRegistry` so size remains consistent in tests.\n    emptySvg.setAttribute('fit', '');\n    emptySvg.setAttribute('height', '100%');\n    emptySvg.setAttribute('width', '100%');\n    emptySvg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n    emptySvg.setAttribute('focusable', 'false');\n    return emptySvg;\n  }\n}\n\n/** Use this module to install the null icon registry. */\n@NgModule({\n  providers: [{ provide: OuiIconRegistry, useClass: FakeOuiIconRegistry }],\n})\nexport class OuiIconTestingModule {}\n","<ng-template>\n  <div\n    class=\"oui-autocomplete-panel\"\n    role=\"listbox\"\n    [id]=\"id\"\n    [ngClass]=\"_classList\"\n    #panel\n  >\n    <ng-content></ng-content>\n  </div>\n</ng-template>\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  InjectionToken,\n  Input,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\n\nimport { OUI_OPTION_PARENT_COMPONENT, OuiOption } from '../core/option/option';\nimport { OuiOptgroup } from '../core/option/optgroup';\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n\n/** Event object that is emitted when an autocomplete option is selected. */\nexport class OuiAutocompleteSelectedEvent {\n  constructor(\n    /** Reference to the autocomplete panel that emitted the event. */\n    public source: OuiAutocomplete,\n    /** Option that was selected. */\n    public option: OuiOption\n  ) {}\n}\n\n/** Default `oui-autocomplete` options that can be overridden. */\nexport interface OuiAutocompleteDefaultOptions {\n  /** Whether the first option should be highlighted when an autocomplete panel is opened. */\n  autoActiveFirstOption?: boolean;\n}\n\n/** Injection token to be used to override the default options for `oui-autocomplete`. */\nexport const OUI_AUTOCOMPLETE_DEFAULT_OPTIONS =\n  new InjectionToken<OuiAutocompleteDefaultOptions>(\n    'oui-autocomplete-default-options',\n    {\n      providedIn: 'root',\n      factory: OUI_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n    }\n  );\n\n/** @docs-private */\nexport function OUI_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY(): OuiAutocompleteDefaultOptions {\n  return { autoActiveFirstOption: false };\n}\n\n@Component({\n  selector: 'oui-autocomplete',\n  templateUrl: 'autocomplete.html',\n  styleUrls: ['autocomplete.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  exportAs: 'ouiAutocomplete',\n  host: {\n    class: 'oui-autocomplete',\n  },\n  providers: [\n    { provide: OUI_OPTION_PARENT_COMPONENT, useExisting: OuiAutocomplete },\n  ],\n  standalone: false,\n})\nexport class OuiAutocomplete implements AfterContentInit {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  /** Manages active item in option list based on key events. */\n  _keyManager: ActiveDescendantKeyManager<OuiOption>;\n\n  /** Whether the autocomplete panel should be visible, depending on option length. */\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  showPanel: boolean = false;\n\n  /** Whether the autocomplete panel is open. */\n  get isOpen(): boolean {\n    return this._isOpen && this.showPanel;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  _isOpen: boolean = false;\n\n  /** @docs-private */\n  @ViewChild(TemplateRef)\n  template: TemplateRef<any>;\n\n  /** Element for the panel containing the autocomplete options. */\n  @ViewChild('panel')\n  panel: ElementRef;\n\n  /** @docs-private */\n  @ContentChildren(OuiOption, { descendants: true })\n  options: QueryList<OuiOption>;\n\n  /** @docs-private */\n  @ContentChildren(OuiOptgroup)\n  optionGroups: QueryList<OuiOptgroup>;\n\n  /** Function that maps an option's control value to its display value in the trigger. */\n  @Input()\n  displayWith: ((value: any) => string) | null = null;\n\n  /**\n   * Whether the first option should be highlighted when the autocomplete panel is opened.\n   * Can be configured globally through the `OUI_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n   */\n  @Input()\n  get autoActiveFirstOption(): boolean {\n    return this._autoActiveFirstOption;\n  }\n  set autoActiveFirstOption(value: boolean) {\n    this._autoActiveFirstOption = coerceBooleanProperty(value);\n  }\n  private _autoActiveFirstOption: boolean;\n\n  /**\n   * Specify the width of the autocomplete panel.  Can be any CSS sizing value, otherwise it will\n   * match the width of its host.\n   */\n  @Input()\n  panelWidth: string | number;\n\n  /** Event that is emitted whenever an option from the list is selected. */\n  @Output()\n  readonly optionSelected: EventEmitter<OuiAutocompleteSelectedEvent> =\n    new EventEmitter<OuiAutocompleteSelectedEvent>();\n\n  /** Event that is emitted when the autocomplete panel is opened. */\n  @Output()\n  readonly opened: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Event that is emitted when the autocomplete panel is closed. */\n  @Output()\n  readonly closed: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * Takes classes set on the host oui-autocomplete element and applies them to the panel\n   * inside the overlay container to allow for easy styling.\n   */\n  @Input('class')\n  set classList(value: string) {\n    if (value && value.length) {\n      value\n        .split(' ')\n        .forEach((className) => (this._classList[className.trim()] = true));\n      this._elementRef.nativeElement.className = '';\n    }\n  }\n  _classList: { [key: string]: boolean } = {};\n\n  /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  id: string = `oui-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n\n  constructor() {\n    const defaults = inject<OuiAutocompleteDefaultOptions>(\n      OUI_AUTOCOMPLETE_DEFAULT_OPTIONS\n    );\n\n    this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n  }\n\n  ngAfterContentInit() {\n    this._keyManager = new ActiveDescendantKeyManager<OuiOption>(\n      this.options\n    ).withWrap();\n    // Set the initial visibility state.\n    this._setVisibility();\n  }\n\n  /**\n   * Sets the panel scrollTop. This allows us to manually scroll to display options\n   * above or below the fold, as they are not actually being focused when active.\n   */\n  _setScrollTop(scrollTop: number): void {\n    if (this.panel) {\n      this.panel.nativeElement.scrollTop = scrollTop;\n    }\n  }\n\n  /** Returns the panel's scrollTop. */\n  _getScrollTop(): number {\n    return this.panel ? this.panel.nativeElement.scrollTop : 0;\n  }\n\n  /** Panel should hide itself when the option list is empty. */\n  _setVisibility() {\n    this.showPanel = !!this.options.length;\n    this._classList['oui-autocomplete-visible'] = this.showPanel;\n    this._classList['oui-autocomplete-hidden'] = !this.showPanel;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Emits the `select` event. */\n  _emitSelectEvent(option: OuiOption): void {\n    const event = new OuiAutocompleteSelectedEvent(this, option);\n    this.optionSelected.emit(event);\n  }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\n@Directive({\n  selector: '[ouiAutocompleteOrigin]',\n  exportAs: 'ouiAutocompleteOrigin',\n  standalone: false,\n})\nexport class OuiAutocompleteOrigin {\n  elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n}\n","import {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  PositionStrategy,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { filter, take, switchMap, delay, tap, map } from 'rxjs/operators';\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n  _countGroupLabelsBeforeOption,\n  _getOptionScrollPosition,\n  keycodes,\n  OuiOption,\n  OuiOptionSelectionChange,\n} from '../core';\n\nimport {\n  Subscription,\n  defer,\n  fromEvent,\n  merge,\n  of as observableOf,\n  Subject,\n  Observable,\n} from 'rxjs';\nimport { OuiAutocomplete } from './autocomplete';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OuiAutocompleteOrigin } from './autocomplete-origin';\nimport { OuiFormField } from '../form-field/form-field';\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the scrollTop of the panel. Because we are not\n * actually focusing the active item, scroll must be handled manually.\n */\n\n/** The height of each autocomplete option. */\nexport const AUTOCOMPLETE_OPTION_HEIGHT = 48;\n\n/** The total height of the autocomplete panel. */\nexport const AUTOCOMPLETE_PANEL_HEIGHT = 256;\n\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nexport const OUI_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken<\n  () => ScrollStrategy\n>('oui-autocomplete-scroll-strategy');\n\n/** @docs-private */\nexport function OUI_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(\n  overlay: Overlay\n): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const OUI_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: OUI_AUTOCOMPLETE_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: OUI_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n *\n * @docs-private\n */\nexport const OUI_AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => OuiAutocompleteTrigger),\n  multi: true,\n};\n\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n *\n * @docs-private\n */\nexport function getOuiAutocompleteMissingPanelError(): Error {\n  return Error(\n    'Attempting to open an undefined instance of `oui-autocomplete`. ' +\n      'Make sure that the id passed to the `ouiAutocomplete` is correct and that ' +\n      \"you're attempting to open it after the ngAfterContentInit hook.\"\n  );\n}\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: `input[ouiAutocomplete], textarea[ouiAutocomplete]`,\n  host: {\n    '[attr.autocomplete]': 'autocompleteAttribute',\n    '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n    '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n    '[attr.aria-activedescendant]': 'activeOption?.id',\n    '[attr.aria-expanded]':\n      'autocompleteDisabled ? null : panelOpen.toString()',\n    '[attr.aria-owns]':\n      '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n    // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n    // a little earlier. This avoids issues where IE delays the focusing of the input.\n    '(focusin)': '_handleFocus()',\n    '(blur)': '_onTouched()',\n    '(input)': '_handleInput($event)',\n    '(keydown)': '_handleKeydown($event)',\n  },\n  exportAs: 'ouiAutocompleteTrigger',\n  providers: [OUI_AUTOCOMPLETE_VALUE_ACCESSOR],\n  standalone: false,\n})\nexport class OuiAutocompleteTrigger implements ControlValueAccessor, OnDestroy {\n  private _element = inject<ElementRef<HTMLInputElement>>(ElementRef);\n  private _overlay = inject(Overlay);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _zone = inject(NgZone);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _formField = inject(OuiFormField, { optional: true, host: true })!;\n  private _document = inject<Document>(DOCUMENT, { optional: true })!;\n  private _viewportRuler = inject(ViewportRuler);\n\n  private _overlayRef: OverlayRef | null;\n  private _portal: TemplatePortal;\n  private _componentDestroyed = false;\n  private _autocompleteDisabled = false;\n  private _scrollStrategy: () => ScrollStrategy = inject(\n    OUI_AUTOCOMPLETE_SCROLL_STRATEGY\n  );\n\n  /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n  private _previousValue: string | number | null;\n\n  /** Strategy that is used to position the panel. */\n  private _positionStrategy: FlexibleConnectedPositionStrategy;\n\n  /** The subscription for closing actions (some are bound to document). */\n  private _closingActionsSubscription: Subscription;\n\n  /** Subscription to viewport size changes. */\n  private _viewportSubscription = Subscription.EMPTY;\n\n  /**\n   * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n   * closed autocomplete from being reopened if the user switches to another browser tab and then\n   * comes back.\n   */\n  private _canOpenOnNextFocus = true;\n\n  /** Stream of keyboard events that can close the panel. */\n  private readonly _closeKeyEventStream = new Subject<void>();\n\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  private _overlayAttached: boolean = false;\n\n  /** Stream of autocomplete option selections. */\n  readonly optionSelections: Observable<OuiOptionSelectionChange> = defer(\n    (): Observable<OuiOptionSelectionChange> => {\n      if (this.autocomplete && this.autocomplete.options) {\n        return merge(\n          ...this.autocomplete.options.map((option) => option.onSelectionChange)\n        );\n      }\n\n      // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n      // Return a stream that we'll replace with the real one once everything is in place.\n      return this._zone.onStable.asObservable().pipe(\n        take(1),\n        switchMap(() => this.optionSelections)\n      );\n    }\n  );\n\n  /** The autocomplete panel to be attached to this trigger. */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('ouiAutocomplete')\n  autocomplete: OuiAutocomplete;\n\n  /**\n   * Reference relative to which to position the autocomplete panel.\n   * Defaults to the autocomplete trigger element.\n   */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('ouiAutocompleteConnectedTo')\n  connectedTo: OuiAutocompleteOrigin;\n\n  /**\n   * `autocomplete` attribute to be set on the input element.\n   *\n   * @docs-private\n   */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('autocomplete')\n  autocompleteAttribute = 'off';\n\n  /**\n   * Event handler for when the window is blurred. Needs to be an\n   * arrow function in order to preserve the context.\n   */\n  private _windowBlurHandler = () => {\n    // If the user blurred the window while the autocomplete is focused, it means that it'll be\n    // refocused when they come back. In this case we want to skip the first focus event, if the\n    // pane was closed, in order to avoid reopening it unintentionally.\n    this._canOpenOnNextFocus =\n      document.activeElement !== this._element.nativeElement || this.panelOpen;\n  };\n\n  /** `View -> model callback called when value changes` */\n  _onChange: (value: any) => void = () => {};\n\n  /** `View -> model callback called when autocomplete has been touched` */\n  _onTouched = () => {};\n\n  /**\n   * Whether the autocomplete is disabled. When disabled, the element will\n   * act as a regular input and the user won't be able to open the panel.\n   */\n  @Input('ouiAutocompleteDisabled')\n  get autocompleteDisabled(): boolean {\n    return this._autocompleteDisabled;\n  }\n  set autocompleteDisabled(value: boolean) {\n    this._autocompleteDisabled = coerceBooleanProperty(value);\n  }\n\n  constructor() {\n    const _zone = this._zone;\n\n    if (typeof window !== 'undefined') {\n      _zone.runOutsideAngular(() => {\n        window.addEventListener('blur', this._windowBlurHandler);\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (typeof window !== 'undefined') {\n      window.removeEventListener('blur', this._windowBlurHandler);\n    }\n\n    this._viewportSubscription.unsubscribe();\n    this._componentDestroyed = true;\n    this._destroyPanel();\n    this._closeKeyEventStream.complete();\n  }\n\n  /** Whether or not the autocomplete panel is open. */\n  get panelOpen(): boolean {\n    return this._overlayAttached && this.autocomplete.showPanel;\n  }\n\n  /** Opens the autocomplete suggestion panel. */\n  openPanel(): void {\n    this._attachOverlay();\n  }\n\n  /** Closes the autocomplete suggestion panel. */\n  closePanel(): void {\n    if (!this._overlayAttached) {\n      return;\n    }\n\n    if (this.panelOpen) {\n      // Only emit if the panel was visible.\n      this.autocomplete.closed.emit();\n    }\n\n    this.autocomplete._isOpen = this._overlayAttached = false;\n\n    if (this._overlayRef && this._overlayRef.hasAttached()) {\n      this._overlayRef.detach();\n      this._closingActionsSubscription.unsubscribe();\n    }\n\n    // Note that in some cases this can end up being called after the component is destroyed.\n    // Add a check to ensure that we don't try to run change detection on a destroyed view.\n    if (!this._componentDestroyed) {\n      // We need to trigger change detection manually, because\n      // `fromEvent` doesn't seem to do it at the proper time.\n      // This ensures that the label is reset when the\n      // user clicks outside.\n      this._changeDetectorRef.detectChanges();\n    }\n  }\n\n  /**\n   * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n   * within the viewport.\n   */\n  updatePosition(): void {\n    if (this._overlayAttached) {\n      this._overlayRef!.updatePosition();\n    }\n  }\n\n  /**\n   * A stream of actions that should close the autocomplete panel, including\n   * when an option is selected, on blur, and when TAB is pressed.\n   */\n  get panelClosingActions(): Observable<OuiOptionSelectionChange | null> {\n    return merge(\n      this.optionSelections,\n      this.autocomplete._keyManager.tabOut.pipe(\n        filter(() => this._overlayAttached)\n      ),\n      this._closeKeyEventStream,\n      this._getOutsideClickStream(),\n      this._overlayRef\n        ? this._overlayRef\n            .detachments()\n            .pipe(filter(() => this._overlayAttached))\n        : observableOf()\n    ).pipe(\n      // Normalize the output so we return a consistent type.\n      map((event) => (event instanceof OuiOptionSelectionChange ? event : null))\n    );\n  }\n\n  /** The currently active option, coerced to OuiOption type. */\n  get activeOption(): OuiOption | null {\n    if (this.autocomplete && this.autocomplete._keyManager) {\n      return this.autocomplete._keyManager.activeItem;\n    }\n\n    return null;\n  }\n\n  /** Stream of clicks outside of the autocomplete panel. */\n  private _getOutsideClickStream(): Observable<any> {\n    if (!this._document) {\n      return observableOf(null);\n    }\n\n    return merge(\n      fromEvent<MouseEvent>(this._document, 'click'),\n      fromEvent<TouchEvent>(this._document, 'touchend')\n    ).pipe(\n      filter((event) => {\n        const clickTarget = event.target as HTMLElement;\n        const formField = this._formField\n          ? this._formField._elementRef.nativeElement\n          : null;\n\n        return (\n          this._overlayAttached &&\n          clickTarget !== this._element.nativeElement &&\n          (!formField || !formField.contains(clickTarget)) &&\n          !!this._overlayRef &&\n          !this._overlayRef.overlayElement.contains(clickTarget)\n        );\n      })\n    );\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: any): void {\n    Promise.resolve(null).then(() => this._setTriggerValue(value));\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => {}): void {\n    this._onChange = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: () => {}) {\n    this._onTouched = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean) {\n    this._element.nativeElement.disabled = isDisabled;\n  }\n\n  _handleKeydown(event: KeyboardEvent): void {\n    const key = event.key;\n\n    // Prevent the default action on all escape key presses. This is here primarily to bring IE\n    // in line with other browsers. By default, pressing escape on IE will cause it to revert\n    // the input value to the one that it had on focus, however it won't dispatch any events\n    // which means that the model value will be out of sync with the view.\n    if (key === keycodes.ESCAPE) {\n      event.preventDefault();\n    }\n\n    if (this.activeOption && key === keycodes.ENTER && this.panelOpen) {\n      this.activeOption._selectViaInteraction();\n      this._resetActiveItem();\n      event.preventDefault();\n    } else if (this.autocomplete) {\n      const prevActiveItem = this.autocomplete._keyManager.activeItem;\n      const isArrowKey =\n        key === keycodes.UP_ARROW || key === keycodes.DOWN_ARROW;\n\n      if (this.panelOpen || key === keycodes.TAB) {\n        this.autocomplete._keyManager.onKeydown(event);\n      } else if (isArrowKey && this._canOpen()) {\n        this.openPanel();\n      }\n\n      if (\n        isArrowKey ||\n        this.autocomplete._keyManager.activeItem !== prevActiveItem\n      ) {\n        this._scrollToOption();\n      }\n    }\n  }\n\n  _handleInput(event: KeyboardEvent): void {\n    const target = event.target as HTMLInputElement;\n    let value: number | string | null = target.value;\n\n    // Based on `NumberValueAccessor` from forms.\n    if (target.type === 'number') {\n      value = value === '' ? null : parseFloat(value);\n    }\n\n    // If the input has a placeholder, IE will fire the `input` event on page load,\n    // focus and blur, in addition to when the user actually changed the value. To\n    // filter out all of the extra events, we save the value on focus and between\n    // `input` events, and we check whether it changed.\n    // See: https://connect.microsoft.com/IE/feedback/details/885747/\n    if (this._previousValue !== value) {\n      this._previousValue = value;\n      this._onChange(value);\n\n      if (this._canOpen() && document.activeElement === event.target) {\n        this.openPanel();\n      }\n    }\n  }\n\n  _handleFocus(): void {\n    if (!this._canOpenOnNextFocus) {\n      this._canOpenOnNextFocus = true;\n    } else if (this._canOpen()) {\n      this._previousValue = this._element.nativeElement.value;\n      this._attachOverlay();\n    }\n  }\n\n  /**\n   * Given that we are not actually focusing active options, we must manually adjust scroll\n   * to reveal options below the fold. First, we find the offset of the option from the top\n   * of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n   * the panel height + the option height, so the active option will be just visible at the\n   * bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n   * will become the offset. If that offset is visible within the panel already, the scrollTop is\n   * not adjusted.\n   */\n  private _scrollToOption(): void {\n    const index = this.autocomplete._keyManager.activeItemIndex || 0;\n    const labelCount = _countGroupLabelsBeforeOption(\n      index,\n      this.autocomplete.options,\n      this.autocomplete.optionGroups\n    );\n\n    const newScrollPosition = _getOptionScrollPosition(\n      index + labelCount,\n      AUTOCOMPLETE_OPTION_HEIGHT,\n      this.autocomplete._getScrollTop(),\n      AUTOCOMPLETE_PANEL_HEIGHT\n    );\n\n    this.autocomplete._setScrollTop(newScrollPosition);\n  }\n\n  /**\n   * This method listens to a stream of panel closing actions and resets the\n   * stream every time the option list changes.\n   */\n  private _subscribeToClosingActions(): Subscription {\n    const firstStable = this._zone.onStable.asObservable().pipe(take(1));\n    const optionChanges = this.autocomplete.options.changes.pipe(\n      tap(() => this._positionStrategy.reapplyLastPosition()),\n      // Defer emitting to the stream until the next tick, because changing\n      // bindings in here will cause \"changed after checked\" errors.\n      delay(0)\n    );\n\n    // When the zone is stable initially, and when the option list changes...\n    return (\n      merge(firstStable, optionChanges)\n        .pipe(\n          // create a new stream of panelClosingActions, replacing any previous streams\n          // that were created, and flatten it so our stream only emits closing events...\n          switchMap(() => {\n            this._resetActiveItem();\n            this.autocomplete._setVisibility();\n\n            if (this.panelOpen) {\n              this._overlayRef!.updatePosition();\n            }\n\n            return this.panelClosingActions;\n          }),\n          // when the first closing event occurs...\n          take(1)\n        )\n        // set the value, close the panel, and complete.\n        .subscribe((event) => this._setValueAndClose(event))\n    );\n  }\n\n  /** Destroys the autocomplete suggestion panel. */\n  private _destroyPanel(): void {\n    if (this._overlayRef) {\n      this.closePanel();\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n  }\n\n  private _setTriggerValue(value: any): void {\n    const toDisplay =\n      this.autocomplete && this.autocomplete.displayWith\n        ? this.autocomplete.displayWith(value)\n        : value;\n\n    // Simply falling back to an empty string if the display value is falsy does not work properly.\n    // The display value can also be the number zero and shouldn't fall back to an empty string.\n    const inputValue = toDisplay != null ? toDisplay : '';\n\n    // If it's used within a `OuiFormField`, we should set it through the property so it can go\n    // through change detection.\n    if (this._formField) {\n      this._formField._control.value = inputValue;\n    } else {\n      this._element.nativeElement.value = inputValue;\n    }\n\n    this._previousValue = inputValue;\n  }\n\n  /**\n   * This method closes the panel, and if a value is specified, also sets the associated\n   * control to that value. It will also mark the control as dirty if this interaction\n   * stemmed from the user.\n   */\n  private _setValueAndClose(event: OuiOptionSelectionChange | null): void {\n    if (event && event.source) {\n      this._clearPreviousSelectedOption(event.source);\n      this._setTriggerValue(event.source.value);\n      this._onChange(event.source.value);\n      this._element.nativeElement.focus();\n      this.autocomplete._emitSelectEvent(event.source);\n    }\n\n    this.closePanel();\n  }\n\n  /**\n   * Clear any previous selected option and emit a selection change event for this option\n   */\n  private _clearPreviousSelectedOption(skip: OuiOption) {\n    this.autocomplete.options.forEach((option) => {\n      if (option !== skip && option.selected) {\n        option.deselect();\n      }\n    });\n  }\n\n  private _attachOverlay(): void {\n    if (!this.autocomplete) {\n      throw getOuiAutocompleteMissingPanelError();\n    }\n\n    if (!this._overlayRef) {\n      this._portal = new TemplatePortal(\n        this.autocomplete.template,\n        this._viewContainerRef\n      );\n      this._overlayRef = this._overlay.create(this._getOverlayConfig());\n\n      // Use the `keydownEvents` in order to take advantage of\n      // the overlay event targeting provided by the CDK overlay.\n      this._overlayRef.keydownEvents().subscribe((event) => {\n        // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n        // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n        if (\n          event.key === keycodes.ESCAPE ||\n          (event.key === keycodes.UP_ARROW && event.altKey)\n        ) {\n          this._resetActiveItem();\n          this._closeKeyEventStream.next();\n        }\n      });\n\n      if (this._viewportRuler) {\n        this._viewportSubscription = this._viewportRuler\n          .change()\n          .subscribe(() => {\n            if (this.panelOpen && this._overlayRef) {\n              this._overlayRef.updateSize({ width: this._getPanelWidth() });\n            }\n          });\n      }\n    } else {\n      // Update the panel width and direction, in case anything has changed.\n      this._overlayRef.updateSize({ width: this._getPanelWidth() });\n    }\n\n    if (this._overlayRef && !this._overlayRef.hasAttached()) {\n      this._overlayRef.attach(this._portal);\n      this._closingActionsSubscription = this._subscribeToClosingActions();\n    }\n\n    const wasOpen = this.panelOpen;\n\n    this.autocomplete._setVisibility();\n    this.autocomplete._isOpen = this._overlayAttached = true;\n\n    // We need to do an extra `panelOpen` check in here, because the\n    // autocomplete won't be shown if there are no options.\n    if (this.panelOpen && wasOpen !== this.panelOpen) {\n      this.autocomplete.opened.emit();\n    }\n  }\n\n  private _getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._getOverlayPosition(),\n      scrollStrategy: this._scrollStrategy(),\n      width: this._getPanelWidth(),\n    });\n  }\n\n  private _getOverlayPosition(): PositionStrategy {\n    this._positionStrategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this._getConnectedElement())\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n\n          // The overlay edge connected to the trigger should have squared corners, while\n          // the opposite end has rounded corners. We apply a CSS class to swap the\n          // border-radius based on the overlay position.\n          panelClass: 'oui-autocomplete-panel-above',\n        },\n      ]);\n\n    return this._positionStrategy;\n  }\n\n  private _getConnectedElement(): ElementRef {\n    if (this.connectedTo) {\n      return this.connectedTo.elementRef;\n    }\n\n    return this._element;\n  }\n\n  private _getPanelWidth(): number | string {\n    return this.autocomplete.panelWidth || this._getHostWidth();\n  }\n\n  /** Returns the width of the input element, so the panel width can match it. */\n  private _getHostWidth(): number {\n    return this._getConnectedElement().nativeElement.getBoundingClientRect()\n      .width;\n  }\n\n  /**\n   * Resets the active item to -1 so arrow events will activate the\n   * correct options, or to 0 if the consumer opted into it.\n   */\n  private _resetActiveItem(): void {\n    this.autocomplete._keyManager.setActiveItem(\n      this.autocomplete.autoActiveFirstOption ? 0 : -1\n    );\n  }\n\n  /** Determines whether the panel can be opened. */\n  private _canOpen(): boolean {\n    const element = this._element.nativeElement;\n    return (\n      !element.readOnly && !element.disabled && !this._autocompleteDisabled\n    );\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OuiOptionModule } from '../core/option/index';\nimport { OuiAutocomplete } from './autocomplete';\nimport {\n  OuiAutocompleteTrigger,\n  OUI_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './autocomplete-trigger';\nimport { OuiAutocompleteOrigin } from './autocomplete-origin';\n\n@NgModule({\n  imports: [OuiOptionModule, OverlayModule, CommonModule],\n  exports: [\n    OuiAutocomplete,\n    OuiOptionModule,\n    OuiAutocompleteTrigger,\n    OuiAutocompleteOrigin,\n  ],\n  declarations: [\n    OuiAutocomplete,\n    OuiAutocompleteTrigger,\n    OuiAutocompleteOrigin,\n  ],\n  providers: [OUI_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class OuiAutocompleteModule {}\n","/**\n * Error directive\n * Shows error messages\n */\nimport { Directive, Input } from '@angular/core';\n\nlet nextUniqueId = 0;\n\n/** Single error message to be shown underneath the form field. */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'oui-error',\n  host: {\n    class: 'oui-error',\n    role: 'alert',\n    '[attr.id]': 'id',\n  },\n  standalone: false,\n})\nexport class OuiError {\n  @Input() id = `oui-error-${nextUniqueId++}`;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { OuiFormField } from './form-field';\nimport { OuiError } from './error';\n\n@NgModule({\n  declarations: [OuiFormField, OuiError],\n  imports: [CommonModule, ObserversModule],\n  exports: [OuiFormField, OuiError],\n})\nexport class OuiFormFieldModule {}\n","/** @docs-private */\nexport function getOuiInputUnsupportedTypeError(type: string): Error {\n  return Error(`Input type \"${type}\" isn't supported by ouiInput.`);\n}\n","import { Injectable } from '@angular/core';\nimport { FormGroupDirective, NgForm, UntypedFormControl } from '@angular/forms';\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n  isErrorState(\n    control: UntypedFormControl | null,\n    form: FormGroupDirective | NgForm | null\n  ): boolean {\n    return !!(\n      control &&\n      control.invalid &&\n      (control.touched || (form && form.submitted))\n    );\n  }\n}\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n  isErrorState(\n    control: UntypedFormControl | null,\n    form: FormGroupDirective | NgForm | null\n  ): boolean {\n    return !!(\n      control &&\n      control.invalid &&\n      (control.dirty || (form && form.submitted))\n    );\n  }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { getSupportedInputTypes, Platform } from '@angular/cdk/platform';\nimport { AutofillMonitor } from '@angular/cdk/text-field';\nimport {\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  inject,\n} from '@angular/core';\nimport { NgControl, NgForm, FormGroupDirective } from '@angular/forms';\nimport { CanColor, mixinColor } from '../core';\nimport { OuiFormFieldControl } from '../form-field/form-field-control';\nimport { Subject } from 'rxjs';\nimport { getOuiInputUnsupportedTypeError } from './input-errors';\nimport { ErrorStateMatcher } from '../core/common-behaviors/error-options';\nimport { OUI_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\nimport {\n  CanUpdateErrorStateCtor,\n  mixinErrorState,\n} from '../core/common-behaviors/error-state';\n\n// Invalid input type. Using one of these will throw an OuiInputUnsupportedTypeError.\nconst OUI_INPUT_INVALID_TYPES = [\n  'button',\n  'checkbox',\n  'file',\n  'hidden',\n  'image',\n  'radio',\n  'range',\n  'reset',\n  'submit',\n];\n\n/** Default color palette for input */\nconst DEFAULT_COLOR = 'primary';\n\n/**\n * List of classes to add to Button instances based on host attributes to\n * style as different variants.\n */\nconst INPUT_HOST_ATTRIBUTES = ['oui-input'];\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to OuiInput.\n/** @docs-private */\n\nexport class OuiInputErrorBase {\n  constructor(\n    public _defaultErrorStateMatcher: ErrorStateMatcher,\n    public _parentForm: NgForm,\n    public _parentFormGroup: FormGroupDirective,\n    /** @docs-private */\n    public ngControl: NgControl\n  ) {}\n}\nexport const _OuiInputErrorMixinBase: CanUpdateErrorStateCtor &\n  typeof OuiInputErrorBase = mixinErrorState(OuiInputErrorBase);\n\nexport class OuiInputBase extends _OuiInputErrorMixinBase {\n  constructor(\n    public _elementRef: ElementRef,\n    public _defaultErrorStateMatcher: ErrorStateMatcher,\n    public _parentForm: NgForm,\n    public _parentFormGroup: FormGroupDirective,\n    /** @docs-private */\n    public ngControl: NgControl\n  ) {\n    super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n  }\n}\n\nexport const _OuiInputMixinBase: typeof OuiInputBase = mixinColor(OuiInputBase);\n\n/** Directive that allows a native input to work inside a `OuiFormField`. */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: `input[oui-input], textarea[oui-input]`,\n  exportAs: 'ouiInput',\n  host: {\n    class: 'oui-input-element',\n    // Native input properties that are overwritten by Angular inputs need to be synced with\n    // the native input element. Otherwise property bindings for those don't work.\n    '[attr.id]': 'id',\n    '[attr.placeholder]': 'placeholder',\n    '[disabled]': 'disabled',\n    '[required]': 'required',\n    '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n    '[attr.aria-describedby]': '_ariaDescribedby || null',\n    '[attr.aria-invalid]': 'errorState',\n    '[attr.aria-required]': 'required.toString()',\n    // Enable browser's default spellcheck behavior for all text inputs and textareas.\n    '[attr.spellcheck]': 'spellcheck.toString()',\n    '(input)': '_onInput()',\n  },\n  providers: [\n    { provide: OuiFormFieldControl, useExisting: OuiInput },\n    NgForm,\n    FormGroupDirective,\n  ],\n  standalone: false,\n})\nexport class OuiInput\n  extends _OuiInputMixinBase\n  implements OuiFormFieldControl<any>, OnChanges, OnDestroy, OnInit, CanColor\n{\n  _elementRef: ElementRef<\n    HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n  >;\n  protected _platform = inject(Platform);\n  ngControl: NgControl;\n  private _autofillMonitor = inject(AutofillMonitor);\n  _parentForm: NgForm;\n  _parentFormGroup: FormGroupDirective /** @docs-private */;\n\n  protected _uid = `oui-input-${nextUniqueId++}`;\n  protected _previousNativeValue: any;\n  private _inputValueAccessor: { value: any };\n\n  /**\n   * Implemented as part of CanColor.\n   */\n  color: any;\n\n  /**\n   * Implemented as part of CanUpdateErrorState.\n   *\n   * @docs-private\n   */\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  errorState: boolean = false;\n\n  /** The aria-describedby attribute on the input for improved a11y. */\n  _ariaDescribedby: string;\n\n  /** Whether the component is being rendered on the server. */\n  _isServer = false;\n\n  /** Whether the component is a native html select. */\n  _isNativeSelect = false;\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  focused: boolean = false;\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  readonly stateChanges: Subject<void> = new Subject<void>();\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n  controlType: string = 'oui-input';\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  autofilled = false;\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  @Input()\n  get disabled(): boolean {\n    if (this.ngControl && this.ngControl.disabled !== null) {\n      return this.ngControl.disabled;\n    }\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n\n    // Browsers may not fire the blur event if the input is disabled too quickly.\n    // Reset from here to ensure that the element doesn't become stuck.\n    if (this.focused) {\n      this.focused = false;\n      this.stateChanges.next();\n    }\n  }\n  protected _disabled = false;\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  @Input()\n  get id(): string {\n    return this._id;\n  }\n  set id(value: string) {\n    this._id = value || this._uid;\n  }\n  protected _id: string;\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  @Input()\n  placeholder: string;\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n  }\n  protected _required = false;\n\n  /** Input type of the element. */\n  @Input()\n  get type(): string {\n    return this._type;\n  }\n  set type(value: string) {\n    this._type = value || 'text';\n    this._validateType();\n\n    // When using Angular inputs, developers are no longer able to set the properties on the native\n    // input element. To ensure that bindings for `type` work, we need to sync the setter\n    // with the native property. Textarea elements don't support the type property or attribute.\n    if (!this._isTextarea() && getSupportedInputTypes().has(this._type)) {\n      (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n    }\n  }\n  protected _type = 'text';\n\n  /** An object used to control when error messages are shown. */\n  @Input() errorStateMatcher: ErrorStateMatcher;\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  @Input()\n  get value(): string {\n    return this._inputValueAccessor.value;\n  }\n  set value(value: string) {\n    if (value !== this.value) {\n      this._inputValueAccessor.value = value;\n      this.stateChanges.next();\n    }\n  }\n\n  /** Whether the element is readonly. */\n  @Input()\n  get readonly(): boolean {\n    return this._readonly;\n  }\n  set readonly(value: boolean) {\n    this._readonly = coerceBooleanProperty(value);\n  }\n  private _readonly = false;\n\n  /** Whether the browser's spellcheck is enabled for the element. */\n  @Input()\n  get spellcheck(): boolean {\n    return this._spellcheck;\n  }\n  set spellcheck(value: boolean) {\n    this._spellcheck = coerceBooleanProperty(value);\n  }\n  private _spellcheck = true;\n\n  protected _neverEmptyInputTypes = [\n    'date',\n    'datetime',\n    'datetime-local',\n    'month',\n    'time',\n    'week',\n  ].filter((t) => getSupportedInputTypes().has(t));\n\n  constructor() {\n    const _elementRef =\n      inject<\n        ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>\n      >(ElementRef);\n    const ngControl = inject(NgControl, { optional: true, self: true })!;\n    const inputValueAccessor = inject(OUI_INPUT_VALUE_ACCESSOR, {\n      optional: true,\n      self: true,\n    })!;\n    const _defaultErrorStateMatcher = inject(ErrorStateMatcher);\n    const _parentForm = inject(NgForm);\n    const _parentFormGroup = inject(FormGroupDirective);\n\n    super(\n      _elementRef,\n      _defaultErrorStateMatcher,\n      _parentForm,\n      _parentFormGroup,\n      ngControl\n    );\n    this._elementRef = _elementRef;\n    this.ngControl = ngControl;\n    this._parentForm = _parentForm;\n    this._parentFormGroup = _parentFormGroup;\n\n    const element = this._elementRef.nativeElement;\n\n    // If no input value accessor was explicitly specified, use the element as the input value\n    // accessor.\n    this._inputValueAccessor = inputValueAccessor || element;\n\n    this._previousNativeValue = this.value;\n\n    // Force setter to be called in case id was not specified.\n    this.id = this.id;\n\n    this._isNativeSelect = element.nodeName.toLowerCase() === 'select';\n\n    if (this._isNativeSelect) {\n      this.controlType = (element as HTMLSelectElement).multiple\n        ? 'oui-native-select-multiple'\n        : 'oui-native-select';\n    }\n\n    this.addClass();\n  }\n\n  ngOnInit() {\n    if (this._platform.isBrowser) {\n      this._autofillMonitor\n        .monitor(this._elementRef.nativeElement)\n        .subscribe((event) => {\n          this.autofilled = event.isAutofilled;\n          this.stateChanges.next();\n        });\n    }\n  }\n\n  ngOnChanges() {\n    this.stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this.stateChanges.complete();\n\n    if (this._platform.isBrowser) {\n      this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n    }\n  }\n\n  /** Focuses the input. */\n  focus(): void {\n    this._elementRef.nativeElement.focus();\n  }\n\n  _onInput() {\n    // This is a noop function and is used to let Angular know whenever the value changes.\n    // Angular will run a new change detection each time the `input` event has been dispatched.\n    // It's necessary that Angular recognizes the value change, because when floatingLabel\n    // is set to false and Angular forms aren't used, the placeholder won't recognize the\n    // value changes and will not disappear.\n    // Listening to the input event wouldn't be necessary when the input is using the\n    // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n  }\n\n  /** Getting native host element */\n  getHostElement() {\n    return this._elementRef.nativeElement;\n  }\n\n  /** Gets whether the button has one of the given attributes. */\n  hasHostAttributes(...attributes: string[]) {\n    return attributes.some((attribute) =>\n      this.getHostElement().hasAttribute(attribute)\n    );\n  }\n\n  updateErrorState() {}\n\n  /** Adding class dynamically based of type */\n  protected addClass() {\n    for (const attr of INPUT_HOST_ATTRIBUTES) {\n      if (this.hasHostAttributes(attr)) {\n        (this._elementRef.nativeElement as HTMLElement).classList.add(attr);\n      }\n    }\n    if (!this.color) {\n      this.color = DEFAULT_COLOR;\n    }\n  }\n\n  /** Does some manual dirty checking on the native input `value` property. */\n  protected _dirtyCheckNativeValue() {\n    const newValue = this._elementRef.nativeElement.value;\n\n    if (this._previousNativeValue !== newValue) {\n      this._previousNativeValue = newValue;\n      this.stateChanges.next();\n    }\n  }\n\n  /** Make sure the input is a supported type. */\n  protected _validateType() {\n    if (OUI_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {\n      throw getOuiInputUnsupportedTypeError(this._type);\n    }\n  }\n\n  /** Checks whether the input type is one of the types that are never empty. */\n  protected _isNeverEmpty() {\n    return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n  }\n\n  /** Checks whether the input is invalid based on the native validation. */\n  protected _isBadInput() {\n    // The `validity` property won't be present on platform-server.\n    const validity = (this._elementRef.nativeElement as HTMLInputElement)\n      .validity;\n    return validity && validity.badInput;\n  }\n\n  /** Determines if the component host is a textarea. */\n  protected _isTextarea() {\n    return this._elementRef.nativeElement.nodeName.toLowerCase() === 'textarea';\n  }\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  get empty(): boolean {\n    return (\n      !this._isNeverEmpty() &&\n      !this._elementRef.nativeElement.value &&\n      !this._isBadInput() &&\n      !this.autofilled\n    );\n  }\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  get shouldLabelFloat(): boolean {\n    if (this._isNativeSelect) {\n      // For a single-selection `<select>`, the label should float when the selected option has\n      // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n      // overlapping the label with the options.\n      const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n      const firstOption: HTMLOptionElement | undefined =\n        selectElement.options[0];\n\n      // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n      // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n      return (\n        this.focused ||\n        selectElement.multiple ||\n        !this.empty ||\n        !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n      );\n    } else {\n      return this.focused || !this.empty;\n    }\n  }\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  setDescribedByIds(ids: string[]) {\n    this._ariaDescribedby = ids.join(' ');\n  }\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  onContainerClick() {\n    // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n    // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n    // \"minutes\" field was actually clicked. See: https://github.com/angular/material2/issues/12849\n    if (!this.focused) {\n      this.focus();\n    }\n  }\n}\n","import { TextFieldModule } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ErrorStateMatcher } from '../core/common-behaviors/error-options';\nimport { OuiFormFieldModule } from '../form-field/form-field-module';\nimport { OuiInput } from './input';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n  declarations: [OuiInput],\n  imports: [\n    CommonModule,\n    TextFieldModule,\n    OuiFormFieldModule,\n    ReactiveFormsModule,\n  ],\n  exports: [\n    TextFieldModule,\n    // We re-export the `OuiFormFieldModule` since `OuiInput` will almost always\n    // be used together with `OuiFormField`.\n    OuiFormFieldModule,\n    OuiInput,\n  ],\n  providers: [ErrorStateMatcher],\n})\nexport class OuiInputModule {}\n","import {\n  Directive,\n  TemplateRef,\n  ViewContainerRef,\n  OnDestroy,\n  inject,\n} from '@angular/core';\n// Removed unused portal, sanitizer, and document imports after Angular 20 migration\nimport { Subject } from 'rxjs';\n\n/**\n * Menu content that will be rendered lazily once the menu is opened.\n */\n@Directive({\n  selector: 'ng-template[ouiMenuContent]',\n  standalone: false,\n})\nexport class OuiMenuContent implements OnDestroy {\n  private _template = inject<TemplateRef<any>>(TemplateRef);\n  private _viewContainerRef = inject(ViewContainerRef);\n\n  // Removed TemplatePortal and DomPortalOutlet for Angular 20+ migration\n  private _viewRef: any = null;\n\n  /** Emits when the menu content has been attached. */\n  _attached = new Subject<void>();\n\n  constructor() {}\n\n  /**\n   * Attaches the content with a particular context.\n   */\n  attach(context: any = {}) {\n    this.detach();\n    this._viewRef = this._viewContainerRef.createEmbeddedView(\n      this._template,\n      context\n    );\n    this._attached.next();\n  }\n\n  /**\n   * Detaches the content.\n   */\n  detach() {\n    if (this._viewRef) {\n      this._viewRef.destroy();\n      this._viewRef = null;\n    }\n  }\n\n  ngOnDestroy() {\n    this.detach();\n    this._attached.complete();\n  }\n}\n","/**\n * Throws an exception for the case when menu trigger doesn't have a valid oui-menu instance\n *\n * @docs-private\n */\nexport function throwOuiMenuMissingError() {\n  throw Error(`ouiMenuTriggerFor: must pass in an oui-menu instance.\n  \n      Example:\n        <oui-menu #menu=\"ouiMenu\"></oui-menu>\n        <button [ouiMenuTriggerFor]=\"menu\"></button>`);\n}\n\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n *\n * @docs-private\n */\nexport function throwOuiMenuInvalidPositionX() {\n  throw Error(`xPosition value must be either 'before' or after'.\n        Example: <oui-menu xPosition=\"before\" #menu=\"ouiMenu\"></oui-menu>`);\n}\n\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n *\n * @docs-private\n */\nexport function throwOuiMenuInvalidPositionY() {\n  throw Error(`yPosition value must be either 'above' or below'.\n        Example: <oui-menu yPosition=\"above\" #menu=\"ouiMenu\"></oui-menu>`);\n}\n","import { EventEmitter, TemplateRef, InjectionToken } from '@angular/core';\nimport { MenuPositionX, MenuPositionY } from './menu-positions';\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport { OuiMenuContent } from './menu-content';\n\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n *\n * @docs-private\n */\nexport const OUI_MENU_PANEL = new InjectionToken<OuiMenuPanel>(\n  'OUI_MENU_PANEL'\n);\n\n/**\n * Interface for a custom menu panel that can be used with `ouiMenuTriggerFor`.\n *\n * @docs-private\n */\nexport interface OuiMenuPanel<T = any> {\n  xPosition: MenuPositionX;\n  yPosition: MenuPositionY;\n  overlapTrigger: boolean;\n  templateRef: TemplateRef<any>;\n  close: EventEmitter<void | 'click' | 'keydown' | 'tab'>;\n  parentMenu?: OuiMenuPanel | undefined;\n  focusFirstItem: (origin?: FocusOrigin) => void;\n  resetActiveItem: () => void;\n  setPositionClasses?: (x: MenuPositionX, y: MenuPositionY) => void;\n  lazyContent?: OuiMenuContent;\n  addItem?: (item: T) => void;\n  hasBackdrop?: boolean;\n  backdropClass?: string;\n  removeItem?: (item: T) => void;\n}\n","import { FocusableOption, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  OnDestroy,\n  ViewEncapsulation,\n  Input,\n  inject,\n} from '@angular/core';\nimport { CanDisable, CanDisableCtor, mixinDisabled } from '../core';\nimport { Subject } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { OUI_MENU_PANEL, OuiMenuPanel } from './menu-panel';\n\n// Boilerplate for applying mixins to OuiMenuItem.\n\nexport class OuiMenuItemBase {}\nexport const _OuiMenuItemMixinBase: CanDisableCtor & typeof OuiMenuItemBase =\n  mixinDisabled(OuiMenuItemBase);\n\n/**\n * This directive is intended to be used inside an oui-menu tag.\n * It exists mostly to set the role attribute.\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: `[oui-menu-item]`,\n  exportAs: 'ouiMenuItem',\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled'],\n  host: {\n    '[attr.role]': 'role',\n    class: 'oui-menu-item',\n    '[class.oui-menu-item-highlighted]': '_highlighted',\n    '[class.oui-menu-item-submenu-trigger]': '_triggersSubmenu',\n    '[attr.tabindex]': '_getTabIndex()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[attr.disabled]': 'disabled || null',\n    '(click)': '_checkDisabled($event)',\n    '(mouseenter)': '_handleMouseEnter()',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  templateUrl: 'menu-item.html',\n  standalone: false,\n})\nexport class OuiMenuItem\n  extends _OuiMenuItemMixinBase\n  implements FocusableOption, CanDisable, OnDestroy\n{\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _parentMenu = inject<OuiMenuPanel<OuiMenuItem>>(OUI_MENU_PANEL, {\n    optional: true,\n  });\n\n  /** ARIA role for the menu item. */\n  @Input()\n  role: 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' = 'menuitem';\n\n  private _document: Document;\n\n  /** Stream that emits when the menu item is hovered. */\n  readonly _hovered: Subject<OuiMenuItem> = new Subject<OuiMenuItem>();\n\n  /** Whether the menu item is highlighted. */\n  _highlighted = false;\n\n  /** Whether the menu item acts as a trigger for a sub-menu. */\n  _triggersSubmenu = false;\n\n  constructor() {\n    const document = inject(DOCUMENT);\n\n    // @breaking-change 8.0.0 make `_focusMonitor` and `document` required params.\n    super();\n    const _focusMonitor = this._focusMonitor;\n    const _parentMenu = this._parentMenu;\n\n    if (_focusMonitor) {\n      // Start monitoring the element so it gets the appropriate focused classes. We want\n      // to show the focus style for menu items only when the focus was not caused by a\n      // mouse or touch interaction.\n      _focusMonitor.monitor(this._elementRef.nativeElement, false);\n    }\n\n    if (_parentMenu && _parentMenu.addItem) {\n      _parentMenu.addItem(this);\n    }\n\n    this._document = document;\n  }\n\n  /** Focuses the menu item. */\n  focus(origin: FocusOrigin = 'program'): void {\n    if (this._focusMonitor) {\n      this._focusMonitor.focusVia(this._getHostElement(), origin);\n    } else {\n      this._getHostElement().focus();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._focusMonitor) {\n      this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n    }\n\n    if (this._parentMenu && this._parentMenu.removeItem) {\n      this._parentMenu.removeItem(this);\n    }\n\n    this._hovered.complete();\n  }\n\n  /** Used to set the `tabindex`. */\n  _getTabIndex(): string {\n    return this.disabled ? '-1' : '0';\n  }\n\n  /** Returns the host DOM element. */\n  _getHostElement(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  /** Prevents the default element actions if it is disabled. */\n  _checkDisabled(event: Event): void {\n    if (this.disabled) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n  /** Emits to the hover stream. */\n  _handleMouseEnter() {\n    this._hovered.next(this);\n  }\n\n  /** Gets the label to be used when determining whether the option should be focused. */\n  getLabel(): string {\n    const element: HTMLElement = this._elementRef.nativeElement;\n    const textNodeType = this._document ? this._document.TEXT_NODE : 3;\n    let output = '';\n\n    if (element.childNodes) {\n      const length = element.childNodes.length;\n\n      // Go through all the top-level text nodes and extract their text.\n      // We skip anything that's not a text node to prevent the text from\n      // being thrown off by something like an icon.\n      for (let i = 0; i < length; i++) {\n        if (element.childNodes[i].nodeType === textNodeType) {\n          output += element.childNodes[i].textContent;\n        }\n      }\n    }\n\n    return output.trim();\n  }\n}\n","<ng-content></ng-content>\n","<ng-template>\n  <div\n    class=\"oui-menu-panel\"\n    [ngClass]=\"_classList\"\n    (keydown)=\"_handleKeydown($event)\"\n    (click)=\"closed.emit('click')\"\n    tabindex=\"-1\"\n    role=\"menu\"\n  >\n    <div class=\"oui-menu-content\"><ng-content></ng-content></div>\n  </div>\n</ng-template>\n","import { FocusKeyManager, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n  ESCAPE,\n  LEFT_ARROW,\n  DOWN_ARROW,\n  UP_ARROW,\n} from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  TemplateRef,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n  OnInit,\n  inject,\n} from '@angular/core';\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\nimport { startWith, switchMap, take } from 'rxjs/operators';\nimport { OuiMenuContent } from './menu-content';\nimport {\n  throwOuiMenuInvalidPositionX,\n  throwOuiMenuInvalidPositionY,\n} from './menu-errors';\nimport { OuiMenuItem } from './menu-item';\nimport { OUI_MENU_PANEL, OuiMenuPanel } from './menu-panel';\nimport { MenuPositionX, MenuPositionY } from './menu-positions';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/** Default `oui-menu` options that can be overridden. */\nexport interface OuiMenuDefaultOptions {\n  /** The x-axis position of the menu. */\n  xPosition: MenuPositionX;\n\n  /** The y-axis position of the menu. */\n  yPosition: MenuPositionY;\n\n  /** Whether the menu should overlap the menu trigger. */\n  overlapTrigger: boolean;\n\n  /** Class to be applied to the menu's backdrop. */\n  backdropClass: string;\n\n  /** Whether the menu has a backdrop. */\n  hasBackdrop?: boolean;\n}\n\n/** Injection token to be used to override the default options for `oui-menu`. */\nexport const OUI_MENU_DEFAULT_OPTIONS =\n  new InjectionToken<OuiMenuDefaultOptions>('oui-menu-default-options', {\n    providedIn: 'root',\n    factory: OUI_MENU_DEFAULT_OPTIONS_FACTORY,\n  });\n\n/** @docs-private */\nexport function OUI_MENU_DEFAULT_OPTIONS_FACTORY(): OuiMenuDefaultOptions {\n  return {\n    overlapTrigger: false,\n    xPosition: 'after',\n    yPosition: 'below',\n    backdropClass: 'cdk-overlay-transparent-backdrop',\n  };\n}\n\n@Component({\n  selector: 'oui-menu',\n  templateUrl: 'menu.html',\n  styleUrls: ['menu.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'ouiMenu',\n  providers: [{ provide: OUI_MENU_PANEL, useExisting: OuiMenu }],\n  standalone: false,\n})\nexport class OuiMenu\n  implements AfterContentInit, OuiMenuPanel<OuiMenuItem>, OnInit, OnDestroy\n{\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _ngZone = inject(NgZone);\n  private _defaultOptions = inject<OuiMenuDefaultOptions>(\n    OUI_MENU_DEFAULT_OPTIONS\n  );\n\n  private _keyManager: FocusKeyManager<OuiMenuItem>;\n  private _xPosition: MenuPositionX = this._defaultOptions.xPosition;\n  private _yPosition: MenuPositionY = this._defaultOptions.yPosition;\n\n  /** Menu items inside the current menu. */\n  private _items: OuiMenuItem[] = [];\n\n  /** Emits whenever the amount of menu items changes. */\n  private _itemChanges = new Subject<OuiMenuItem[]>();\n\n  /** Subscription to tab events on the menu panel */\n  private _tabSubscription = Subscription.EMPTY;\n\n  /** Config object to be passed into the menu's ngClass */\n  _classList: { [key: string]: boolean } = {};\n\n  /** Parent menu of the current menu panel. */\n  parentMenu: OuiMenuPanel | undefined;\n\n  /** Class to be added to the backdrop element. */\n  @Input()\n  backdropClass: string = this._defaultOptions.backdropClass;\n\n  /** Whether the menu has a backdrop. */\n  @Input()\n  get hasBackdrop(): boolean | undefined {\n    return this._hasBackdrop;\n  }\n  set hasBackdrop(value: boolean | undefined) {\n    this._hasBackdrop = coerceBooleanProperty(value);\n  }\n  private _hasBackdrop: boolean | undefined = this._defaultOptions.hasBackdrop;\n\n  /** Position of the menu in the X axis. */\n  @Input()\n  get xPosition(): MenuPositionX {\n    return this._xPosition;\n  }\n  set xPosition(value: MenuPositionX) {\n    if (value !== 'before' && value !== 'after') {\n      throwOuiMenuInvalidPositionX();\n    }\n    this._xPosition = value;\n    this.setPositionClasses();\n  }\n\n  /** Position of the menu in the Y axis. */\n  @Input()\n  get yPosition(): MenuPositionY {\n    return this._yPosition;\n  }\n  set yPosition(value: MenuPositionY) {\n    if (value !== 'above' && value !== 'below') {\n      throwOuiMenuInvalidPositionY();\n    }\n    this._yPosition = value;\n    this.setPositionClasses();\n  }\n\n  /** @docs-private */\n  @ViewChild(TemplateRef)\n  templateRef: TemplateRef<any>;\n\n  /**\n   * List of the items inside of a menu.\n   *\n   * @deprecated\n   * @breaking-change 8.0.0\n   */\n  @ContentChildren(OuiMenuItem)\n  items: QueryList<OuiMenuItem>;\n\n  /**\n   * Menu content that will be rendered lazily.\n   *\n   * @docs-private\n   */\n  @ContentChild(OuiMenuContent)\n  lazyContent: OuiMenuContent;\n\n  /** Whether the menu should overlap its trigger. */\n  @Input()\n  get overlapTrigger(): boolean {\n    return this._overlapTrigger;\n  }\n  set overlapTrigger(value: boolean) {\n    this._overlapTrigger = coerceBooleanProperty(value);\n  }\n  private _overlapTrigger: boolean = this._defaultOptions.overlapTrigger;\n\n  /**\n   * This method takes classes set on the host oui-menu element and applies them on the\n   * menu template that displays in the overlay container.  Otherwise, it's difficult\n   * to style the containing menu from outside the component.\n   *\n   * @param classes list of class names\n   */\n  @Input('class')\n  set panelClass(classes: string) {\n    if (classes && classes.length) {\n      this._classList = classes\n        .split(' ')\n        .reduce((obj: any, className: string) => {\n          obj[className] = true;\n          return obj;\n        }, {});\n\n      this._elementRef.nativeElement.className = '';\n    }\n  }\n\n  /** Event emitted when the menu is closed. */\n  @Output()\n  readonly closed: EventEmitter<void | 'click' | 'keydown' | 'tab'> =\n    new EventEmitter<void | 'click' | 'keydown' | 'tab'>();\n\n  /**\n   * Event emitted when the menu is closed.\n   *\n   * @deprecated Switch to `closed` instead\n   * @breaking-change 8.0.0\n   */\n  @Output()\n  close = this.closed;\n\n  constructor() {}\n\n  ngOnInit() {\n    this.setPositionClasses();\n  }\n\n  ngAfterContentInit() {\n    this._keyManager = new FocusKeyManager<OuiMenuItem>(this._items)\n      .withWrap()\n      .withTypeAhead();\n    this._tabSubscription = this._keyManager.tabOut.subscribe(() =>\n      this.closed.emit('tab')\n    );\n  }\n\n  ngOnDestroy() {\n    this._tabSubscription.unsubscribe();\n    this.closed.complete();\n  }\n\n  /** Stream that emits whenever the hovered menu item changes. */\n  _hovered(): Observable<OuiMenuItem> {\n    return this._itemChanges.pipe(\n      startWith(this._items),\n      switchMap((items) => merge(...items.map((item) => item._hovered)))\n    );\n  }\n\n  /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n  _handleKeydown(event: KeyboardEvent) {\n    const keyCode = event.keyCode;\n    switch (keyCode) {\n      case ESCAPE:\n        this.closed.emit('keydown');\n        break;\n      case LEFT_ARROW:\n        if (this.parentMenu) {\n          this.closed.emit('keydown');\n        }\n        break;\n      default:\n        if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n          this._keyManager.setFocusOrigin('keyboard');\n        }\n\n        this._keyManager.onKeydown(event);\n    }\n  }\n\n  /**\n   * Focus the first item in the menu.\n   *\n   * @param origin Action from which the focus originated. Used to set the correct styling.\n   */\n  focusFirstItem(origin: FocusOrigin = 'program'): void {\n    // When the content is rendered lazily, it takes a bit before the items are inside the DOM.\n    if (this.lazyContent) {\n      this._ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() =>\n          this._keyManager.setFocusOrigin(origin).setFirstItemActive()\n        );\n    } else {\n      this._keyManager.setFocusOrigin(origin).setFirstItemActive();\n    }\n  }\n\n  /**\n   * Resets the active item in the menu. This is used when the menu is opened, allowing\n   * the user to start from the first option when pressing the down arrow.\n   */\n  resetActiveItem() {\n    this._keyManager.setActiveItem(-1);\n  }\n\n  /**\n   * Registers a menu item with the menu.\n   *\n   * @docs-private\n   */\n  addItem(item: OuiMenuItem) {\n    // We register the items through this method, rather than picking them up through\n    // `ContentChildren`, because we need the items to be picked up by their closest\n    // `oui-menu` ancestor. If we used `@ContentChildren(OuiMenuItem, {descendants: true})`,\n    // all descendant items will bleed into the top-level menu in the case where the consumer\n    // has `oui-menu` instances nested inside each other.\n    if (this._items.indexOf(item) === -1) {\n      this._items.push(item);\n      this._itemChanges.next(this._items);\n    }\n  }\n\n  /**\n   * Removes an item from the menu.\n   *\n   * @docs-private\n   */\n  removeItem(item: OuiMenuItem) {\n    const index = this._items.indexOf(item);\n\n    if (this._items.indexOf(item) > -1) {\n      this._items.splice(index, 1);\n      this._itemChanges.next(this._items);\n    }\n  }\n\n  /**\n   * Adds classes to the menu panel based on its position. Can be used by\n   * consumers to add specific styling based on the position.\n   *\n   * @param posX Position of the menu along the x axis.\n   * @param posY Position of the menu along the y axis.\n   * @docs-private\n   */\n  setPositionClasses(\n    posX: MenuPositionX = this.xPosition,\n    posY: MenuPositionY = this.yPosition\n  ) {\n    const classes = this._classList;\n    classes['oui-menu-before'] = posX === 'before';\n    classes['oui-menu-after'] = posX === 'after';\n    classes['oui-menu-above'] = posY === 'above';\n    classes['oui-menu-below'] = posY === 'below';\n  }\n}\n","import {\n  FocusMonitor,\n  FocusOrigin,\n  isFakeMousedownFromScreenReader,\n} from '@angular/cdk/a11y';\nimport { RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport {\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  VerticalConnectionPos,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  AfterContentInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Output,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport {\n  asapScheduler,\n  merge,\n  Observable,\n  of as observableOf,\n  Subscription,\n} from 'rxjs';\nimport { delay, filter } from 'rxjs/operators';\nimport { OuiMenu } from './menu-directive';\nimport { throwOuiMenuMissingError } from './menu-errors';\nimport { OuiMenuItem } from './menu-item';\nimport { OuiMenuPanel } from './menu-panel';\nimport { MenuPositionX, MenuPositionY } from './menu-positions';\n\n/** Injection token that determines the scroll handling while the menu is open. */\nexport const OUI_MENU_SCROLL_STRATEGY = new InjectionToken<\n  () => ScrollStrategy\n>('oui-menu-scroll-strategy');\n\n/** @docs-private */\nexport function OUI_MENU_SCROLL_STRATEGY_FACTORY(\n  overlay: Overlay\n): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.close();\n}\n\n/** @docs-private */\nexport const OUI_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: OUI_MENU_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: OUI_MENU_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Default top padding of the menu panel. */\nexport const MENU_PANEL_TOP_PADDING = 11;\n\n/** Default left padding of the menu panel */\nexport const MENU_PANEL_LEFT_PADDING = 2;\n\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({\n  passive: true,\n});\n\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\n\n/**\n * This directive is intended to be used in conjunction with an oui-menu tag.  It is\n * responsible for toggling the display of the provided menu instance.\n */\n@Directive({\n  selector: `[oui-menu-trigger-for], [ouiMenuTriggerFor]`,\n  host: {\n    'aria-haspopup': 'true',\n    '[attr.aria-expanded]': 'menuOpen || null',\n    '(mousedown)': '_handleMousedown($event)',\n    '(keydown)': '_handleKeydown($event)',\n    '(click)': '_handleClick($event)',\n  },\n  exportAs: 'ouiMenuTrigger',\n  standalone: false,\n})\nexport class OuiMenuTrigger implements AfterContentInit, OnDestroy {\n  private _overlay = inject(Overlay);\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _parentMenu = inject(OuiMenu, { optional: true })!;\n  private _menuItemInstance = inject(OuiMenuItem, {\n    optional: true,\n    self: true,\n  })!;\n  private _focusMonitor = inject(FocusMonitor);\n\n  private _portal: TemplatePortal;\n  private _overlayRef: OverlayRef | null = null;\n  private _menuOpen = false;\n  private _closeSubscription = Subscription.EMPTY;\n  private _hoverSubscription = Subscription.EMPTY;\n  private _menuCloseSubscription = Subscription.EMPTY;\n  private _scrollStrategy: () => ScrollStrategy;\n  private _openViaFocus = false;\n\n  // Tracking input type is necessary so it's possible to only auto-focus\n  // the first item of the list when the menu is opened via the keyboard\n  _openedBy: 'mouse' | 'touch' | null = null;\n\n  /** References the menu instance that the trigger is associated with. */\n  @Input('ouiMenuTriggerFor')\n  get menu() {\n    return this._menu;\n  }\n  set menu(menu: OuiMenuPanel) {\n    if (menu === this._menu) {\n      return;\n    }\n    this._menu = menu;\n    this._menuCloseSubscription.unsubscribe();\n\n    if (menu) {\n      this._menuCloseSubscription = menu.close\n        .asObservable()\n        .subscribe((event) => {\n          this._destroyMenu(event);\n          // If a click closed the menu, we should close the entire chain of nested menus.\n          if ((event === 'click' || event === 'tab') && this._parentMenu) {\n            this._parentMenu.closed.emit(event);\n          }\n        });\n    }\n  }\n  private _menu: OuiMenuPanel;\n\n  /** Data to be passed along to any lazily-rendered content. */\n\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('ouiMenuTriggerData')\n  menuData: any;\n\n  /** Event emitted when the associated menu is opened. */\n  @Output()\n  readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Event emitted when the associated menu is closed. */\n  @Output()\n  readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * Handles touch start events on the trigger.\n   * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n   */\n  private _handleTouchStart = () => (this._openedBy = 'touch');\n\n  constructor() {\n    const _element = this._element;\n    const scrollStrategy = inject(OUI_MENU_SCROLL_STRATEGY);\n    const _menuItemInstance = this._menuItemInstance;\n\n    _element.nativeElement.addEventListener(\n      'touchstart',\n      this._handleTouchStart,\n      passiveEventListenerOptions\n    );\n\n    if (_menuItemInstance) {\n      _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n    }\n\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  ngAfterContentInit() {\n    this._checkMenu();\n    this._handleHover();\n  }\n\n  ngOnDestroy() {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n\n    this._element.nativeElement.removeEventListener(\n      'touchstart',\n      this._handleTouchStart,\n      passiveEventListenerOptions\n    );\n\n    this._cleanUpSubscriptions();\n  }\n\n  /** Whether the menu is open. */\n  get menuOpen(): boolean {\n    return this._menuOpen;\n  }\n\n  /** Whether the menu triggers a sub-menu or a top-level one. */\n  triggersSubmenu(): boolean {\n    return !!(this._menuItemInstance && this._parentMenu);\n  }\n\n  /** Toggles the menu between the open and closed states. */\n  toggleMenu(): void {\n    return this._menuOpen ? this.closeMenu() : this.openMenu();\n  }\n\n  /** Opens the menu. */\n  openMenu(): void {\n    if (this._menuOpen) {\n      return;\n    }\n\n    this._checkMenu();\n\n    const overlayRef = this._createOverlay();\n    const overlayConfig = overlayRef.getConfig();\n\n    this._setPosition(\n      overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy\n    );\n    overlayConfig.hasBackdrop =\n      this.menu.hasBackdrop == null\n        ? !this.triggersSubmenu()\n        : this.menu.hasBackdrop;\n    overlayRef.attach(this._getPortal());\n\n    if (this.menu.lazyContent) {\n      this.menu.lazyContent.attach(this.menuData);\n    }\n\n    this._closeSubscription = this._menuClosingActions().subscribe(() => {\n      this.closeMenu();\n    });\n    this._initMenu();\n  }\n\n  /** Closes the menu. */\n  closeMenu(event?: 'click' | 'keydown' | 'tab'): void {\n    this.menu.close.emit(event);\n  }\n\n  /**\n   * Focuses the menu trigger.\n   *\n   * @param origin Source of the menu trigger's focus.\n   */\n  focus(origin: FocusOrigin = 'program') {\n    if (this._focusMonitor) {\n      this._focusMonitor.focusVia(this._element.nativeElement, origin);\n    } else {\n      this._element.nativeElement.focus();\n    }\n  }\n\n  /** Closes the menu and does the necessary cleanup. */\n  private _destroyMenu(event) {\n    // (TODO)\n    if (!this._overlayRef || !this.menuOpen) {\n      return;\n    }\n\n    const menu = this.menu;\n\n    this._closeSubscription.unsubscribe();\n    this._overlayRef.detach();\n    this._resetMenu(event);\n\n    if (!(menu instanceof OuiMenu) && menu.lazyContent) {\n      menu.lazyContent.detach();\n    }\n  }\n\n  /**\n   * This method sets the menu state to open and focuses the first item if\n   * the menu was opened via the keyboard.\n   */\n  private _initMenu(): void {\n    this.menu.parentMenu = this.triggersSubmenu()\n      ? this._parentMenu\n      : undefined;\n    this._setIsMenuOpen(true);\n    this.menu.focusFirstItem(this._openedBy || 'program');\n  }\n\n  /**\n   * This method resets the menu when it's closed, most importantly restoring\n   * focus to the menu trigger if the menu was opened via the keyboard.\n   */\n  private _resetMenu(event): void {\n    this._setIsMenuOpen(false);\n\n    // We should reset focus if the user is navigating using a keyboard or\n    // if we have a top-level trigger which might cause focus to be lost\n    // when clicking on the backdrop.\n    // Focus back to menu only when clicking outside of menu on window or ESC key pressed.\n    if ((!event && !this.triggersSubmenu()) || event === 'keydown') {\n      if (!this._openedBy) {\n        // Note that the focus style will show up both for `program` and\n        // `keyboard` so we don't have to specify which one it is.\n        this.focus();\n      } else if (!this.triggersSubmenu()) {\n        this.focus(this._openedBy);\n      }\n    }\n    this._openedBy = null;\n  }\n\n  // set state rather than toggle to support triggers sharing a menu\n  private _setIsMenuOpen(isOpen: boolean): void {\n    this._menuOpen = isOpen;\n    if (this._menuOpen) {\n      this.menuOpened.emit();\n    } else {\n      this.menuClosed.emit();\n    }\n\n    if (this.triggersSubmenu()) {\n      this._menuItemInstance._highlighted = isOpen;\n    }\n  }\n\n  /**\n   * This method checks that a valid instance of OuiMenu has been passed into\n   * ouiMenuTriggerFor. If not, an exception is thrown.\n   */\n  private _checkMenu() {\n    if (!this.menu) {\n      throwOuiMenuMissingError();\n    }\n  }\n\n  /**\n   * This method creates the overlay from the provided menu's template and saves its\n   * OverlayRef so that it can be attached to the DOM when openMenu is called.\n   */\n  private _createOverlay(): OverlayRef {\n    if (!this._overlayRef) {\n      const config = this._getOverlayConfig();\n      this._subscribeToPositions(\n        config.positionStrategy as FlexibleConnectedPositionStrategy\n      );\n      this._overlayRef = this._overlay.create(config);\n\n      // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n      // Ideally we'd also have our keyboard event logic in here, however doing so will\n      // break anybody that may have implemented the `OuiMenuPanel` themselves.\n      this._overlayRef.keydownEvents().subscribe();\n    }\n\n    return this._overlayRef;\n  }\n\n  /**\n   * This method builds the configuration object needed to create the overlay, the OverlayState.\n   *\n   * @returns OverlayConfig\n   */\n  private _getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._overlay\n        .position()\n        .flexibleConnectedTo(this._element)\n        .withLockedPosition()\n        .withTransformOriginOn('.oui-menu-panel'),\n      backdropClass:\n        this.menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n      scrollStrategy: this._scrollStrategy(),\n      direction: 'ltr',\n    });\n  }\n\n  /**\n   * Listens to changes in the position of the overlay and sets the correct classes\n   * on the menu based on the new position. This ensures the animation origin is always\n   * correct, even if a fallback position is used for the overlay.\n   */\n  private _subscribeToPositions(\n    position: FlexibleConnectedPositionStrategy\n  ): void {\n    if (this.menu.setPositionClasses) {\n      position.positionChanges.subscribe((change) => {\n        const posX: MenuPositionX =\n          change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n        const posY: MenuPositionY =\n          change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n\n        this.menu.setPositionClasses!(posX, posY);\n      });\n    }\n  }\n\n  /**\n   * Sets the appropriate positions on a position strategy\n   * so the overlay connects with the trigger correctly.\n   *\n   * @param positionStrategy Strategy whose position to update.\n   */\n  private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) {\n    let [originX, originFallbackX]: HorizontalConnectionPos[] =\n      this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n    const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n      this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n    let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n    let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n    let offsetY = 0;\n    let offsetX = 0;\n\n    if (this.triggersSubmenu()) {\n      // When the menu is a sub-menu, it should always align itself\n      // to the edges of the trigger, instead of overlapping it.\n      overlayFallbackX = originX =\n        this.menu.xPosition === 'before' ? 'start' : 'end';\n      originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n      offsetY =\n        overlayY === 'bottom'\n          ? MENU_PANEL_TOP_PADDING\n          : -MENU_PANEL_TOP_PADDING;\n\n      offsetX =\n        overlayX === 'start'\n          ? MENU_PANEL_LEFT_PADDING\n          : -MENU_PANEL_LEFT_PADDING;\n    } else if (!this.menu.overlapTrigger) {\n      originY = overlayY === 'top' ? 'bottom' : 'top';\n      originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n    }\n\n    positionStrategy.withPositions([\n      { originX, originY, overlayX, overlayY, offsetY, offsetX },\n      {\n        originX: originFallbackX,\n        originY,\n        overlayX: overlayFallbackX,\n        overlayY,\n        offsetY,\n        offsetX,\n      },\n      {\n        originX,\n        originY: originFallbackY,\n        overlayX,\n        overlayY: overlayFallbackY,\n        offsetY: -offsetY,\n        offsetX,\n      },\n      {\n        originX: originFallbackX,\n        originY: originFallbackY,\n        overlayX: overlayFallbackX,\n        overlayY: overlayFallbackY,\n        offsetY: -offsetY,\n        offsetX: -offsetX,\n      },\n    ]);\n  }\n\n  /** Cleans up the active subscriptions. */\n  private _cleanUpSubscriptions(): void {\n    this._closeSubscription.unsubscribe();\n    this._hoverSubscription.unsubscribe();\n  }\n\n  /** Returns a stream that emits whenever an action that should close the menu occurs. */\n  private _menuClosingActions() {\n    const backdrop = this._overlayRef!.backdropClick();\n    const detachments = this._overlayRef!.detachments();\n    const parentClose = this._parentMenu\n      ? this._parentMenu.closed\n      : observableOf();\n    const hover = this._parentMenu\n      ? this._parentMenu._hovered().pipe(\n          filter((active) => active !== this._menuItemInstance),\n          filter(() => this._menuOpen)\n        )\n      : observableOf();\n\n    return merge(backdrop, parentClose as Observable<void>, hover, detachments);\n  }\n\n  /** Handles mouse presses on the trigger. */\n  _handleMousedown(event: MouseEvent): void {\n    // In test environments, the CDK's dispatchMouseEvent creates events that may be\n    // incorrectly identified as fake screen reader events. For testing purposes,\n    // we check if this is a test environment and bypass the screen reader check.\n    const isTestEnvironment =\n      typeof window !== 'undefined' && (window as any).jasmine !== undefined;\n\n    if (isTestEnvironment || !isFakeMousedownFromScreenReader(event)) {\n      // Since right or middle button clicks won't trigger the `click` event,\n      // we shouldn't consider the menu as opened by mouse in those cases.\n      this._openedBy = event.button === 0 ? 'mouse' : null;\n\n      // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n      // we should prevent focus from moving onto it via click to avoid the\n      // highlight from lingering on the menu item.\n      if (this.triggersSubmenu()) {\n        event.preventDefault();\n      }\n    }\n  }\n\n  /** Handles key presses on the trigger. */\n  _handleKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n    if (this.triggersSubmenu() && keyCode === RIGHT_ARROW) {\n      this.openMenu();\n    } else if (keyCode === SPACE) {\n      this.openMenu();\n    }\n  }\n\n  /** Handles click events on the trigger. */\n  _handleClick(event: MouseEvent): void {\n    if (this.triggersSubmenu()) {\n      // Stop event propagation to avoid closing the parent menu.\n      event.stopPropagation();\n      this.openMenu();\n    } else {\n      this.toggleMenu();\n    }\n  }\n\n  _handleFocus(): void {\n    if (!this._openViaFocus) {\n      this.toggleMenu();\n    }\n    this._openViaFocus = !this._openViaFocus;\n  }\n\n  /** Handles the cases where the user hovers over the trigger. */\n  private _handleHover() {\n    // Subscribe to changes in the hovered item in order to toggle the panel.\n    if (!this.triggersSubmenu()) {\n      return;\n    }\n\n    this._hoverSubscription = this._parentMenu\n      ._hovered()\n      // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n      // with different data and triggers), we have to delay it by a tick to ensure that\n      // it won't be closed immediately after it is opened.\n      .pipe(\n        filter(\n          (active) => active === this._menuItemInstance && !active.disabled\n        ),\n        delay(0, asapScheduler)\n      )\n      .subscribe(() => {\n        this._openedBy = 'mouse';\n\n        // If the same menu is used between multiple triggers, it might still be animating\n        // while the new trigger tries to re-open it. Wait for the animation to finish\n        // before doing so. Also interrupt if the user moves to another item.\n        // (TODO)\n        this.openMenu();\n      });\n  }\n\n  /** Gets the portal that should be attached to the overlay. */\n  private _getPortal(): TemplatePortal {\n    // Note that we can avoid this check by keeping the portal on the menu panel.\n    // While it would be cleaner, we'd have to introduce another required method on\n    // `OuiMenuPanel`, making it harder to consume.\n    if (!this._portal || this._portal.templateRef !== this.menu.templateRef) {\n      this._portal = new TemplatePortal(\n        this.menu.templateRef,\n        this._viewContainerRef\n      );\n    }\n\n    return this._portal;\n  }\n}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  ElementRef,\n  AfterContentInit,\n  Input,\n  OnChanges,\n  inject,\n} from '@angular/core';\nimport { OuiIconRegistry } from '../icon/icon-registery';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ICONS } from '../core/shared/icons';\n\n@Component({\n  selector: 'oui-menu-icon',\n  template: `\n    <div class=\"oui-menu-icon-container\">\n      <oui-icon svgIcon=\"menu-icon\" class=\"oui-menu-icon\"></oui-icon>\n    </div>\n  `,\n  styleUrls: ['menu.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'ouiMenuIcon',\n  host: {\n    '(menuOpened)': 'menuOpened()',\n    '(menuClosed)': 'menuClosed()',\n  },\n  standalone: false,\n})\nexport class OuiMenuIcon implements AfterContentInit, OnChanges {\n  private _elementRef = inject(ElementRef);\n  private ouiIconRegistry = inject(OuiIconRegistry);\n  private domSanitizer = inject(DomSanitizer);\n\n  private _iconDiv: HTMLDivElement;\n  @Input() vertical = false;\n\n  constructor() {\n    this.ouiIconRegistry.addSvgIconLiteral(\n      `menu-icon`,\n      this.domSanitizer.bypassSecurityTrustHtml(ICONS.THREE_DOT_MENU_ICON)\n    );\n  }\n\n  ngAfterContentInit() {\n    this._iconDiv =\n      this._elementRef.nativeElement.querySelector('.oui-menu-icon');\n    this._transformIcon();\n  }\n\n  ngOnChanges() {\n    this._transformIcon();\n  }\n\n  private _transformIcon() {\n    if (!this._iconDiv) {\n      return;\n    }\n    // Added tabindex to make menu icon keyboard accessible.\n    this._iconDiv.parentElement.parentElement.setAttribute('tabindex', '0');\n    if (this.vertical) {\n      this._iconDiv.parentElement.classList.add('oui-menu-icon-vertical');\n    } else {\n      this._iconDiv.parentElement.classList.remove('oui-menu-icon-vertical');\n    }\n  }\n\n  menuOpened() {\n    this._iconDiv.classList.add('oui-menu-icon-hover');\n  }\n\n  menuClosed() {\n    this._iconDiv.classList.remove('oui-menu-icon-hover');\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OuiMenuContent } from './menu-content';\nimport { OuiMenu } from './menu-directive';\nimport { OuiMenuItem } from './menu-item';\nimport {\n  OuiMenuTrigger,\n  OUI_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './menu-trigger';\nimport { OuiMenuIcon } from './menu-icon';\nimport { OuiIconModule } from '../icon/icon.module';\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, OuiIconModule],\n  exports: [OuiMenu, OuiMenuItem, OuiMenuTrigger, OuiMenuContent, OuiMenuIcon],\n  declarations: [\n    OuiMenu,\n    OuiMenuItem,\n    OuiMenuTrigger,\n    OuiMenuContent,\n    OuiMenuIcon,\n  ],\n  providers: [OUI_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class OuiMenuModule {}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  Input,\n  EventEmitter,\n  Output,\n  NgZone,\n  ChangeDetectorRef,\n  forwardRef,\n  ElementRef,\n  ViewChild,\n  OnDestroy,\n  inject,\n  HostAttributeToken,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { HasTabIndex } from '../core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { mixinColor } from '../core';\nimport { Subscription } from 'rxjs';\n// Increasing integer for generating unique ids for checkbox components.\nlet nextUniqueId = 0;\n\n/** Change event object emitted by MatCheckbox. */\nexport class OuiCheckboxChange {\n  /** The source MatCheckbox of the event. */\n  source: Checkbox;\n  /** The new `checked` value of the checkbox. */\n  checked: boolean;\n}\n\nexport class OuiCheckboxBase {\n  constructor(public _elementRef: ElementRef) {}\n}\n\nexport const OuiCheckboxMixinBase: typeof OuiCheckboxBase =\n  mixinColor(OuiCheckboxBase);\n\n/**\n * Represents the different states that require custom transitions between them.\n *\n * @docs-private\n */\nexport enum TransitionCheckState {\n  Init,\n  /** The state representing the component when it's becoming checked. */\n  Checked,\n  /** The state representing the component when it's becoming unchecked. */\n  Unchecked,\n}\n\n/**\n * Supports all of the functionality of an HTML5 checkbox,\n * and exposes a similar API. A MatCheckbox can be either checked, unchecked, or\n * disabled. Note that all additional accessibility attributes are taken care of by the component,\n * so there is no need to provide them yourself. However, if you want to omit a label and still\n * have the checkbox be accessible, you may supply an [aria-label] input.\n * See: https://github.com/scheduleonce/once-ui/tree/master/ui/src/components/checkbox/README.md\n */\n@Component({\n  selector: 'oui-checkbox',\n  templateUrl: './checkbox.html',\n  styleUrls: ['./checkbox.scss'],\n  exportAs: 'ouiCheckbox',\n  host: {\n    class: 'oui-checkbox',\n    '[id]': 'id',\n    '[attr.tabindex]': 'null',\n    '[class.oui-checkbox-checked]': 'checked',\n    '[class.oui-checkbox-disabled]': 'disabled',\n    '[class.oui-checkbox-label-before]': 'labelPosition == \"before\"',\n  },\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['tabIndex', 'color'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => Checkbox),\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class Checkbox\n  extends OuiCheckboxMixinBase\n  implements ControlValueAccessor, HasTabIndex, OnDestroy\n{\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  _elementRef: ElementRef<HTMLElement>;\n  private _ngZone = inject(NgZone);\n  private _focusMonitor = inject(FocusMonitor);\n\n  /**\n   * Attached to the aria-label attribute of the host element. In most cases, arial-labelledby will\n   * take precedence so this may be omitted.\n   */\n  /**\n   * Implemented as part of CanColor.\n   */\n  color = 'primary';\n\n  @Input('aria-label')\n  ariaLabel: any = '';\n\n  /**\n   * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n   */\n  @Input('aria-labelledby')\n  ariaLabelledby: any = null;\n\n  private _uniqueId: any = `oui-checkbox-${++nextUniqueId}`;\n\n  /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  @Input()\n  id: string = this._uniqueId;\n\n  /** Returns the unique id for the visual hidden input. */\n  get inputId(): string {\n    return `${this.id || this._uniqueId}-input`;\n  }\n\n  /** Whether the checkbox is required. */\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n  }\n\n  private _required: boolean;\n\n  /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n  @Input()\n  labelPosition: 'before' | 'after' = 'after';\n\n  /** Name value will be applied to the input element if present */\n  @Input()\n  name: string | null = null;\n\n  /** Event emitted when the checkbox's `checked` value changes. */\n  @Output()\n  readonly change: EventEmitter<OuiCheckboxChange> =\n    new EventEmitter<OuiCheckboxChange>();\n\n  /** The native `<input type=\"checkbox\">` element */\n  @ViewChild('input') _inputElement: ElementRef<HTMLInputElement>;\n\n  /** The value attribute of the native input element */\n  @Input()\n  value: string;\n\n  /**\n   * Whether the checkbox is checked.\n   */\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n\n  set checked(value: boolean) {\n    if (value !== this.checked) {\n      this._checked = value;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  private _checked: any = false;\n\n  /**\n   * Whether the checkbox is disabled. This fully overrides the implementation provided by\n   * mixinDisabled, but the mixin is still required because mixinTabIndex requires it.\n   */\n  @Input()\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(value: any) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this.disabled) {\n      this._disabled = newValue;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  private _disabled = false;\n  private _currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n  private _currentAnimationClass = '';\n\n  /**\n   * Implemented as part of HasTabIndex.\n   */\n  tabIndex: any;\n\n  constructor() {\n    const _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n    const tabIndex = inject(new HostAttributeToken('tabindex'), {\n      optional: true,\n    })!;\n\n    super(_elementRef);\n    this._elementRef = _elementRef;\n\n    this.tabIndex = parseInt(tabIndex, 10) || 0;\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this._elementRef, true)\n      .subscribe(() =>\n        this._ngZone.run(() => {\n          this._changeDetectorRef.markForCheck();\n        })\n      );\n  }\n\n  _getAriaChecked(): 'true' | 'false' {\n    return this.checked ? 'true' : 'false';\n  }\n\n  /** Focuses the checkbox. */\n  focus(): void {\n    this._focusMonitor.focusVia(this._inputElement, 'keyboard');\n  }\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n    this._monitorSubscription.unsubscribe();\n  }\n  /**\n   * Event handler for checkbox input element.\n   * Toggles checked state if element is not disabled.\n   * Do not toggle on (change) event since IE doesn't fire change event when\n   *   indeterminate checkbox is clicked.\n   *\n   * @param event\n   */\n  _onInputClick(event: Event) {\n    // We have to stop propagation for click events on the visual hidden input element.\n    // By default, when a user clicks on a label element, a generated click event will be\n    // dispatched on the associated input element. Since we are using a label element as our\n    // root container, the click event on the `checkbox` will be executed twice.\n    // The real click event will bubble up, and the generated click event also tries to bubble up.\n    // This will lead to multiple click events.\n    // Preventing bubbling for the second event will solve that issue.\n    event.stopPropagation();\n\n    // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n    if (!this.disabled) {\n      this.toggle();\n      this._transitionCheckState(\n        this._checked\n          ? TransitionCheckState.Checked\n          : TransitionCheckState.Unchecked\n      );\n\n      // Emit our custom change event if the native input emitted one.\n      // It is important to only emit it, if the native input triggered one, because\n      // we don't want to trigger a change event, when the `checked` variable changes for example.\n      this._emitChangeEvent();\n    }\n  }\n\n  private _transitionCheckState(newState: TransitionCheckState) {\n    const oldState = this._currentCheckState;\n    const element: HTMLElement = this._elementRef.nativeElement;\n\n    if (oldState === newState) {\n      return;\n    }\n    if (this._currentAnimationClass.length > 0) {\n      element.classList.remove(this._currentAnimationClass);\n    }\n\n    this._currentAnimationClass =\n      this._getAnimationClassForCheckStateTransition(oldState, newState);\n    this._currentCheckState = newState;\n\n    if (this._currentAnimationClass.length > 0) {\n      element.classList.add(this._currentAnimationClass);\n\n      // Remove the animation class to avoid animation when the checkbox is moved between containers\n      const animationClass = this._currentAnimationClass;\n\n      this._ngZone.runOutsideAngular(() => {\n        setTimeout(() => {\n          element.classList.remove(animationClass);\n        }, 1000);\n      });\n    }\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  private _emitChangeEvent() {\n    const event = new OuiCheckboxChange();\n    event.source = this;\n    event.checked = this.checked;\n    this._controlValueAccessorChangeFn(this.checked);\n    this.change.emit(event);\n  }\n\n  /** Toggles the `checked` state of the checkbox. */\n  toggle(): void {\n    this.checked = !this.checked;\n  }\n\n  _onInteractionEvent(event: Event) {\n    // We always have to stop propagation on the change event.\n    // Otherwise the change event, from the input element, will bubble up and\n    // emit its event object to the `change` output.\n    event.stopPropagation();\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: any) {\n    this.checked = !!value;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => void) {\n    this._controlValueAccessorChangeFn = fn;\n  }\n\n  /**\n   * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n   *\n   * @docs-private\n   */\n  _onTouched: () => any = () => {};\n\n  private _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: any) {\n    this._onTouched = fn;\n  }\n\n  private _getAnimationClassForCheckStateTransition(\n    oldState: TransitionCheckState,\n    newState: TransitionCheckState\n  ): string {\n    let animSuffix: any = '';\n\n    switch (oldState) {\n      case TransitionCheckState.Init:\n        // Handle edge case where user interacts with checkbox that does not have [(ngModel)] or\n        // [checked] bound to it.\n        if (newState === TransitionCheckState.Checked) {\n          animSuffix = 'unchecked-checked';\n        } else if (newState === TransitionCheckState.Unchecked) {\n          animSuffix = 'unchecked-unchecked';\n        } else {\n          return '';\n        }\n        break;\n      case TransitionCheckState.Unchecked:\n        animSuffix =\n          newState === TransitionCheckState.Checked ? 'unchecked-checked' : '';\n        break;\n      case TransitionCheckState.Checked:\n        animSuffix =\n          newState === TransitionCheckState.Unchecked\n            ? 'checked-unchecked'\n            : '';\n        break;\n    }\n\n    return `oui-checkbox-anim-${animSuffix}`;\n  }\n}\n","<label [attr.for]=\"inputId\" class=\"oui-checkbox-layout\">\n  <div class=\"oui-checkbox-inner-container\">\n    <input\n      class=\"oui-checkbox-input cdk-visually-hidden\"\n      type=\"checkbox\"\n      [id]=\"inputId\"\n      [required]=\"required\"\n      [checked]=\"checked\"\n      [attr.value]=\"value\"\n      [disabled]=\"disabled\"\n      [attr.name]=\"name\"\n      [tabIndex]=\"tabIndex\"\n      [attr.aria-label]=\"ariaLabel || null\"\n      [attr.aria-labelledby]=\"ariaLabelledby\"\n      [attr.aria-checked]=\"_getAriaChecked()\"\n      (change)=\"_onInteractionEvent($event)\"\n      (click)=\"_onInputClick($event)\"\n    />\n\n    <div class=\"oui-checkbox-frame\"></div>\n    <div class=\"oui-checkbox-background\">\n      <svg\n        version=\"1.1\"\n        focusable=\"false\"\n        class=\"oui-checkbox-checkmark\"\n        viewBox=\"0 0 24 24\"\n        xml:space=\"preserve\"\n      >\n        <path\n          class=\"oui-checkbox-checkmark-path\"\n          fill=\"none\"\n          stroke=\"#333333\"\n          d=\"M4.1,12.7 9,17.6 20.3,6.3\"\n        />\n      </svg>\n      <div class=\"oui-checkbox-mixedmark\"></div>\n    </div>\n  </div>\n  <span class=\"oui-checkbox-label\">\n    <span style=\"display: none\">&nbsp;</span>\n    <ng-content></ng-content>\n  </span>\n</label>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Checkbox } from './checkbox';\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [Checkbox],\n  declarations: [Checkbox],\n})\nexport class OuiCheckboxModule {}\n","import {\n  animate,\n  AnimationTriggerMetadata,\n  keyframes,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nexport const ouiTooltipAnimations: {\n  readonly tooltipState: AnimationTriggerMetadata;\n} = {\n  /** Animation that transitions a tooltip in and out. */\n  tooltipState: trigger('state', [\n    state(\n      'initial, void, hidden',\n      style({ opacity: 0, transform: 'scale(0)' })\n    ),\n    state('visible', style({ transform: 'scale(1)' })),\n    transition(\n      '* => visible',\n      animate(\n        '200ms cubic-bezier(0, 0, 0.2, 1)',\n        keyframes([\n          style({ opacity: 0, transform: 'scale(0)', offset: 0 }),\n          style({ opacity: 0.5, transform: 'scale(0.99)', offset: 0.5 }),\n          style({ opacity: 1, transform: 'scale(1)', offset: 1 }),\n        ])\n      )\n    ),\n    transition(\n      '* => hidden',\n      animate('0ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 }))\n    ),\n  ]),\n};\n","import { AnimationEvent } from '@angular/animations';\nimport { AriaDescriber, FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  BreakpointObserver,\n  Breakpoints,\n  BreakpointState,\n} from '@angular/cdk/layout';\nimport {\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  OriginConnectionPosition,\n  Overlay,\n  OverlayConnectionPosition,\n  OverlayRef,\n  VerticalConnectionPos,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { take, takeUntil } from 'rxjs/operators';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  ElementRef,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  ViewContainerRef,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { ouiTooltipAnimations } from './tooltip-animations';\nimport { CanDisable } from '../core';\n\nexport type TooltipPosition = 'left' | 'right' | 'above' | 'below';\n\n/** Time in ms to throttle repositioning after scroll events. */\nexport const SCROLL_THROTTLE_MS = 20;\n\n/** CSS class that will be attached to the overlay panel. */\nexport const TOOLTIP_PANEL_CLASS = 'oui-tooltip-panel';\n\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n *\n * @docs-private\n */\nexport function getOuiTooltipInvalidPositionError(position: string) {\n  return Error(`Tooltip position \"${position}\" is invalid.`);\n}\n\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nexport const OUI_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<\n  () => ScrollStrategy\n>('oui-tooltip-scroll-strategy');\n\n/** @docs-private */\nexport function OUI_TOOLTIP_SCROLL_STRATEGY_FACTORY(\n  overlay: Overlay\n): () => ScrollStrategy {\n  return () =>\n    overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n}\n\n/** @docs-private */\nexport const OUI_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: OUI_TOOLTIP_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: OUI_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Default `ouiTooltip` options that can be overridden. */\nexport interface OuiTooltipDefaultOptions {\n  showDelay: number;\n  hideDelay: number;\n  touchendHideDelay: number;\n}\n\nexport interface NewCSSStyleDeclaration extends CSSStyleDeclaration {\n  msUserSelect: string;\n}\n\n/** Injection token to be used to override the default options for `ouiTooltip`. */\nexport const OUI_TOOLTIP_DEFAULT_OPTIONS =\n  new InjectionToken<OuiTooltipDefaultOptions>('oui-tooltip-default-options', {\n    providedIn: 'root',\n    factory: OUI_TOOLTIP_DEFAULT_OPTIONS_FACTORY,\n  });\n\n/** @docs-private */\nexport function OUI_TOOLTIP_DEFAULT_OPTIONS_FACTORY(): OuiTooltipDefaultOptions {\n  return {\n    showDelay: 0,\n    hideDelay: 0,\n    touchendHideDelay: 1500,\n  };\n}\n\nexport type TooltipVisibility = 'initial' | 'visible' | 'hidden';\n\n/**\n * Internal component that wraps the tooltip's content.\n *\n * @docs-private\n */\n@Component({\n  selector: 'oui-tooltip-component',\n  templateUrl: 'tooltip.html',\n  styleUrls: ['tooltip.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [ouiTooltipAnimations.tooltipState],\n  host: {\n    // Forces the element to have a layout in IE and Edge. This fixes issues where the element\n    // won't be rendered if the animations are disabled or there is no web animations polyfill.\n    '[style.zoom]': '_visibility === \"visible\" ? 1 : null',\n    '(body:click)': 'this._handleBodyInteraction()',\n    'aria-hidden': 'true',\n  },\n  standalone: false,\n})\nexport class TooltipComponent {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _breakpointObserver = inject(BreakpointObserver);\n\n  /** Message to display in the tooltip */\n  message: string;\n  /** Classes to be added to the tooltip. Supports the same syntax as `ngClass`. */\n  tooltipClass: string | string[] | Set<string> | { [key: string]: any };\n\n  /** The timeout ID of any current timer set to show the tooltip */\n  _showTimeoutId: number | null;\n\n  /** The timeout ID of any current timer set to hide the tooltip */\n  _hideTimeoutId: number | null;\n\n  /** Property watched by the animation framework to show or hide the tooltip */\n  _visibility: TooltipVisibility = 'initial';\n\n  /** Whether interactions on the page should close the tooltip */\n  private _closeOnInteraction = false;\n\n  /** Subject for notifying that the tooltip has been hidden from the view */\n  private readonly _onHide: Subject<void> = new Subject();\n\n  /** Stream that emits whether the user has a handset-sized display.  */\n  _isHandset: Observable<BreakpointState> = this._breakpointObserver.observe(\n    Breakpoints.Handset\n  );\n\n  constructor() {}\n\n  /**\n   * Shows the tooltip with an animation originating from the provided origin\n   *\n   * @param delay Amount of milliseconds to the delay showing the tooltip.\n   */\n  show(): void {\n    // Cancel the delayed hide if it is scheduled\n    if (this._hideTimeoutId) {\n      clearTimeout(this._hideTimeoutId);\n      this._hideTimeoutId = null;\n    }\n\n    // Body interactions should cancel the tooltip if there is a delay in showing.\n    this._closeOnInteraction = true;\n    setTimeout(() => {\n      this._visibility = 'visible';\n      this._showTimeoutId = null;\n\n      // Mark for check so if any parent component has set the\n      // ChangeDetectionStrategy to OnPush it will be checked anyways\n      this._markForCheck();\n    }, 0);\n  }\n\n  /**\n   * Begins the animation to hide the tooltip after the provided delay in ms.\n   *\n   * @param delay Amount of milliseconds to delay showing the tooltip.\n   */\n  hide(): void {\n    // Cancel the delayed show if it is scheduled\n    if (this._showTimeoutId) {\n      clearTimeout(this._showTimeoutId);\n      this._showTimeoutId = null;\n    }\n    setTimeout(() => {\n      this._visibility = 'hidden';\n      this._hideTimeoutId = null;\n      // Mark for check so if any parent component has set the\n      // ChangeDetectionStrategy to OnPush it will be checked anyways\n      this._markForCheck();\n    }, 0);\n  }\n\n  /** Returns an observable that notifies when the tooltip has been hidden from view. */\n  afterHidden(): Observable<void> {\n    return this._onHide.asObservable();\n  }\n\n  /** Whether the tooltip is being displayed. */\n  isVisible(): boolean {\n    return this._visibility === 'visible';\n  }\n\n  _animationStart() {\n    this._closeOnInteraction = false;\n  }\n\n  _animationDone(event: AnimationEvent): void {\n    const toState = event.toState as TooltipVisibility;\n\n    if (toState === 'hidden' && !this.isVisible()) {\n      this._onHide.next();\n    }\n\n    if (toState === 'visible' || toState === 'hidden') {\n      this._closeOnInteraction = true;\n    }\n  }\n\n  /**\n   * Interactions on the HTML body should close the tooltip immediately\n   */\n  _handleBodyInteraction(): void {\n    if (this._closeOnInteraction) {\n      this.hide();\n    }\n  }\n\n  /**\n   * Marks that the tooltip needs to be checked in the next change detection run.\n   * Mainly used for rendering the initial text before positioning a tooltip, which\n   * can be problematic in components with OnPush change detection.\n   */\n  _markForCheck(): void {\n    this._changeDetectorRef.markForCheck();\n  }\n}\n\n/**\n * Directive that attaches a tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n */\n@Directive({\n  selector: '[ouiTooltip]',\n  exportAs: 'ouiTooltip',\n  host: {\n    '(longpress)': 'show()',\n    '(keydown)': '_handleKeydown($event)',\n    '(touchend)': '_handleTouchend()',\n    '[attr.tabindex]': 'disabled ? -1 : 0',\n    '[attr.aria-hidden]': 'false',\n  },\n  standalone: false,\n})\nexport class OuiTooltip implements OnDestroy, CanDisable {\n  private _overlay = inject(Overlay);\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _scrollDispatcher = inject(ScrollDispatcher);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _ngZone = inject(NgZone);\n  private _ariaDescriber = inject(AriaDescriber);\n  private _focusMonitor = inject(FocusMonitor);\n  private _dir = inject(Directionality, { optional: true })!;\n\n  _overlayRef: OverlayRef | null;\n  _tooltipInstance: TooltipComponent | null;\n\n  private _portal: ComponentPortal<TooltipComponent>;\n  private _position: TooltipPosition = 'below';\n  private _disabled = false;\n  private _tooltipClass:\n    | string\n    | string[]\n    | Set<string>\n    | { [key: string]: any };\n  private _scrollStrategy: () => ScrollStrategy;\n\n  /** Allows the user to define the position of the tooltip relative to the parent element */\n  @Input('ouiTooltipPosition')\n  get position(): TooltipPosition {\n    return this._position;\n  }\n  set position(value: TooltipPosition) {\n    if (value !== this._position) {\n      this._position = value;\n      if (this._overlayRef) {\n        this._updatePosition();\n\n        if (this._tooltipInstance) {\n          this._tooltipInstance!.show();\n        }\n\n        this._overlayRef.updatePosition();\n      }\n    }\n  }\n\n  /** Disables the display of the tooltip. */\n  @Input('ouiTooltipDisabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value) {\n    this._disabled = coerceBooleanProperty(value);\n\n    // If tooltip is disabled, hide immediately.\n    if (this._disabled) {\n      this.hide();\n    }\n  }\n\n  private _message = '';\n\n  /** The message to be displayed in the tooltip */\n  @Input('ouiTooltip')\n  get message() {\n    return this._message;\n  }\n  set message(value: string) {\n    this._ariaDescriber.removeDescription(\n      this._elementRef.nativeElement,\n      this._message\n    );\n\n    // If the message is not a string (e.g. number), convert it to a string and trim it.\n    this._message = value != null ? `${value}`.trim() : '';\n\n    if (!this._message && this._isTooltipVisible()) {\n      this.hide();\n    } else {\n      this._updateTooltipMessage();\n      this._ariaDescriber.describe(\n        this._elementRef.nativeElement,\n        this.message\n      );\n    }\n  }\n\n  /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n  @Input('ouiTooltipClass')\n  get tooltipClass() {\n    return this._tooltipClass;\n  }\n  set tooltipClass(\n    value: string | string[] | Set<string> | { [key: string]: any }\n  ) {\n    this._tooltipClass = value;\n    if (this._tooltipInstance) {\n      this._tooltipInstance._markForCheck();\n      this._setTooltipClass(this._tooltipClass);\n    }\n  }\n\n  private _manualListeners = new Map<\n    string,\n    EventListenerOrEventListenerObject\n  >();\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  constructor() {\n    const _elementRef = this._elementRef;\n    const _ngZone = this._ngZone;\n    const platform = inject(Platform);\n    const _focusMonitor = this._focusMonitor;\n    const scrollStrategy = inject(OUI_TOOLTIP_SCROLL_STRATEGY);\n\n    this._scrollStrategy = scrollStrategy;\n    const element: HTMLElement = _elementRef.nativeElement;\n    const elementStyle = element.style as NewCSSStyleDeclaration & {\n      webkitUserDrag: string;\n    };\n    const hasGestures = typeof window === 'undefined' || (window as any).Hammer;\n\n    // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n    // first tap from firing its click event or can cause the tooltip to open for clicks.\n    if (!platform.IOS && !platform.ANDROID) {\n      this._manualListeners\n        .set('mouseenter', () => this.show())\n        .set('mouseleave', () => this.hide());\n    } else if (!hasGestures) {\n      // there's no way for the user to trigger the tooltip on a touch device.\n      this._manualListeners.set('touchstart', () => this.show());\n    }\n\n    this._manualListeners.forEach((listener, event) =>\n      element.addEventListener(event, listener)\n    );\n\n    if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n      elementStyle.webkitUserSelect =\n        elementStyle.userSelect =\n        elementStyle.msUserSelect =\n          '';\n    }\n\n    // Hammer applies `-webkit-user-drag: none` on all elements by default,\n    // which breaks the native drag&drop. If the consumer explicitly made\n    // the element draggable, clear the `-webkit-user-drag`.\n    if (element.draggable && elementStyle.webkitUserDrag === 'none') {\n      elementStyle.webkitUserDrag = '';\n    }\n\n    _focusMonitor\n      .monitor(_elementRef)\n      .pipe(takeUntil(this._destroyed))\n      .subscribe((origin) => {\n        // Note that the focus monitor runs outside the Angular zone.\n        if (!origin) {\n          _ngZone.run(() => this.hide());\n        } else if (origin === 'keyboard') {\n          _ngZone.run(() => this.show());\n        }\n      });\n  }\n\n  /**\n   * Dispose the tooltip when destroyed.\n   */\n  ngOnDestroy() {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._tooltipInstance = null;\n    }\n\n    // Clean up the event listeners set in the constructor\n    this._manualListeners.forEach((listener, event) => {\n      this._elementRef.nativeElement.removeEventListener(event, listener);\n    });\n    this._manualListeners.clear();\n\n    this._destroyed.next();\n    this._destroyed.complete();\n\n    this._ariaDescriber.removeDescription(\n      this._elementRef.nativeElement,\n      this.message\n    );\n    this._focusMonitor.stopMonitoring(this._elementRef);\n  }\n\n  /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n  show(): void {\n    if (\n      this.disabled ||\n      !this.message ||\n      (this._isTooltipVisible() &&\n        !this._tooltipInstance!._showTimeoutId &&\n        !this._tooltipInstance!._hideTimeoutId)\n    ) {\n      return;\n    }\n\n    const overlayRef = this._createOverlay();\n\n    this._detach();\n    this._portal =\n      this._portal ||\n      new ComponentPortal(TooltipComponent, this._viewContainerRef);\n    this._tooltipInstance = overlayRef.attach(this._portal).instance;\n    this._tooltipInstance\n      .afterHidden()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n    this._setTooltipClass(this._tooltipClass);\n    this._updateTooltipMessage();\n    this._tooltipInstance!.show();\n  }\n\n  /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n  hide(): void {\n    if (this._tooltipInstance) {\n      this._tooltipInstance.hide();\n    } else {\n      if (this._overlayRef) {\n        this._overlayRef.dispose();\n        this._overlayRef = null;\n      }\n    }\n  }\n\n  /** Shows/hides the tooltip */\n  toggle(): void {\n    if (this._isTooltipVisible()) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  /** Returns true if the tooltip is currently visible to the user */\n  _isTooltipVisible(): boolean {\n    return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n  }\n\n  /** Handles the keydown events on the host element. */\n  _handleKeydown(e: KeyboardEvent) {\n    if (this._isTooltipVisible() && e.key === 'Escape') {\n      e.stopPropagation();\n      this.hide();\n    }\n  }\n\n  /** Handles the touchend events on the host element. */\n  _handleTouchend() {\n    this.hide();\n  }\n\n  /** Create the overlay config and position strategy */\n  private _createOverlay(): OverlayRef {\n    if (this._overlayRef) {\n      return this._overlayRef;\n    }\n\n    // Create connected position strategy that listens for scroll events to reposition.\n    const strategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this._elementRef)\n      .withTransformOriginOn('.oui-tooltip')\n      .withFlexibleDimensions(false)\n      .withViewportMargin(8);\n\n    const scrollableAncestors =\n      this._scrollDispatcher.getAncestorScrollContainers(this._elementRef);\n\n    strategy.withScrollableContainers(scrollableAncestors);\n\n    strategy.positionChanges\n      .pipe(takeUntil(this._destroyed))\n      .subscribe((change) => {\n        if (this._tooltipInstance) {\n          if (\n            change.scrollableViewProperties.isOverlayClipped &&\n            this._tooltipInstance.isVisible()\n          ) {\n            // After position changes occur and the overlay is clipped by\n            // a parent scrollable then close the tooltip.\n            this._ngZone.run(() => this.hide());\n          }\n        }\n      });\n\n    this._overlayRef = this._overlay.create({\n      direction: this._dir,\n      positionStrategy: strategy,\n      panelClass: TOOLTIP_PANEL_CLASS,\n      scrollStrategy: this._scrollStrategy(),\n    });\n\n    this._updatePosition();\n\n    this._overlayRef\n      .detachments()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n\n    return this._overlayRef;\n  }\n\n  /** Detaches the currently-attached tooltip. */\n  private _detach() {\n    if (this._overlayRef && this._overlayRef.hasAttached()) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n\n    this._tooltipInstance = null;\n  }\n\n  /** Updates the position of the current tooltip. */\n  private _updatePosition() {\n    const position = this._overlayRef!.getConfig()\n      .positionStrategy as FlexibleConnectedPositionStrategy;\n    const origin = this._getOrigin();\n    const overlay = this._getOverlayPosition();\n\n    position.withPositions([\n      { ...origin.main, ...overlay.main },\n      { ...origin.fallback, ...overlay.fallback },\n    ]);\n  }\n\n  /**\n   * Returns the origin position and a fallback position based on the user's position preference.\n   * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n   */\n  _getOrigin(): {\n    main: OriginConnectionPosition;\n    fallback: OriginConnectionPosition;\n  } {\n    const isLtr = !this._dir || this._dir.value === 'ltr';\n    const position = this.position;\n    let originPosition: OriginConnectionPosition;\n\n    if (position === 'above' || position === 'below') {\n      originPosition = {\n        originX: 'center',\n        originY: position === 'above' ? 'top' : 'bottom',\n      };\n    } else if (\n      (position === 'left' && isLtr) ||\n      (position === 'right' && !isLtr)\n    ) {\n      originPosition = { originX: 'start', originY: 'center' };\n    } else if (\n      (position === 'right' && isLtr) ||\n      (position === 'left' && !isLtr)\n    ) {\n      originPosition = { originX: 'end', originY: 'center' };\n    } else {\n      throw getOuiTooltipInvalidPositionError(position);\n    }\n\n    const { x, y } = this._invertPosition(\n      originPosition.originX,\n      originPosition.originY\n    );\n\n    return {\n      main: originPosition,\n      fallback: { originX: x, originY: y },\n    };\n  }\n\n  /** Returns the overlay position and a fallback position based on the user's preference */\n  _getOverlayPosition(): {\n    main: OverlayConnectionPosition;\n    fallback: OverlayConnectionPosition;\n  } {\n    const isLtr = !this._dir || this._dir.value === 'ltr';\n    const position = this.position;\n    let overlayPosition: OverlayConnectionPosition;\n\n    if (position === 'above') {\n      overlayPosition = { overlayX: 'center', overlayY: 'bottom' };\n    } else if (position === 'below') {\n      overlayPosition = { overlayX: 'center', overlayY: 'top' };\n    } else if (\n      (position === 'left' && isLtr) ||\n      (position === 'right' && !isLtr)\n    ) {\n      overlayPosition = { overlayX: 'end', overlayY: 'center' };\n    } else if (\n      (position === 'right' && isLtr) ||\n      (position === 'left' && !isLtr)\n    ) {\n      overlayPosition = { overlayX: 'start', overlayY: 'center' };\n    } else {\n      throw getOuiTooltipInvalidPositionError(position);\n    }\n\n    const { x, y } = this._invertPosition(\n      overlayPosition.overlayX,\n      overlayPosition.overlayY\n    );\n\n    return {\n      main: overlayPosition,\n      fallback: { overlayX: x, overlayY: y },\n    };\n  }\n\n  /** Updates the tooltip message and repositions the overlay according to the new message length */\n  private _updateTooltipMessage() {\n    // Must wait for the message to be painted to the tooltip so that the overlay can properly\n    // calculate the correct positioning based on the size of the text.\n    if (this._tooltipInstance) {\n      this._tooltipInstance.message = this.message;\n      this._tooltipInstance._markForCheck();\n\n      this._ngZone.onMicrotaskEmpty\n        .asObservable()\n        .pipe(take(1), takeUntil(this._destroyed))\n        .subscribe(() => {\n          if (this._tooltipInstance) {\n            this._overlayRef!.updatePosition();\n          }\n        });\n    }\n  }\n\n  /** Updates the tooltip class */\n  private _setTooltipClass(\n    tooltipClass: string | string[] | Set<string> | { [key: string]: any }\n  ) {\n    if (this._tooltipInstance) {\n      this._tooltipInstance.tooltipClass = tooltipClass;\n      this._tooltipInstance._markForCheck();\n    }\n  }\n\n  /** Inverts an overlay position. */\n  private _invertPosition(\n    x: HorizontalConnectionPos,\n    y: VerticalConnectionPos\n  ) {\n    if (this.position === 'above' || this.position === 'below') {\n      if (y === 'top') {\n        y = 'bottom';\n      } else if (y === 'bottom') {\n        y = 'top';\n      }\n    } else {\n      if (x === 'end') {\n        x = 'start';\n      } else if (x === 'start') {\n        x = 'end';\n      }\n    }\n\n    return { x, y };\n  }\n}\n","<div class=\"oui-tooltip-wrapper\">\n  <div\n    class=\"oui-tooltip\"\n    [ngClass]=\"tooltipClass\"\n    [@state]=\"_visibility\"\n    (@state.start)=\"_animationStart()\"\n    (@state.done)=\"_animationDone($event)\"\n  >\n    <div class=\"tooltip-inner\">{{message}}</div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { ObserversModule } from '@angular/cdk/observers';\nimport {\n  OuiTooltip,\n  TooltipComponent,\n  OUI_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './tooltip';\n\n@NgModule({\n  declarations: [OuiTooltip, TooltipComponent],\n  imports: [CommonModule, ObserversModule, OverlayModule],\n  exports: [TooltipComponent, OuiTooltip],\n  providers: [OUI_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class OuiTooltipModule {}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of OuiPaginatorIntl and\n * include it in a custom provider\n */\n@Injectable({ providedIn: 'root' })\nexport class OuiPaginatorIntl {\n  /**\n   * Stream to emit from when labels are changed. Use this to notify components when the labels have\n   * changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n\n  /** A label for the button that increments the current page. */\n  nextPageLabel = 'Next page';\n\n  /** A label for the button that decrements the current page. */\n  previousPageLabel = 'Previous page';\n\n  /** A label for the button that moves to the first page. */\n  firstPageLabel = 'First page';\n\n  /** A label for the button that moves to the last page. */\n  lastPageLabel = 'Last page';\n}\n\n/** @docs-private */\nexport function OUI_PAGINATOR_INTL_PROVIDER_FACTORY(\n  parentIntl: OuiPaginatorIntl\n) {\n  return parentIntl || new OuiPaginatorIntl();\n}\n\n/** @docs-private */\nexport const OUI_PAGINATOR_INTL_PROVIDER = {\n  // If there is already an OuiPaginatorIntl available, use that. Otherwise, provide a new one.\n  provide: OuiPaginatorIntl,\n  deps: [[new Optional(), new SkipSelf(), OuiPaginatorIntl]],\n  useFactory: OUI_PAGINATOR_INTL_PROVIDER_FACTORY,\n};\n","import {\n  coerceNumberProperty,\n  coerceBooleanProperty,\n} from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { OuiPaginatorIntl } from './paginator-intl';\nimport {\n  HasInitialized,\n  HasInitializedCtor,\n  mixinInitialized,\n  mixinDisabled,\n  CanDisableCtor,\n  CanDisable,\n} from '../core';\n\n/** The default page size if there is no page size and there are no provided page size options. */\nconst DEFAULT_PAGE_SIZE = 30;\n\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nexport class PageEvent {\n  /** The current page index. */\n  pageIndex: number;\n\n  /**\n   * Index of the page that was selected previously.\n   *\n   * @breaking-change 8.0.0 To be made into a required property.\n   */\n  previousPageIndex?: number;\n\n  /** The current page size */\n  pageSize: number;\n\n  /** The current total number of items being paged */\n  length: number;\n}\n\n// Boilerplate for applying mixins to OuiPaginator.\n/** @docs-private */\nexport class OuiPaginatorBase {}\nexport const _OuiPaginatorBase: CanDisableCtor &\n  HasInitializedCtor &\n  typeof OuiPaginatorBase = mixinDisabled(mixinInitialized(OuiPaginatorBase));\n\n/**\n * Component to provide navigation between paged information. Displays the size of the current\n * page, user-selectable options to change that size, what items are being shown, and\n * navigational button to go to the previous or next page.\n */\n@Component({\n  selector: 'oui-paginator',\n  exportAs: 'ouiPaginator',\n  templateUrl: 'paginator.html',\n  styleUrls: ['paginator.scss'],\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled'],\n  host: {\n    class: 'oui-paginator',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class OuiPaginator\n  extends _OuiPaginatorBase\n  implements OnInit, OnDestroy, CanDisable, HasInitialized\n{\n  _intl = inject(OuiPaginatorIntl);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  private _initialized: boolean;\n  private _intlChanges: Subscription;\n\n  /** The zero-based page index of the displayed list of items. Defaulted to 0. */\n  @Input()\n  get pageIndex(): number {\n    return this._pageIndex;\n  }\n  set pageIndex(value: number) {\n    this._pageIndex = Math.max(coerceNumberProperty(value), 0);\n    this._changeDetectorRef.markForCheck();\n  }\n  _pageIndex = 0;\n\n  /** The length of the total number of items that are being paginated. Defaulted to 0. */\n  @Input()\n  get length(): number {\n    return this._length;\n  }\n  set length(value: number) {\n    this._length = coerceNumberProperty(value);\n    this._changeDetectorRef.markForCheck();\n  }\n  _length = 0;\n\n  /** Number of items to display on a page. By default set to 50. */\n  @Input()\n  get pageSize(): number {\n    return this._pageSize;\n  }\n  set pageSize(value: number) {\n    this._pageSize = Math.max(coerceNumberProperty(value), 0);\n  }\n  private _pageSize: number = DEFAULT_PAGE_SIZE;\n\n  /** Whether to hide the page size selection UI from the user. */\n  @Input()\n  get hidePageSize(): boolean {\n    return this._hidePageSize;\n  }\n  set hidePageSize(value: boolean) {\n    this._hidePageSize = coerceBooleanProperty(value);\n  }\n  private _hidePageSize = false;\n\n  /** Event emitted when the paginator changes the page size or page index. */\n  @Output()\n  readonly page: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n  /** Displayed set of page size options. Will be sorted and include current page size. */\n  _displayedPageSizeOptions: number;\n\n  constructor() {\n    super();\n    const _intl = this._intl;\n\n    this._intlChanges = _intl.changes.subscribe(() =>\n      this._changeDetectorRef.markForCheck()\n    );\n  }\n\n  ngOnInit() {\n    this._initialized = true;\n    this._markInitialized();\n  }\n\n  ngOnDestroy() {\n    this._intlChanges.unsubscribe();\n  }\n\n  /** Advances to the next page if it exists. */\n  nextPage(): void {\n    if (!this.hasNextPage() || !this._initialized) {\n      return;\n    }\n\n    const previousPageIndex = this.pageIndex;\n    this.pageIndex++;\n    this._emitPageEvent(previousPageIndex);\n  }\n\n  /** Move back to the previous page if it exists. */\n  previousPage(): void {\n    if (!this.hasPreviousPage()) {\n      return;\n    }\n\n    const previousPageIndex = this.pageIndex;\n    this.pageIndex--;\n    this._emitPageEvent(previousPageIndex);\n  }\n\n  /** Move to the first page if not already there. */\n  firstPage(): void {\n    // hasPreviousPage being false implies at the start\n    if (!this.hasPreviousPage()) {\n      return;\n    }\n\n    const previousPageIndex = this.pageIndex;\n    this.pageIndex = 0;\n    this._emitPageEvent(previousPageIndex);\n  }\n\n  /** Move to the last page if not already there. */\n  lastPage(): void {\n    // hasNextPage being false implies at the end\n    if (!this.hasNextPage()) {\n      return;\n    }\n\n    const previousPageIndex = this.pageIndex;\n    this.pageIndex = this.getNumberOfPages() - 1;\n    this._emitPageEvent(previousPageIndex);\n  }\n\n  /** Whether there is a previous page. */\n  hasPreviousPage(): boolean {\n    return this.pageIndex >= 1 && this.pageSize !== 0;\n  }\n\n  /** Whether there is a next page. */\n  hasNextPage(): boolean {\n    const maxPageIndex = this.getNumberOfPages() - 1;\n    return this.pageIndex < maxPageIndex && this.pageSize !== 0;\n  }\n\n  /** Calculate the number of pages */\n  getNumberOfPages(): number {\n    if (!this.pageSize || this.length < 0) {\n      return 0;\n    }\n\n    return Math.ceil(this.length / this.pageSize);\n  }\n\n  /** Get current page */\n  getCurrentPage(): number {\n    if (!this.pageSize || this.length <= 0) {\n      return 0;\n    }\n\n    return this.pageIndex + 1;\n  }\n\n  /**\n   * Changes the page size so that the first item displayed on the page will still be\n   * displayed using the new page size.\n   *\n   * For example, if the page size is 10 and on the second page (items indexed 10-19) then\n   * switching so that the page size is 5 will set the third page as the current page so\n   * that the 10th item will still be displayed.\n   */\n  _changePageSize(pageSize: number) {\n    // Current page needs to be updated to reflect the new page size. Navigate to the page\n    // containing the previous page's first item.\n    const startIndex = this.pageIndex * this.pageSize;\n    const previousPageIndex = this.pageIndex;\n\n    this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n    this.pageSize = pageSize;\n    this._emitPageEvent(previousPageIndex);\n  }\n\n  /** Checks whether the buttons for going forwards should be disabled. */\n  _nextButtonsDisabled() {\n    return this.disabled || !this.hasNextPage();\n  }\n\n  /** Checks whether the buttons for going backwards should be disabled. */\n  _previousButtonsDisabled() {\n    return this.disabled || !this.hasPreviousPage();\n  }\n\n  /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n  private _emitPageEvent(previousPageIndex: number) {\n    this.page.emit({\n      previousPageIndex,\n      pageIndex: this.pageIndex,\n      pageSize: this.pageSize,\n      length: this.length,\n    });\n  }\n}\n","<div class=\"oui-paginator-outer-container\">\n  <div class=\"oui-paginator-container\">\n    <div class=\"oui-paginator-range-actions\">\n      <button\n        oui-button\n        class=\"oui-paginator-navigation-first\"\n        (click)=\"firstPage()\"\n        [attr.aria-label]=\"_intl.firstPageLabel\"\n        [title]=\"_intl.firstPageLabel\"\n        [disabled]=\"_previousButtonsDisabled()\"\n      ></button>\n      <button\n        oui-button\n        class=\"oui-paginator-navigation-previous\"\n        (click)=\"previousPage()\"\n        [attr.aria-label]=\"_intl.previousPageLabel\"\n        [title]=\"_intl.previousPageLabel\"\n        [disabled]=\"_previousButtonsDisabled()\"\n      ></button>\n      <div class=\"oui-paginator-current-page\">{{ getCurrentPage() }}</div>\n      <button\n        oui-button\n        class=\"oui-paginator-navigation-next\"\n        (click)=\"nextPage()\"\n        [attr.aria-label]=\"_intl.nextPageLabel\"\n        [title]=\"_intl.nextPageLabel\"\n        [disabled]=\"_nextButtonsDisabled()\"\n      ></button>\n      <button\n        oui-button\n        class=\"oui-paginator-navigation-last\"\n        (click)=\"lastPage()\"\n        [attr.aria-label]=\"_intl.lastPageLabel\"\n        [title]=\"_intl.lastPageLabel\"\n        [disabled]=\"_nextButtonsDisabled()\"\n      ></button>\n    </div>\n    <div class=\"oui-paginator-total-count\">of {{ getNumberOfPages() }}</div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OuiButtonModule } from '../button/public-api';\nimport { OuiTooltipModule } from '../tooltip/public-api';\nimport { OuiPaginator } from './paginator';\nimport { OUI_PAGINATOR_INTL_PROVIDER } from './paginator-intl';\n\n@NgModule({\n  imports: [CommonModule, OuiButtonModule, OuiTooltipModule],\n  exports: [OuiPaginator],\n  declarations: [OuiPaginator],\n  providers: [OUI_PAGINATOR_INTL_PROVIDER],\n})\nexport class OuiPaginatorModule {}\n","/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n  return Error(`Cannot have two OuiSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n  return Error(\n    `OuiSortHeader must be placed within a parent element with the OuiSort directive.`\n  );\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n  return Error(`OuiSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n  return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  Directive,\n  EventEmitter,\n  Input,\n  isDevMode,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport {\n  CanDisable,\n  CanDisableCtor,\n  HasInitialized,\n  HasInitializedCtor,\n  mixinDisabled,\n  mixinInitialized,\n} from '../core';\nimport { Subject } from 'rxjs';\nimport { SortDirection } from './sort-direction';\nimport {\n  getSortDuplicateSortableIdError,\n  getSortHeaderMissingIdError,\n  getSortInvalidDirectionError,\n} from './sort-errors';\n\n/** Interface for a directive that holds sorting state consumed by `OuiSortHeader`. */\nexport interface OuiSortable {\n  /** The id of the column being sorted. */\n  id: string;\n\n  /** Starting sort direction. */\n  start: 'asc' | 'desc';\n\n  /** Whether to disable clearing the sorting state. */\n  disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n  /** The id of the column being sorted. */\n  active: string;\n\n  /** The sort direction. */\n  direction: SortDirection;\n}\n\n// Boilerplate for applying mixins to OuiSort.\n/** @docs-private */\nexport class OuiSortBase {}\nexport const _OuiSortMixinBase: HasInitializedCtor &\n  CanDisableCtor &\n  typeof OuiSortBase = mixinInitialized(mixinDisabled(OuiSortBase));\n\n/** Container for OuiSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n  selector: '[ouiSort]',\n  exportAs: 'ouiSort',\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled: ouiSortDisabled'],\n  standalone: false,\n})\nexport class OuiSort\n  extends _OuiSortMixinBase\n  implements CanDisable, HasInitialized, OnChanges, OnDestroy, OnInit\n{\n  /** Collection of all registered sortables that this directive manages. */\n  sortables = new Map<string, OuiSortable>();\n\n  /** Used to notify any child components listening to state changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  /** The id of the most recently sorted OuiSortable. */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('ouiSortActive') active: string;\n\n  /**\n   * The direction to set when an OuiSortable is initially sorted.\n   * May be overriden by the OuiSortable's sort start.\n   */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('ouiSortStart') start: 'asc' | 'desc' = 'asc';\n\n  /** The sort direction of the currently active OuiSortable. */\n  @Input('ouiSortDirection')\n  get direction(): SortDirection {\n    return this._direction;\n  }\n  set direction(direction: SortDirection) {\n    if (\n      isDevMode() &&\n      direction &&\n      direction !== 'asc' &&\n      direction !== 'desc'\n    ) {\n      throw getSortInvalidDirectionError(direction);\n    }\n    this._direction = direction;\n  }\n  private _direction: SortDirection = '';\n\n  /**\n   * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n   * May be overriden by the OuiSortable's disable clear input.\n   */\n  @Input('ouiSortDisableClear')\n  get disableClear(): boolean {\n    return this._disableClear;\n  }\n  set disableClear(v: boolean) {\n    this._disableClear = coerceBooleanProperty(v);\n  }\n  private _disableClear: boolean;\n\n  /** Event emitted when the user changes either the active sort or sort direction. */\n  // eslint-disable-next-line @angular-eslint/no-output-rename\n  @Output('ouiSortChange')\n  readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n  /**\n   * Register function to be used by the contained OuiSortables. Adds the OuiSortable to the\n   * collection of OuiSortables.\n   */\n  register(sortable: OuiSortable): void {\n    if (!sortable.id) {\n      throw getSortHeaderMissingIdError();\n    }\n\n    if (this.sortables.has(sortable.id)) {\n      throw getSortDuplicateSortableIdError(sortable.id);\n    }\n    this.sortables.set(sortable.id, sortable);\n  }\n\n  /**\n   * Unregister function to be used by the contained OuiSortables. Removes the OuiSortable from the\n   * collection of contained OuiSortables.\n   */\n  deregister(sortable: OuiSortable): void {\n    this.sortables.delete(sortable.id);\n  }\n\n  /** Sets the active sort id and determines the new sort direction. */\n  sort(sortable: OuiSortable): void {\n    if (this.active !== sortable.id) {\n      this.active = sortable.id;\n      this.direction = sortable.start ? sortable.start : this.start;\n    } else {\n      this.direction = this.getNextSortDirection(sortable);\n    }\n\n    this.sortChange.emit({ active: this.active, direction: this.direction });\n  }\n\n  /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n  getNextSortDirection(sortable: OuiSortable): SortDirection {\n    if (!sortable) {\n      return '';\n    }\n\n    const sortDirectionCycle = getSortDirectionCycle(\n      sortable.start || this.start\n    );\n\n    // Get and return the next direction in the cycle\n    let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n    if (nextDirectionIndex >= sortDirectionCycle.length) {\n      nextDirectionIndex = 0;\n    }\n    return sortDirectionCycle[nextDirectionIndex];\n  }\n\n  ngOnInit() {\n    this._markInitialized();\n  }\n\n  ngOnChanges() {\n    this._stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: 'asc' | 'desc'): SortDirection[] {\n  const sortOrder: SortDirection[] = ['asc', 'desc'];\n  if (start === 'desc') {\n    sortOrder.reverse();\n  }\n\n  return sortOrder;\n}\n","import { Injectable, SkipSelf, Optional } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of OuiSortHeaderIntl and\n * include it in a custom provider.\n */\n@Injectable({ providedIn: 'root' })\nexport class OuiSortHeaderIntl {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n\n  /** ARIA label for the sorting button. */\n  sortButtonLabel = (id: string) => `${id}`;\n}\n/** @docs-private */\nexport function OUI_SORT_HEADER_INTL_PROVIDER_FACTORY(\n  parentIntl: OuiSortHeaderIntl\n) {\n  return parentIntl || new OuiSortHeaderIntl();\n}\n\n/** @docs-private */\nexport const OUI_SORT_HEADER_INTL_PROVIDER = {\n  // If there is already an OuiSortHeaderIntl available, use that. Otherwise, provide a new one.\n  provide: OuiSortHeaderIntl,\n  deps: [[new Optional(), new SkipSelf(), OuiSortHeaderIntl]],\n  useFactory: OUI_SORT_HEADER_INTL_PROVIDER_FACTORY,\n};\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  keyframes,\n  AnimationTriggerMetadata,\n  query,\n  animateChild,\n} from '@angular/animations';\n\nconst SORT_ANIMATION_TRANSITION = '225ms cubic-bezier(0.4,0.0,0.2,1)';\n\n/**\n * Animations used by OuiSort.\n *\n * @docs-private\n */\nexport const ouiSortAnimations: {\n  readonly indicator: AnimationTriggerMetadata;\n  readonly leftPointer: AnimationTriggerMetadata;\n  readonly rightPointer: AnimationTriggerMetadata;\n  readonly arrowOpacity: AnimationTriggerMetadata;\n  readonly arrowPosition: AnimationTriggerMetadata;\n  readonly allowChildren: AnimationTriggerMetadata;\n} = {\n  /** Animation that moves the sort indicator. */\n  indicator: trigger('indicator', [\n    state('active-asc', style({ transform: 'rotateX(180deg)' })),\n    state('active-desc', style({ transform: 'rotateX(0deg)' })),\n    transition(\n      'active-asc <=> active-desc',\n      animate(SORT_ANIMATION_TRANSITION)\n    ),\n  ]),\n\n  /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n  leftPointer: trigger('leftPointer', [\n    state('active-asc, asc', style({ transform: 'rotate(-45deg)' })),\n    state('active-desc, desc', style({ transform: 'rotate(45deg)' })),\n    transition(\n      'active-asc <=> active-desc',\n      animate(SORT_ANIMATION_TRANSITION)\n    ),\n  ]),\n\n  /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n  rightPointer: trigger('rightPointer', [\n    state('active-asc, asc', style({ transform: 'rotate(45deg)' })),\n    state('active-desc, desc', style({ transform: 'rotate(-45deg)' })),\n    transition(\n      'active-asc <=> active-desc',\n      animate(SORT_ANIMATION_TRANSITION)\n    ),\n  ]),\n\n  /** Animation that controls the arrow opacity. */\n  arrowOpacity: trigger('arrowOpacity', [\n    state('desc-to-active, asc-to-active, active', style({ opacity: 1 })),\n    state('desc-to-hint, asc-to-hint, hint', style({ opacity: 0.54 })),\n    state(\n      'hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void',\n      style({ opacity: 0 })\n    ),\n    // Transition between all states except for immediate transitions\n    transition(\n      '* => asc, * => desc, * => active, * => hint, * => void',\n      animate('0ms')\n    ),\n    transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n  ]),\n\n  /**\n   * Animation for the translation of the arrow as a whole. States are separated into two\n   * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n   * peek, and active. The other states define a specific animation (source-to-destination)\n   * and are determined as a function of their prev user-perceived state and what the next state\n   * should be.\n   */\n  arrowPosition: trigger('arrowPosition', [\n    // Hidden Above => Hint Center\n    transition(\n      '* => desc-to-hint, * => desc-to-active',\n      animate(\n        SORT_ANIMATION_TRANSITION,\n        keyframes([\n          style({ transform: 'translateY(-25%)' }),\n          style({ transform: 'translateY(0)' }),\n        ])\n      )\n    ),\n    // Hint Center => Hidden Below\n    transition(\n      '* => hint-to-desc, * => active-to-desc',\n      animate(\n        SORT_ANIMATION_TRANSITION,\n        keyframes([\n          style({ transform: 'translateY(0)' }),\n          style({ transform: 'translateY(25%)' }),\n        ])\n      )\n    ),\n    // Hidden Below => Hint Center\n    transition(\n      '* => asc-to-hint, * => asc-to-active',\n      animate(\n        SORT_ANIMATION_TRANSITION,\n        keyframes([\n          style({ transform: 'translateY(25%)' }),\n          style({ transform: 'translateY(0)' }),\n        ])\n      )\n    ),\n    // Hint Center => Hidden Above\n    transition(\n      '* => hint-to-asc, * => active-to-asc',\n      animate(\n        SORT_ANIMATION_TRANSITION,\n        keyframes([\n          style({ transform: 'translateY(0)' }),\n          style({ transform: 'translateY(-25%)' }),\n        ])\n      )\n    ),\n    state(\n      'desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active',\n      style({ transform: 'translateY(0)' })\n    ),\n    state(\n      'hint-to-desc, active-to-desc, desc',\n      style({ transform: 'translateY(-25%)' })\n    ),\n    state(\n      'hint-to-asc, active-to-asc, asc',\n      style({ transform: 'translateY(25%)' })\n    ),\n  ]),\n\n  /** Necessary trigger that calls animate on children animations. */\n  allowChildren: trigger('allowChildren', [\n    transition('* <=> *', [query('@*', animateChild(), { optional: true })]),\n  ]),\n};\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n  ElementRef,\n  IterableDiffers,\n  NgZone,\n  inject,\n} from '@angular/core';\nimport { CanDisable, CanDisableCtor, mixinDisabled } from '../core';\nimport { merge, Subscription } from 'rxjs';\nimport { OuiSort, OuiSortable } from './sort';\nimport { ouiSortAnimations } from './sort-animations';\nimport { SortDirection } from './sort-direction';\nimport { getSortHeaderNotContainedWithinSortError } from './sort-errors';\nimport { OuiSortHeaderIntl } from './sort-header-intl';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nexport class OuiSortHeaderBase {}\nexport const _OuiSortHeaderMixinBase: CanDisableCtor &\n  typeof OuiSortHeaderBase = mixinDisabled(OuiSortHeaderBase);\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n *\n * @docs-private\n */\nexport interface ArrowViewStateTransition {\n  fromState?: ArrowViewState;\n  toState: ArrowViewState;\n}\n\n/** Column definition associated with a `OuiSortHeader`. */\ninterface OuiSortHeaderColumnDef {\n  name: string;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent OuiSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n  // eslint-disable-next-line\n  selector: '[oui-sort-header]',\n  exportAs: 'ouiSortHeader',\n  templateUrl: 'sort-header.html',\n  styleUrls: ['sort-header.scss'],\n  host: {\n    '(click)': '_handleClick()',\n    '(mouseenter)': '_setIndicatorHintVisible(true)',\n    '(longpress)': '_setIndicatorHintVisible(true)',\n    '(mouseleave)': '_setIndicatorHintVisible(false)',\n    '[attr.aria-sort]': '_getAriaSortAttribute()',\n    '[class.oui-sort-header-disabled]': '_isDisabled()',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled'],\n  animations: [\n    ouiSortAnimations.indicator,\n    ouiSortAnimations.leftPointer,\n    ouiSortAnimations.rightPointer,\n    ouiSortAnimations.arrowOpacity,\n    ouiSortAnimations.arrowPosition,\n    ouiSortAnimations.allowChildren,\n  ],\n  standalone: false,\n})\nexport class OuiSortHeader\n  extends _OuiSortHeaderMixinBase\n  implements CanDisable, OuiSortable, OnDestroy, OnInit\n{\n  _intl = inject(OuiSortHeaderIntl);\n  protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected _differs = inject(IterableDiffers);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n  _sort = inject(OuiSort, { optional: true })!;\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n  _columnDef = inject<OuiSortHeaderColumnDef>(\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n    'OUI_SORT_HEADER_COLUMN_DEF' as any,\n    { optional: true }\n  );\n  private _elementRef = inject(ElementRef);\n\n  private _rerenderSubscription: Subscription;\n\n  /**\n   * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n   * provide an affordance that the header is sortable by showing on focus and hover.\n   */\n  _showIndicatorHint = false;\n\n  /**\n   * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n   * position through the animation. If animations are currently disabled, the fromState is removed\n   * so that there is no animation displayed.\n   */\n  _viewState: ArrowViewStateTransition;\n\n  /** The direction the arrow should be facing according to the current state. */\n  _arrowDirection: SortDirection = '';\n\n  /**\n   * Whether the view state animation should show the transition between the `from` and `to` states.\n   */\n  _disableViewStateAnimation = false;\n\n  /**\n   * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n   * the column's name.\n   */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('oui-sort-header') id: string;\n\n  /** Sets the position of the arrow that displays when sorted. */\n  @Input() arrowPosition: 'before' | 'after' = 'after';\n\n  /** Overrides the sort start value of the containing OuiSort for this OuiSortable. */\n  @Input() start: 'asc' | 'desc';\n\n  // To set browser tooltip\n  title: string;\n\n  /** Overrides the disable clear value of the containing OuiSort for this OuiSortable. */\n  @Input()\n  get disableClear(): boolean {\n    return this._disableClear;\n  }\n  set disableClear(v) {\n    this._disableClear = coerceBooleanProperty(v);\n  }\n  private _disableClear: boolean;\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  constructor() {\n    const changeDetectorRef = inject(ChangeDetectorRef);\n\n    // Note that we use a string token for the `_columnDef`, because the value is provided both by\n    // `once-ui/table` and `cdk/table` and we can't have the CDK depending on once-ui,\n    // and we want to avoid having the sort header depending on the CDK table because\n    // of this single reference.\n    super();\n    const _intl = this._intl;\n    const _sort = this._sort;\n\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n\n    if (!_sort) {\n      throw getSortHeaderNotContainedWithinSortError();\n    }\n\n    this._rerenderSubscription = merge(\n      _sort.sortChange,\n      _sort._stateChanges,\n      _intl.changes\n    ).subscribe(() => {\n      if (this._isSorted()) {\n        this._updateArrowDirection();\n      }\n\n      // If this header was recently active and now no longer sorted, animate away the arrow.\n      if (\n        !this._isSorted() &&\n        this._viewState &&\n        this._viewState.toState === 'active'\n      ) {\n        this._disableViewStateAnimation = false;\n        this._setAnimationTransitionState({\n          fromState: 'active',\n          toState: this._arrowDirection,\n        });\n      }\n\n      changeDetectorRef.markForCheck();\n    });\n  }\n\n  ngOnInit() {\n    const columnHeading: string = this._elementRef.nativeElement.innerText;\n    this.title = 'Sort by ' + columnHeading;\n    if (!this.id && this._columnDef) {\n      this.id = this._columnDef.name;\n    }\n\n    // Initialize the direction of the arrow and set the view state to be immediately that state.\n    this._updateArrowDirection();\n    this._setAnimationTransitionState({\n      toState: this._isSorted() ? 'active' : this._arrowDirection,\n    });\n\n    this._sort.register(this);\n  }\n\n  ngOnDestroy() {\n    this._sort.deregister(this);\n    this._rerenderSubscription.unsubscribe();\n    this._focusMonitor.stopMonitoring(this.elementRef);\n    this._monitorSubscription.unsubscribe();\n  }\n\n  /**\n   * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n   * user showing what the active sort will become. If set to false, the arrow will fade away.\n   */\n  _setIndicatorHintVisible(visible: boolean) {\n    // No-op if the sort header is disabled - should not make the hint visible.\n    if (this._isDisabled() && visible) {\n      return;\n    }\n\n    this._showIndicatorHint = visible;\n\n    if (!this._isSorted()) {\n      this._updateArrowDirection();\n      if (this._showIndicatorHint) {\n        this._setAnimationTransitionState({\n          fromState: this._arrowDirection,\n          toState: 'hint',\n        });\n      } else {\n        this._setAnimationTransitionState({\n          fromState: 'hint',\n          toState: this._arrowDirection,\n        });\n      }\n    }\n  }\n\n  /**\n   * Sets the animation transition view state for the arrow's position and opacity. If the\n   * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n   * no animation appears.\n   */\n  _setAnimationTransitionState(viewState: ArrowViewStateTransition) {\n    this._viewState = viewState;\n\n    // If the animation for arrow position state (opacity/translation) should be disabled,\n    // remove the fromState so that it jumps right to the toState.\n    if (this._disableViewStateAnimation) {\n      this._viewState = { toState: viewState.toState };\n    }\n  }\n\n  /** Triggers the sort on this sort header and removes the indicator hint. */\n  _handleClick() {\n    if (this._isDisabled()) {\n      return;\n    }\n\n    this._sort.sort(this);\n\n    // Do not show the animation if the header was already shown in the right position.\n    if (\n      this._viewState.toState === 'hint' ||\n      this._viewState.toState === 'active'\n    ) {\n      this._disableViewStateAnimation = true;\n    }\n\n    // If the arrow is now sorted, animate the arrow into place. Otherwise, animate it away into\n    // the direction it is facing.\n    const viewState: ArrowViewStateTransition = this._isSorted()\n      ? { fromState: this._arrowDirection, toState: 'active' }\n      : { fromState: 'active', toState: this._arrowDirection };\n    this._setAnimationTransitionState(viewState);\n\n    this._showIndicatorHint = false;\n  }\n\n  /** Whether this OuiSortHeader is currently sorted in either ascending or descending order. */\n  _isSorted() {\n    return (\n      this._sort.active === this.id &&\n      (this._sort.direction === 'asc' || this._sort.direction === 'desc')\n    );\n  }\n\n  /** Returns the animation state for the arrow direction (indicator and pointers). */\n  _getArrowDirectionState() {\n    return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n  }\n\n  /** Returns the arrow position state (opacity, translation). */\n  _getArrowViewState() {\n    const fromState = this._viewState.fromState;\n    return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n  }\n\n  /**\n   * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n   * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n   * active sorted direction. The reason this is updated through a function is because the direction\n   * should only be changed at specific times - when deactivated but the hint is displayed and when\n   * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n   * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n   * preserving its direction, even though the next sort direction is actually different and should\n   * only be changed once the arrow displays again (hint or activation).\n   */\n  _updateArrowDirection() {\n    this._arrowDirection = this._isSorted()\n      ? this._sort.direction\n      : this.start || this._sort.start;\n  }\n\n  _isDisabled() {\n    return this._sort.disabled || this.disabled;\n  }\n\n  /**\n   * Gets the aria-sort attribute that should be applied to this sort header. If this header\n   * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n   * says that the aria-sort property should only be present on one header at a time, so removing\n   * ensures this is true.\n   */\n  _getAriaSortAttribute() {\n    if (!this._isSorted()) {\n      return null;\n    }\n\n    return this._sort.direction === 'asc' ? 'ascending' : 'descending';\n  }\n}\n","<div\n  class=\"oui-sort-header-container\"\n  [class.oui-sort-header-sorted]=\"_isSorted()\"\n  [class.oui-sort-header-position-before]=\"arrowPosition === 'before'\"\n>\n  <button\n    class=\"oui-sort-header-button\"\n    type=\"button\"\n    [attr.disabled]=\"_isDisabled() || null\"\n    [attr.aria-label]=\"_intl.sortButtonLabel(id)\"\n    (focus)=\"_setIndicatorHintVisible(true)\"\n    (blur)=\"_setIndicatorHintVisible(false)\"\n  >\n    <ng-content></ng-content>\n  </button>\n\n  <div class=\"oui-sort-header-arrow\" [title]=\"title\">\n    <div class=\"oui-sort-arrow-outer\"></div>\n    <div\n      [class.oui-sort-header-arrow-selected]=\"_isSorted()\"\n      [class.oui-sort-header-arrow-faded]=\"!_isSorted()\"\n      [@indicator]=\"_getArrowDirectionState()\"\n    ></div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { OuiSortHeader } from './sort-header';\nimport { OuiSort } from './sort';\nimport { OUI_SORT_HEADER_INTL_PROVIDER } from './sort-header-intl';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [OuiSort, OuiSortHeader],\n  declarations: [OuiSort, OuiSortHeader],\n  providers: [OUI_SORT_HEADER_INTL_PROVIDER],\n})\nexport class OuiSortModule {}\n","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport {\n  CdkCell,\n  CdkCellDef,\n  CdkColumnDef,\n  CdkFooterCell,\n  CdkFooterCellDef,\n  CdkHeaderCell,\n  CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the oui-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n  selector: '[ouiCellDef]',\n  providers: [{ provide: CdkCellDef, useExisting: OuiCellDef }],\n  standalone: false,\n})\nexport class OuiCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the oui-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n  selector: '[ouiHeaderCellDef]',\n  providers: [{ provide: CdkHeaderCellDef, useExisting: OuiHeaderCellDef }],\n  standalone: false,\n})\nexport class OuiHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the oui-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n  selector: '[ouiFooterCellDef]',\n  providers: [{ provide: CdkFooterCellDef, useExisting: OuiFooterCellDef }],\n  standalone: false,\n})\nexport class OuiFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the oui-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n  selector: '[ouiColumnDef]',\n  providers: [\n    { provide: CdkColumnDef, useExisting: OuiColumnDef },\n    { provide: 'OUI_SORT_HEADER_COLUMN_DEF', useExisting: OuiColumnDef },\n  ],\n  standalone: false,\n})\nexport class OuiColumnDef extends CdkColumnDef {\n  /** Unique name for this column. */\n  @Input('ouiColumnDef')\n  get name(): string {\n    return this._name;\n  }\n  set name(name: string) {\n    this._setNameInput(name);\n  }\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'oui-header-cell, th[oui-header-cell]',\n  host: {\n    class: 'oui-header-cell',\n    role: 'columnheader',\n  },\n  standalone: false,\n})\nexport class OuiHeaderCell extends CdkHeaderCell {\n  constructor() {\n    const columnDef = inject(CdkColumnDef);\n    const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(\n      `oui-column-${columnDef.cssClassFriendlyName}`\n    );\n  }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'oui-footer-cell, td[oui-footer-cell]',\n  host: {\n    class: 'oui-footer-cell',\n    role: 'gridcell',\n  },\n  standalone: false,\n})\nexport class OuiFooterCell extends CdkFooterCell {\n  constructor() {\n    const columnDef = inject(CdkColumnDef);\n    const elementRef = inject(ElementRef);\n\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(\n      `oui-column-${columnDef.cssClassFriendlyName}`\n    );\n  }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'oui-cell, td[oui-cell]',\n  host: {\n    class: 'oui-cell',\n    role: 'gridcell',\n    tabindex: '0',\n  },\n  standalone: false,\n})\nexport class OuiCell extends CdkCell {\n  constructor() {\n    const columnDef = inject(CdkColumnDef);\n    const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(\n      `oui-column-${columnDef.cssClassFriendlyName}`\n    );\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Directive,\n  ViewEncapsulation,\n  OnDestroy,\n  ElementRef,\n  NgZone,\n  IterableDiffers,\n  inject,\n} from '@angular/core';\nimport {\n  CDK_ROW_TEMPLATE,\n  CdkFooterRow,\n  CdkFooterRowDef,\n  CdkHeaderRow,\n  CdkHeaderRowDef,\n  CdkRow,\n  CdkRowDef,\n} from '@angular/cdk/table';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Subscription } from 'rxjs';\n\n/**\n * Header row definition for the oui-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n  selector: '[ouiHeaderRowDef]',\n  providers: [{ provide: CdkHeaderRowDef, useExisting: OuiHeaderRowDef }],\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['columns: ouiHeaderRowDef'],\n  standalone: false,\n})\nexport class OuiHeaderRowDef extends CdkHeaderRowDef {}\n\n/**\n * Footer row definition for the oui-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n  selector: '[ouiFooterRowDef]',\n  providers: [{ provide: CdkFooterRowDef, useExisting: OuiFooterRowDef }],\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['columns: ouiFooterRowDef'],\n  standalone: false,\n})\nexport class OuiFooterRowDef extends CdkFooterRowDef {}\n\n/**\n * Data row definition for the oui-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n  selector: '[ouiRowDef]',\n  providers: [{ provide: CdkRowDef, useExisting: OuiRowDef }],\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['columns: ouiRowDefColumns', 'when: ouiRowDefWhen'],\n  standalone: false,\n})\nexport class OuiRowDef<T> extends CdkRowDef<T> {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n  selector: 'oui-header-row, tr[oui-header-row]',\n  template: CDK_ROW_TEMPLATE,\n  host: {\n    class: 'oui-header-row',\n    role: 'row',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'ouiHeaderRow',\n  providers: [{ provide: CdkHeaderRow, useExisting: OuiHeaderRow }],\n  standalone: false,\n})\nexport class OuiHeaderRow extends CdkHeaderRow {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n  selector: 'oui-footer-row, tr[oui-footer-row]',\n  template: CDK_ROW_TEMPLATE,\n  host: {\n    class: 'oui-footer-row',\n    role: 'row',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'ouiFooterRow',\n  providers: [{ provide: CdkFooterRow, useExisting: OuiFooterRow }],\n  standalone: false,\n})\nexport class OuiFooterRow extends CdkFooterRow {}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n  selector: 'oui-row, tr[oui-row]',\n  template: CDK_ROW_TEMPLATE,\n  host: {\n    class: 'oui-row',\n    role: 'row',\n    tabindex: '0',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'ouiRow',\n  providers: [{ provide: CdkRow, useExisting: OuiRow }],\n  standalone: false,\n})\nexport class OuiRow extends CdkRow implements OnDestroy {\n  protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected _differs = inject(IterableDiffers);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n\n  constructor() {\n    super();\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this.elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n  }\n  ngOnDestroy(): void {\n    this._focusMonitor.stopMonitoring(this.elementRef);\n    this._monitorSubscription.unsubscribe();\n  }\n}\n","import {\n  CdkTable,\n  CDK_TABLE,\n  STICKY_POSITIONING_LISTENER,\n} from '@angular/cdk/table';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Directive,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  _DisposeViewRepeaterStrategy,\n  _RecycleViewRepeaterStrategy,\n  _VIEW_REPEATER_STRATEGY,\n} from '@angular/cdk/collections';\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\n@Directive({\n  selector: 'oui-table[recycleRows], table[oui-table][recycleRows]',\n  providers: [\n    {\n      provide: _VIEW_REPEATER_STRATEGY,\n      useClass: _RecycleViewRepeaterStrategy,\n    },\n  ],\n  standalone: false,\n})\nexport class MatRecycleRows {}\n\n/**\n * Wrapper for the CdkTable with Once-UI design styles.\n */\n@Component({\n  selector: 'oui-table, table[oui-table]',\n  exportAs: 'ouiTable',\n  template: `\n    <ng-content select=\"caption\"></ng-content>\n    <ng-content select=\"colgroup, col\"></ng-content>\n    <ng-container headerRowOutlet></ng-container>\n    <ng-container rowOutlet></ng-container>\n    <ng-container noDataRowOutlet></ng-container>\n    <ng-container footerRowOutlet></ng-container>\n  `,\n  styleUrls: ['table.scss'],\n  host: {\n    class: 'oui-table',\n    '[class.oui-table-fixed-layout]': 'fixedLayout',\n  },\n  providers: [\n    { provide: CdkTable, useExisting: OuiTable },\n    { provide: CDK_TABLE, useExisting: OuiTable },\n    // Prevent nested tables from seeing this table's StickyPositioningListener.\n    { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n  ],\n  encapsulation: ViewEncapsulation.None,\n  // See note on CdkTable for explanation on why this uses the default change detection strategy.\n  // eslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  standalone: false,\n})\nexport class OuiTable<T> extends CdkTable<T> {\n  /** Overrides the sticky CSS class set by the `CdkTable`. */\n  protected override stickyCssClass = 'oui-table-sticky';\n\n  /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n  protected override needsPositionStickyOnElement = false;\n}\n","import { _isNumberValue } from '@angular/cdk/coercion';\nimport { DataSource } from '@angular/cdk/table';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  merge,\n  Observable,\n  of as observableOf,\n  Subscription,\n} from 'rxjs';\nimport { OuiPaginator, PageEvent } from '../paginator/public-api';\nimport { OuiSort, Sort } from '../sort/public-api';\nimport { map } from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using OuiSort), and pagination (using OuiPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n */\nexport class OuiTableDataSource<T> extends DataSource<T> {\n  /** Stream that emits when a new data array is set on the data source. */\n  private readonly _data: BehaviorSubject<T[]>;\n\n  /** Stream emitting render data to the table (depends on ordered data changes). */\n  private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n  /** Stream that emits when a new filter string is set on the data source. */\n  private readonly _filter = new BehaviorSubject<string>('');\n\n  /**\n   * Subscription to the changes that should trigger an update to the table's rendered rows, such\n   * as filtering, sorting, pagination, or base data changes.\n   */\n  _renderChangesSubscription = Subscription.EMPTY;\n\n  /**\n   * The filtered set of data that has been matched by the filter string, or all the data if there\n   * is no filter. Useful for knowing the set of data the table represents.\n   * For example, a 'selectAll()' function would likely want to select the set of filtered data\n   * shown to the user rather than all the data.\n   */\n  filteredData: T[];\n\n  /** Array of data that should be rendered by the table, where each object represents one row. */\n  get data() {\n    return this._data.value;\n  }\n  set data(data: T[]) {\n    this._data.next(data);\n  }\n\n  /**\n   * Filter term that should be used to filter out objects from the data array. To override how\n   * data objects match to this filter string, provide a custom function for filterPredicate.\n   */\n  get filter(): string {\n    return this._filter.value;\n  }\n  set filter(filter: string) {\n    this._filter.next(filter);\n  }\n\n  /**\n   * Instance of the OuiSort directive used by the table to control its sorting. Sort changes\n   * emitted by the OuiSort will trigger an update to the table's rendered data.\n   */\n  get sort(): OuiSort | null {\n    return this._sort;\n  }\n  set sort(sort: OuiSort | null) {\n    this._sort = sort;\n    this._updateChangeSubscription();\n  }\n  private _sort: OuiSort | null;\n\n  /**\n   * Instance of the OuiPaginator component used by the table to control what page of the data is\n   * displayed. Page changes emitted by the OuiPaginator will trigger an update to the\n   * table's rendered data.\n   *\n   * Note that the data source uses the paginator's properties to calculate which page of data\n   * should be displayed. If the paginator receives its properties as template inputs,\n   * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n   * initialized before assigning it to this data source.\n   */\n  get paginator(): OuiPaginator | null {\n    return this._paginator;\n  }\n  set paginator(paginator: OuiPaginator | null) {\n    this._paginator = paginator;\n    this._updateChangeSubscription();\n  }\n  private _paginator: OuiPaginator | null;\n\n  /**\n   * Data accessor function that is used for accessing data properties for sorting through\n   * the default sortData function.\n   * This default function assumes that the sort header IDs (which defaults to the column name)\n   * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n   * May be set to a custom function for different behavior.\n   *\n   * @param data Data object that is being accessed.\n   * @param sortHeaderId The name of the column that represents the data.\n   */\n  sortingDataAccessor: (data: T, sortHeaderId: string) => string | number = (\n    data: T,\n    sortHeaderId: string\n  ): string | number => {\n    const value = (data as { [key: string]: any })[sortHeaderId];\n\n    if (_isNumberValue(value)) {\n      const numberValue = Number(value);\n\n      // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n      // leave them as strings. For more info: https://goo.gl/y5vbSg\n      return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n    }\n\n    return value;\n  };\n\n  /**\n   * Gets a sorted copy of the data array based on the state of the OuiSort. Called\n   * after changes are made to the filtered data or when sort changes are emitted from OuiSort.\n   * By default, the function retrieves the active sort and its direction and compares data\n   * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n   * of data ordering.\n   *\n   * @param data The array of data that should be sorted.\n   * @param sort The connected OuiSort that holds the current sort state.\n   */\n  sortData: (data: T[], sort: OuiSort) => T[] = (\n    data: T[],\n    sort: OuiSort\n  ): T[] => {\n    const active = sort.active;\n    const direction = sort.direction;\n    if (!active || direction === '') {\n      return data;\n    }\n\n    return data.sort((a, b) => {\n      const valueA = this.sortingDataAccessor(a, active);\n      const valueB = this.sortingDataAccessor(b, active);\n\n      // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n      // one value exists while the other doesn't. In this case, existing value should come first.\n      // This avoids inconsistent results when comparing values to undefined/null.\n      // If neither value exists, return 0 (equal).\n      let comparatorResult = 0;\n      // eslint-disable-next-line eqeqeq\n      if (valueA != null && valueB != null) {\n        // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n        if (valueA > valueB) {\n          comparatorResult = 1;\n        } else if (valueA < valueB) {\n          comparatorResult = -1;\n        }\n      }\n      // eslint-disable-next-line eqeqeq\n      else if (valueA != null) {\n        comparatorResult = 1;\n      }\n      // eslint-disable-next-line eqeqeq\n      else if (valueB != null) {\n        comparatorResult = -1;\n      }\n      // eslint-disable-next-line eqeqeq\n      return comparatorResult * (direction == 'asc' ? 1 : -1);\n    });\n  };\n\n  /**\n   * Checks if a data object matches the data source's filter string. By default, each data object\n   * is converted to a string of its properties and returns true if the filter has\n   * at least one occurrence in that string. By default, the filter string has its whitespace\n   * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n   * filter matching.\n   *\n   * @param data Data object used to check against the filter.\n   * @param filter Filter string that has been set on the data source.\n   * @returns Whether the filter matches against the data\n   */\n  filterPredicate: (data: T, filter: string) => boolean = (\n    data: T,\n    filter: string\n  ): boolean => {\n    // Transform the data into a lowercase string of all property values.\n    const dataStr = Object.keys(data)\n      .reduce((currentTerm: string, key: string) => {\n        // Use an obscure Unicode character to delimit the words in the concatenated string.\n        // This avoids matches where the values of two columns combined will match the user's query\n        // (e.g. Flute and Stop will match Test). The character is intended to be something\n        // that has a very low chance of being typed in by somebody in a text field. This one in\n        // particular is \"White up-pointing triangle with dot\" from\n        // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n        const dataKey = (data as { [key: string]: any })[key];\n        return `${currentTerm}${dataKey}◬`;\n      }, '')\n      .toLowerCase();\n    // Transform the filter by converting it to lowercase and removing whitespace.\n    const transformedFilter = filter.trim().toLowerCase();\n\n    return dataStr.indexOf(transformedFilter) !== -1;\n  };\n\n  constructor(initialData: T[] = []) {\n    super();\n    this._data = new BehaviorSubject<T[]>(initialData);\n    this._updateChangeSubscription();\n  }\n\n  /**\n   * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n   * changes occur, process the current state of the filter, sort, and pagination along with\n   * the provided base data and send it to the table for rendering.\n   */\n  _updateChangeSubscription() {\n    // Sorting and/or pagination should be watched if OuiSort and/or OuiPaginator are provided.\n    // The events should emit whenever the component emits a change or initializes, or if no\n    // component is provided, a stream with just a null event should be provided.\n    // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n    // pipeline can progress to the next step. Note that the value from these streams are not used,\n    // they purely act as a signal to progress in the pipeline.\n    const sortChange: Observable<Sort | null | void> = this._sort\n      ? (merge(\n          this._sort.sortChange,\n          this._sort.initialized\n        ) as Observable<Sort | void>)\n      : observableOf(null);\n    const pageChange: Observable<PageEvent | null | void> = this._paginator\n      ? (merge(\n          this._paginator.page,\n          this._paginator.initialized\n        ) as Observable<PageEvent | void>)\n      : observableOf(null);\n\n    const dataStream = this._data;\n    // Watch for base data or filter changes to provide a filtered set of data.\n    const filteredData = combineLatest([dataStream, this._filter]).pipe(\n      map(([data]) => this._filterData(data))\n    );\n    // Watch for filtered data or sort changes to provide an ordered set of data.\n    const orderedData = combineLatest([filteredData, sortChange]).pipe(\n      map(([data]) => this._orderData(data))\n    );\n    // Watch for ordered data or page changes to provide a paged set of data.\n    const paginatedData = combineLatest([orderedData, pageChange]).pipe(\n      map(([data]) => this._pageData(data))\n    );\n    // Watched for paged data changes and send the result to the table to render.\n    this._renderChangesSubscription.unsubscribe();\n    this._renderChangesSubscription = paginatedData.subscribe((data) =>\n      this._renderData.next(data)\n    );\n  }\n\n  /**\n   * Returns a filtered data array where each filter object contains the filter string within\n   * the result of the filterTermAccessor function. If no filter is set, returns the data array\n   * as provided.\n   */\n  _filterData(data: T[]) {\n    // If there is a filter string, filter out data that does not contain it.\n    // Each data object is converted to a string using the function defined by filterTermAccessor.\n    // May be overridden for customization.\n    this.filteredData = !this.filter\n      ? data\n      : data.filter((obj) => this.filterPredicate(obj, this.filter));\n\n    if (this.paginator) {\n      this._updatePaginator(this.filteredData.length);\n    }\n\n    return this.filteredData;\n  }\n\n  /**\n   * Returns a sorted copy of the data if OuiSort has a sort applied, otherwise just returns the\n   * data array as provided. Uses the default data accessor for data lookup, unless a\n   * sortDataAccessor function is defined.\n   */\n  _orderData(data: T[]): T[] {\n    // If there is no active sort or direction, return the data without trying to sort.\n    if (!this.sort) {\n      return data;\n    }\n\n    return this.sortData(data.slice(), this.sort);\n  }\n\n  /**\n   * Returns a paged splice of the provided data array according to the provided OuiPaginator's page\n   * index and length. If there is no paginator provided, returns the data array as provided.\n   */\n  _pageData(data: T[]): T[] {\n    if (!this.paginator) {\n      return data;\n    }\n\n    const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n    return data.slice().splice(startIndex, this.paginator.pageSize);\n  }\n\n  /**\n   * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n   * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n   * guard against making property changes within a round of change detection.\n   */\n  _updatePaginator(filteredDataLength: number) {\n    Promise.resolve().then(() => {\n      if (!this.paginator) {\n        return;\n      }\n\n      this.paginator.length = filteredDataLength;\n\n      // If the page index is set beyond the page, reduce it to the last page.\n      if (this.paginator.pageIndex > 0) {\n        const lastPageIndex =\n          Math.ceil(this.paginator.length / this.paginator.pageSize) - 1 || 0;\n        this.paginator.pageIndex = Math.min(\n          this.paginator.pageIndex,\n          lastPageIndex\n        );\n      }\n    });\n  }\n\n  /**\n   * Used by the OuiTable. Called when it connects to the data source.\n   *\n   * @docs-private\n   */\n  connect() {\n    return this._renderData;\n  }\n\n  /**\n   * Used by the OuiTable. Called when it is destroyed. No-op.\n   *\n   * @docs-private\n   */\n  disconnect() {}\n}\n","import { NgModule } from '@angular/core';\nimport { OuiTable } from './table';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport {\n  _DisposeViewRepeaterStrategy,\n  _VIEW_REPEATER_STRATEGY,\n} from '@angular/cdk/collections';\nimport {\n  OuiCell,\n  OuiCellDef,\n  OuiColumnDef,\n  OuiFooterCell,\n  OuiFooterCellDef,\n  OuiHeaderCell,\n  OuiHeaderCellDef,\n} from './cell';\nimport {\n  OuiFooterRow,\n  OuiFooterRowDef,\n  OuiHeaderRow,\n  OuiHeaderRowDef,\n  OuiRow,\n  OuiRowDef,\n} from './row';\nimport { CommonModule } from '@angular/common';\n\nconst EXPORTED_DECLARATIONS = [\n  // Table\n  OuiTable,\n\n  // Template defs\n  OuiHeaderCellDef,\n  OuiHeaderRowDef,\n  OuiColumnDef,\n  OuiCellDef,\n  OuiRowDef,\n  OuiFooterCellDef,\n  OuiFooterRowDef,\n\n  // Cell directives\n  OuiHeaderCell,\n  OuiCell,\n  OuiFooterCell,\n\n  // Row directions\n  OuiHeaderRow,\n  OuiRow,\n  OuiFooterRow,\n];\n\n@NgModule({\n  imports: [CdkTableModule, CommonModule],\n  exports: EXPORTED_DECLARATIONS,\n  declarations: EXPORTED_DECLARATIONS,\n  providers: [\n    {\n      provide: _VIEW_REPEATER_STRATEGY,\n      useClass: _DisposeViewRepeaterStrategy,\n    },\n  ],\n})\nexport class OuiTableModule {}\n","import {\n  Component,\n  ElementRef,\n  ChangeDetectionStrategy,\n  Input,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { mixinColor } from '../core';\n\nexport class OuiProgressSpinnerBase {\n  constructor(public _elementRef: ElementRef) {}\n}\nexport const _OuiProgressSpinnerMixinBase: typeof OuiProgressSpinnerBase =\n  mixinColor(OuiProgressSpinnerBase);\n\n/** Possible mode for a progress spinner. */\nexport type ProgressSpinnerMode = 'determinate' | 'indeterminate';\n\n/**\n * Base reference size of the spinner.\n *\n * @docs-private\n */\nconst BASE_SIZE = 15;\n\n/**\n * Base reference stroke width of the spinner.\n *\n * @docs-private\n */\nconst BASE_STROKE_WIDTH = 2;\n\nconst INDETERMINATE_ANIMATION_TEMPLATE = `\n @keyframes oui-progress-spinner-stroke-rotate-DIAMETER {\n    0%      { stroke-dashoffset: START_VALUE;  transform: rotate(0); }\n    12.5%   { stroke-dashoffset: END_VALUE;    transform: rotate(0); }\n    12.5001%  { stroke-dashoffset: END_VALUE;    transform: rotateX(180deg) rotate(72.5deg); }\n    25%     { stroke-dashoffset: START_VALUE;  transform: rotateX(180deg) rotate(72.5deg); }\n\n    25.0001%   { stroke-dashoffset: START_VALUE;  transform: rotate(270deg); }\n    37.5%   { stroke-dashoffset: END_VALUE;    transform: rotate(270deg); }\n    37.5001%  { stroke-dashoffset: END_VALUE;    transform: rotateX(180deg) rotate(161.5deg); }\n    50%     { stroke-dashoffset: START_VALUE;  transform: rotateX(180deg) rotate(161.5deg); }\n\n    50.0001%  { stroke-dashoffset: START_VALUE;  transform: rotate(180deg); }\n    62.5%   { stroke-dashoffset: END_VALUE;    transform: rotate(180deg); }\n    62.5001%  { stroke-dashoffset: END_VALUE;    transform: rotateX(180deg) rotate(251.5deg); }\n    75%     { stroke-dashoffset: START_VALUE;  transform: rotateX(180deg) rotate(251.5deg); }\n\n    75.0001%  { stroke-dashoffset: START_VALUE;  transform: rotate(90deg); }\n    87.5%   { stroke-dashoffset: END_VALUE;    transform: rotate(90deg); }\n    87.5001%  { stroke-dashoffset: END_VALUE;    transform: rotateX(180deg) rotate(341.5deg); }\n    100%    { stroke-dashoffset: START_VALUE;  transform: rotateX(180deg) rotate(341.5deg); }\n  }\n`;\n\n@Component({\n  templateUrl: './progress-spinner.html',\n  selector: 'oui-progress-spinner',\n  exportAs: 'OuiProgressSpinner',\n  styleUrls: ['progress-spinner.scss'],\n  host: {\n    class: 'oui-progress-spinner',\n    '[style.width.px]': 'diameter',\n    '[style.height.px]': 'diameter',\n    '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n    '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n    '[attr.aria-valuenow]': 'value',\n    '[attr.mode]': 'mode',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class OuiProgressSpinner extends _OuiProgressSpinnerMixinBase {\n  private _document = inject(DOCUMENT, { optional: true })!;\n\n  private static diameters = new Set<number>([BASE_SIZE]);\n  private static styleTag: HTMLStyleElement | null = null;\n  private _value = 0;\n  private _strokeWidth: number;\n\n  @Input() color = 'primary';\n  @Input()\n  get diameter(): number {\n    return this._diameter;\n  }\n  set diameter(size: number) {\n    this._diameter = coerceNumberProperty(size);\n    if (!OuiProgressSpinner.diameters.has(this._diameter)) {\n      this._attachStyleNode();\n    }\n  }\n  private _diameter = BASE_SIZE;\n\n  /** Mode of the progress circle */\n  mode: ProgressSpinnerMode = 'indeterminate';\n\n  @Input()\n  get value(): number {\n    return this.mode === 'determinate' ? this._value : 0;\n  }\n  set value(newValue: number) {\n    this._value = Math.max(0, Math.min(100, coerceNumberProperty(newValue)));\n    this.mode = 'determinate';\n  }\n\n  @Input() get strokeWidth(): number {\n    return this._strokeWidth || BASE_STROKE_WIDTH;\n  }\n  set strokeWidth(value: number) {\n    this._strokeWidth = coerceNumberProperty(value);\n  }\n\n  constructor() {\n    const _elementRef = inject(ElementRef);\n\n    super(_elementRef);\n  }\n\n  /** The radius of the spinner, adjusted for stroke width. */\n  get _circleRadius() {\n    return (this.diameter - this.strokeWidth) / 2;\n  }\n\n  /** The view box of the spinner's svg element. */\n  get _viewBox() {\n    const viewBox = this._circleRadius * 2 + this.strokeWidth;\n    return `0 0 ${viewBox} ${viewBox}`;\n  }\n  get _circleStrokeWidth() {\n    return (this.strokeWidth / this.diameter) * 100;\n  }\n\n  /** The stroke circumference of the svg circle. */\n  get _strokeCircumference(): number {\n    return 2 * Math.PI * this._circleRadius;\n  }\n\n  /** The dash offset of the svg circle. */\n  get _strokeDashOffset() {\n    if (this.mode === 'determinate') {\n      return (this._strokeCircumference * (100 - this._value)) / 100;\n    }\n\n    // In fallback mode set the circle to 80% and rotate it with CSS.\n    if (this.mode === 'indeterminate') {\n      return this._strokeCircumference * 0.2;\n    }\n\n    return null;\n  }\n\n  /** Dynamically generates a style tag containing the correct animation for this diameter. */\n  private _attachStyleNode(): void {\n    let styleTag = OuiProgressSpinner.styleTag;\n\n    if (!styleTag) {\n      styleTag = this._document.createElement('style');\n      this._document.head.appendChild(styleTag);\n      OuiProgressSpinner.styleTag = styleTag;\n    }\n\n    if (styleTag && styleTag.sheet) {\n      (styleTag.sheet as CSSStyleSheet).insertRule(this._getAnimationText(), 0);\n    }\n\n    OuiProgressSpinner.diameters.add(this.diameter);\n  }\n\n  /** Generates animation styles adjusted for the spinner's diameter. */\n  private _getAnimationText(): string {\n    return (\n      INDETERMINATE_ANIMATION_TEMPLATE\n        // Animation should begin at 5% and end at 80%\n        .replace(/START_VALUE/g, `${0.95 * this._strokeCircumference}`)\n        .replace(/END_VALUE/g, `${0.2 * this._strokeCircumference}`)\n        .replace(/DIAMETER/g, `${this.diameter}`)\n    );\n  }\n}\n","<svg\n  [style.width.px]=\"diameter\"\n  [style.height.px]=\"diameter\"\n  [attr.viewBox]=\"_viewBox\"\n>\n  <circle\n    cx=\"50%\"\n    cy=\"50%\"\n    [attr.r]=\"_circleRadius\"\n    [style.animation-name]=\"\n      mode === 'indeterminate'\n        ? 'oui-progress-spinner-stroke-rotate-' + diameter\n        : 'none'\n    \"\n    [style.stroke-dashoffset.px]=\"_strokeDashOffset\"\n    [style.stroke-dasharray.px]=\"_strokeCircumference\"\n    [style.stroke-width.%]=\"_circleStrokeWidth\"\n  ></circle>\n</svg>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OuiProgressSpinner } from './progress-spinner';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [OuiProgressSpinner],\n  exports: [OuiProgressSpinner],\n})\nexport class OuiProgressSpinnerModule {}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { mixinColor } from '../core';\nimport { Subscription } from 'rxjs';\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n/**\n * Provider Expression that allows oui-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n *\n * @docs-private\n */\nexport const OUI_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => OuiRadioGroup),\n  multi: true,\n};\n\n/** Change event object emitted by OuiRadio and OuiRadioGroup. */\nexport class OuiRadioChange {\n  constructor(\n    /** The OuiRadioButton that emits the change event. */\n    public source: OuiRadioButton,\n    /** The value of the OuiRadioButton. */\n    public value: any\n  ) {}\n}\n\n// Boilerplate for applying mixins to OuiRadioGroup.\n/** @docs-private */\nexport class OuiRadioGroupBase {}\n\n/**\n * A group of radio buttons. May contain one or more `<oui-radio-button>` elements.\n */\n@Component({\n  selector: 'oui-radio-group',\n  exportAs: 'ouiRadioGroup',\n  template: ` <ng-content></ng-content> `,\n  providers: [OUI_RADIO_GROUP_CONTROL_VALUE_ACCESSOR],\n  host: {\n    role: 'radiogroup',\n    class: 'oui-radio-group',\n  },\n  standalone: false,\n})\nexport class OuiRadioGroup implements AfterContentInit, ControlValueAccessor {\n  private _changeDetector = inject(ChangeDetectorRef);\n\n  /**\n   * Event emitted when the group value changes.\n   * Change events are only emitted when the value changes due to user interaction with\n   * a radio button (the same behavior as `<input type-\"radio\">`).\n   */\n  @Output()\n  readonly change: EventEmitter<OuiRadioChange> =\n    new EventEmitter<OuiRadioChange>();\n\n  /** Child radio buttons. */\n  @ContentChildren(forwardRef(() => OuiRadioButton), { descendants: true })\n  _radios: QueryList<OuiRadioButton>;\n  /** Selected value for the radio group. */\n  private _value: any = null;\n\n  /** The HTML name attribute applied to radio buttons in this group. */\n  private _name = `oui-radio-group-${nextUniqueId++}`;\n\n  /** The currently selected radio button. Should match value. */\n  private _selected: OuiRadioButton | null = null;\n\n  /** Whether the `value` has been set to its initial value. */\n  private _isInitialized = false;\n\n  /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n  private _labelPosition: 'before' | 'after' = 'after';\n\n  /** Whether the radio group is disabled. */\n  private _disabled = false;\n\n  /** Whether the radio group is required. */\n  private _required = false;\n\n  /** The method to be called in order to update ngModel */\n  _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n  /**\n   * onTouch function registered via registerOnTouch (ControlValueAccessor).\n   *\n   * @docs-private\n   */\n  onTouched: () => any = () => {};\n\n  /** Name of the radio button group. All radio buttons inside this group will use this name. */\n  @Input()\n  get name(): string {\n    return this._name;\n  }\n  set name(value: string) {\n    this._name = value;\n    this._updateRadioButtonNames();\n  }\n\n  /** Whether the labels should appear after or before the radio-buttons. Defaults to `after` */\n  @Input()\n  get labelPosition(): 'before' | 'after' {\n    return this._labelPosition;\n  }\n  set labelPosition(v) {\n    this._labelPosition = v === 'before' ? 'before' : 'after';\n    this._markRadiosForCheck();\n  }\n\n  /**\n   * Value for the radio-group. Should equal the value of the selected radio button if there is\n   * a corresponding radio button with a matching value. If there is not such a corresponding\n   * radio button, this value persists to be applied in case a new radio button is added with a\n   * matching value.\n   */\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(newValue: any) {\n    if (this._value !== newValue) {\n      // Set this before proceeding to ensure no circular loop occurs with selection.\n      this._value = newValue;\n\n      this._updateSelectedRadioFromValue();\n      this._checkSelectedRadioButton();\n    }\n  }\n\n  _checkSelectedRadioButton() {\n    if (this._selected && !this._selected.checked) {\n      this._selected.checked = true;\n    }\n  }\n\n  /**\n   * The currently selected radio button. If set to a new radio button, the radio group value\n   * will be updated to match the new selected button.\n   */\n  @Input()\n  get selected() {\n    return this._selected;\n  }\n  set selected(selected) {\n    this._selected = selected;\n    this.value = selected ? selected.value : null;\n    this._checkSelectedRadioButton();\n  }\n\n  /** Whether the radio group is disabled */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value) {\n    this._disabled = coerceBooleanProperty(value);\n    this._markRadiosForCheck();\n  }\n\n  /** Whether the radio group is required */\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n    this._markRadiosForCheck();\n  }\n\n  constructor() {}\n\n  /**\n   * Initialize properties once content children are available.\n   * This allows us to propagate relevant attributes to associated buttons.\n   */\n  ngAfterContentInit() {\n    // Mark this component as initialized in AfterContentInit because the initial value can\n    // possibly be set by NgModel on OuiRadioGroup, and it is possible that the OnInit of the\n    // NgModel occurs *after* the OnInit of the OuiRadioGroup.\n    this._isInitialized = true;\n  }\n\n  /**\n   * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n   * radio buttons upon their blur.\n   */\n  _touch() {\n    if (this.onTouched) {\n      this.onTouched();\n    }\n  }\n\n  private _updateRadioButtonNames(): void {\n    if (this._radios) {\n      this._radios.forEach((radio) => {\n        radio.name = this.name;\n      });\n    }\n  }\n\n  /** Updates the `selected` radio button from the internal _value state. */\n  private _updateSelectedRadioFromValue(): void {\n    // If the value already matches the selected radio, do nothing.\n    const isAlreadySelected =\n      this._selected !== null && this._selected.value === this._value;\n\n    if (this._radios && !isAlreadySelected) {\n      this._selected = null;\n      this._radios.forEach((radio) => {\n        radio.checked = this.value === radio.value;\n        if (radio.checked) {\n          this._selected = radio;\n        }\n      });\n    }\n  }\n\n  /** Dispatch change event with current selection and group value. */\n  _emitChangeEvent(): void {\n    if (this._isInitialized) {\n      this.change.emit(new OuiRadioChange(this._selected!, this._value));\n    }\n  }\n\n  _markRadiosForCheck() {\n    if (this._radios) {\n      this._radios.forEach((radio) => radio._markForCheck());\n    }\n  }\n\n  /**\n   * Sets the model value. Implemented as part of ControlValueAccessor.\n   *\n   * @param value\n   */\n  writeValue(value: any) {\n    this.value = value;\n    this._changeDetector.markForCheck();\n  }\n\n  /**\n   * Registers a callback to be triggered when the model value changes.\n   * Implemented as part of ControlValueAccessor.\n   *\n   * @param fn Callback to be registered.\n   */\n  registerOnChange(fn: (value: any) => void) {\n    this._controlValueAccessorChangeFn = fn;\n  }\n\n  /**\n   * Registers a callback to be triggered when the control is touched.\n   * Implemented as part of ControlValueAccessor.\n   *\n   * @param fn Callback to be registered.\n   */\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n   *\n   * @param isDisabled Whether the control should be disabled.\n   */\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this._changeDetector.markForCheck();\n  }\n}\n\n// Boilerplate for applying mixins to OuiRadioButton.\n/** @docs-private */\nexport class OuiRadioButtonBase {\n  // Since the disabled property is manually defined for the OuiRadioButton and isn't set up in\n  // the mixin base class. To be able to use the tabindex mixin, a disabled property must be\n  // defined to properly work.\n  // disabled: boolean;\n\n  constructor(public _elementRef: ElementRef<HTMLElement>) {}\n}\n\nexport const OuiRadioButtonMixinBase: typeof OuiRadioButtonBase =\n  mixinColor(OuiRadioButtonBase);\n\n@Component({\n  selector: 'oui-radio-button',\n  templateUrl: 'radio.html',\n  styleUrls: ['radio.scss'],\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'ouiRadioButton',\n  host: {\n    class: 'oui-radio-button',\n    '[class.oui-radio-checked]': 'checked',\n    '[class.oui-radio-disabled]': 'disabled',\n    '[class._oui-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n    '[attr.tabindex]': 'null',\n    '[attr.id]': 'id',\n    // Note: under normal conditions focus shouldn't land on this element, however it may be\n    // programmatically set, for example inside of a focus trap, in this case we want to forward\n    // the focus to the native element.\n    '(focus)': '_inputElement.nativeElement.focus()',\n    '(click)': '_fireInputChange()',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class OuiRadioButton\n  extends OuiRadioButtonMixinBase\n  implements OnInit, AfterViewInit, OnDestroy\n{\n  private _changeDetector = inject(ChangeDetectorRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _radioDispatcher = inject(UniqueSelectionDispatcher);\n  _animationMode? = inject(ANIMATION_MODULE_TYPE, { optional: true });\n\n  private _uniqueId = `oui-radio-${++nextUniqueId}`;\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n  /**\n   * Implemented as part of CanColor.\n   */\n  @Input() color = 'primary';\n  /** The unique ID for the radio button. */\n  @Input() id: string = this._uniqueId;\n\n  /** Analog to HTML `name` attribute used to group radios for unique selection. */\n  @Input() name: string;\n\n  /** Used to set the `aria-label` attribute on the underlying input element. */\n  @Input('aria-label') ariaLabel: string;\n\n  /** The `aria-labelledby` attribute takes precedence as the element text alternative. */\n  @Input('aria-labelledby') ariaLabelledby: string;\n  /** The `aria-labelledby` attribute takes precedence as the element text alternative. */\n  @Input() tabIndex: number;\n\n  /** The  `aria-describedby` attribute is read after the element label and field type. */\n  @Input('aria-describedby') ariaDescribedby: string;\n\n  /** Whether this radio button is checked. */\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    const newCheckedState = coerceBooleanProperty(value);\n    if (this._checked !== newCheckedState) {\n      this._checked = newCheckedState;\n      if (\n        newCheckedState &&\n        this.radioGroup &&\n        this.radioGroup.value !== this.value\n      ) {\n        this.radioGroup.selected = this;\n      } else if (\n        !newCheckedState &&\n        this.radioGroup &&\n        this.radioGroup.value === this.value\n      ) {\n        // When unchecking the selected radio button, update the selected radio\n        // property on the group.\n        this.radioGroup.selected = null;\n      }\n\n      if (newCheckedState) {\n        // Notify all radio buttons with the same name to un-check.\n        this._radioDispatcher.notify(this.id, this.name);\n      }\n      this._changeDetector.markForCheck();\n    }\n  }\n\n  /** The value of this radio button. */\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(value: any) {\n    if (this._value !== value) {\n      this._value = value;\n      if (this.radioGroup !== null) {\n        if (!this.checked) {\n          // Update checked when the value changed to match the radio group's value\n          this.checked = this.radioGroup.value === value;\n        }\n        if (this.checked) {\n          this.radioGroup.selected = this;\n        }\n      }\n    }\n  }\n\n  /** Whether the label should appear after or before the radio button. Defaults to `after` */\n  @Input()\n  get labelPosition(): 'before' | 'after' {\n    return (\n      this._labelPosition ||\n      (this.radioGroup && this.radioGroup.labelPosition) ||\n      'after'\n    );\n  }\n  set labelPosition(value) {\n    this._labelPosition = value;\n  }\n  private _labelPosition: 'before' | 'after';\n\n  /** Whether the radio button is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return (\n      this._disabled || (this.radioGroup !== null && this.radioGroup.disabled)\n    );\n  }\n  set disabled(value: boolean) {\n    const newDisabledState = coerceBooleanProperty(value);\n    if (this._disabled !== newDisabledState) {\n      this._disabled = newDisabledState;\n      this._changeDetector.markForCheck();\n    }\n  }\n\n  /** Whether the radio button is required. */\n  @Input()\n  get required(): boolean {\n    return this._required || (this.radioGroup && this.radioGroup.required);\n  }\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n  }\n\n  /**\n   * Event emitted when the checked state of this radio button changes.\n   * Change events are only emitted when the value changes due to user interaction with\n   * the radio button (the same behavior as `<input type-\"radio\">`).\n   */\n  @Output()\n  readonly change: EventEmitter<OuiRadioChange> =\n    new EventEmitter<OuiRadioChange>();\n\n  /** The native `<input type=radio>` element */\n  @ViewChild('input') _inputElement: ElementRef<HTMLInputElement>;\n\n  /** The parent radio group. May or may not be present. */\n  radioGroup: OuiRadioGroup;\n\n  /** ID of the native input element inside `<oui-radio-button>` */\n  get inputId(): string {\n    return `${this.id || this._uniqueId}-input`;\n  }\n\n  /** Whether this radio is checked. */\n  private _checked = false;\n\n  /** Whether this radio is disabled. */\n  private _disabled: boolean;\n\n  /** Whether this radio is required. */\n  private _required: boolean;\n\n  /** Value assigned to this radio. */\n  private _value: any = null;\n\n  /** Unregister function for _radioDispatcher */\n  private _removeUniqueSelectionListener: () => void = () => {};\n\n  constructor() {\n    const radioGroup = inject(OuiRadioGroup, { optional: true })!;\n    const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    super(elementRef);\n    const _radioDispatcher = this._radioDispatcher;\n\n    // Assertions. Ideally these should be stripped out by the compiler.\n    // TODO(jelbourn): Assert that there's no name binding AND a parent radio group.\n    this.radioGroup = radioGroup;\n\n    this._removeUniqueSelectionListener = _radioDispatcher.listen(\n      (id: string, name: string) => {\n        if (id !== this.id && name === this.name) {\n          this.checked = false;\n        }\n      }\n    );\n  }\n\n  /** Focuses the radio button. */\n  focus(): void {\n    this._focusMonitor.focusVia(this._inputElement, 'keyboard');\n  }\n\n  _fireInputChange(): void {\n    if (!this.disabled) {\n      const event = document.createEvent('Event');\n      event.initEvent('change', false, true);\n      this._inputElement.nativeElement.dispatchEvent(event);\n    }\n  }\n\n  /**\n   * Marks the radio button as needing checking for change detection.\n   * This method is exposed because the parent radio group will directly\n   * update bound properties of the radio button.\n   */\n  _markForCheck() {\n    // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n    // update radio button's status\n    this._changeDetector.markForCheck();\n  }\n\n  ngOnInit() {\n    if (this.radioGroup) {\n      // If the radio is inside a radio group, determine if it should be checked\n      this.checked = this.radioGroup.value === this._value;\n      // Copy name from parent radio group\n      this.name = this.radioGroup.name;\n    }\n  }\n\n  ngAfterViewInit() {\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this._elementRef, true)\n      .subscribe((focusOrigin) => {\n        if (!focusOrigin && this.radioGroup) {\n          this.radioGroup._touch();\n        }\n      });\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n    this._removeUniqueSelectionListener();\n    this._monitorSubscription.unsubscribe();\n  }\n\n  /** Dispatch change event with current value. */\n  private _emitChangeEvent(): void {\n    this.change.emit(new OuiRadioChange(this, this._value));\n  }\n\n  _onInputClick(event: Event) {\n    // We have to stop propagation for click events on the visual hidden input element.\n    // By default, when a user clicks on a label element, a generated click event will be\n    // dispatched on the associated input element. Since we are using a label element as our\n    // root container, the click event on the `radio-button` will be executed twice.\n    // The real click event will bubble up, and the generated click event also tries to bubble up.\n    // This will lead to multiple click events.\n    // Preventing bubbling for the second event will solve that issue.\n    event.stopPropagation();\n  }\n\n  /**\n   * Triggered when the radio button received a click or the input recognized any change.\n   * Clicking on a label element, will trigger a change event on the associated input.\n   */\n  _onInputChange(event: Event) {\n    // We always have to stop propagation on the change event.\n    // Otherwise the change event, from the input element, will bubble up and\n    // emit its event object to the `change` output.\n    event.stopPropagation();\n    const groupValueChanged =\n      this.radioGroup && this.value !== this.radioGroup.value;\n    this.checked = true;\n    this._changeDetector.detectChanges();\n    this._emitChangeEvent();\n\n    if (this.radioGroup) {\n      this.radioGroup._controlValueAccessorChangeFn(this.value);\n      this.radioGroup._touch();\n      if (groupValueChanged) {\n        this.radioGroup._emitChangeEvent();\n      }\n    }\n  }\n}\n","<label class=\"oui-radio-label\" [attr.for]=\"inputId\">\n  <div class=\"oui-radio-container\">\n    <div class=\"oui-radio-outer-circle\"></div>\n    <div class=\"oui-radio-inner-circle\"></div>\n    <input\n      #input\n      class=\"oui-radio-input oui-visually-hidden\"\n      (change)=\"_onInputChange($event)\"\n      (click)=\"_onInputClick($event)\"\n      type=\"radio\"\n      [checked]=\"checked\"\n      [disabled]=\"disabled\"\n      [required]=\"required\"\n      [attr.aria-label]=\"ariaLabel\"\n      [attr.aria-labelledby]=\"ariaLabelledby\"\n      [attr.aria-describedby]=\"ariaDescribedby\"\n      [id]=\"inputId\"\n      [tabIndex]=\"tabIndex\"\n      [attr.name]=\"name\"\n    />\n  </div>\n  <div\n    class=\"oui-radio-label-content\"\n    [class.oui-radio-label-before]=\"labelPosition === 'before'\"\n  >\n    <span style=\"display: none\">&nbsp;</span><ng-content></ng-content>\n  </div>\n</label>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { OuiRadioGroup, OuiRadioButton } from './radio';\n\n@NgModule({\n  declarations: [OuiRadioGroup, OuiRadioButton],\n  imports: [CommonModule, ObserversModule, OverlayModule],\n  exports: [OuiRadioGroup, OuiRadioButton],\n})\nexport class OuiRadioModule {}\n","import {\n  Component,\n  ElementRef,\n  ChangeDetectionStrategy,\n  Input,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { mixinColor } from '../core';\n\nexport class OuiProgressBarBase {\n  constructor(public _elementRef: ElementRef) {}\n}\nexport const _OuiProgressBarMixinBase: typeof OuiProgressBarBase =\n  mixinColor(OuiProgressBarBase);\n\n/** Possible mode for a progress spinner. */\nexport type ProgressBarMode = 'determinate' | 'indeterminate';\n\n@Component({\n  templateUrl: './progress-bar.html',\n  selector: 'oui-progress-bar',\n  exportAs: 'OuiProgressBar',\n  styleUrls: ['progress-bar.scss'],\n  host: {\n    class: 'oui-progress-bar',\n    '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n    '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n    '[attr.aria-valuenow]': 'value',\n    '[attr.mode]': 'mode',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class OuiProgressBar extends _OuiProgressBarMixinBase {\n  private _value = 0;\n  private _strokeWidth: number;\n\n  @Input() color = 'primary';\n\n  /** Mode of the progress circle */\n  mode: ProgressBarMode = 'indeterminate';\n\n  @Input()\n  get value(): number {\n    return this.mode === 'determinate' ? this._value : 0;\n  }\n  set value(newValue: number) {\n    this._value = Math.max(0, Math.min(100, coerceNumberProperty(newValue)));\n    this.mode = 'determinate';\n  }\n\n  @Input() get strokeWidth(): number {\n    return this._strokeWidth;\n  }\n  set strokeWidth(value: number) {\n    this._strokeWidth = coerceNumberProperty(value);\n  }\n\n  constructor() {\n    const elementRef = inject(ElementRef);\n\n    super(elementRef);\n  }\n}\n","<div class=\"progress\" [style.height.px]=\"strokeWidth\">\n  <div\n    class=\"progress-bar\"\n    [style.height.px]=\"strokeWidth\"\n    [style.animation-name]=\"mode === 'indeterminate' ? 'loading' : 'none'\"\n    [style.width.%]=\"mode === 'indeterminate' ? ' ' : value\"\n    [style.left.px]=\"mode === 'indeterminate' ? '-200' : '0'\"\n  ></div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OuiProgressBar } from './progress-bar';\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [OuiProgressBar],\n  declarations: [OuiProgressBar],\n})\nexport class OuiProgressBarModule {}\n","import {\n  Directive,\n  TemplateRef,\n  ViewContainerRef,\n  OnDestroy,\n  inject,\n} from '@angular/core';\n// Removed unused portal, sanitizer, and document imports after Angular 20 migration\nimport { Subject } from 'rxjs';\n\n/**\n * Panel content that will be rendered lazily once the panel is opened.\n */\n@Directive({\n  selector: 'ng-template[ouiPanelContent]',\n  standalone: false,\n})\nexport class OuiPanelContent implements OnDestroy {\n  private _template = inject<TemplateRef<any>>(TemplateRef);\n  private _viewContainerRef = inject(ViewContainerRef);\n\n  // Removed TemplatePortal and DomPortalOutlet for Angular 20+ migration\n  private _viewRef: any = null;\n\n  /** Emits when the panel content has been attached. */\n  _attached = new Subject<void>();\n\n  constructor() {}\n\n  /**\n   * Attaches the content with a particular context.\n   */\n  attach(context: any = {}) {\n    this.detach();\n    this._viewRef = this._viewContainerRef.createEmbeddedView(\n      this._template,\n      context\n    );\n    this._attached.next();\n  }\n\n  /**\n   * Detaches the content.\n   */\n  detach() {\n    if (this._viewRef) {\n      this._viewRef.destroy();\n      this._viewRef = null;\n    }\n  }\n\n  ngOnDestroy() {\n    this.detach();\n    this._attached.complete();\n  }\n}\n","/**\n * Throws an exception for the case when panel's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n *\n * @docs-private\n */\nexport function throwOuiPanelInvalidPositionX() {\n  throw Error(`xPosition value must be either 'before' or after'.\n          Example: <oui-panel xPosition=\"before\" #panel=\"ouiPanel\"></oui-panel>`);\n}\n\n/**\n * Throws an exception for the case when panel's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n *\n * @docs-private\n */\nexport function throwOuiPanelInvalidPositionY() {\n  throw Error(`yPosition value must be either 'above' or below'.\n          Example: <oui-panel yPosition=\"above\" #panel=\"ouiPanel\"></oui-panel>`);\n}\n","import { EventEmitter, TemplateRef, InjectionToken } from '@angular/core';\nimport { PanelPositionX, PanelPositionY } from './panel-positions';\nimport { OuiPanelContent } from './panel-content';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n *\n * @docs-private\n */\nexport const OUI_PANEL_OVERLAY = new InjectionToken<OuiPanelOverlay>(\n  'OUI_PANEL_OVERLAY'\n);\n\n/**\n * Interface for a custom menu panel that can be used with `ouiMenuTriggerFor`.\n *\n * @docs-private\n */\nexport interface OuiPanelOverlay {\n  xPosition: PanelPositionX;\n  yPosition: PanelPositionY;\n  templateRef: TemplateRef<any>;\n  closed: EventEmitter<void>;\n  setPositionClasses?: (x: PanelPositionX, y: PanelPositionY) => void;\n  lazyContent?: OuiPanelContent;\n  mouseLeave: Observable<MouseEvent>;\n  mouseEnter: Observable<MouseEvent>;\n  escapeEvent: Subject<void>;\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type PanelPositionX = 'before' | 'after';\n\nexport type PanelPositionY = 'above' | 'below';\n\nconst PANEL_OFFSET_X = 28;\nconst PANEL_OFFSET_Y = 34;\n\nexport class PanelFlexiblePosition {\n  private _afterAbove: ConnectedPosition[] = [\n    {\n      originX: 'start',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'bottom',\n      offsetY: PANEL_OFFSET_Y,\n      offsetX: PANEL_OFFSET_X,\n    },\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'bottom',\n      offsetY: PANEL_OFFSET_Y,\n      offsetX: -PANEL_OFFSET_X,\n    },\n    {\n      originX: 'start',\n      originY: 'bottom',\n      overlayX: 'start',\n      overlayY: 'top',\n      offsetY: -PANEL_OFFSET_Y,\n      offsetX: PANEL_OFFSET_X,\n    },\n    {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'end',\n      overlayY: 'top',\n      offsetY: -PANEL_OFFSET_Y,\n      offsetX: -PANEL_OFFSET_X,\n    },\n  ];\n  private _afterBelow: ConnectedPosition[] = [\n    {\n      originX: 'start',\n      originY: 'bottom',\n      overlayX: 'start',\n      overlayY: 'top',\n      offsetY: -PANEL_OFFSET_Y,\n      offsetX: PANEL_OFFSET_X,\n    },\n    {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'end',\n      overlayY: 'top',\n      offsetY: -PANEL_OFFSET_Y,\n      offsetX: -PANEL_OFFSET_X,\n    },\n    {\n      originX: 'start',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'bottom',\n      offsetY: PANEL_OFFSET_Y,\n      offsetX: PANEL_OFFSET_X,\n    },\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'bottom',\n      offsetY: PANEL_OFFSET_Y,\n      offsetX: -PANEL_OFFSET_X,\n    },\n  ];\n  private _beforeAbove: ConnectedPosition[] = [\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'bottom',\n      offsetY: PANEL_OFFSET_Y,\n      offsetX: -PANEL_OFFSET_X,\n    },\n    {\n      originX: 'start',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'bottom',\n      offsetY: PANEL_OFFSET_Y,\n      offsetX: PANEL_OFFSET_X,\n    },\n    {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'end',\n      overlayY: 'top',\n      offsetY: -PANEL_OFFSET_Y,\n      offsetX: -PANEL_OFFSET_X,\n    },\n    {\n      originX: 'start',\n      originY: 'bottom',\n      overlayX: 'start',\n      overlayY: 'top',\n      offsetY: -PANEL_OFFSET_Y,\n      offsetX: PANEL_OFFSET_X,\n    },\n  ];\n  private _beforeBelow: ConnectedPosition[] = [\n    {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'end',\n      overlayY: 'top',\n      offsetY: -PANEL_OFFSET_Y,\n      offsetX: -PANEL_OFFSET_X,\n    },\n    {\n      originX: 'start',\n      originY: 'bottom',\n      overlayX: 'start',\n      overlayY: 'top',\n      offsetY: -PANEL_OFFSET_Y,\n      offsetX: PANEL_OFFSET_X,\n    },\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'bottom',\n      offsetY: PANEL_OFFSET_Y,\n      offsetX: -PANEL_OFFSET_X,\n    },\n    {\n      originX: 'start',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'bottom',\n      offsetY: PANEL_OFFSET_Y,\n      offsetX: PANEL_OFFSET_X,\n    },\n  ];\n  private _xPosition: PanelPositionX;\n  private _yPosition: PanelPositionY;\n\n  constructor(xPosition: PanelPositionX, yPosition: PanelPositionY) {\n    this._xPosition = xPosition;\n    this._yPosition = yPosition;\n  }\n\n  getPosition(): ConnectedPosition[] {\n    if (this._xPosition === 'after' && this._yPosition === 'above') {\n      return this._afterAbove;\n    }\n    if (this._xPosition === 'after' && this._yPosition === 'below') {\n      return this._afterBelow;\n    }\n    if (this._xPosition === 'before' && this._yPosition === 'above') {\n      return this._beforeAbove;\n    }\n    if (this._xPosition === 'before' && this._yPosition === 'below') {\n      return this._beforeBelow;\n    }\n  }\n}\n","import {\n  InjectionToken,\n  Directive,\n  OnDestroy,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\nimport {\n  ScrollStrategy,\n  Overlay,\n  OverlayRef,\n  FlexibleConnectedPositionStrategy,\n  OverlayConfig,\n} from '@angular/cdk/overlay';\nimport { Subscription, Observable, Subject } from 'rxjs';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { OuiPanelOverlay } from './panel-overlay';\nimport {\n  PanelPositionY,\n  PanelPositionX,\n  PanelFlexiblePosition,\n} from './panel-positions';\nimport { merge } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\nimport { SPACE } from '@angular/cdk/keycodes';\nimport { FocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\n\n/** Injection token that determines the scroll handling while the panel-overlay is open. */\nexport const OUI_PANEL_SCROLL_STRATEGY = new InjectionToken<\n  () => ScrollStrategy\n>('oui-panel-scroll-strategy');\n\n/** @docs-private */\nexport function OUI_PANEL_SCROLL_STRATEGY_FACTORY(\n  overlay: Overlay\n): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.close();\n}\n\n/** @docs-private */\nexport const OUI_PANEL_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: OUI_PANEL_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: OUI_PANEL_SCROLL_STRATEGY_FACTORY,\n};\n\n/**\n * This directive is intended to be used in conjunction with an oui-panel tag.  It is\n * responsible for toggling the display of the provided panel instance.\n */\n@Directive({\n  selector: `[oui-panel-trigger-for], [ouiPanelTriggerFor]`,\n  host: {\n    'aria-haspopup': 'true',\n    '[attr.aria-expanded]': 'panelOpen || null',\n    '(mouseenter)': '_handleMouseEnter($event)',\n    '(mouseleave)': '_handelMouseLeave($event)',\n    '(keydown)': '_handleKeydown($event)',\n  },\n  exportAs: 'ouiPanelTrigger',\n  standalone: false,\n})\nexport class OuiPanelTrigger implements OnDestroy {\n  private _overlay = inject(Overlay);\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n\n  private _portal: TemplatePortal;\n  private _overlayRef: OverlayRef | null = null;\n  private _panelOpen = false;\n  private _closeSubscription = Subscription.EMPTY;\n  private _hoverSubscription = Subscription.EMPTY;\n  private _keyboardEventSubscription: Subscription = Subscription.EMPTY;\n  private _escapeEventSubscription: Subscription = Subscription.EMPTY;\n  private _panelCloseSubscription = Subscription.EMPTY;\n  private _mouseLeave: Subject<MouseEvent> = new Subject<MouseEvent>();\n  private _mouseEnter: Subject<MouseEvent> = new Subject<MouseEvent>();\n  private _scrollStrategy: () => ScrollStrategy;\n\n  /** The class that traps and manages focus within the panel. */\n  private _focusTrap: FocusTrap;\n\n  /** Element that was focused before the panel was opened. Save this to restore upon close. */\n  private _currentFocusElement: HTMLElement = null;\n\n  /** References the panel instance that the trigger is associated with. */\n  @Input('ouiPanelTriggerFor')\n  get panel() {\n    return this._panel;\n  }\n  set panel(panel: OuiPanelOverlay) {\n    if (panel === this._panel) {\n      return;\n    }\n    this._panel = panel;\n    this._panelCloseSubscription.unsubscribe();\n\n    if (panel) {\n      this._panelCloseSubscription = panel.closed\n        .asObservable()\n        .subscribe(() => {\n          this._destroyPanel();\n        });\n      this._escapeEventSubscription = this.panel.escapeEvent.subscribe(() => {\n        this.closePanel();\n      });\n    }\n  }\n  private _panel: OuiPanelOverlay;\n\n  /** Event emitted when the associated panel is opened. */\n  @Output()\n  readonly panelOpened: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Event emitted when the associated panel is closed. */\n  @Output()\n  readonly panelClosed: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor() {\n    const scrollStrategy = inject(OUI_PANEL_SCROLL_STRATEGY);\n\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  /** Whether the panel is open. */\n  get panelOpen(): boolean {\n    return this._panelOpen;\n  }\n\n  /** Toggles the panel between the open and closed states. */\n  togglePanel(): void {\n    return this._panelOpen ? this.closePanel() : this.openPanel();\n  }\n\n  /** Ensures the option is selected when activated from the keyboard. */\n  _handleKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n    if (keyCode === SPACE) {\n      this.openPanel();\n      this._trapFocus();\n      event.preventDefault();\n      // On tab it will focus on the element itself\n      this._currentFocusElement = event.target as HTMLElement;\n    }\n  }\n\n  /** Opens The Panel */\n  openPanel(): void {\n    if (this._panelOpen) {\n      return;\n    }\n    const overlayRef = this._createOverlay();\n    const overlayConfig = overlayRef.getConfig();\n\n    this._setPosition(\n      overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy\n    );\n    // overlayConfig.hasBackdrop = true;\n    overlayRef.attach(this._getPortal());\n    this._setLargeWidth();\n    this._closeSubscription = this._panelClosingActions().subscribe(() => {\n      this.closePanel('mouserHover');\n    });\n    this._setIsPanelOpen(true);\n  }\n\n  // set state rather than toggle to support triggers sharing a panel\n  private _setIsPanelOpen(isOpen: boolean): void {\n    this._panelOpen = isOpen;\n    if (this._panelOpen) {\n      this.panelOpened.emit();\n    } else {\n      this.panelClosed.emit();\n    }\n  }\n\n  /**\n   * This method creates the overlay from the provided panel's template and saves its\n   * OverlayRef so that it can be attached to the DOM when openPanel is called.\n   */\n  private _createOverlay(): OverlayRef {\n    if (document.querySelector('.oui-panel')) {\n      document.querySelector('.oui-panel').remove();\n    }\n    if (!this._overlayRef) {\n      const config = this._getOverlayConfig();\n      this._subscribeToPositions(\n        config.positionStrategy as FlexibleConnectedPositionStrategy\n      );\n      this._overlayRef = this._overlay.create(config);\n\n      // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n      // Ideally we'd also have our keyboard event logic in here, however doing so will\n      // break anybody that may have implemented the `OuiPanelOverlay` themselves.\n      this._keyboardEventSubscription = this._overlayRef\n        .keydownEvents()\n        .pipe(filter((event) => event.key === 'Escape'))\n        .subscribe(() => this.closePanel());\n    }\n    return this._overlayRef;\n  }\n\n  /**\n   * This method builds the configuration object needed to create the overlay, the OverlayState.\n   *\n   * @returns OverlayConfig\n   */\n  private _getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._overlay\n        .position()\n        .flexibleConnectedTo(this._element)\n        .withLockedPosition()\n        .withTransformOriginOn('.oui-panel-overlay'),\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      scrollStrategy: this._scrollStrategy(),\n      direction: 'ltr',\n    });\n  }\n\n  /**\n   * Listens to changes in the position of the overlay and sets the correct classes\n   * on the menu based on the new position. This ensures the animation origin is always\n   * correct, even if a fallback position is used for the overlay.\n   */\n  private _subscribeToPositions(\n    position: FlexibleConnectedPositionStrategy\n  ): void {\n    if (this.panel.setPositionClasses) {\n      position.positionChanges.subscribe((change) => {\n        const posX: PanelPositionX =\n          change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n        const posY: PanelPositionY =\n          change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n\n        this.panel.setPositionClasses!(posX, posY);\n      });\n    }\n  }\n\n  /**\n   * Sets the appropriate positions on a position strategy\n   * so the overlay connects with the trigger correctly.\n   *\n   * @param positionStrategy Strategy whose position to update.\n   */\n  private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) {\n    const panelPositions = new PanelFlexiblePosition(\n      this.panel.xPosition,\n      this.panel.yPosition\n    );\n    positionStrategy.withPositions(panelPositions.getPosition());\n  }\n  /**  assign large width if overlay element contains img tag */\n  private _setLargeWidth() {\n    const imageTag = this._overlayRef.overlayElement.querySelector('img');\n    if (imageTag) {\n      const content: HTMLDivElement =\n        this._overlayRef.overlayElement.querySelector('.oui-panel-content');\n      content.classList.add('oui-panel-content-large');\n    }\n  }\n\n  /** Cleans up the active subscriptions. */\n  private _cleanUpSubscriptions(): void {\n    this._closeSubscription.unsubscribe();\n    this._hoverSubscription.unsubscribe();\n    this._escapeEventSubscription.unsubscribe();\n    this._keyboardEventSubscription.unsubscribe();\n  }\n\n  /** Closes the menu and does the necessary cleanup. */\n  private _destroyPanel() {\n    if (!this._overlayRef || !this.panelOpen) {\n      return;\n    }\n    this._setIsPanelOpen(false);\n    const panel = this.panel;\n\n    this._closeSubscription.unsubscribe();\n    this._overlayRef.detach();\n\n    if (panel.lazyContent) {\n      panel.lazyContent.detach();\n    }\n  }\n\n  /** Closes The Panel */\n  closePanel(hoverType?) {\n    this.panel.closed.emit();\n    if (!hoverType) {\n      this._restoreFocus();\n    }\n  }\n\n  /** Moves the focus inside the focus trap. */\n  public _trapFocus() {\n    const element: HTMLDivElement =\n      this._overlayRef.overlayElement.querySelector('.oui-panel-content');\n\n    if (!this._focusTrap) {\n      this._focusTrap = this._focusTrapFactory.create(element);\n    }\n    element.focus();\n  }\n\n  /** Restores focus to the element that was focused before the panel opened. */\n  public _restoreFocus() {\n    const toFocus = this._currentFocusElement;\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (toFocus && typeof toFocus.focus === 'function') {\n      toFocus.focus();\n    }\n\n    if (this._focusTrap) {\n      this._focusTrap = null;\n    }\n  }\n\n  /** Gets the portal that should be attached to the overlay. */\n  private _getPortal(): TemplatePortal {\n    // Note that we can avoid this check by keeping the portal on the menu panel.\n    // While it would be cleaner, we'd have to introduce another required method on\n    // `OuiPanelOverlay`, making it harder to consume.\n    if (!this._portal || this._portal.templateRef !== this.panel.templateRef) {\n      this._portal = new TemplatePortal(\n        this.panel.templateRef,\n        this._viewContainerRef\n      );\n    }\n    return this._portal;\n  }\n\n  public _handleMouseEnter(event: MouseEvent): void {\n    // On hover it will focus on the element itself\n    const focusElement = event.target as HTMLElement;\n    this._currentFocusElement = focusElement.querySelector('oui-icon');\n    this._mouseEnter.next(event);\n    this.openPanel();\n    event.stopImmediatePropagation();\n  }\n\n  public _handelMouseLeave(event: MouseEvent): void {\n    this._mouseLeave.next(event);\n    event.stopImmediatePropagation();\n  }\n\n  /** Returns a stream that emits whenever an action that should close the panel occurs. */\n  private _panelClosingActions(): Observable<any> {\n    const detachments = this._overlayRef!.detachments();\n    const mouseLeave = merge(\n      this._mouseLeave.asObservable(),\n      this._mouseEnter.asObservable(),\n      this.panel.mouseLeave,\n      this.panel.mouseEnter\n    ).pipe(\n      debounceTime(200),\n      filter((event) => event.type === 'mouseleave')\n    );\n    return merge(detachments, mouseLeave);\n  }\n\n  ngOnDestroy() {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n    this._cleanUpSubscriptions();\n  }\n}\n","<ng-template>\n  <div\n    class=\"oui-panel\"\n    [ngClass]=\"_classList\"\n    (mouseleave)=\"_handleMouseLeave($event)\"\n    (mouseenter)=\"_handleMouseEnter($event)\"\n    role=\"dialog\"\n  >\n    <div\n      class=\"oui-panel-content\"\n      [ngStyle]=\"{ width: width + 'px' }\"\n      tabindex=\"-1\"\n    >\n      <ng-content></ng-content>\n      <button\n        (click)=\"_handleCloseIcon()\"\n        class=\"close-panel\"\n        aria-label=\"Close\"\n      >\n        <oui-icon svgIcon=\"close-icon_8X8\"></oui-icon>\n      </button>\n    </div>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  Component,\n  InjectionToken,\n  Input,\n  ViewChild,\n  TemplateRef,\n  OnInit,\n  ContentChild,\n  Output,\n  EventEmitter,\n  NgZone,\n  ElementRef,\n  OnDestroy,\n  inject,\n  HostAttributeToken,\n} from '@angular/core';\nimport { PanelPositionX, PanelPositionY } from './panel-positions';\nimport {\n  throwOuiPanelInvalidPositionX,\n  throwOuiPanelInvalidPositionY,\n} from './panel-errors';\nimport { OuiPanelOverlay } from './panel-overlay';\nimport { OuiPanelContent } from './panel-content';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { OuiIconRegistry } from '../icon/icon-registery';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ICONS } from '../core/shared/icons';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n/** Default `oui-panel` options that can be overridden. */\nexport interface OuiPanelDefaultOptions {\n  /** The x-axis position of the menu. */\n  xPosition: PanelPositionX;\n\n  /** The y-axis position of the menu. */\n  yPosition: PanelPositionY;\n}\n\n/** Injection token to be used to override the default options for `oui-menu`. */\nexport const OUI_PANEL_DEFAULT_OPTIONS =\n  new InjectionToken<OuiPanelDefaultOptions>('oui-panel-default-options', {\n    providedIn: 'root',\n    factory: OUI_PANEL_DEFAULT_OPTIONS_FACTORY,\n  });\n\n/** @docs-private */\nexport function OUI_PANEL_DEFAULT_OPTIONS_FACTORY(): OuiPanelDefaultOptions {\n  return {\n    xPosition: 'after',\n    yPosition: 'below',\n  };\n}\n\n@Component({\n  selector: 'oui-panel',\n  templateUrl: 'panel.html',\n  styleUrls: ['panel.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'ouiPanel',\n  standalone: false,\n})\nexport class OuiPanel implements OnInit, OuiPanelOverlay {\n  private _defaultOptions = inject<OuiPanelDefaultOptions>(\n    OUI_PANEL_DEFAULT_OPTIONS\n  );\n\n  private _xPosition: PanelPositionX = this._defaultOptions.xPosition;\n  private _yPosition: PanelPositionY = this._defaultOptions.yPosition;\n  private readonly _mouseLeave: Subject<MouseEvent> = new Subject<MouseEvent>();\n  public mouseLeave: Observable<MouseEvent>;\n  private readonly _mouseEnter: Subject<MouseEvent> = new Subject<MouseEvent>();\n  public mouseEnter: Observable<MouseEvent>;\n  public escapeEvent: Subject<void> = new Subject<void>();\n\n  @Input() width?: number;\n\n  /** Config object to be passed into the menu's ngClass */\n  _classList: { [key: string]: boolean } = {};\n\n  @ViewChild(TemplateRef)\n  templateRef: TemplateRef<any>;\n\n  /**\n   * Panel content that will be rendered lazily.\n   *\n   * @docs-private\n   */\n  @ContentChild(OuiPanelContent)\n  lazyContent: OuiPanelContent;\n\n  /** Event emitted when the menu is closed. */\n  @Output()\n  readonly closed: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Position of the menu in the X axis. */\n  @Input()\n  get xPosition(): PanelPositionX {\n    return this._xPosition;\n  }\n  set xPosition(value: PanelPositionX) {\n    if (value !== 'before' && value !== 'after') {\n      throwOuiPanelInvalidPositionX();\n    }\n    this._xPosition = value;\n    this.setPositionClasses();\n  }\n\n  /** Position of the menu in the Y axis. */\n  @Input()\n  get yPosition(): PanelPositionY {\n    return this._yPosition;\n  }\n  set yPosition(value: PanelPositionY) {\n    if (value !== 'above' && value !== 'below') {\n      throwOuiPanelInvalidPositionY();\n    }\n    this._yPosition = value;\n    this.setPositionClasses();\n  }\n\n  constructor() {\n    this.mouseLeave = this._mouseLeave.asObservable();\n    this.mouseEnter = this._mouseEnter.asObservable();\n  }\n\n  ngOnInit() {\n    this.setPositionClasses();\n  }\n\n  /**\n   * Adds classes to the panel-overlay based on its position. Can be used by\n   * consumers to add specific styling based on the position.\n   *\n   * @param posX Position of the panel along the x axis.\n   * @param posY Position of the panel along the y axis.\n   * @docs-private\n   */\n  setPositionClasses(\n    posX: PanelPositionX = this.xPosition,\n    posY: PanelPositionY = this.yPosition\n  ) {\n    const classes = this._classList;\n    classes['oui-panel-before'] = posX === 'before';\n    classes['oui-panel-after'] = posX === 'after';\n    classes['oui-panel-above'] = posY === 'above';\n    classes['oui-panel-below'] = posY === 'below';\n  }\n\n  public _handleMouseLeave(event: MouseEvent) {\n    this._mouseLeave.next(event);\n  }\n\n  public _handleMouseEnter(event: MouseEvent) {\n    this._mouseEnter.next(event);\n  }\n\n  public _handleCloseIcon() {\n    this.escapeEvent.next();\n  }\n}\n\n@Component({\n  selector: 'oui-panel-icon',\n  template:\n    '<oui-icon svgIcon=\"panel-icon\" class=\"oui-panel-icon\" [tabIndex]=\"-1\"></oui-icon>',\n  styleUrls: ['panel.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'ouiPanelIcon',\n  standalone: false,\n})\nexport class OuiPanelIcon implements OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private ouiIconRegistry = inject(OuiIconRegistry);\n  private domSanitizer = inject(DomSanitizer);\n  private _focusMonitor = inject(FocusMonitor);\n  private _ngZone = inject(NgZone);\n\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n  tabIndex: any;\n\n  constructor() {\n    const tabIndex = inject(new HostAttributeToken('tabindex'), {\n      optional: true,\n    })!;\n\n    this._elementRef.nativeElement.setAttribute('tabindex', '0');\n    this.tabIndex = parseInt(tabIndex, 10) || 0;\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this._elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n\n    this.ouiIconRegistry.addSvgIconLiteral(\n      `panel-icon`,\n      this.domSanitizer.bypassSecurityTrustHtml(ICONS.PANEL_ICON)\n    );\n    this.ouiIconRegistry.addSvgIconLiteral(\n      `close-icon_8X8`,\n      this.domSanitizer.bypassSecurityTrustHtml(ICONS.CLOSE_ICON_8X8)\n    );\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n    this._monitorSubscription.unsubscribe();\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OuiPanelContent } from './panel-content';\nimport { OuiPanel, OuiPanelIcon } from './panel';\nimport {\n  OuiPanelTrigger,\n  OUI_PANEL_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './panel-trigger';\nimport { OuiIconModule } from '../icon/icon.module';\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, OuiIconModule],\n  exports: [OuiPanel, OuiPanelTrigger, OuiPanelContent, OuiPanelIcon],\n  declarations: [OuiPanel, OuiPanelTrigger, OuiPanelContent, OuiPanelIcon],\n  providers: [OUI_PANEL_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class OuiPanelModule {}\n","/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n *\n * @docs-private\n */\nexport function getOuiSelectDynamicMultipleError(): Error {\n  return Error('Cannot change `multiple` mode of select after initialization.');\n}\n\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n *\n * @docs-private\n */\nexport function getOuiSelectNonArrayValueError(): Error {\n  return Error('Value must be an array in multiple-selection mode.');\n}\n\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nexport function getOuiSelectNonFunctionValueError(): Error {\n  return Error('`compareWith` must be a function.');\n}\n","<div\n  cdk-overlay-origin\n  class=\"oui-select-trigger\"\n  aria-hidden=\"true\"\n  (click)=\"toggle()\"\n  #origin=\"cdkOverlayOrigin\"\n  #trigger\n>\n  <div class=\"oui-select-value\" [ngSwitch]=\"empty\">\n    <span class=\"oui-select-placeholder\" *ngSwitchCase=\"true\">\n      <span [innerHTML]=\"placeholder\"></span>\n    </span>\n    <span\n      class=\"oui-select-value-text\"\n      *ngSwitchCase=\"false\"\n      [ngSwitch]=\"!!customTrigger\"\n    >\n      <span\n        id=\"selected-values\"\n        *ngSwitchDefault\n        [innerHTML]=\"triggerValue || placeholder\"\n      ></span>\n      <ng-content select=\"oui-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\n    </span>\n  </div>\n\n  <div class=\"oui-select-arrow-wrapper\">\n    <oui-icon svgIcon=\"select-arrow-icon\" class=\"oui-select-arrow\"></oui-icon>\n  </div>\n</div>\n<ng-template\n  cdk-connected-overlay\n  cdkConnectedOverlayLockPosition\n  cdkConnectedOverlayHasBackdrop\n  cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n  [cdkConnectedOverlayOrigin]=\"origin\"\n  [cdkConnectedOverlayOpen]=\"panelOpen\"\n  [cdkConnectedOverlayMinWidth]=\"_triggerRect?.width\"\n  (backdropClick)=\"close()\"\n  (detach)=\"close()\"\n  (attach)=\"openCdk()\"\n>\n  <div\n    #panel\n    class=\"oui-select-panel {{ cdkConnectionOverlayPanel }}\"\n    [ngClass]=\"panelClass\"\n    (keydown)=\"_handleKeydown($event)\"\n    [class.oui-select-input-outer]=\"ouiSelectInputOuterClassName\"\n    [class.oui-select-has-a-panel]=\"panelClass\"\n    [class.oui-select-large]=\"large\"\n    [class.action-item]=\"actionItems\"\n    [class.single-action-item]=\"singleActionItem\"\n  >\n    <div class=\"oui-select-options\">\n      <div class=\"oui-select-options-wrapper\">\n        <ng-content></ng-content>\n      </div>\n    </div>\n    <div *ngIf=\"singleActionItem\" class=\"oui-select-action-wrapper\">\n      <div class=\"oui-select-action-items single-action-items\">\n        <button\n          #singleButton\n          oui-link-button\n          (click)=\"handleSingleActionItemClick()\"\n        >\n          {{singleActionLabel}}\n        </button>\n      </div>\n    </div>\n    <div *ngIf=\"actionItems\" class=\"oui-select-action-wrapper\">\n      <div class=\"oui-select-action-items\">\n        <button\n          #ddCancelButton\n          oui-link-button\n          color=\"primary\"\n          (click)=\"discardRecentChanges()\"\n        >\n          {{cancelLabel}}</button\n        ><button\n          #ddDoneButton\n          oui-button\n          color=\"primary\"\n          [disabled]=\"disableDoneButton\"\n          (click)=\"doneRecentChanges()\"\n        >\n          {{doneLabel}}\n        </button>\n      </div>\n    </div>\n  </div>\n</ng-template>\n","import { ActiveDescendantKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n  A,\n  DOWN_ARROW,\n  END,\n  ENTER,\n  HOME,\n  LEFT_ARROW,\n  RIGHT_ARROW,\n  SPACE,\n  UP_ARROW,\n  hasModifierKey,\n  TAB,\n} from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay } from '@angular/cdk/overlay';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  Input,\n  isDevMode,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n  HostAttributeToken,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormGroupDirective,\n  NgControl,\n  NgForm,\n} from '@angular/forms';\nimport {\n  _countGroupLabelsBeforeOption,\n  _getOptionScrollPosition,\n  CanDisable,\n  CanDisableCtor,\n  CanUpdateErrorState,\n  CanUpdateErrorStateCtor,\n  HasTabIndex,\n  HasTabIndexCtor,\n  OuiOptionSelectionChange,\n  mixinErrorState,\n  mixinTabIndex,\n  mixinDisabled,\n} from '../core';\nimport { OuiFormField, OuiFormFieldControl } from '../form-field/public-api';\nimport { DOCUMENT } from '@angular/common';\nimport { OUI_OPTION_PARENT_COMPONENT, OuiOption } from '../core/option/option';\nimport { OuiOptgroup } from '../core/option/optgroup';\nimport { ErrorStateMatcher } from '../core/error/error-options';\nimport { defer, merge, Observable, Subject } from 'rxjs';\nimport {\n  distinctUntilChanged,\n  filter,\n  map,\n  startWith,\n  switchMap,\n  take,\n  takeUntil,\n} from 'rxjs/operators';\nimport {\n  getOuiSelectDynamicMultipleError,\n  getOuiSelectNonArrayValueError,\n  getOuiSelectNonFunctionValueError,\n} from './select-errors';\nimport { OuiIconRegistry } from '../icon/icon-registery';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ICONS } from '../core/shared/icons';\n\nlet nextUniqueId = 0;\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n\n/** The height of each select option. */\nexport const SELECT_OPTION_HEIGHT = 40;\n\n/** The panel's padding on the x-axis */\nexport const SELECT_PANEL_PADDING_X = 16;\n\n/** The panel's x axis padding if it is indented (e.g. there is an option group). */\nexport const SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n\n/** The height of the select items in `em` units. */\nexport const SELECT_ITEM_HEIGHT_EM = 3;\n\n/** The total height of the select panel. */\nexport const SELECT_PANEL_HEIGHT = 200;\n\n// TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\n * (SELECT_PANEL_PADDING_X * 1.5) + 20 = 44\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 16px.\n */\nexport let SELECT_MULTIPLE_PANEL_PADDING_X = 0;\n\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n */\nexport const SELECT_PANEL_VIEWPORT_PADDING = 8;\n\n/** Change event object that is emitted when the select value has changed. */\nexport class OuiSelectChange {\n  constructor(\n    /** Reference to the select that emitted the change event. */\n    public source: OuiSelect,\n    /** Current value of the select that emitted the event. */\n    public value: any\n  ) {}\n}\n\n// Boilerplate for applying mixins to OuiSelect.\n/** @docs-private */\nexport class OuiSelectBase {\n  constructor(\n    public _elementRef: ElementRef,\n    public _defaultErrorStateMatcher: ErrorStateMatcher,\n    public _parentForm: NgForm,\n    public _parentFormGroup: FormGroupDirective,\n    public ngControl: NgControl\n  ) {}\n}\n\nexport const _OuiSelectMixinBase: CanDisableCtor &\n  HasTabIndexCtor &\n  CanUpdateErrorStateCtor &\n  typeof OuiSelectBase = mixinTabIndex(\n  mixinDisabled(mixinErrorState(OuiSelectBase))\n);\n\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'oui-select-trigger',\n  standalone: false,\n})\nexport class OuiSelectTrigger {}\n\n@Component({\n  selector: 'oui-select',\n  exportAs: 'ouiSelect',\n  templateUrl: 'select.html',\n  styleUrls: ['select.scss'],\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled', 'tabIndex'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    role: 'listbox',\n    '[attr.id]': 'id',\n    '[attr.tabindex]': 'tabIndex',\n    '[attr.aria-label]': '_getAriaLabel()',\n    '[attr.aria-labelledby]': '_getAriaLabelledby()',\n    '[attr.aria-required]': 'required.toString()',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[attr.aria-invalid]': 'errorState',\n    '[attr.aria-owns]': 'panelOpen ? _optionIds : null',\n    '[attr.aria-multiselectable]': 'multiple',\n    '[attr.aria-describedby]': '_ariaDescribedby || null',\n    '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n    '[class.oui-select-disabled]': 'disabled',\n    '[class.oui-select-invalid]': 'errorState',\n    '[class.oui-select-required]': 'required',\n    '[class.oui-select-empty]': 'empty',\n    class: 'oui-select oui-input',\n    '(keydown)': '_handleKeydown($event)',\n    '(focus)': '_onFocus()',\n    '(blur)': '_onBlur()',\n  },\n  providers: [\n    { provide: OuiFormFieldControl, useExisting: OuiSelect },\n    { provide: OUI_OPTION_PARENT_COMPONENT, useExisting: OuiSelect },\n  ],\n  standalone: false,\n})\nexport class OuiSelect\n  extends _OuiSelectMixinBase\n  implements\n    AfterContentInit,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    DoCheck,\n    ControlValueAccessor,\n    CanDisable,\n    HasTabIndex,\n    OuiFormFieldControl<any>,\n    CanUpdateErrorState\n{\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _ngZone = inject(NgZone);\n  private _focusMonitor = inject(FocusMonitor);\n  private _dir = inject(Directionality, { optional: true })!;\n  private _parentFormField = inject(OuiFormField, { optional: true })!;\n  ngControl: NgControl;\n  private _document = inject(DOCUMENT, { optional: true })!;\n  _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  _ouiIconRegistry = inject(OuiIconRegistry);\n  private _domSanitizer = inject(DomSanitizer);\n\n  /**Holds selected values after done */\n  @Input() savedValues = [];\n  /**Done button disabled until dropdown is dirty */\n  disableDoneButton = true;\n  /** Whether or not the overlay panel is open. */\n  private _panelOpen = false;\n\n  /** Whether filling out the select is required in the form. */\n  private _required = false;\n\n  /** Whether filling out the select is required in the form. */\n  private _actionItems = false;\n  private _singleActionItems = false;\n\n  /** The scroll position of the overlay panel, calculated to center the selected option. */\n  private _scrollTop = 0;\n\n  /** The placeholder displayed in the trigger of the select. */\n  private _placeholder: string;\n\n  /** The label displayed on the cancel button of the select in case of multi-select. */\n  private _cancelLabel = 'Cancel';\n\n  /** The label displayed on the done button of the select in case of multi-select. */\n  private _doneLabel = 'Done';\n\n  /** The label displayed on the singleSelect and multiSelect of the select as a actionItem. */\n  private _singleActionLabel = 'New action button';\n\n  /** Whether the component is in multiple selection mode. */\n  private _multiple = false;\n\n  /** In multiple selection mode, enable Done button even in case of no option selected */\n  private _allowNoSelection = false;\n\n  /** Search input field **/\n  isSearchFieldPresent: boolean;\n\n  /** Unique id for this input. */\n  private _uid = `oui-select-${nextUniqueId++}`;\n\n  /** The last measured value for the trigger's client bounding rect. */\n  _triggerRect: ClientRect;\n\n  /** The aria-describedby attribute on the select for improved a11y. */\n  _ariaDescribedby: string;\n\n  /** The cached font-size of the trigger element. */\n  _triggerFontSize = 0;\n\n  /** Deals with the selection logic. */\n  _selectionModel: SelectionModel<OuiOption>;\n\n  /** Manages keyboard events for options in the panel. */\n  _keyManager: ActiveDescendantKeyManager<OuiOption>;\n\n  /** The IDs of child options to be passed to the aria-owns attribute. */\n  _optionIds = '';\n\n  /** The value of the select panel's transform-origin property. */\n  _transformOrigin = 'top';\n\n  /** If there is search input field a class is added dynamically to the perfect scrollbar **/\n  ouiSelectInputOuterClassName: string;\n\n  /** Adding top class to overlay panel */\n  cdkConnectionOverlayPanel = '';\n\n  /**\n   * The y-offset of the overlay panel in relation to the trigger's top start corner.\n   * This must be adjusted to align the selected option text over the trigger text.\n   * when the panel opens. Will change based on the y-position of the selected option.\n   */\n  _offsetY = 0;\n\n  /**\n   * This position config ensures that the top \"start\" corner of the overlay\n   * is aligned with with the top \"start\" of the origin by default (overlapping\n   * the trigger completely). If the panel cannot fit below the trigger, it\n   * will fall back to a position above the trigger.\n   */\n  _positions = [\n    {\n      originX: 'start',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'top',\n    },\n    {\n      originX: 'start',\n      originY: 'bottom',\n      overlayX: 'start',\n      overlayY: 'bottom',\n    },\n  ];\n  /** Emits whenever the component is destroyed. */\n  private readonly _destroy = new Subject<void>();\n\n  /** Whether the component is disabling centering of the active option over the trigger. */\n  private _disableOptionCentering = false;\n\n  private _focused = false;\n\n  /** A name for this control that can be used by `oui-form-field`. */\n  controlType = 'oui-select';\n\n  /** Trigger that opens the select. */\n  @ViewChild('trigger') trigger: ElementRef;\n\n  /** Trigger that opens the select. */\n  @ViewChild('ddCancelButton', { read: ElementRef }) ddCancelButton: ElementRef;\n\n  /** Trigger that opens the select. */\n  @ViewChild('ddDoneButton', { read: ElementRef }) ddDoneButton: ElementRef;\n\n  /** Trigger that opens the select. */\n  @ViewChild('singleButton', { read: ElementRef }) singleButton: ElementRef;\n\n  /** Panel containing the select options. */\n  @ViewChild('panel', { read: ElementRef }) panel: ElementRef;\n\n  private _value: any;\n\n  /**\n   * Function used to sort the values in a select in multiple mode.\n   * Follows the same logic as `Array.prototype.sort`.\n   */\n  @Input() sortComparator: (\n    a: OuiOption,\n    b: OuiOption,\n    options: OuiOption[]\n  ) => number;\n\n  /** Aria label of the select. If not specified, the placeholder will be used as label. */\n  @Input('aria-label') ariaLabel = '';\n\n  /** Input that can be used to specify the `aria-labelledby` attribute. */\n  @Input('aria-labelledby') ariaLabelledby: string;\n  private _large = false;\n  _monitorSubscription: any;\n  previouslySelected: any[] = [];\n  setSelectedOptions: string[] = [];\n\n  /** Whether the oui-select is of large size. */\n  @Input()\n  get large(): boolean {\n    return this._large;\n  }\n  set large(value) {\n    this._large = coerceBooleanProperty(value);\n    this._changeDetectorRef.markForCheck();\n  }\n\n  private _id: string;\n\n  /** Event emitted when the select panel has been toggled. */\n  @Output()\n  readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  /** Combined stream of all of the child options' change events. */\n  readonly optionSelectionChanges: Observable<OuiOptionSelectionChange> = defer(\n    (): Observable<OuiOptionSelectionChange> => {\n      if (this.options) {\n        return merge(...this.options.map((option) => option.onSelectionChange));\n      }\n\n      return this._ngZone.onStable.asObservable().pipe(\n        take(1),\n        switchMap(() => this.optionSelectionChanges)\n      );\n    }\n  );\n\n  /**\n   * Event that emits whenever the raw value of the select changes. This is here primarily\n   * to facilitate the two-way binding for the `value` input.\n   *\n   * @docs-private\n   */\n  @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n  /** Object used to control when error messages are shown. */\n  @Input() errorStateMatcher: ErrorStateMatcher;\n\n  /** All of the defined select options. */\n  @ContentChildren(OuiOption, { descendants: true })\n  options: QueryList<OuiOption>;\n\n  /** Event emitted when the select has been opened. */\n  // eslint-disable-next-line @angular-eslint/no-output-rename\n  @Output('opened')\n  readonly _openedStream: Observable<void> = this.openedChange.pipe(\n    filter((o) => o),\n    map(() => {})\n  );\n\n  /** Event emitted when the select has been closed. */\n  // eslint-disable-next-line @angular-eslint/no-output-rename\n  @Output('closed')\n  readonly _closedStream: Observable<void> = this.openedChange.pipe(\n    filter((o) => !o),\n    map(() => {\n      this.isSearchFieldPresent = false;\n    })\n  );\n\n  /** Event emitted when the selected value has been changed by the user. */\n  @Output()\n  readonly selectionChange: EventEmitter<OuiSelectChange> =\n    new EventEmitter<OuiSelectChange>();\n\n  /** Event emitted when the selected value has been changed and saved by the user. */\n  @Output()\n  readonly saveSelectionChange: EventEmitter<OuiSelectChange> =\n    new EventEmitter<OuiSelectChange>();\n\n  /** Can pass any method to be triggered on singleActionItem click. */\n  @Output()\n  readonly singleSelectionChange = new EventEmitter<void>();\n\n  /** All of the defined groups of options. */\n  @ContentChildren(OuiOptgroup) optionGroups: QueryList<OuiOptgroup>;\n\n  /** User-supplied override of the trigger element. */\n  @ContentChild(OuiSelectTrigger)\n  customTrigger: OuiSelectTrigger;\n\n  /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n  @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\n\n  /** Overlay pane containing the options. */\n  @ViewChild(CdkConnectedOverlay)\n  overlayDir: CdkConnectedOverlay;\n\n  /** Emits when the panel element is finished transforming in. */\n  _panelDoneAnimatingStream = new Subject<string>();\n\n  /** Comparison function to specify which option is displayed. Defaults to object equality. */\n  private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n  /** Whether the select is focused. */\n  get focused(): boolean {\n    return this._focused || this._panelOpen;\n  }\n  /**\n   * @deprecated Setter to be removed as this property is intended to be readonly.\n   */\n  set focused(value: boolean) {\n    this._focused = value;\n  }\n  /** `View -> model callback called when value changes` */\n  _onChange: (value: any) => void = () => {};\n\n  /** `View -> model callback called when select has been touched` */\n  _onTouched = () => {};\n\n  /** Placeholder to be shown if no value has been selected. */\n  @Input()\n  get placeholder(): string {\n    return this._placeholder;\n  }\n  set placeholder(value: string) {\n    this._placeholder = value;\n    this.stateChanges.next();\n  }\n\n  /** In case of multiple the cancelLabel to be shown on cancel action button. */\n  @Input()\n  get cancelLabel(): string {\n    return this._cancelLabel;\n  }\n  set cancelLabel(value: string) {\n    this._cancelLabel = value;\n    this.stateChanges.next();\n  }\n\n  /** In case of multiple the doneLabel to be shown on apply action button. */\n  @Input()\n  get doneLabel(): string {\n    return this._doneLabel;\n  }\n  set doneLabel(value: string) {\n    this._doneLabel = value;\n    this.stateChanges.next();\n  }\n\n  /** In case of singleSelect and multiSelect the singleActionLabel to be shown on actionItem. */\n  @Input()\n  get singleActionLabel(): string {\n    return this._singleActionLabel;\n  }\n  set singleActionLabel(value: string) {\n    this._singleActionLabel = value;\n    this.stateChanges.next();\n  }\n\n  /** Whether the component is required. */\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n    this.stateChanges.next();\n  }\n\n  /** Whether the user should be allowed to select multiple options. */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    if (this._selectionModel) {\n      throw getOuiSelectDynamicMultipleError();\n    }\n\n    this._multiple = coerceBooleanProperty(value);\n  }\n\n  /** Whether the user should be allowed to select no option in case of multiple options. */\n  @Input()\n  get allowNoSelection(): boolean {\n    return this._allowNoSelection;\n  }\n  set allowNoSelection(value: boolean) {\n    this._allowNoSelection = coerceBooleanProperty(value);\n  }\n\n  /** Whether the action items are required and use saveSelectionChange instead of selectionChange. */\n  @Input()\n  get actionItems(): boolean {\n    return this._actionItems;\n  }\n  set actionItems(value: boolean) {\n    if (this._multiple) {\n      this._actionItems = coerceBooleanProperty(value);\n      this.stateChanges.next();\n    }\n  }\n\n  @Input()\n  get singleActionItem(): boolean {\n    return this._singleActionItems;\n  }\n  set singleActionItem(value: boolean) {\n    this._singleActionItems = coerceBooleanProperty(value);\n    this.stateChanges.next();\n  }\n\n  /** Whether to center the active option over the trigger. */\n  @Input()\n  get disableOptionCentering(): boolean {\n    return this._disableOptionCentering;\n  }\n  set disableOptionCentering(value: boolean) {\n    this._disableOptionCentering = coerceBooleanProperty(value);\n  }\n\n  /**\n   * Function to compare the option values with the selected values. The first argument\n   * is a value from an option. The second is a value from the selection. A boolean\n   * should be returned.\n   */\n  @Input()\n  get compareWith() {\n    return this._compareWith;\n  }\n  set compareWith(fn: (o1: any, o2: any) => boolean) {\n    if (typeof fn !== 'function') {\n      throw getOuiSelectNonFunctionValueError();\n    }\n    this._compareWith = fn;\n    if (this._selectionModel) {\n      // A different comparator means the selection could change.\n      this._initializeSelection();\n    }\n  }\n\n  /** Value of the select control. */\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(newValue: any) {\n    if (newValue !== this._value) {\n      this.writeValue(newValue);\n      this._value = newValue;\n    }\n  }\n\n  /** Unique id of the element. */\n  @Input()\n  get id(): string {\n    return this._id;\n  }\n  set id(value: string) {\n    this._id = value || this._uid;\n    this.stateChanges.next();\n  }\n\n  constructor() {\n    const _defaultErrorStateMatcher = inject(ErrorStateMatcher);\n    const elementRef = inject(ElementRef);\n    const _parentForm = inject(NgForm, { optional: true })!;\n    const _parentFormGroup = inject(FormGroupDirective, { optional: true })!;\n    const ngControl = inject(NgControl, { self: true, optional: true })!;\n    const tabIndex = inject(new HostAttributeToken('tabindex'), {\n      optional: true,\n    })!;\n\n    super(\n      elementRef,\n      _defaultErrorStateMatcher,\n      _parentForm,\n      _parentFormGroup,\n      ngControl\n    );\n    this.ngControl = ngControl;\n\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this._elementRef, true)\n      .subscribe(() => this._ngZone.run(() => {}));\n    this._ouiIconRegistry.addSvgIconLiteral(\n      `select-arrow-icon`,\n      this._domSanitizer.bypassSecurityTrustHtml(ICONS.SELECT_ARROW_ICON)\n    );\n\n    if (this.ngControl) {\n      // Note: we provide the value accessor through here, instead of\n      // the `providers` to avoid running into a circular import.\n      this.ngControl.valueAccessor = this;\n    }\n\n    this.tabIndex = parseInt(tabIndex, 10) || 0;\n\n    // Force setter to be called in case id was not specified.\n    this.id = this.id;\n  }\n\n  ngOnInit() {\n    this._selectionModel = new SelectionModel<OuiOption>(this.multiple);\n    this.stateChanges.next();\n\n    // We need `distinctUntilChanged` here, because some browsers will\n    // fire the animation end event twice for the same animation. See:\n    // https://github.com/angular/angular/issues/24084\n    this._panelDoneAnimatingStream\n      .pipe(distinctUntilChanged(), takeUntil(this._destroy))\n      .subscribe(() => {\n        if (this.panelOpen) {\n          this._scrollTop = 0;\n          this.openedChange.emit(true);\n        } else {\n          this.openedChange.emit(false);\n          this.overlayDir.offsetX = 0;\n          this._changeDetectorRef.markForCheck();\n        }\n      });\n  }\n\n  ngAfterContentInit() {\n    this._initKeyManager();\n\n    this._selectionModel.changed\n      .pipe(takeUntil(this._destroy))\n      .subscribe((event) => {\n        event.added.forEach((option) => option.select());\n        event.removed.forEach((option) => option.deselect());\n      });\n    this.options.changes\n      .pipe(startWith(null), takeUntil(this._destroy))\n      .subscribe(() => {\n        this._resetOptions();\n        this._initializeSelection();\n      });\n  }\n\n  ngDoCheck() {\n    if (this.ngControl) {\n      this.updateErrorState();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n    // the parent form field know to run change detection when the disabled state changes.\n    if (changes.disabled) {\n      this.stateChanges.next();\n    }\n  }\n\n  ngOnDestroy() {\n    this._monitorSubscription.unsubscribe();\n    this._focusMonitor.stopMonitoring(this._elementRef);\n    this._destroy.next();\n    this._destroy.complete();\n    this.stateChanges.complete();\n  }\n\n  /** Toggles the overlay panel open or closed. */\n  toggle(): void {\n    this.disableDoneButton = true;\n    if (this.panelOpen) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  /** Opens the overlay panel. */\n  open(): void {\n    if (\n      this.disabled ||\n      !this.options ||\n      !this.options.length ||\n      this._panelOpen\n    ) {\n      return;\n    }\n\n    this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n\n    this._panelOpen = true;\n    this._keyManager.withHorizontalOrientation(null);\n\n    this._highlightCorrectOption();\n    this._changeDetectorRef.markForCheck();\n    this.openedChange.emit(true);\n    this._elementRef.nativeElement.classList.add(\n      'oui-select-list-options-opened'\n    );\n  }\n\n  /** Closes the overlay panel and focuses the host element. */\n  close(): void {\n    if (this._panelOpen) {\n      this._panelOpen = false;\n      this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n      this._changeDetectorRef.markForCheck();\n      this._onTouched();\n      this.openedChange.emit(false);\n      this._elementRef.nativeElement.classList.remove(\n        'oui-select-list-options-opened'\n      );\n      setTimeout((_) => (this._document.activeElement as HTMLElement)?.blur());\n    }\n  }\n\n  /**\n   * Sets the select's value. Part of the ControlValueAccessor interface\n   * required to integrate with Angular's core forms API.\n   *\n   * @param value New value to be written to the model.\n   */\n  writeValue(value: any): void {\n    if (this.options) {\n      this._setSelectionByValue(value);\n    }\n  }\n\n  /**\n   * Saves a callback function to be invoked when the select's value\n   * changes from user input. Part of the ControlValueAccessor interface\n   * required to integrate with Angular's core forms API.\n   *\n   * @param fn Callback to be triggered when the value changes.\n   */\n  registerOnChange(fn: (value: any) => void): void {\n    this._onChange = fn;\n  }\n\n  /**\n   * Saves a callback function to be invoked when the select is blurred\n   * by the user. Part of the ControlValueAccessor interface required\n   * to integrate with Angular's core forms API.\n   *\n   * @param fn Callback to be triggered when the component has been touched.\n   */\n  registerOnTouched(fn: () => {}): void {\n    this._onTouched = fn;\n  }\n\n  /**\n   * Disables the select. Part of the ControlValueAccessor interface required\n   * to integrate with Angular's core forms API.\n   *\n   * @param isDisabled Sets whether the component is disabled.\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._changeDetectorRef.markForCheck();\n    this.stateChanges.next();\n  }\n\n  /** Whether or not the overlay panel is open. */\n  get panelOpen(): boolean {\n    return this._panelOpen;\n  }\n\n  /** The currently selected option. */\n  get selected(): OuiOption | OuiOption[] {\n    return this.multiple\n      ? this._selectionModel.selected\n      : this._selectionModel.selected[0];\n  }\n\n  /** The value displayed in the trigger. */\n  get triggerValue(): string {\n    if (this.empty) {\n      return '';\n    }\n    if (this._multiple) {\n      const selectedOptions = this._selectionModel.selected.map(\n        (option) => option.viewValueForSelect\n      );\n\n      if (this._isRtl()) {\n        selectedOptions.reverse();\n      }\n      return selectedOptions.join(', ');\n    }\n    return this._selectionModel.selected[0].viewValueForSelect;\n  }\n\n  /** Whether the element is in RTL mode. */\n  _isRtl(): boolean {\n    return this._dir ? this._dir.value === 'rtl' : false;\n  }\n\n  /** Handles all keydown events on the select. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if (!this.disabled) {\n      if (this.panelOpen) {\n        this._handleOpenKeydown(event);\n      } else {\n        this._handleClosedKeydown(event);\n      }\n    }\n  }\n\n  /** Handles keyboard events while the select is closed. */\n  private _handleClosedKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n    const isArrowKey =\n      keyCode === DOWN_ARROW ||\n      keyCode === UP_ARROW ||\n      keyCode === LEFT_ARROW ||\n      keyCode === RIGHT_ARROW;\n    const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n    const manager = this._keyManager;\n\n    // Open the select on ALT + arrow key to match the native <select>\n    if (\n      (isOpenKey && !hasModifierKey(event)) ||\n      ((this.multiple || event.altKey) && isArrowKey)\n    ) {\n      event.preventDefault(); // prevents the page from scrolling down when pressing space\n      this.open();\n    } else if (!this.multiple) {\n      if (keyCode === HOME || keyCode === END) {\n        if (keyCode === HOME) {\n          manager.setFirstItemActive();\n        } else {\n          manager.setLastItemActive();\n        }\n        event.preventDefault();\n      } else {\n        manager.onKeydown(event);\n      }\n    }\n  }\n\n  /** On Tab key press select the buttons at the bottom if singleActionItem is enabled*/\n  singleTabKeySelection(singleButtonFocused) {\n    const singleButtonRef = this.singleButton\n      ?.nativeElement as HTMLButtonElement;\n    const searchQueryString = '.oui-select-search-input';\n    const searchInput = this._document.querySelector(\n      searchQueryString\n    ) as HTMLElement;\n    if (!singleButtonFocused) {\n      setTimeout(() => {\n        singleButtonRef.focus();\n      });\n    } else if (this.isSearchFieldPresent && singleButtonFocused) {\n      searchInput?.focus();\n    } else {\n      this.close();\n    }\n  }\n\n  /** On Tab key press select the buttons at the bottom if actionItems is enabled and searchbar*/\n  private tabKeySelection(focused: boolean, doneDisabled: boolean): void {\n    const searchQueryString = '.oui-select-search-input';\n    const searchInput = this._document.querySelector(\n      searchQueryString\n    ) as HTMLElement;\n    const doneButtonRef = this.ddDoneButton?.nativeElement;\n    const cancelButtonRef = this.ddCancelButton?.nativeElement;\n    if (!focused) {\n      if (!doneDisabled && !doneButtonRef.classList.contains('cdk-focused')) {\n        doneButtonRef.focus();\n      } else if (\n        doneDisabled &&\n        !cancelButtonRef.classList.contains('cdk-focused')\n      ) {\n        cancelButtonRef.focus();\n      } else {\n        cancelButtonRef.focus();\n      }\n    } else {\n      if (doneDisabled && cancelButtonRef.classList.contains('cdk-focused')) {\n        this.close();\n      } else if (\n        !doneDisabled &&\n        cancelButtonRef.classList.contains('cdk-focused')\n      ) {\n        if (this.isSearchFieldPresent) {\n          searchInput?.focus();\n        } else {\n          doneButtonRef.focus();\n        }\n      } else {\n        cancelButtonRef.focus();\n      }\n    }\n  }\n  /** Handles TAB press when panel is open to focus the cancel || done button */\n  tabbedKeyMethod(event: KeyboardEvent) {\n    const manager = this._keyManager;\n    const isTabKey = event.code === 'Tab';\n    const doneDisabled: boolean = this.ddDoneButton?.nativeElement['disabled'];\n    const cancelFocused: boolean =\n      this.ddCancelButton?.nativeElement.classList.contains('cdk-focused');\n    const singleButtonFocused: boolean =\n      this.singleButton?.nativeElement.classList.contains('cdk-focused');\n    if (isTabKey) {\n      if (this.multiple) {\n        event.preventDefault();\n        event.stopPropagation();\n        manager.setActiveItem(-1);\n        if (this.actionItems) {\n          this.tabKeySelection(cancelFocused, doneDisabled);\n        } else if (this.singleActionItem) {\n          this.singleTabKeySelection(singleButtonFocused);\n        }\n      } else if (!this.multiple && this.singleActionItem) {\n        event.preventDefault();\n        event.stopPropagation();\n        manager.setActiveItem(-1);\n        this.singleTabKeySelection(singleButtonFocused);\n      } else {\n        this.close();\n      }\n    }\n  }\n  /**Home || End keys pressed */\n  homeOrEndPressed(\n    keyCode: number,\n    manager: ActiveDescendantKeyManager<OuiOption>\n  ) {\n    if (keyCode === HOME) {\n      manager.setFirstItemActive();\n    } else {\n      manager.setLastItemActive();\n    }\n  }\n  /** Check if search input field is present in select box */\n  searchCheck() {\n    const searchField = <HTMLInputElement>event.target;\n    return (\n      searchField &&\n      searchField.tagName &&\n      searchField.tagName.toLowerCase() === 'input'\n    );\n  }\n  /** Handles keyboard events when the selected is open. */\n  private _handleOpenKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n    const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n    const manager = this._keyManager;\n    const normalNavigationCheck =\n      (keyCode !== TAB || !this.multiple) &&\n      !(keyCode === ENTER || keyCode === SPACE);\n    // Handles TAB press when panel is open to focus the cancel || done button\n    this.tabbedKeyMethod(event);\n    // There is search field inside the list\n    if (this.searchCheck()) {\n      this.isSearchFieldPresent = true;\n      if (keyCode === SPACE) {\n        return;\n      }\n    }\n    if (keyCode === HOME || keyCode === END) {\n      event.preventDefault();\n      this.homeOrEndPressed(keyCode, manager);\n    } else if (isArrowKey && event.altKey) {\n      // Close the select on ALT + arrow key to match the native <select>\n      event.preventDefault();\n      this.close();\n    } else if (\n      (keyCode === ENTER || keyCode === SPACE) &&\n      manager.activeItem &&\n      !hasModifierKey(event)\n    ) {\n      event.preventDefault();\n      manager.activeItem._selectViaInteraction();\n    } else if (this._multiple && keyCode === A && event.ctrlKey) {\n      event.preventDefault();\n      this.handleCtrlKey();\n    } else if (normalNavigationCheck) {\n      // Check for non multiple select dropdown that the key pressed is not Tab, Space, Enter\n      if (!this.isSearchFieldPresent) this.focus();\n      this.handleScrolling(manager, event, isArrowKey, keyCode);\n    }\n  }\n\n  /**\n   * Handle ctrl key\n   */\n  private handleCtrlKey() {\n    const hasDeselectedOptions = this.options.some(\n      (opt) => !opt.disabled && !opt.selected\n    );\n\n    this.options.forEach((option) => {\n      if (!option.disabled) {\n        if (hasDeselectedOptions) {\n          option.select();\n        } else {\n          option.deselect();\n        }\n      }\n    });\n  }\n\n  /**\n   * @param manager\n   * @param event\n   * @param isArrowKey\n   * @param keyCode\n   */\n  private handleScrolling(\n    manager: ActiveDescendantKeyManager<OuiOption>,\n    event: KeyboardEvent,\n    isArrowKey: boolean,\n    keyCode: number\n  ) {\n    const previouslyFocusedIndex = manager.activeItemIndex;\n\n    manager.onKeydown(event);\n\n    if (\n      this._multiple &&\n      isArrowKey &&\n      event.shiftKey &&\n      manager.activeItem &&\n      manager.activeItemIndex !== previouslyFocusedIndex\n    ) {\n      manager.activeItem._selectViaInteraction();\n    }\n    if (isArrowKey && manager.activeItemIndex !== previouslyFocusedIndex) {\n      this._scrollToOption();\n    } else {\n      // First or last\n      if (keyCode === DOWN_ARROW) {\n        manager.setFirstItemActive();\n        this._setScrollTop(0);\n      }\n      if (keyCode === UP_ARROW) {\n        manager.setLastItemActive();\n        this._scrollToOption();\n      }\n    }\n  }\n\n  _onFocus() {\n    if (!this.disabled) {\n      this._focused = true;\n      this.stateChanges.next();\n    }\n  }\n\n  /**\n   * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n   * \"blur\" to the panel when it opens, causing a false positive.\n   */\n  _onBlur() {\n    this._focused = false;\n    // this.isSearchFieldPresent = false;\n\n    if (!this.disabled && !this.panelOpen) {\n      this._onTouched();\n      this._changeDetectorRef.markForCheck();\n      this.stateChanges.next();\n    }\n  }\n\n  /**\n   * Callback that is invoked when the overlay panel has been attached.\n   */\n  _onAttached(): void {\n    this.overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n      this._setPseudoCheckboxPaddingSize();\n      this._changeDetectorRef.detectChanges();\n      this.panel.nativeElement.scrollTop = this._scrollTop;\n    });\n  }\n\n  /** Returns the theme to be used on the panel. */\n  _getPanelTheme(): string {\n    return this._parentFormField ? `oui-${this._parentFormField.color}` : '';\n  }\n\n  // TODO(josephperrott): Remove after 2018 spec updates are fully merged.\n  /** Sets the pseudo checkbox padding size based on the width of the pseudo checkbox. */\n  private _setPseudoCheckboxPaddingSize() {\n    if (!SELECT_MULTIPLE_PANEL_PADDING_X && this.multiple) {\n      const pseudoCheckbox = this.panel.nativeElement.querySelector(\n        '.oui-pseudo-checkbox'\n      );\n      if (pseudoCheckbox) {\n        SELECT_MULTIPLE_PANEL_PADDING_X =\n          SELECT_PANEL_PADDING_X * 1.5 + <number>pseudoCheckbox.offsetWidth;\n      }\n    }\n  }\n\n  /** Whether the select has a value. */\n  get empty(): boolean {\n    return !this._selectionModel || this._selectionModel.isEmpty();\n  }\n\n  private _initializeSelection(): void {\n    // Defer setting the value in order to avoid the \"Expression\n    // has changed after it was checked\" errors from Angular.\n    Promise.resolve().then(() => {\n      this._setSelectionByValue(\n        this.ngControl ? this.ngControl.value : this._value\n      );\n      if (this.multiple) {\n        this._highlightFirstFilteredOption();\n      }\n    });\n  }\n\n  /**\n   * Sets the selected option based on a value. If no option can be\n   * found with the designated value, the select trigger is cleared.\n   */\n  private _setSelectionByValue(value: any): void {\n    if (this.multiple && value) {\n      if (!Array.isArray(value)) {\n        throw getOuiSelectNonArrayValueError();\n      }\n\n      this._selectionModel.clear();\n      value.forEach((currentValue: any) => this._selectValue(currentValue));\n      this._sortValues();\n    } else {\n      this._selectionModel.clear();\n      const correspondingOption = this._selectValue(value);\n      // Shift focus to the active item. Note that we shouldn't do this in multiple\n      // mode, because we don't know what option the user interacted with last.\n      if (correspondingOption) {\n        this._keyManager.setActiveItem(correspondingOption);\n      }\n    }\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Finds and selects and option based on its value.\n   *\n   * @returns Option that has the corresponding value.\n   */\n  private _selectValue(value: any): OuiOption | undefined {\n    const correspondingOption = this.options.find((option: OuiOption) => {\n      try {\n        // Treat null as a special reset value.\n        return option.value != null && this._compareWith(option.value, value);\n      } catch (error) {\n        if (isDevMode()) {\n          // Notify developers of errors in their comparator.\n          console.warn(error);\n        }\n        return false;\n      }\n    });\n\n    if (correspondingOption) {\n      this._selectionModel.select(correspondingOption);\n    }\n\n    return correspondingOption;\n  }\n\n  /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n  private _initKeyManager() {\n    this._keyManager = new ActiveDescendantKeyManager<OuiOption>(this.options)\n      .withTypeAhead()\n      .withVerticalOrientation()\n      .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\n      .withAllowedModifierKeys(['shiftKey']);\n\n    this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(() => {\n      // Restore focus to the trigger before closing. Ensures that the focus\n      // position won't be lost if the user got focus into the overlay.\n      if (!this.singleActionItem) {\n        this.focus();\n        this.close();\n      }\n    });\n\n    this._keyManager.change.pipe(takeUntil(this._destroy)).subscribe(() => {\n      if (this._panelOpen && this.panel) {\n        // Panel is opened\n        // Need not to scroll\n      } else if (\n        !this._panelOpen &&\n        !this.multiple &&\n        this._keyManager.activeItem\n      ) {\n        this._keyManager.activeItem._selectViaInteraction();\n      }\n    });\n  }\n\n  /** Drops current option subscriptions and IDs and resets from scratch. */\n  private _resetOptions(): void {\n    const changedOrDestroyed = merge(this.options.changes, this._destroy);\n    this.optionSelectionChanges\n      .pipe(takeUntil(changedOrDestroyed))\n      .subscribe((event) => {\n        this._onSelect(event.source, event.isUserInput);\n\n        if (event.isUserInput && !this.multiple && this._panelOpen) {\n          this.close();\n          this.focus();\n        }\n      });\n\n    // Listen to changes in the internal state of the options and react accordingly.\n    // Handles cases like the labels of the selected options changing.\n    merge(...this.options.map((option) => option._stateChanges))\n      .pipe(takeUntil(changedOrDestroyed))\n      .subscribe(() => {\n        this._changeDetectorRef.markForCheck();\n        this.stateChanges.next();\n      });\n\n    this._setOptionIds();\n  }\n\n  /** Invoked when an option is clicked. */\n  private _onSelect(option: OuiOption, isUserInput: boolean): void {\n    const wasSelected = this._selectionModel.isSelected(option);\n\n    if (option.value == null && !this._multiple) {\n      option.deselect();\n      this._selectionModel.clear();\n      this._propagateChanges(option.value);\n    } else {\n      if (option.selected) {\n        this._selectionModel.select(option);\n      } else {\n        this._selectionModel.deselect(option);\n      }\n\n      if (isUserInput) {\n        this._keyManager.setActiveItem(option);\n      }\n\n      if (this.multiple) {\n        this._sortValues();\n\n        if (isUserInput) {\n          // In case the user selected the option with their mouse, we\n          // want to restore focus back to the trigger, in order to\n          // prevent the select keyboard controls from clashing with\n          // the ones from `oui-option`.\n          this.focus();\n        }\n      }\n    }\n\n    if (wasSelected !== this._selectionModel.isSelected(option)) {\n      this._propagateChanges();\n    }\n    if (Array.isArray(this.selected) && this.selected.length <= 0) {\n      this.disableDoneButton = true;\n    }\n    if (\n      this.multiple &&\n      isUserInput &&\n      Array.isArray(this.selected) &&\n      this.selected.length > 0\n    ) {\n      this.disableDoneButton = this._isDoneButtonDisabled();\n    }\n    this.stateChanges.next();\n  }\n  discardRecentChanges() {\n    this.value = this.savedValues;\n    this._setSelectionByValue(this.value);\n    this.disableDoneButton = true;\n    this.close();\n  }\n  doneRecentChanges() {\n    this.savedValues = this.value;\n    this.disableDoneButton = true;\n    this.previouslySelected = [...this.setSelectedOptions];\n    this.saveSelectionChange.emit(new OuiSelectChange(this, this.value));\n    this.close();\n  }\n\n  handleSingleActionItemClick() {\n    this.singleSelectionChange.emit();\n    this.close();\n  }\n\n  /** Determine whether the \"Done\" button should be enabled or disabled based on the selection state */\n  _isDoneButtonDisabled() {\n    const selectedItems = (this.selected as OuiOption[]).map(\n      (option) => option.value\n    );\n    if (this.allowNoSelection) {\n      return false;\n    }\n    return selectedItems.length === 0;\n  }\n\n  /** Sorts the selected values in the selected based on their order in the panel. */\n  private _sortValues() {\n    if (this.multiple) {\n      const options = this.options.toArray();\n\n      this._selectionModel.sort((a, b) =>\n        this.sortComparator\n          ? this.sortComparator(a, b, options)\n          : options.indexOf(a) - options.indexOf(b)\n      );\n      this.stateChanges.next();\n    }\n  }\n\n  /** Emits change event to set the model value. */\n  private _propagateChanges(fallbackValue?: any): void {\n    let valueToEmit: any = null;\n\n    if (this.multiple) {\n      valueToEmit = (this.selected as OuiOption[]).map(\n        (option) => option.value\n      );\n    } else {\n      valueToEmit = this.selected\n        ? (this.selected as OuiOption).value\n        : fallbackValue;\n    }\n\n    this._value = valueToEmit;\n    this.valueChange.emit(valueToEmit);\n    this._onChange(valueToEmit);\n    this.selectionChange.emit(new OuiSelectChange(this, valueToEmit));\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Records option IDs to pass to the aria-owns property. */\n  private _setOptionIds() {\n    this._optionIds = this.options.map((option) => option.id).join(' ');\n  }\n\n  /**\n   * Highlights the selected item. If no option is selected, it will highlight\n   * the first item instead.\n   */\n  private _highlightCorrectOption(): void {\n    if (this.multiple) {\n      this._highlightFirstFilteredOption();\n    } else if (this._keyManager) {\n      if (this.empty) {\n        this._keyManager.setFirstItemActive();\n      } else {\n        this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n      }\n    }\n  }\n\n  /**\n   * Highlights the first of the filtered options if no element is currently highlighted\n   */\n  private _highlightFirstFilteredOption(): void {\n    if (this._keyManager) {\n      const activeElement = this._keyManager.activeItem?._getHostElement();\n      // activeElement is not part of DOM if there is no parent element\n      if (!activeElement || !activeElement.parentElement) {\n        // highlight first element if there is no active element or active element is not part of DOM\n        this._keyManager.setFirstItemActive();\n      }\n    }\n  }\n\n  /** Focuses the select element. */\n  focus(): void {\n    this._elementRef.nativeElement.focus();\n  }\n\n  /** Returns the aria-label of the select component. */\n  _getAriaLabel(): string | null {\n    // If an ariaLabelledby value has been set by the consumer, the select should not overwrite the\n    // `aria-labelledby` value by setting the ariaLabel to the placeholder.\n    return this.ariaLabelledby ? null : this.ariaLabel || this.placeholder;\n  }\n\n  /** Returns the aria-labelledby of the select component. */\n  _getAriaLabelledby(): string | null {\n    if (this.ariaLabelledby) {\n      return this.ariaLabelledby;\n    }\n\n    return null;\n  }\n\n  /** Determines the `aria-activedescendant` to be set on the host. */\n  _getAriaActiveDescendant(): string | null {\n    if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n      return this._keyManager.activeItem.id;\n    }\n\n    return null;\n  }\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  setDescribedByIds(ids: string[]) {\n    this._ariaDescribedby = ids.join(' ');\n  }\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  onContainerClick() {\n    this.focus();\n    this.open();\n  }\n\n  /**\n   * Implemented as part of OuiFormFieldControl.\n   *\n   * @docs-private\n   */\n  get shouldLabelFloat(): boolean {\n    return this._panelOpen || !this.empty;\n  }\n\n  /**\n   * Add outer class to perfect scrollbar\n   * This is added only when there is a search field\n   */\n  ouiSelectInputOuter() {\n    this.ouiSelectInputOuterClassName = 'oui-select-input-outer';\n  }\n\n  /**\n   * Custom overlay class for cdk overlay container\n   */\n  openCdk() {\n    this.overlayDir.positionChange.pipe(take(1)).subscribe((e) => {\n      this.cdkConnectionOverlayPanel = '';\n      if (e.connectionPair.originY === 'top') {\n        this.cdkConnectionOverlayPanel = 'select-overlay-top';\n      }\n      this._changeDetectorRef.detectChanges();\n      setTimeout((_) => this._scrollToOption());\n    });\n\n    const cdkOverLayContainer = this._document.querySelector(\n      '.cdk-overlay-container'\n    );\n    const ouiSelectPanel = this._document.querySelector(\n      '.oui-select-panel'\n    ) as HTMLElement;\n    cdkOverLayContainer.classList.add('oui-select-overlay-container');\n    const containerWidth = this._elementRef.nativeElement.offsetWidth;\n    ouiSelectPanel.style.width = `${containerWidth}px`;\n    const searchQueryString = '.oui-select-search-inner';\n    if (this._document.querySelector(searchQueryString)) {\n      this.scrollCalc(searchQueryString);\n    }\n  }\n  scrollCalc(selectQueryString: string) {\n    const searchInput = this._document.querySelector(\n      selectQueryString\n    ) as HTMLElement;\n    const outter = this._document.querySelector(\n      '.oui-select-panel'\n    ) as HTMLElement;\n    let inner = this._document.querySelector('.oui-option') as HTMLElement;\n    if (inner === null) {\n      inner = { offsetWidth: 0 } as HTMLElement;\n    }\n    const scrollbarWidth = outter.offsetWidth - inner.offsetWidth;\n    if (scrollbarWidth > 5) {\n      searchInput.style.width = `${inner.offsetWidth}px`;\n    } else {\n      searchInput.style.width = '100%';\n    }\n  }\n\n  /**\n   * Given that we are not actually focusing active options, we must manually adjust scroll\n   * to reveal options below the fold. First, we find the offset of the option from the top\n   * of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n   * the panel height + the option height, so the active option will be just visible at the\n   * bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n   * will become the offset. If that offset is visible within the panel already, the scrollTop is\n   * not adjusted.\n   */\n  private _scrollToOption(): void {\n    const manager = this._keyManager;\n    const index = manager.activeItemIndex || 0;\n    const labelCount = _countGroupLabelsBeforeOption(\n      index,\n      this.options,\n      this.optionGroups\n    );\n    const selectedOption = manager.activeItem?._getHostElement();\n    const selectActionWrapperElement = this._document.querySelector(\n      '.oui-select-action-wrapper'\n    ) as HTMLElement;\n    const selectPanelElement = this._document.querySelector(\n      '.oui-select-panel'\n    ) as HTMLElement;\n    const selectSearchBox = this._document.querySelector(\n      '.oui-select-search-inner'\n    ) as HTMLElement;\n    const selectOptionsWrapper = this._document.querySelector(\n      '.oui-select-options-wrapper'\n    ) as HTMLElement;\n    const labelHeight = labelCount ? (labelCount - 1) * 10 : 0;\n    const optionHeight = selectedOption?.clientHeight || SELECT_OPTION_HEIGHT;\n    const ouiSelectActionWrapperHeight =\n      selectActionWrapperElement?.clientHeight ?? 0;\n    const selectSearchBoxheight = selectSearchBox?.clientHeight - 10 || 0;\n    const selectPanelHeight =\n      selectPanelElement?.clientHeight -\n        ouiSelectActionWrapperHeight -\n        selectSearchBoxheight -\n        20 -\n        labelHeight || SELECT_PANEL_HEIGHT;\n    const selectOptionsWrapperRect =\n      selectOptionsWrapper?.getBoundingClientRect();\n    const selectedOptionRect = selectedOption?.getBoundingClientRect();\n    const selectedOptionOffset =\n      selectedOptionRect?.top -\n      selectSearchBoxheight -\n      selectOptionsWrapperRect?.top -\n      10;\n    const scrollTop = this._getScrollTop();\n    const newScrollPosition = _getOptionScrollPosition(\n      index + labelCount,\n      optionHeight,\n      scrollTop,\n      selectPanelHeight,\n      selectedOptionOffset\n    );\n    this._setScrollTop(newScrollPosition);\n  }\n\n  /**\n   * Sets the panel scrollTop. This allows us to manually scroll to display options\n   * above or below the fold, as they are not actually being focused when active.\n   */\n  _setScrollTop(scrollTop: number): void {\n    if (this.panel) {\n      this.panel.nativeElement.querySelector('.oui-select-options').scrollTop =\n        scrollTop;\n    }\n  }\n\n  /** Returns the panel's scrollTop. */\n  _getScrollTop(): number {\n    return this.panel\n      ? this.panel.nativeElement.querySelector('.oui-select-options').scrollTop\n      : 0;\n  }\n}\n","/**\n * Pipe for search in drop down\n * Searched drop down options\n * disabled is true when grouping is in array\n */\nimport { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n  name: 'filterOptions',\n  standalone: false,\n})\nexport class FilterPipe implements PipeTransform {\n  transform(items: any[], searchText: string, field: string): any[] {\n    if (!items) {\n      return [];\n    }\n\n    if (!searchText) {\n      return items;\n    }\n\n    return items.filter((it) => {\n      let results;\n      // Support both array and the json object\n      if (it[field]) {\n        results = it[field].toLowerCase().includes(searchText.toLowerCase());\n      } else {\n        results = it.toLowerCase().includes(searchText.toLowerCase());\n      }\n      return results;\n    });\n  }\n}\n","<div class=\"oui-select-search-inner\">\n  <oui-form-field>\n    <input\n      oui-input\n      class=\"oui-select-search-input\"\n      #searchSelectInput\n      (input)=\"onInputChange($event.target.value)\"\n      [attr.aria-label]=\"ariaLabel\"\n      [placeholder]=\"placeholderLabel\"\n      [ngClass]=\"{'right-padding': _value?.length}\"\n    />\n    <div class=\"clear-btn\" *ngIf=\"_value?.length\">\n      <button\n        title=\"Clear\"\n        (click)=\"clearInput()\"\n        aria-label=\"Clear search\"\n        oui-icon-button\n      >\n        <oui-icon svgIcon=\"x-close-small\"></oui-icon>\n      </button>\n    </div>\n  </oui-form-field>\n</div>\n","import {\n  Component,\n  ElementRef,\n  Input,\n  OnInit,\n  ViewChild,\n  AfterViewChecked,\n  forwardRef,\n  OnDestroy,\n  inject,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { OuiSelect } from '../select.component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { takeUntil, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { OuiOption } from '../../core/option/option';\nimport { OuiIconRegistry } from '../../icon/icon-registery';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ICONS } from '../../core/shared/icons';\n\n@Component({\n  selector: 'oui-select-search',\n  templateUrl: './option-search.html',\n  styleUrls: ['./option-search.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => OuiSelectSearchComponent),\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class OuiSelectSearchComponent\n  implements OnInit, AfterViewChecked, ControlValueAccessor, OnDestroy\n{\n  ouiSelect = inject<OuiSelect>(OuiSelect);\n  private _document = inject(DOCUMENT, { optional: true })!;\n  private ouiIconRegistry = inject(OuiIconRegistry);\n  private domSanitizer = inject(DomSanitizer);\n\n  /** Previously selected values when using <oui-select multiple>*/\n  private previousSelectedValues: any[];\n\n  /** Subject that emits when the component has been destroyed. */\n  private _onDestroy = new Subject<void>();\n\n  @Input('aria-label') ariaLabel = 'Type to filter';\n\n  /** Label of the search placeholder */\n  @Input() placeholderLabel = '';\n\n  /** Reference to the search input field */\n  @ViewChild('searchSelectInput', { read: ElementRef, static: true })\n  searchSelectInput: ElementRef;\n  public _value: string;\n  private onChange: (value: any) => void = () => {};\n  onTouched = () => {};\n\n  constructor() {\n    this.ouiIconRegistry.addSvgIconSet(\n      this.domSanitizer.bypassSecurityTrustResourceUrl(\n        'https://cdn.icomoon.io/135790/oncehub-20/symbol-defs.svg?5df5gz'\n      )\n    );\n    this.ouiIconRegistry.addSvgIconLiteral(\n      `close-icon`,\n      this.domSanitizer.bypassSecurityTrustHtml(ICONS.CLOSE_ICON)\n    );\n  }\n  registerOnChange(fn: (value: any) => void) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  ngOnInit() {\n    // when the select dropdown panel is opened or closed\n    this.ouiSelect.openedChange.subscribe((opened) => {\n      if (opened) {\n        // focus the search field when opening\n        this._focus();\n      } else {\n        // clear it when closing\n        this._reset();\n      }\n    });\n    this.initMultipleHandling();\n    this.storeInitialValuesIntoPrevious();\n  }\n  clearInput(): void {\n    this._value = null;\n    this._focus();\n    this._reset();\n  }\n  private storeInitialValuesIntoPrevious() {\n    this.ouiSelect._openedStream\n      .pipe(\n        takeUntil(this._onDestroy),\n        filter(() => this.ouiSelect.multiple)\n      )\n      .subscribe(() => {\n        this.previousSelectedValues = (\n          this.ouiSelect.selected as OuiOption[]\n        ).map((option) => option.value);\n      });\n  }\n\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  writeValue(value: any): void {\n    this.onChange(value);\n  }\n\n  onInputChange(value) {\n    const valueChanged = value !== this._value;\n    if (valueChanged) {\n      this._value = value;\n      this.onChange(value);\n    }\n  }\n  ngAfterViewChecked() {\n    const searchQueryString = '.oui-select-search-inner';\n    if (this._document.querySelector(searchQueryString)) {\n      this.scrollCalc(searchQueryString);\n    }\n  }\n  scrollCalc(selectQueryString: string) {\n    const searchInput = this._document.querySelector(\n      selectQueryString\n    ) as HTMLElement;\n    const outter = this._document.querySelector(\n      '.oui-select-panel'\n    ) as HTMLElement;\n    const inner = this._document.querySelector('.oui-option') as HTMLElement;\n\n    if (inner === null) {\n      // If no options exist, use the full width of the panel\n      searchInput.style.width = '100%';\n      return;\n    }\n    const scrollbarWidth = outter.offsetWidth - inner.offsetWidth;\n    if (scrollbarWidth > 5) {\n      searchInput.style.width = `${inner.offsetWidth}px`;\n    } else {\n      searchInput.style.width = '100%';\n    }\n  }\n\n  /**\n   * Focuses the search input field\n   */\n  public _focus() {\n    if (!this.searchSelectInput) {\n      return;\n    }\n    // focus\n    setTimeout((_) => this.searchSelectInput.nativeElement.focus());\n    this.ouiSelect.ouiSelectInputOuter();\n  }\n\n  /**\n   * Resets the current search value\n   * focus whether to focus after resetting\n   */\n  public _reset(focus?: boolean) {\n    if (!this.searchSelectInput) {\n      return;\n    }\n    this.searchSelectInput.nativeElement.value = '';\n    this.onInputChange('');\n    if (focus) {\n      this._focus();\n    }\n  }\n  private initMultipleHandling() {\n    // In oui-search, if we filter something then the options which has disappeared, will be treated as deselected. To avoid this problem we can store the previously selected value and restore them if those values are not available in visible option.\n    this.ouiSelect.valueChange\n      .pipe(takeUntil(this._onDestroy))\n      .subscribe((values) => {\n        if (this.ouiSelect.multiple) {\n          let restoreSelectedValues = false;\n          if (\n            this._value &&\n            this._value.length &&\n            this.previousSelectedValues &&\n            Array.isArray(this.previousSelectedValues)\n          ) {\n            if (!values || !Array.isArray(values)) {\n              values = [];\n            }\n            const optionValues = this.ouiSelect.options.map(\n              (option) => option.value\n            );\n            this.previousSelectedValues.forEach((previousValue) => {\n              if (\n                values.indexOf(previousValue) === -1 &&\n                optionValues.indexOf(previousValue) === -1\n              ) {\n                // if a value that was selected before is not found in the options due to filtering then it will be treated as deselected\n                // to avoid this we can push them again.\n                values.push(previousValue);\n                restoreSelectedValues = true;\n              }\n            });\n          }\n\n          if (restoreSelectedValues) {\n            this.ouiSelect._onChange(values);\n          }\n\n          this.previousSelectedValues = values;\n        }\n      });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OuiOptionModule } from '../core/option/index';\nimport { OuiInputModule } from '../input/input-module';\nimport { FilterPipe } from './filter.pipe';\nimport { OuiSelectTrigger, OuiSelect } from './select.component';\nimport { OuiSelectSearchComponent } from './search/index';\nimport { OuiIconModule } from '../icon/icon.module';\nimport { OuiButtonModule } from '../button/button-module';\n\n@NgModule({\n  imports: [\n    OuiOptionModule,\n    OverlayModule,\n    OuiInputModule,\n    CommonModule,\n    OuiIconModule,\n    OuiButtonModule,\n  ],\n  exports: [\n    OuiOptionModule,\n    OuiSelectTrigger,\n    OuiSelectSearchComponent,\n    FilterPipe,\n    OuiSelect,\n  ],\n  declarations: [\n    OuiSelectTrigger,\n    OuiSelectSearchComponent,\n    FilterPipe,\n    OuiSelect,\n  ],\n})\nexport class OuiSelectModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectorRef,\n  ViewEncapsulation,\n  AfterContentInit,\n  OnDestroy,\n  NgZone,\n  forwardRef,\n  inject,\n  HostAttributeToken,\n} from '@angular/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { mixinColor } from '../core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nlet nextUniqueId = 0;\n/**\n * Boilerplate for applying mixins to OuiSlideToggle.\n *\n * @docs-private\n */\n/** @docs-private */\nexport const OUI_SLIDE_TOGGLE_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => OuiSlideToggle),\n  multi: true,\n};\n\nexport class OuiSlideToggleBase {\n  constructor(public _elementRef: ElementRef<HTMLElement>) {}\n}\nexport const _OuiSlideToggleMixinBase: typeof OuiSlideToggleBase =\n  mixinColor(OuiSlideToggleBase);\n\n/** Container for form controls that applies Oncehub Design styling and behavior. */\n@Component({\n  selector: 'oui-slide-toggle',\n  exportAs: 'ouiSlideToggle',\n  templateUrl: 'slide-toggle.html',\n  host: {\n    class: 'oui-slide-toggle',\n    '[class.oui-disabled]': 'disabled',\n    '[attr.tabindex]': 'disabled ? null : -1',\n  },\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled', 'tabIndex'],\n  styleUrls: ['./slide-toggle.scss'],\n  providers: [OUI_SLIDE_TOGGLE_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class OuiSlideToggle\n  extends _OuiSlideToggleMixinBase\n  implements AfterContentInit, ControlValueAccessor, OnDestroy\n{\n  protected elementRef: ElementRef<HTMLElement>;\n  private _ngZone = inject(NgZone);\n  private _focusMonitor = inject(FocusMonitor);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  private _checked = false;\n  tabIndex: any;\n  private _monitorSubscription: Subscription = Subscription.EMPTY;\n  private _focusMonitorSubscription: Subscription = Subscription.EMPTY;\n  /** Whether the slide-toggle element is checked or not. */\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value) {\n    this._checked = coerceBooleanProperty(value);\n    this._changeDetectorRef.markForCheck();\n  }\n  @Input()\n  disabled = false;\n  @Input()\n  color = 'primary';\n  @Input()\n  id = `oui-slide-toggletoggle-${++nextUniqueId}`;\n\n  /** Used to set the aria-label attribute on the underlying input element. */\n  @Input('aria-label')\n  ariaLabel: string | null = null;\n\n  /** Used to set the aria-labelledby attribute on the underlying input element. */\n  @Input('aria-labelledby')\n  ariaLabelledby: string | null = null;\n\n  // eslint-disable-next-line @angular-eslint/no-output-rename\n  @Output('state-change')\n  change = new EventEmitter();\n\n  wrapper: ElementRef<HTMLElement>;\n\n  private onChange = (_: any) => {};\n  private onTouched = () => {};\n\n  constructor() {\n    const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n    const tabIndex = inject(new HostAttributeToken('tabindex'), {\n      optional: true,\n    })!;\n\n    super(elementRef);\n    this.elementRef = elementRef;\n\n    this.tabIndex = parseInt(tabIndex, 10) || 0;\n    this._monitorSubscription = this._focusMonitor\n      .monitor(this._elementRef, true)\n      .subscribe(() =>\n        this._ngZone.run(() => {\n          this._changeDetectorRef.markForCheck();\n        })\n      );\n  }\n  ngAfterContentInit() {\n    this._focusMonitorSubscription = this._focusMonitor\n      .monitor(this._elementRef, true)\n      .subscribe((focusOrigin) => {\n        if (!focusOrigin) {\n          Promise.resolve().then(() => this.onTouched());\n        }\n      });\n  }\n\n  emitChange() {\n    if (!this.disabled) {\n      this.toggle();\n      this.onChange(this.checked);\n      this.change.emit(this.checked);\n    }\n  }\n\n  /** Toggles the checked state of the slide-toggle. */\n  toggle() {\n    this.checked = !this.checked;\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  writeValue(value: any): void {\n    this.checked = !!value;\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  /** Implemented as a part of ControlValueAccessor. */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._changeDetectorRef.markForCheck();\n  }\n  /** Focuses the slide-toggle. */\n  focus() {\n    this._focusMonitor.focusVia(this.wrapper.nativeElement, 'keyboard');\n  }\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n    this._monitorSubscription.unsubscribe();\n    this._focusMonitorSubscription.unsubscribe();\n  }\n}\n","<label #wrapper [class.oui-checked]=\"checked\" class=\"oui-slide-toogle-wrapper\">\n  <input\n    [id]=\"id\"\n    (click)=\"emitChange()\"\n    type=\"checkbox\"\n    [attr.aria-label]=\"ariaLabel\"\n    [attr.aria-labelledby]=\"ariaLabelledby\"\n    [attr.aria-checked]=\"checked.toString()\"\n    [disabled]=\"disabled\"\n    [checked]=\"checked\"\n    [tabIndex]=\"tabIndex\"\n  />\n  <span class=\"oui-slider round\"></span>\n</label>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { OuiSlideToggle } from './slide-toggle';\n\n@NgModule({\n  declarations: [OuiSlideToggle],\n  imports: [CommonModule, ObserversModule],\n  exports: [OuiSlideToggle],\n})\nexport class OuiSlideToggleModule {}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  Input,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Component({\n  template: ` <ng-content></ng-content> `,\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[oui-scrollbar]',\n  exportAs: 'OuiScrollbar',\n  styleUrls: ['scrollbar.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'oui-scrollbar-container',\n    '[class.oui-scrollbar-container-large]': 'large',\n  },\n  standalone: false,\n})\nexport class OuiScrollbar {\n  private _large = false;\n\n  /** Whether the oui-select is of large size. */\n  @Input('oui-scrollbar-large')\n  get large(): boolean {\n    return this._large;\n  }\n  set large(value) {\n    this._large = coerceBooleanProperty(value);\n  }\n  constructor() {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OuiScrollbar } from './scrollbar';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [OuiScrollbar],\n  exports: [OuiScrollbar],\n})\nexport class OuiScrollbarModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material tabs.\n * @docs-private\n */\nexport const ouiTabsAnimations: {\n  readonly translateTab: AnimationTriggerMetadata;\n} = {\n  /** Animation translates a tab along the X axis. */\n  translateTab: trigger('translateTab', [\n    // Transitions to `none` instead of 0, because some browsers might blur the content.\n    state(\n      'center, void, left-origin-center, right-origin-center',\n      style({ transform: 'none' })\n    ),\n\n    // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n    // in order to ensure that the element has a height before its state changes. This is\n    // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n    // not have a static height and is not rendered. See related issue: #9465\n    state(\n      'left',\n      style({\n        transform: 'translate3d(-100%, 0, 0)',\n        minHeight: '1px',\n\n        // Normally this is redundant since we detach the content from the DOM, but if the user\n        // opted into keeping the content in the DOM, we have to hide it so it isn't focusable.\n        visibility: 'hidden',\n      })\n    ),\n    state(\n      'right',\n      style({\n        transform: 'translate3d(100%, 0, 0)',\n        minHeight: '1px',\n        visibility: 'hidden',\n      })\n    ),\n\n    transition(\n      '* => left, * => right, left => center, right => center',\n      animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\n    ),\n    transition('void => left-origin-center', [\n      style({ transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden' }),\n      animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'),\n    ]),\n    transition('void => right-origin-center', [\n      style({ transform: 'translate3d(100%, 0, 0)', visibility: 'hidden' }),\n      animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'),\n    ]),\n  ]),\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentFactoryResolver,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n  distinctUntilChanged,\n  // startWith\n} from 'rxjs/operators';\nimport { AnimationEvent } from '@angular/animations';\nimport { ouiTabsAnimations } from './tabs-animations';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * The portal host directive for the contents of the tab.\n * @docs-private\n */\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: `OuiTabBodyHost`,\n  standalone: false,\n})\nexport class OuiTabBodyPortal\n  extends CdkPortalOutlet\n  implements OnInit, OnDestroy\n{\n  /** Subscription to events for when the tab body begins centering. */\n  private _centeringSub = Subscription.EMPTY;\n  /** Subscription to events for when the tab body finishes leaving from center position. */\n  private _leavingSub = Subscription.EMPTY;\n\n  constructor() {\n    const componentFactoryResolver = inject(ComponentFactoryResolver);\n    const viewContainerRef = inject(ViewContainerRef);\n    const _document = inject(DOCUMENT);\n\n    super(componentFactoryResolver, viewContainerRef, _document);\n  }\n\n  /** Set initial visibility or set up subscription for changing visibility. */\n  override ngOnInit(): void {\n    super.ngOnInit();\n  }\n\n  /** Clean up centering subscription. */\n  override ngOnDestroy(): void {\n    super.ngOnDestroy();\n    this._centeringSub.unsubscribe();\n    this._leavingSub.unsubscribe();\n  }\n}\n\n/**\n * These position states are used internally as animation states for the tab body. Setting the\n * position state to left, right, or center will transition the tab body from its current\n * position to its respective state. If there is not current position (void, in the case of a new\n * tab body), then there will be no transition animation to its state.\n *\n * In the case of a new tab body that should immediately be centered with an animating transition,\n * then left-origin-center or right-origin-center can be used, which will use left or right as its\n * pseudo-prior state.\n */\nexport type OuiTabBodyPositionState =\n  | 'left'\n  | 'center'\n  | 'right'\n  | 'left-origin-center'\n  | 'right-origin-center';\n\n/**\n * Wrapper for the contents of a tab.\n * @docs-private\n */\n@Component({\n  selector: 'oui-tab-body',\n  templateUrl: 'tab-body.html',\n  // styleUrls: ['tab-body.css'],\n  encapsulation: ViewEncapsulation.None,\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  animations: [ouiTabsAnimations.translateTab],\n  host: {\n    class: 'oui-mdc-tab-body',\n  },\n  standalone: false,\n})\nexport class OuiTabBody implements OnInit, OnDestroy, OnChanges {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _dir = inject(Directionality, { optional: true })!;\n  private sanitized = inject(DomSanitizer);\n\n  /** Current position of the tab-body in the tab-group. Zero means that the tab is visible. */\n  private _positionIndex: number;\n\n  /** Subscription to the directionality change observable. */\n  private _dirChangeSubscription = Subscription.EMPTY;\n\n  /** Tab body position state. Used by the animation trigger for the current state. */\n  _position: OuiTabBodyPositionState;\n\n  /** Emits when an animation on the tab is complete. */\n  readonly _translateTabComplete = new Subject<AnimationEvent>();\n\n  /** Event emitted when the tab begins to animate towards the center as the active tab. */\n  @Output() readonly _onCentering: EventEmitter<number> =\n    new EventEmitter<number>();\n\n  /** Event emitted before the centering of the tab begins. */\n  @Output() readonly _beforeCentering: EventEmitter<boolean> =\n    new EventEmitter<boolean>();\n\n  /** Event emitted before the centering of the tab begins. */\n  @Output() readonly _afterLeavingCenter: EventEmitter<void> =\n    new EventEmitter<void>();\n\n  /** Event emitted when the tab completes its animation towards the center. */\n  @Output() readonly _onCentered: EventEmitter<void> = new EventEmitter<void>(\n    true\n  );\n\n  /** The portal host inside of this container into which the tab body content will be loaded. */\n  @ViewChild(CdkPortalOutlet) _portalHost: CdkPortalOutlet;\n\n  /** The tab body content to display. */\n  @Input('content') _content: string;\n\n  /** Position that will be used when the tab is immediately becoming visible after creation. */\n  @Input() origin: number | null;\n\n  // Note that the default value will always be overwritten by `OuiTabBody`, but we need one\n  // anyway to prevent the animations module from throwing an error if the body is used on its own.\n  /** Duration for the tab's animation. */\n  @Input() animationDuration = '0ms';\n\n  /** Whether the tab's content should be kept in the DOM while it's off-screen. */\n  @Input() preserveContent = false;\n  _innerContent: any;\n\n  /** The shifted index position of the tab body, where zero represents the active center tab. */\n  @Input()\n  set position(position: number) {\n    this._positionIndex = position;\n    this._computePositionAnimationState();\n  }\n\n  constructor() {\n    const _dir = this._dir;\n    const changeDetectorRef = inject(ChangeDetectorRef);\n\n    if (_dir) {\n      this._dirChangeSubscription = _dir.change.subscribe((dir: Direction) => {\n        this._computePositionAnimationState(dir);\n        changeDetectorRef.markForCheck();\n      });\n    }\n\n    // Ensure that we get unique animation events, because the `.done` callback can get\n    // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n    this._translateTabComplete\n      .pipe(\n        distinctUntilChanged((x, y) => {\n          return x.fromState === y.fromState && x.toState === y.toState;\n        })\n      )\n      .subscribe((event) => {\n        // If the transition to the center is complete, emit an event.\n        if (\n          this._isCenterPosition(event.toState) &&\n          this._isCenterPosition(this._position)\n        ) {\n          this._onCentered.emit();\n        }\n\n        if (\n          this._isCenterPosition(event.fromState) &&\n          !this._isCenterPosition(this._position)\n        ) {\n          this._afterLeavingCenter.emit();\n        }\n      });\n  }\n\n  /**\n   * After initialized, check if the content is centered and has an origin. If so, set the\n   * special position states that transition the tab from the left or right before centering.\n   */\n  ngOnInit() {\n    if (this._position == 'center' && this.origin != null) {\n      this._position = this._computePositionFromOrigin(this.origin);\n    }\n    this._innerContent = this.sanitized.bypassSecurityTrustHtml(\n      this._content ? this._content : ''\n    );\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes._content && changes._content.currentValue) {\n      this._innerContent = this.sanitized.bypassSecurityTrustHtml(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        changes._content.currentValue ? changes._content.currentValue : ''\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    this._dirChangeSubscription.unsubscribe();\n    this._translateTabComplete.complete();\n  }\n\n  _onTranslateTabStarted(event: AnimationEvent): void {\n    const isCentering = this._isCenterPosition(event.toState);\n    this._beforeCentering.emit(isCentering);\n    if (isCentering) {\n      this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n    }\n  }\n\n  /** The text direction of the containing app. */\n  _getLayoutDirection(): Direction {\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n  }\n\n  /** Whether the provided position state is considered center, regardless of origin. */\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n  _isCenterPosition(position: OuiTabBodyPositionState | string): boolean {\n    return (\n      position == 'center' ||\n      position == 'left-origin-center' ||\n      position == 'right-origin-center'\n    );\n  }\n\n  /** Computes the position state that will be used for the tab-body animation trigger. */\n  private _computePositionAnimationState(\n    dir: Direction = this._getLayoutDirection()\n  ) {\n    if (this._positionIndex < 0) {\n      this._position = dir == 'ltr' ? 'left' : 'right';\n    } else if (this._positionIndex > 0) {\n      this._position = dir == 'ltr' ? 'right' : 'left';\n    } else {\n      this._position = 'center';\n    }\n  }\n\n  /**\n   * Computes the position state based on the specified origin position. This is used if the\n   * tab is becoming visible immediately after creation.\n   */\n  private _computePositionFromOrigin(origin: number): OuiTabBodyPositionState {\n    const dir = this._getLayoutDirection();\n\n    if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n      return 'left-origin-center';\n    }\n\n    return 'right-origin-center';\n  }\n}\n\n/**\n * The origin state is an internally used state that is set on a new tab body indicating if it\n * began to the left or right of the prior selected index. For example, if the selected index was\n * set to 1, and a new tab is created and selected at index 2, then the tab body would have an\n * origin of right because its index was greater than the prior selected index.\n */\nexport type OuiTabBodyOriginState = 'left' | 'right';\n","<div\n  class=\"oui-mdc-tab-body-content\"\n  #content\n  [@translateTab]=\"{\n       value: _position,\n       params: {animationDuration: animationDuration}\n     }\"\n  (@translateTab.done)=\"_onTranslateTabStarted($event)\"\n  [innerHTML]=\"_innerContent\"\n></div>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, InjectionToken, TemplateRef, inject } from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `OuiTabContent`. It serves as\n * alternative token to the actual `OuiTabContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const OUI_TAB_CONTENT = new InjectionToken<OuiTabContent>(\n  'OuiTabContent'\n);\n\n/** Decorates the `ng-template` tags and reads out the template from it. */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[OuiTabContent]',\n  providers: [{ provide: OUI_TAB_CONTENT, useExisting: OuiTabContent }],\n  standalone: false,\n})\nexport class OuiTabContent {\n  template = inject<TemplateRef<any>>(TemplateRef);\n\n  constructor() {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  Directive,\n  InjectionToken,\n  TemplateRef,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\nimport { CdkPortal } from '@angular/cdk/portal';\n\n/**\n * Injection token that can be used to reference instances of `OuiTabLabel`. It serves as\n * alternative token to the actual `OuiTabLabel` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const OUI_TAB_LABEL = new InjectionToken<OuiTabLabel>('OuiTabLabel');\n\n/**\n * Used to provide a tab label to a tab without causing a circular dependency.\n * @docs-private\n */\nexport const OUI_TAB = new InjectionToken<any>('OUI_TAB');\n\n/** Used to flag tab labels for use with the portal directive */\n@Directive({\n  selector: '[oui-tab-label], [OuiTabLabel]',\n  providers: [{ provide: OUI_TAB_LABEL, useExisting: OuiTabLabel }],\n  standalone: false,\n})\nexport class OuiTabLabel extends CdkPortal {\n  _closestTab = inject(OUI_TAB, { optional: true })!;\n\n  constructor() {\n    const templateRef = inject<TemplateRef<any>>(TemplateRef);\n    const viewContainerRef = inject(ViewContainerRef);\n\n    super(templateRef, viewContainerRef);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  ElementRef,\n  InjectionToken,\n  OnDestroy,\n  OnInit,\n  QueryList,\n} from '@angular/core';\nimport { isDevMode } from '@angular/core';\n\n/**\n * Item inside a tab header relative to which the ink bar can be aligned.\n * @docs-private\n */\nexport interface MatInkBarItem extends OnInit, OnDestroy {\n  elementRef: ElementRef<HTMLElement>;\n  activateInkBar(previousIndicatorClientRect?: ClientRect): void;\n  deactivateInkBar(): void;\n  fitInkBarToContent: boolean;\n}\n\n/** Class that is applied when a tab indicator is active. */\nconst ACTIVE_CLASS = 'mdc-tab-indicator--active';\n\n/** Class that is applied when the tab indicator should not transition. */\nconst NO_TRANSITION_CLASS = 'mdc-tab-indicator--no-transition';\n\n/**\n * Abstraction around the MDC tab indicator that acts as the tab header's ink bar.\n * @docs-private\n */\nexport class OuiInkBar {\n  /** Item to which the ink bar is aligned currently. */\n  private _currentItem: MatInkBarItem | undefined;\n\n  constructor(private _items: QueryList<MatInkBarItem>) {}\n\n  /** Hides the ink bar. */\n  hide() {\n    this._items.forEach((item) => item.deactivateInkBar());\n  }\n\n  /** Aligns the ink bar to a DOM node. */\n  alignToElement(element: HTMLElement) {\n    const correspondingItem = this._items.find(\n      (item) => item.elementRef?.nativeElement === element\n    );\n    const currentItem = this._currentItem;\n\n    if (correspondingItem === currentItem) {\n      return;\n    }\n\n    currentItem?.deactivateInkBar();\n\n    if (correspondingItem) {\n      const clientRect =\n        currentItem?.elementRef?.nativeElement?.getBoundingClientRect?.();\n\n      // The ink bar won't animate unless we give it the `ClientRect` of the previous item.\n      correspondingItem.activateInkBar(clientRect);\n      this._currentItem = correspondingItem;\n    }\n  }\n}\n\n/**\n * Mixin that can be used to apply the `MatInkBarItem` behavior to a class.\n * Base on MDC's `MDCSlidingTabIndicatorFoundation`:\n * https://github.com/material-components/material-components-web/blob/c0a11ef0d000a098fd0c372be8f12d6a99302855/packages/mdc-tab-indicator/sliding-foundation.ts\n * @docs-private\n */\nexport function mixinInkBarItem<\n  T extends new (...args: any[]) => { elementRef: ElementRef<HTMLElement> }\n>(base: T): T & (new (...args: any[]) => MatInkBarItem) {\n  return class extends base {\n    constructor(...args: any[]) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      super(...args);\n    }\n\n    private _inkBarElement: HTMLElement | null;\n    private _inkBarContentElement: HTMLElement | null;\n    private _fitToContent = false;\n\n    /** Whether the ink bar should fit to the entire tab or just its content. */\n    get fitInkBarToContent(): boolean {\n      return this._fitToContent;\n    }\n    set fitInkBarToContent(v: BooleanInput) {\n      const newValue = coerceBooleanProperty(v);\n\n      if (this._fitToContent !== newValue) {\n        this._fitToContent = newValue;\n\n        if (this._inkBarElement) {\n          this._appendInkBarElement();\n        }\n      }\n    }\n\n    /** Aligns the ink bar to the current item. */\n    activateInkBar(previousIndicatorClientRect?: ClientRect) {\n      const element = this.elementRef?.nativeElement;\n\n      // Early exit if no indicator is present to handle cases where an indicator\n      // may be activated without a prior indicator state\n      if (\n        !previousIndicatorClientRect ||\n        !element?.getBoundingClientRect ||\n        !this._inkBarContentElement\n      ) {\n        element.classList.add(ACTIVE_CLASS);\n        return;\n      }\n\n      // This animation uses the FLIP approach. You can read more about it at the link below:\n      // https://aerotwist.com/blog/flip-your-animations/\n\n      // Calculate the dimensions based on the dimensions of the previous indicator\n      const currentClientRect = element.getBoundingClientRect();\n      const widthDelta =\n        previousIndicatorClientRect.width / currentClientRect.width;\n      const xPosition =\n        previousIndicatorClientRect.left - currentClientRect.left;\n      element.classList.add(NO_TRANSITION_CLASS);\n      this._inkBarContentElement.style.setProperty(\n        'transform',\n        `translateX(${xPosition}px) scaleX(${widthDelta})`\n      );\n\n      // Force repaint before updating classes and transform to ensure the transform properly takes effect\n      element.getBoundingClientRect();\n\n      element.classList.remove(NO_TRANSITION_CLASS);\n      element.classList.add(ACTIVE_CLASS);\n      this._inkBarContentElement.style.setProperty('transform', '');\n    }\n\n    /** Removes the ink bar from the current item. */\n    deactivateInkBar() {\n      this.elementRef?.nativeElement?.classList.remove(ACTIVE_CLASS);\n    }\n\n    /** Initializes the foundation. */\n    ngOnInit() {\n      this._createInkBarElement();\n    }\n\n    /** Destroys the foundation. */\n    ngOnDestroy() {\n      this._inkBarElement?.remove();\n      this._inkBarElement = this._inkBarContentElement = null!;\n    }\n\n    /** Creates and appends the ink bar element. */\n    private _createInkBarElement() {\n      const documentNode =\n        this.elementRef?.nativeElement?.ownerDocument || document;\n      this._inkBarElement = documentNode.createElement('span');\n      this._inkBarContentElement = documentNode.createElement('span');\n\n      this._inkBarElement.className = 'mdc-tab-indicator';\n      this._inkBarContentElement.className =\n        'mdc-tab-indicator__content mdc-tab-indicator__content--underline';\n\n      this._inkBarElement.appendChild(this._inkBarContentElement);\n      this._appendInkBarElement();\n    }\n\n    /**\n     * Appends the ink bar to the tab host element or content, depending on whether\n     * the ink bar should fit to content.\n     */\n    private _appendInkBarElement() {\n      if (\n        !this._inkBarElement &&\n        (typeof isDevMode === 'undefined' || isDevMode)\n      ) {\n        throw Error(\n          'Ink bar element has not been created and cannot be appended'\n        );\n      }\n\n      const parentElement = this._fitToContent\n        ? this.elementRef?.nativeElement?.querySelector('.mdc-tab__content')\n        : this.elementRef?.nativeElement;\n\n      if (!parentElement && (typeof isDevMode === 'undefined' || isDevMode)) {\n        throw Error('Missing element to host the ink bar');\n      }\n\n      parentElement!.appendChild(this._inkBarElement!);\n    }\n  };\n}\n\n/**\n * Interface for a OuiInkBar positioner method, defining the positioning and width of the ink\n * bar in a set of tabs.\n */\nexport interface _OuiInkBarPositioner {\n  (element: HTMLElement): { left: string; width: string };\n}\n\n/**\n * The default positioner function for the OuiInkBar.\n * @docs-private\n */\nexport function _OUI_INK_BAR_POSITIONER_FACTORY(): _OuiInkBarPositioner {\n  const method = (element: HTMLElement) => ({\n    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n    left: element ? (element.offsetLeft || 0) + 'px' : '0',\n    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n    width: element ? (element.offsetWidth || 0) + 'px' : '0',\n  });\n\n  return method;\n}\n\n/** Injection token for the OuiInkBar's Positioner. */\nexport const _OUI_INK_BAR_POSITIONER = new InjectionToken<_OuiInkBarPositioner>(\n  'MatInkBarPositioner',\n  {\n    providedIn: 'root',\n    factory: _OUI_INK_BAR_POSITIONER_FACTORY,\n  }\n);\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, inject } from '@angular/core';\nimport { mixinInkBarItem } from './ink-bar';\nimport { CanDisable, mixinDisabled } from '../core';\n\n// Boilerplate for applying mixins to OuiTabLabelWrapper.\n/** @docs-private */\nconst _OuiTabLabelWrapperMixinBase = mixinInkBarItem(\n  mixinDisabled(\n    class {\n      elementRef: ElementRef;\n    }\n  )\n);\n\n/**\n * Used in the `oui-tab-group` view to display tab labels.\n * @docs-private\n */\n@Directive({\n  selector: '[ouiTabLabelWrapper]',\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled', 'fitInkBarToContent'],\n  host: {\n    '[class.oui-mdc-tab-disabled]': 'disabled',\n    '[attr.aria-disabled]': '!!disabled',\n  },\n  standalone: false,\n})\nexport class OuiTabLabelWrapper\n  extends _OuiTabLabelWrapperMixinBase\n  implements CanDisable\n{\n  constructor() {\n    super();\n    // Inject ElementRef for the mixin\n    this.elementRef = inject(ElementRef);\n  }\n\n  /** Sets focus on the wrapper element */\n  focus(): void {\n    this.elementRef?.nativeElement?.focus();\n  }\n\n  getOffsetLeft(): number {\n    return this.elementRef?.nativeElement?.offsetLeft || 0;\n  }\n\n  getOffsetWidth(): number {\n    return this.elementRef?.nativeElement?.offsetWidth || 0;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  InjectionToken,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { OuiTabContent } from './tab-content';\nimport { OUI_TAB, OuiTabLabel } from './tab-label';\nimport { CanDisable, mixinColor } from '../core';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subject } from 'rxjs';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport class OuiTabsBase {\n  constructor(public _elementRef: ElementRef) {}\n}\n// Boilerplate for applying mixins to OuiTab.\n/** @docs-private */\nconst _OuiTabMixinBase: typeof OuiTabsBase = mixinColor(OuiTabsBase);\n\n/**\n * Used to provide a tab group to a tab without causing a circular dependency.\n * @docs-private\n */\nexport const OUI_TAB_GROUP = new InjectionToken<any>('OUI_TAB_GROUP');\n\n/** Default color palette for the tab */\nconst DEFAULT_COLOR = 'primary';\n\n@Component({\n  selector: 'oui-tab',\n  // Note that usually we'd go through a bit more trouble and set up another class so that\n  // the inlined template of `OuiTab` isn't duplicated, however the template is small enough\n  // that creating the extra class will generate more code than just duplicating the template.\n  templateUrl: 'tab.html',\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled'],\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  changeDetection: ChangeDetectionStrategy.Default,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'OuiTab',\n  providers: [{ provide: OUI_TAB, useExisting: OuiTab }],\n  standalone: false,\n})\nexport class OuiTab\n  extends _OuiTabMixinBase\n  implements CanDisable, OnInit, OnChanges, OnDestroy\n{\n  private _viewContainerRef = inject(ViewContainerRef);\n  _closestTabGroup = inject(OUI_TAB_GROUP, { optional: true })!;\n  private sanitized = inject(DomSanitizer);\n\n  /** Content for the tab label given by `<ng-template oui-tab-label>`. */\n  private _templateLabel: OuiTabLabel;\n  disabled: any;\n  @ContentChild(OuiTabLabel)\n  get templateLabel(): OuiTabLabel {\n    return this._templateLabel;\n  }\n  set templateLabel(value: OuiTabLabel) {\n    this._setTemplateLabelInput(value);\n  }\n\n  /**\n   * Template provided in the tab content that will be used if present, used to enable lazy-loading\n   */\n  @ContentChild(OuiTabContent, { read: TemplateRef, static: true })\n  // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\n  private _explicitContent: TemplateRef<any> = undefined!;\n\n  /** Template inside the OuiTab view that contains an `<ng-content>`. */\n  @ViewChild(TemplateRef, { static: true }) _implicitContent: TemplateRef<any>;\n\n  /** Plain text label for the tab, used when there is no template label. */\n  @Input('label') textLabel = '';\n\n  contentWithin = '';\n\n  /** Aria label for the tab. */\n  @Input('aria-label') ariaLabel: string;\n\n  @Input() color = 'accent';\n\n  /**\n   * Reference to the element that the tab is labelled by.\n   * Will be cleared if `aria-label` is set at the same time.\n   */\n  @Input('aria-labelledby') ariaLabelledby: string;\n\n  /**\n   * Classes to be passed to the tab label inside the oui-tab-header container.\n   * Supports string and string array values, same as `ngClass`.\n   */\n  @Input() labelClass: string | string[];\n\n  /**\n   * Classes to be passed to the tab oui-tab-body container.\n   * Supports string and string array values, same as `ngClass`.\n   */\n  @Input() bodyClass: string | string[];\n\n  /** Portal that will be the hosted content of the tab */\n  private _contentPortal: TemplatePortal | null = null;\n\n  /** @docs-private */\n  get content(): TemplatePortal | null {\n    return this._contentPortal;\n  }\n\n  /** Emits whenever the internal state of the tab changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  /**\n   * The relatively indexed position where 0 represents the center, negative is left, and positive\n   * represents the right.\n   */\n  position: number | null = null;\n\n  /**\n   * The initial relatively index origin of the tab if it was created and selected after there\n   * was already a selected tab. Provides context of what position the tab should originate from.\n   */\n  origin: number | null = null;\n\n  /**\n   * Whether the tab is currently active.\n   */\n  isActive = false;\n\n  @ViewChild('tab1') _tab1: ElementRef;\n\n  constructor() {\n    const _elementRef = inject(ElementRef);\n\n    super(_elementRef);\n    this.addThemeColor();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      Object.prototype.hasOwnProperty.call(changes, 'textLabel') ||\n      Object.prototype.hasOwnProperty.call(changes, 'disabled')\n    ) {\n      setTimeout(() => {\n        this.contentWithin = this.sanitized.bypassSecurityTrustHtml(\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n          this._elementRef.nativeElement.innerHTML\n        )['changingThisBreaksApplicationSecurity'];\n      });\n      this._stateChanges.next();\n    }\n    if (\n      Object.prototype.hasOwnProperty.call(changes, '_tab2') ||\n      Object.prototype.hasOwnProperty.call(changes, 'disabled')\n    ) {\n      this._stateChanges.next();\n    }\n  }\n\n  addThemeColor() {\n    if (!this.color) {\n      this.color = DEFAULT_COLOR;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._stateChanges.complete();\n  }\n\n  ngOnInit(): void {\n    setTimeout(() => {\n      this.contentWithin = this.sanitized.bypassSecurityTrustHtml(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        this._elementRef.nativeElement.innerHTML\n      )['changingThisBreaksApplicationSecurity'];\n    });\n    this._contentPortal = new TemplatePortal(\n      this._explicitContent || this._implicitContent,\n      this._viewContainerRef,\n      this._tab1\n    );\n  }\n\n  /**\n   * This has been extracted to a util because of TS 4 and VE.\n   * View Engine doesn't support property rename inheritance.\n   * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n   * @docs-private\n   */\n  private _setTemplateLabelInput(value: OuiTabLabel | undefined) {\n    // Only update the label if the query managed to find one. This works around an issue where a\n    // user may have manually set `templateLabel` during creation mode, which would then get\n    // clobbered by `undefined` when the query resolves. Also note that we check that the closest\n    // tab matches the current one so that we don't pick up labels from nested tabs.\n    if (value && value._closestTab === this) {\n      this._templateLabel = value;\n    }\n  }\n}\n","<!-- Create a template for the content of the <oui-tab> so that we can grab a reference to this\n    TemplateRef and use it in a Portal to render the tab content in the appropriate place in the\n    tab-group. -->\n<ng-content></ng-content>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  ChangeDetectorRef,\n  ElementRef,\n  NgZone,\n  QueryList,\n  EventEmitter,\n  AfterContentChecked,\n  AfterContentInit,\n  AfterViewInit,\n  OnDestroy,\n  Directive,\n  Input,\n  inject,\n} from '@angular/core';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { FocusKeyManager, FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n  merge,\n  of as observableOf,\n  Subject,\n  EMPTY,\n  Observer,\n  Observable,\n  timer,\n  fromEvent,\n} from 'rxjs';\nimport {\n  take,\n  switchMap,\n  startWith,\n  skip,\n  takeUntil,\n  filter,\n} from 'rxjs/operators';\nimport {\n  Platform,\n  normalizePassiveListenerOptions,\n} from '@angular/cdk/platform';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/** Config used to bind passive event listeners */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({\n  passive: true,\n}) as EventListenerOptions;\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst HEADER_SCROLL_DELAY = 650;\n\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n */\nconst HEADER_SCROLL_INTERVAL = 100;\n\n/** Item inside a paginated tab header. */\nexport type MatPaginatedTabHeaderItem = FocusableOption & {\n  elementRef: ElementRef;\n};\n\n/**\n * Base class for a tab header that supported pagination.\n * @docs-private\n */\n@Directive()\nexport abstract class OuiPaginatedTabHeader\n  implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy\n{\n  protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected _changeDetectorRef = inject(ChangeDetectorRef);\n  private _viewportRuler = inject(ViewportRuler);\n  private _dir = inject(Directionality, { optional: true })!;\n  private _ngZone = inject(NgZone);\n  private _platform = inject(Platform);\n  _animationMode? = inject(ANIMATION_MODULE_TYPE, { optional: true });\n\n  abstract _items: QueryList<MatPaginatedTabHeaderItem>;\n  abstract _inkBar: {\n    hide: () => void;\n    alignToElement: (element: HTMLElement) => void;\n  };\n  abstract _tabListContainer: ElementRef<HTMLElement>;\n  abstract _tabList: ElementRef<HTMLElement>;\n  abstract _tabListInner: ElementRef<HTMLElement>;\n  abstract _nextPaginator: ElementRef<HTMLElement>;\n  abstract _previousPaginator: ElementRef<HTMLElement>;\n\n  /** The distance in pixels that the tab labels should be translated to the left. */\n  private _scrollDistance = 0;\n\n  /** Whether the header should scroll to the selected index after the view has been checked. */\n  private _selectedIndexChanged = false;\n\n  /** Emits when the component is destroyed. */\n  protected readonly _destroyed = new Subject<void>();\n\n  /** Whether the controls for pagination should be displayed */\n  _showPaginationControls = false;\n\n  /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n  _disableScrollAfter = true;\n\n  /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n  _disableScrollBefore = true;\n\n  /**\n   * The number of tab labels that are displayed on the header. When this changes, the header\n   * should re-evaluate the scroll position.\n   */\n  private _tabLabelCount: number;\n\n  /** Whether the scroll distance has changed and should be applied after the view is checked. */\n  private _scrollDistanceChanged: boolean;\n\n  /** Used to manage focus between the tabs. */\n  private _keyManager: FocusKeyManager<MatPaginatedTabHeaderItem>;\n\n  /** Cached text content of the header. */\n  private _currentTextContent: string;\n\n  /** Stream that will stop the automated scrolling. */\n  private _stopScrolling = new Subject<void>();\n\n  /**\n   * Whether pagination should be disabled. This can be used to avoid unnecessary\n   * layout recalculations if it's known that pagination won't be required.\n   */\n  @Input()\n  get disablePagination(): boolean {\n    return this._disablePagination;\n  }\n  set disablePagination(value: BooleanInput) {\n    this._disablePagination = coerceBooleanProperty(value);\n  }\n  private _disablePagination = false;\n\n  /** The index of the active tab. */\n  get selectedIndex(): number {\n    return this._selectedIndex;\n  }\n  set selectedIndex(value: NumberInput) {\n    value = coerceNumberProperty(value);\n\n    if (this._selectedIndex != value) {\n      this._selectedIndexChanged = true;\n      this._selectedIndex = value;\n\n      if (this._keyManager) {\n        this._keyManager.updateActiveItem(value);\n      }\n    }\n  }\n  private _selectedIndex = 0;\n\n  /** Event emitted when the option is selected. */\n  readonly selectFocusedIndex: EventEmitter<number> =\n    new EventEmitter<number>();\n\n  /** Event emitted when a label is focused. */\n  readonly indexFocused: EventEmitter<number> = new EventEmitter<number>();\n\n  constructor() {\n    const _elementRef = this._elementRef;\n    const _ngZone = this._ngZone;\n\n    // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n    _ngZone.runOutsideAngular(() => {\n      fromEvent(_elementRef.nativeElement, 'mouseleave')\n        .pipe(takeUntil(this._destroyed))\n        .subscribe(() => {\n          this._stopInterval();\n        });\n    });\n  }\n\n  /** Called when the user has selected an item via the keyboard. */\n  protected abstract _itemSelected(event: KeyboardEvent): void;\n\n  ngAfterViewInit() {\n    // We need to handle these events manually, because we want to bind passive event listeners.\n    fromEvent(\n      this._previousPaginator.nativeElement,\n      'touchstart',\n      passiveEventListenerOptions\n    )\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => {\n        this._handlePaginatorPress('before');\n      });\n\n    fromEvent(\n      this._nextPaginator.nativeElement,\n      'touchstart',\n      passiveEventListenerOptions\n    )\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => {\n        this._handlePaginatorPress('after');\n      });\n  }\n\n  ngAfterContentInit() {\n    const dirChange = this._dir ? this._dir.change : observableOf('ltr');\n    const resize = this._viewportRuler.change(150);\n    const realign = () => {\n      this.updatePagination();\n      this._alignInkBarToSelectedTab();\n    };\n\n    this._keyManager = new FocusKeyManager<MatPaginatedTabHeaderItem>(\n      this._items\n    )\n      .withHorizontalOrientation(this._getLayoutDirection())\n      .withHomeAndEnd()\n      .withWrap()\n      // Allow focus to land on disabled tabs, as per https://w3c.github.io/aria-practices/#kbd_disabled_controls\n      .skipPredicate(() => false);\n\n    this._keyManager.updateActiveItem(this._selectedIndex);\n\n    // Defer the first call in order to allow for slower browsers to lay out the elements.\n    // This helps in cases where the user lands directly on a page with paginated tabs.\n    // Note that we use `onStable` instead of `requestAnimationFrame`, because the latter\n    // can hold up tests that are in a background tab.\n    this._ngZone.onStable.pipe(take(1)).subscribe(realign);\n\n    // On dir change or window resize, realign the ink bar and update the orientation of\n    // the key manager if the direction has changed.\n    merge(dirChange, resize, this._items.changes, this._itemsResized())\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => {\n        // We need to defer this to give the browser some time to recalculate\n        // the element dimensions. The call has to be wrapped in `NgZone.run`,\n        // because the viewport change handler runs outside of Angular.\n        this._ngZone.run(() => {\n          Promise.resolve().then(() => {\n            // Clamp the scroll distance, because it can change with the number of tabs.\n            this._scrollDistance = Math.max(\n              0,\n              Math.min(this._getMaxScrollDistance(), this._scrollDistance)\n            );\n            realign();\n          });\n        });\n        this._keyManager.withHorizontalOrientation(this._getLayoutDirection());\n      });\n\n    // If there is a change in the focus key manager we need to emit the `indexFocused`\n    // event in order to provide a public event that notifies about focus changes. Also we realign\n    // the tabs container by scrolling the new focused tab into the visible section.\n    this._keyManager.change.subscribe((newFocusIndex) => {\n      this.indexFocused.emit(newFocusIndex);\n      this._setTabFocus(newFocusIndex);\n    });\n  }\n\n  /** Sends any changes that could affect the layout of the items. */\n  private _itemsResized(): Observable<ResizeObserverEntry[]> {\n    if (typeof ResizeObserver !== 'function') {\n      return EMPTY;\n    }\n\n    return this._items.changes.pipe(\n      startWith(this._items),\n      switchMap(\n        (tabItems: QueryList<MatPaginatedTabHeaderItem>) =>\n          new Observable((observer: Observer<ResizeObserverEntry[]>) =>\n            this._ngZone.runOutsideAngular(() => {\n              const resizeObserver = new ResizeObserver((entries) =>\n                observer.next(entries)\n              );\n              tabItems.forEach(\n                (\n                  item // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n                ) => resizeObserver.observe(item.elementRef.nativeElement)\n              );\n              return () => {\n                resizeObserver.disconnect();\n              };\n            })\n          )\n      ),\n      // Skip the first emit since the resize observer emits when an item\n      // is observed for new items when the tab is already inserted\n      skip(1),\n      // Skip emissions where all the elements are invisible since we don't want\n      // the header to try and re-render with invalid measurements. See #25574.\n      filter((entries) =>\n        entries.some((e) => e.contentRect.width > 0 && e.contentRect.height > 0)\n      )\n    );\n  }\n\n  ngAfterContentChecked(): void {\n    // If the number of tab labels have changed, check if scrolling should be enabled\n    if (this._tabLabelCount != this._items.length) {\n      this.updatePagination();\n      this._tabLabelCount = this._items.length;\n      this._changeDetectorRef.markForCheck();\n    }\n\n    // If the selected index has changed, scroll to the label and check if the scrolling controls\n    // should be disabled.\n    if (this._selectedIndexChanged) {\n      this._scrollToLabel(this._selectedIndex);\n      this._checkScrollingControls();\n      this._alignInkBarToSelectedTab();\n      this._selectedIndexChanged = false;\n      this._changeDetectorRef.markForCheck();\n    }\n\n    // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n    // then translate the header to reflect this.\n    if (this._scrollDistanceChanged) {\n      this._updateTabScrollPosition();\n      this._scrollDistanceChanged = false;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  ngOnDestroy() {\n    // this._keyManager?.destroy();\n    this._destroyed.next();\n    this._destroyed.complete();\n    this._stopScrolling.complete();\n  }\n\n  /** Handles keyboard events on the header. */\n  _handleKeydown(event: KeyboardEvent) {\n    // We don't handle any key bindings with a modifier key.\n    if (hasModifierKey(event)) {\n      return;\n    }\n\n    switch (event.keyCode) {\n      case ENTER:\n      case SPACE:\n        if (this.focusIndex !== this.selectedIndex) {\n          const item = this._items.get(this.focusIndex);\n\n          if (item && !item.disabled) {\n            this.selectFocusedIndex.emit(this.focusIndex);\n            this._itemSelected(event);\n          }\n        }\n        break;\n      default:\n        this._keyManager.onKeydown(event);\n    }\n  }\n\n  /**\n   * Callback for when the MutationObserver detects that the content has changed.\n   */\n  _onContentChanges() {\n    const textContent = this._elementRef.nativeElement.textContent;\n\n    // We need to diff the text content of the header, because the MutationObserver callback\n    // will fire even if the text content didn't change which is inefficient and is prone\n    // to infinite loops if a poorly constructed expression is passed in (see #14249).\n    if (textContent !== this._currentTextContent) {\n      this._currentTextContent = textContent || '';\n\n      // The content observer runs outside the `NgZone` by default, which\n      // means that we need to bring the callback back in ourselves.\n      this._ngZone.run(() => {\n        this.updatePagination();\n        this._alignInkBarToSelectedTab();\n        this._changeDetectorRef.markForCheck();\n      });\n    }\n  }\n\n  /**\n   * Updates the view whether pagination should be enabled or not.\n   *\n   * WARNING: Calling this method can be very costly in terms of performance. It should be called\n   * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n   * page.\n   */\n  updatePagination() {\n    this._checkPaginationEnabled();\n    this._checkScrollingControls();\n    this._updateTabScrollPosition();\n  }\n\n  /** Tracks which element has focus; used for keyboard navigation */\n  get focusIndex(): number {\n    return this._keyManager ? this._keyManager.activeItemIndex! : 0;\n  }\n\n  /** When the focus index is set, we must manually send focus to the correct label */\n  set focusIndex(value: number) {\n    if (\n      !this._isValidIndex(value) ||\n      this.focusIndex === value ||\n      !this._keyManager\n    ) {\n      return;\n    }\n\n    this._keyManager.setActiveItem(value);\n  }\n\n  /**\n   * Determines if an index is valid.  If the tabs are not ready yet, we assume that the user is\n   * providing a valid index and return true.\n   */\n  _isValidIndex(index: number): boolean {\n    return this._items ? !!this._items.toArray()[index] : true;\n  }\n\n  /**\n   * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n   * scrolling is enabled.\n   */\n  _setTabFocus(tabIndex: number) {\n    if (this._showPaginationControls) {\n      this._scrollToLabel(tabIndex);\n    }\n\n    if (this._items && this._items.length) {\n      this._items.toArray()[tabIndex].focus();\n\n      // Do not let the browser manage scrolling to focus the element, this will be handled\n      // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n      // should be the full width minus the offset width.\n      const containerEl = this._tabListContainer.nativeElement;\n      const dir = this._getLayoutDirection();\n\n      if (dir == 'ltr') {\n        containerEl.scrollLeft = 0;\n      } else {\n        containerEl.scrollLeft =\n          containerEl.scrollWidth - containerEl.offsetWidth;\n      }\n    }\n  }\n\n  /** The layout direction of the containing app. */\n  _getLayoutDirection(): Direction {\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n  }\n\n  /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n  _updateTabScrollPosition() {\n    if (this.disablePagination) {\n      return;\n    }\n\n    const scrollDistance = this.scrollDistance;\n    const translateX =\n      this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n\n    // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n    // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n    // and ripples will exceed the boundaries of the visible tab bar.\n    // See: https://github.com/angular/components/issues/10276\n    // We round the `transform` here, because transforms with sub-pixel precision cause some\n    // browsers to blur the content of the element.\n    this._tabList.nativeElement.style.transform = `translateX(${Math.round(\n      translateX\n    )}px)`;\n\n    // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n    // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n    // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n    // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n    if (this._platform.TRIDENT || this._platform.EDGE) {\n      this._tabListContainer.nativeElement.scrollLeft = 0;\n    }\n  }\n\n  /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n  get scrollDistance(): number {\n    return this._scrollDistance;\n  }\n  set scrollDistance(value: number) {\n    this._scrollTo(value);\n  }\n\n  /**\n   * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n   * the end of the list, respectively). The distance to scroll is computed to be a third of the\n   * length of the tab list view window.\n   *\n   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n   * should be called sparingly.\n   */\n  _scrollHeader(direction: ScrollDirection) {\n    const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n\n    // Move the scroll distance one-third the length of the tab list's viewport.\n    const scrollAmount = ((direction == 'before' ? -1 : 1) * viewLength) / 3;\n\n    return this._scrollTo(this._scrollDistance + scrollAmount);\n  }\n\n  /** Handles click events on the pagination arrows. */\n  _handlePaginatorClick(direction: ScrollDirection) {\n    this._stopInterval();\n    this._scrollHeader(direction);\n  }\n\n  /**\n   * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n   *\n   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n   * should be called sparingly.\n   */\n  _scrollToLabel(labelIndex: number) {\n    if (this.disablePagination) {\n      return;\n    }\n\n    const selectedLabel = this._items\n      ? this._items.toArray()[labelIndex]\n      : null;\n\n    if (!selectedLabel) {\n      return;\n    }\n\n    // The view length is the visible width of the tab labels.\n    const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n    const { offsetLeft, offsetWidth } = selectedLabel.elementRef.nativeElement;\n\n    let labelBeforePos: number, labelAfterPos: number;\n    if (this._getLayoutDirection() == 'ltr') {\n      labelBeforePos = offsetLeft;\n      // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n      labelAfterPos = labelBeforePos + offsetWidth;\n    } else {\n      labelAfterPos = this._tabListInner.nativeElement.offsetWidth - offsetLeft;\n      labelBeforePos = labelAfterPos - offsetWidth;\n    }\n\n    const beforeVisiblePos = this.scrollDistance;\n    const afterVisiblePos = this.scrollDistance + viewLength;\n\n    if (labelBeforePos < beforeVisiblePos) {\n      // Scroll header to move label to the before direction\n      this.scrollDistance -= beforeVisiblePos - labelBeforePos;\n    } else if (labelAfterPos > afterVisiblePos) {\n      // Scroll header to move label to the after direction\n      this.scrollDistance += Math.min(\n        labelAfterPos - afterVisiblePos,\n        labelBeforePos - beforeVisiblePos\n      );\n    }\n  }\n\n  /**\n   * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n   * tab list is wider than the size of the header container, then the pagination controls should\n   * be shown.\n   *\n   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n   * should be called sparingly.\n   */\n  _checkPaginationEnabled() {\n    if (this.disablePagination) {\n      this._showPaginationControls = false;\n    } else {\n      const isEnabled =\n        this._tabListInner.nativeElement.scrollWidth >\n        this._elementRef.nativeElement.offsetWidth;\n\n      if (!isEnabled) {\n        this.scrollDistance = 0;\n      }\n\n      if (isEnabled !== this._showPaginationControls) {\n        this._changeDetectorRef.markForCheck();\n      }\n\n      this._showPaginationControls = isEnabled;\n    }\n  }\n\n  /**\n   * Evaluate whether the before and after controls should be enabled or disabled.\n   * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n   * before button. If the header is at the end of the list (scroll distance is equal to the\n   * maximum distance we can scroll), then disable the after button.\n   *\n   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n   * should be called sparingly.\n   */\n  _checkScrollingControls() {\n    if (this.disablePagination) {\n      this._disableScrollAfter = this._disableScrollBefore = true;\n    } else {\n      // Check if the pagination arrows should be activated.\n      this._disableScrollBefore = this.scrollDistance == 0;\n      this._disableScrollAfter =\n        this.scrollDistance == this._getMaxScrollDistance();\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n   * is equal to the difference in width between the tab list container and tab header container.\n   *\n   * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n   * should be called sparingly.\n   */\n  _getMaxScrollDistance(): number {\n    const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth;\n    const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n    return lengthOfTabList - viewLength || 0;\n  }\n\n  /** Tells the ink-bar to align itself to the current label wrapper */\n  _alignInkBarToSelectedTab(): void {\n    const selectedItem =\n      this._items && this._items.length\n        ? this._items.toArray()[this.selectedIndex]\n        : null;\n    const selectedLabelWrapper = selectedItem\n      ? selectedItem.elementRef.nativeElement\n      : null;\n\n    if (selectedLabelWrapper) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      this._inkBar.alignToElement(selectedLabelWrapper);\n    } else {\n      this._inkBar.hide();\n    }\n  }\n\n  /** Stops the currently-running paginator interval.  */\n  _stopInterval() {\n    this._stopScrolling.next();\n  }\n\n  /**\n   * Handles the user pressing down on one of the paginators.\n   * Starts scrolling the header after a certain amount of time.\n   * @param direction In which direction the paginator should be scrolled.\n   */\n  _handlePaginatorPress(direction: ScrollDirection, mouseEvent?: MouseEvent) {\n    // Don't start auto scrolling for right mouse button clicks. Note that we shouldn't have to\n    // null check the `button`, but we do it so we don't break tests that use fake events.\n    if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\n      return;\n    }\n\n    // Avoid overlapping timers.\n    this._stopInterval();\n\n    // Start a timer after the delay and keep firing based on the interval.\n    timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n      // Keep the timer going until something tells it to stop or the component is destroyed.\n      .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\n      .subscribe(() => {\n        const { maxScrollDistance, distance } = this._scrollHeader(direction);\n\n        // Stop the timer if we've reached the start or the end.\n        if (distance === 0 || distance >= maxScrollDistance) {\n          this._stopInterval();\n        }\n      });\n  }\n\n  /**\n   * Scrolls the header to a given position.\n   * @param position Position to which to scroll.\n   * @returns Information on the current scroll distance and the maximum.\n   */\n  private _scrollTo(position: number) {\n    if (this.disablePagination) {\n      return { maxScrollDistance: 0, distance: 0 };\n    }\n\n    const maxScrollDistance = this._getMaxScrollDistance();\n    this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\n\n    // Mark that the scroll distance has changed so that after the view is checked, the CSS\n    // transformation can move the header.\n    this._scrollDistanceChanged = true;\n    this._checkScrollingControls();\n\n    return { maxScrollDistance, distance: this._scrollDistance };\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  AfterContentChecked,\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  OnDestroy,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OuiTabLabelWrapper } from './tab-label-wrapper';\nimport { OuiInkBar } from './ink-bar';\nimport { OuiPaginatedTabHeader } from './paginated-tab-header';\n\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * @docs-private\n */\n@Component({\n  selector: 'oui-tab-header',\n  templateUrl: 'tab-header.html',\n  styleUrls: ['tab-header.scss'],\n  // eslint-disable-next-line\n  inputs: ['selectedIndex'],\n  // eslint-disable-next-line\n  outputs: ['selectFocusedIndex', 'indexFocused'],\n  encapsulation: ViewEncapsulation.None,\n  // tslint:disable-next-line\n  changeDetection: ChangeDetectionStrategy.Default,\n  // eslint-disable-next-line\n  host: {\n    class: 'oui-mdc-tab-header',\n    '[class.oui-mdc-tab-header-pagination-controls-enabled]':\n      '_showPaginationControls',\n    '[class.oui-mdc-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n  },\n  standalone: false,\n})\nexport class OuiTabHeader\n  extends OuiPaginatedTabHeader\n  implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy\n{\n  @ContentChildren(OuiTabLabelWrapper, { descendants: false })\n  _items: QueryList<OuiTabLabelWrapper>;\n  @ViewChild('tabListContainer', { static: true })\n  _tabListContainer: ElementRef;\n  @ViewChild('tabList', { static: true }) _tabList: ElementRef;\n  @ViewChild('tabListInner', { static: true }) _tabListInner: ElementRef;\n  @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\n  @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\n  _inkBar: OuiInkBar;\n\n  /** Whether the ripple effect is disabled or not. */\n  @Input()\n  get disableRipple(): boolean {\n    return this._disableRipple;\n  }\n\n  set disableRipple(value: BooleanInput) {\n    this._disableRipple = coerceBooleanProperty(value);\n  }\n\n  private _disableRipple = false;\n\n  constructor() {\n    super();\n  }\n\n  override ngAfterContentInit() {\n    this._inkBar = new OuiInkBar(this._items);\n    super.ngAfterContentInit();\n  }\n\n  protected _itemSelected(event: KeyboardEvent) {\n    event.preventDefault();\n  }\n}\n","<!-- TODO: this also had `mat-elevation-z4`. Figure out what we should do with it. -->\n<button\n  class=\"oui-mdc-tab-header-pagination oui-mdc-tab-header-pagination-before\"\n  #previousPaginator\n  aria-hidden=\"true\"\n  type=\"button\"\n  tabindex=\"-1\"\n  [class.oui-mdc-tab-header-pagination-disabled]=\"_disableScrollBefore\"\n  [disabled]=\"_disableScrollBefore || null\"\n  (click)=\"_handlePaginatorClick('before')\"\n  (mousedown)=\"_handlePaginatorPress('before', $event)\"\n  (touchend)=\"_stopInterval()\"\n>\n  <div class=\"oui-mdc-tab-header-pagination-chevron\"></div>\n</button>\n\n<div\n  class=\"oui-mdc-tab-label-container\"\n  #tabListContainer\n  (keydown)=\"_handleKeydown($event)\"\n  [class._oui-animation-noopable]=\"_animationMode === 'NoopAnimations'\"\n>\n  <div\n    #tabList\n    class=\"oui-mdc-tab-list\"\n    role=\"tablist\"\n    (cdkObserveContent)=\"_onContentChanges()\"\n  >\n    <div class=\"oui-tab-labels-container\" #tabListInner>\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>\n\n<!-- TODO: this also had `mat-elevation-z4`. Figure out what we should do with it. -->\n<button\n  class=\"oui-mdc-tab-header-pagination oui-mdc-tab-header-pagination-after\"\n  #nextPaginator\n  aria-hidden=\"true\"\n  type=\"button\"\n  [class.oui-mdc-tab-header-pagination-disabled]=\"_disableScrollAfter\"\n  [disabled]=\"_disableScrollAfter || null\"\n  tabindex=\"-1\"\n  (mousedown)=\"_handlePaginatorPress('after', $event)\"\n  (click)=\"_handlePaginatorClick('after')\"\n  (touchend)=\"_stopInterval()\"\n>\n  <div class=\"oui-mdc-tab-header-pagination-chevron\"></div>\n</button>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { InjectionToken } from '@angular/core';\n\n/** Object that can be used to configure the default options for the tabs module. */\nexport interface OuiTabsConfig {\n  /** Duration for the tab animation. Must be a valid CSS value (e.g. 600ms). */\n  animationDuration?: string;\n\n  /**\n   * Whether pagination should be disabled. This can be used to avoid unnecessary\n   * layout recalculations if it's known that pagination won't be required.\n   */\n  disablePagination?: boolean;\n\n  /**\n   * Whether the ink bar should fit its width to the size of the tab label content.\n   * This only applies to the MDC-based tabs.\n   */\n  fitInkBarToContent?: boolean;\n\n  /** Whether the tab group should grow to the size of the active tab. */\n  dynamicHeight?: boolean;\n\n  /** `tabindex` to be set on the inner element that wraps the tab content. */\n  contentTabIndex?: number;\n\n  /**\n   * By default tabs remove their content from the DOM while it's off-screen.\n   * Setting this to `true` will keep it in the DOM which will prevent elements\n   * like iframes and videos from reloading next time it comes back into the view.\n   */\n  preserveContent?: boolean;\n\n  /** Whether tabs should be stretched to fill the header. */\n  stretchTabs?: boolean;\n}\n\n/** Injection token that can be used to provide the default options the tabs module. */\nexport const OUI_TABS_CONFIG = new InjectionToken<OuiTabsConfig>(\n  'OUI_TABS_CONFIG'\n);\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  AfterContentChecked,\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { OUI_TAB_GROUP, OuiTab } from './tab';\nimport { OuiTabHeader } from './tab-header';\nimport {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport {\n  CanColor,\n  CanDisableRipple,\n  mixinColor,\n  mixinDisableRipple,\n  ThemePalette,\n} from '../core';\nimport { merge, Subscription } from 'rxjs';\nimport { OUI_TABS_CONFIG, OuiTabsConfig } from './tab-config';\nimport { startWith } from 'rxjs/operators';\nimport { FocusOrigin } from '@angular/cdk/a11y';\n\n/** Used to generate unique ID's for each tab component */\nlet nextId = 0;\n\n// Boilerplate for applying mixins to ouiTabGroup.\n/** @docs-private */\nconst _OuiTabGroupMixinBase = mixinColor(\n  mixinDisableRipple(\n    class {\n      constructor(public _elementRef: ElementRef) {}\n    }\n  ),\n  'primary'\n);\n\n/** @docs-private */\nexport interface OuiTabGroupBaseHeader {\n  _alignInkBarToSelectedTab(): void;\n  updatePagination(): void;\n  focusIndex: number;\n}\n\n/** Possible positions for the tab header. */\nexport type OuiTabHeaderPosition = 'above' | 'below';\n\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\n@Component({\n  selector: 'oui-tab-group',\n  exportAs: 'ouiTabGroup',\n  templateUrl: 'tab-group.html',\n  styleUrls: ['tab-group.scss'],\n  encapsulation: ViewEncapsulation.None,\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  // eslint-disable-next-line\n  inputs: ['color', 'disableRipple'],\n  providers: [\n    {\n      provide: OUI_TAB_GROUP,\n      useExisting: ouiTabGroup,\n    },\n  ],\n  // eslint-disable-next-line\n  host: {\n    ngSkipHydration: '',\n    class: 'oui-mdc-tab-group oui-tab',\n    '[class.oui-mdc-tab-group-dynamic-height]': 'dynamicHeight',\n    '[class.oui-mdc-tab-group-inverted-header]': 'headerPosition === \"below\"',\n    '[class.oui-mdc-tab-group-stretch-tabs]': 'stretchTabs',\n    '[style.--oui-tab-animation-duration]': 'animationDuration',\n  },\n  standalone: false,\n})\nexport class ouiTabGroup\n  extends _OuiTabGroupMixinBase\n  implements\n    AfterContentInit,\n    AfterContentChecked,\n    OnDestroy,\n    CanColor,\n    CanDisableRipple\n{\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  _animationMode? = inject(ANIMATION_MODULE_TYPE, { optional: true });\n\n  /**\n   * All tabs inside the tab group. This includes tabs that belong to groups that are nested\n   * inside the current one. We filter out only the tabs that belong to this group in `_tabs`.\n   */\n  @ContentChildren(OuiTab, { descendants: true }) _allTabs: QueryList<OuiTab>;\n  @ViewChild('tabBodyWrapper') _tabBodyWrapper: ElementRef;\n  @ViewChild('tabHeader') _tabHeader: OuiTabHeader;\n\n  /** All of the tabs that belong to the group. */\n  _tabs: QueryList<OuiTab> = new QueryList<OuiTab>();\n\n  /** The tab index that should be selected after the content has been checked. */\n  private _indexToSelect: number | null = 0;\n\n  /** Index of the tab that was focused last. */\n  private _lastFocusedTabIndex: number | null = null;\n\n  /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n  private _tabBodyWrapperHeight = 0;\n\n  /** Subscription to tabs being added/removed. */\n  private _tabsSubscription = Subscription.EMPTY;\n\n  /** Subscription to changes in the tab labels. */\n  private _tabLabelSubscription = Subscription.EMPTY;\n\n  /** Whether the ink bar should fit its width to the size of the tab label content. */\n  @Input()\n  get fitInkBarToContent(): boolean {\n    return this._fitInkBarToContent;\n  }\n  set fitInkBarToContent(v: BooleanInput) {\n    this._fitInkBarToContent = coerceBooleanProperty(v);\n    this._changeDetectorRef.markForCheck();\n  }\n  private _fitInkBarToContent = false;\n\n  /** Whether tabs should be stretched to fill the header. */\n  @Input('oui-stretch-tabs')\n  get stretchTabs(): boolean {\n    return this._stretchTabs;\n  }\n  set stretchTabs(v: BooleanInput) {\n    this._stretchTabs = coerceBooleanProperty(v);\n  }\n  private _stretchTabs = true;\n\n  /** Whether the tab group should grow to the size of the active tab. */\n  @Input()\n  get dynamicHeight(): boolean {\n    return this._dynamicHeight;\n  }\n\n  set dynamicHeight(value: BooleanInput) {\n    this._dynamicHeight = coerceBooleanProperty(value);\n  }\n\n  private _dynamicHeight = false;\n\n  /** The index of the active tab. */\n  @Input()\n  get selectedIndex(): number | null {\n    return this._selectedIndex;\n  }\n\n  set selectedIndex(value: NumberInput) {\n    this._indexToSelect = coerceNumberProperty(value, null);\n  }\n\n  private _selectedIndex: number | null = null;\n\n  /** Position of the tab header. */\n  @Input() headerPosition: OuiTabHeaderPosition = 'above';\n\n  /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n  @Input()\n  get animationDuration(): string {\n    return this._animationDuration;\n  }\n\n  set animationDuration(value: NumberInput) {\n    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n    this._animationDuration = /^\\d+$/.test(value + '') // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n      ? value + 'ms'\n      : (value as string);\n  }\n\n  private _animationDuration: string;\n\n  /**\n   * `tabindex` to be set on the inner element that wraps the tab content. Can be used for improved\n   * accessibility when the tab does not have focusable elements or if it has scrollable content.\n   * The `tabindex` will be removed automatically for inactive tabs.\n   * Read more at https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html\n   */\n  @Input()\n  get contentTabIndex(): number | null {\n    return this._contentTabIndex;\n  }\n\n  set contentTabIndex(value: NumberInput) {\n    this._contentTabIndex = coerceNumberProperty(value, null);\n  }\n\n  private _contentTabIndex: number | null;\n\n  /**\n   * Whether pagination should be disabled. This can be used to avoid unnecessary\n   * layout recalculations if it's known that pagination won't be required.\n   */\n  @Input()\n  get disablePagination(): boolean {\n    return this._disablePagination;\n  }\n\n  set disablePagination(value: BooleanInput) {\n    this._disablePagination = coerceBooleanProperty(value);\n  }\n\n  private _disablePagination = false;\n\n  /**\n   * By default tabs remove their content from the DOM while it's off-screen.\n   * Setting this to `true` will keep it in the DOM which will prevent elements\n   * like iframes and videos from reloading next time it comes back into the view.\n   */\n  @Input()\n  get preserveContent(): boolean {\n    return this._preserveContent;\n  }\n\n  set preserveContent(value: BooleanInput) {\n    this._preserveContent = coerceBooleanProperty(value);\n  }\n\n  private _preserveContent = false;\n\n  /** Background color of the tab group. */\n  @Input()\n  get backgroundColor(): ThemePalette {\n    return this._backgroundColor;\n  }\n\n  set backgroundColor(value: ThemePalette) {\n    const classList: DOMTokenList = this._elementRef.nativeElement.classList;\n\n    classList.remove(\n      'oui-tabs-with-background',\n      `oui-background-${this.backgroundColor}`\n    );\n\n    if (value) {\n      classList.add('oui-tabs-with-background', `oui-background-${value}`);\n    }\n\n    this._backgroundColor = value;\n  }\n\n  private _backgroundColor: ThemePalette;\n\n  /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n  @Output() readonly selectedIndexChange: EventEmitter<number> =\n    new EventEmitter<number>();\n\n  /** Event emitted when focus has changed within a tab group. */\n  @Output() readonly focusChange: EventEmitter<OuiTabChangeEvent> =\n    new EventEmitter<OuiTabChangeEvent>();\n\n  /** Event emitted when the body animation has completed */\n  @Output() readonly animationDone: EventEmitter<void> =\n    new EventEmitter<void>();\n\n  /** Event emitted when the tab selection has changed. */\n  @Output() readonly selectedTabChange: EventEmitter<OuiTabChangeEvent> =\n    new EventEmitter<OuiTabChangeEvent>(true);\n\n  private _groupId: number;\n  getHTMLText: any;\n  updatedTabHTML: any;\n\n  constructor() {\n    const elementRef = inject(ElementRef);\n    const defaultConfig = inject<OuiTabsConfig>(OUI_TABS_CONFIG, {\n      optional: true,\n    });\n\n    super(elementRef);\n    this._groupId = nextId++;\n    this.animationDuration =\n      defaultConfig && defaultConfig.animationDuration\n        ? defaultConfig.animationDuration\n        : '500ms';\n    this.disablePagination =\n      defaultConfig && defaultConfig.disablePagination != null\n        ? defaultConfig.disablePagination\n        : false;\n    this.dynamicHeight =\n      defaultConfig && defaultConfig.dynamicHeight != null\n        ? defaultConfig.dynamicHeight\n        : false;\n    this.contentTabIndex = defaultConfig?.contentTabIndex ?? null;\n    this.preserveContent = !!defaultConfig?.preserveContent;\n    this.fitInkBarToContent =\n      defaultConfig && defaultConfig.fitInkBarToContent != null\n        ? defaultConfig.fitInkBarToContent\n        : false;\n    this.stretchTabs =\n      defaultConfig && defaultConfig.stretchTabs != null\n        ? defaultConfig.stretchTabs\n        : false;\n  }\n\n  /**\n   * After the content is checked, this component knows what tabs have been defined\n   * and what the selected index should be. This is where we can know exactly what position\n   * each tab should be in according to the new selected index, and additionally we know how\n   * a new selected tab should transition in (from the left or right).\n   */\n  ngAfterContentChecked() {\n    // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n    // the amount of tabs changes before the actual change detection runs.\n    const indexToSelect = (this._indexToSelect = this._clampTabIndex(\n      this._indexToSelect\n    ));\n\n    // If there is a change in selected index, emit a change event. Should not trigger if\n    // the selected index has not yet been initialized.\n    if (this._selectedIndex != indexToSelect) {\n      const isFirstRun = this._selectedIndex == null;\n\n      if (!isFirstRun) {\n        this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n        // Preserve the height so page doesn't scroll up during tab change.\n        // Fixes https://stackblitz.com/edit/mat-tabs-scroll-page-top-on-tab-change\n        const wrapper = this._tabBodyWrapper.nativeElement;\n        // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n        wrapper.style.minHeight = wrapper.clientHeight + 'px';\n      }\n\n      // Changing these values after change detection has run\n      // since the checked content may contain references to them.\n      Promise.resolve().then(() => {\n        this._tabs.forEach(\n          (tab, index) => (tab.isActive = index === indexToSelect)\n        );\n\n        if (!isFirstRun) {\n          this.selectedIndexChange.emit(indexToSelect);\n          // Clear the min-height, this was needed during tab change to avoid\n          // unnecessary scrolling.\n          this._tabBodyWrapper.nativeElement.style.minHeight = '';\n        }\n      });\n    }\n    // Setup the position for each tab and optionally setup an origin on the next selected tab.\n    this._tabs.forEach((tab: OuiTab, index: number) => {\n      tab.position = index - indexToSelect;\n\n      // If there is already a selected tab, then set up an origin for the next selected tab\n      // if it doesn't have one already.\n      if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n        tab.origin = indexToSelect - this._selectedIndex;\n      }\n    });\n\n    if (this._selectedIndex !== indexToSelect) {\n      this._selectedIndex = indexToSelect;\n      this._lastFocusedTabIndex = null;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  ngAfterContentInit() {\n    this._subscribeToAllTabChanges();\n    this._subscribeToTabLabels();\n    // Subscribe to changes in the amount of tabs, in order to be\n    // able to re-render the content as new tabs are added or removed.\n    this._tabsSubscription = this._tabs.changes.subscribe(() => {\n      const indexToSelect = this._clampTabIndex(this._indexToSelect);\n\n      // Maintain the previously-selected tab if a new tab is added or removed and there is no\n      // explicit change that selects a different tab.\n      if (indexToSelect === this._selectedIndex) {\n        const tabs = this._tabs.toArray();\n        let selectedTab: OuiTab | undefined;\n\n        for (let i = 0; i < tabs.length; i++) {\n          if (tabs[i].isActive) {\n            // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n            // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n            // adding a tab within the `selectedIndexChange` event.\n            this._indexToSelect = this._selectedIndex = i;\n            this._lastFocusedTabIndex = null;\n            selectedTab = tabs[i];\n            break;\n          }\n        }\n\n        // If we haven't found an active tab and a tab exists at the selected index, it means\n        // that the active tab was swapped out. Since this won't be picked up by the rendering\n        // loop in `ngAfterContentChecked`, we need to sync it up manually.\n        if (!selectedTab && tabs[indexToSelect]) {\n          Promise.resolve().then(() => {\n            tabs[indexToSelect].isActive = true;\n            this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n          });\n        }\n      }\n\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  /** Listens to changes in all of the tabs. */\n  private _subscribeToAllTabChanges() {\n    // Since we use a query with `descendants: true` to pick up the tabs, we may end up catching\n    // some that are inside of nested tab groups. We filter them out manually by checking that\n    // the closest group to the tab is the current one.\n    if (this._allTabs?.['_results']?.[0]?.contentWithin) {\n      this.getHTMLText = this._allTabs['_results'][0].contentWithin;\n      this.updatedTabHTML = this.getHTMLText;\n    }\n    this._allTabs.changes\n      .pipe(startWith(this._allTabs))\n      .subscribe((tabs: QueryList<OuiTab>) => {\n        this._tabs.reset(\n          tabs.filter((tab) => {\n            return tab._closestTabGroup === this || !tab._closestTabGroup;\n          })\n        );\n        this._tabs.notifyOnChanges();\n      });\n  }\n\n  ngOnDestroy() {\n    this._tabs.destroy();\n    this._tabsSubscription.unsubscribe();\n    this._tabLabelSubscription.unsubscribe();\n  }\n\n  /** Re-aligns the ink bar to the selected tab element. */\n  realignInkBar() {\n    if (this._tabHeader) {\n      this._tabHeader._alignInkBarToSelectedTab();\n    }\n  }\n\n  /**\n   * Recalculates the tab group's pagination dimensions.\n   *\n   * WARNING: Calling this method can be very costly in terms of performance. It should be called\n   * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n   * page.\n   */\n  updatePagination() {\n    if (this._tabHeader) {\n      this._tabHeader.updatePagination();\n    }\n  }\n\n  /**\n   * Sets focus to a particular tab.\n   * @param index Index of the tab to be focused.\n   */\n  focusTab(index: number) {\n    const header = this._tabHeader;\n\n    if (header) {\n      header.focusIndex = index;\n    }\n  }\n\n  _focusChanged(index: number) {\n    this._lastFocusedTabIndex = index;\n    this.focusChange.emit(this._createChangeEvent(index));\n  }\n\n  private _createChangeEvent(index: number): OuiTabChangeEvent {\n    const event = new OuiTabChangeEvent();\n    event.index = index;\n    if (this._tabs && this._tabs.length) {\n      event.tab = this._tabs.toArray()[index];\n      if (event.tab?.contentWithin) {\n        this.updatedTabHTML = event.tab.contentWithin;\n      }\n    }\n    return event;\n  }\n\n  _handleEnter() {\n    this.getHTMLText = this.updatedTabHTML;\n  }\n\n  /**\n   * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n   * on the OuiTab component, whereas the data binding is inside the ouiTabGroup. In order for the\n   * binding to be updated, we need to subscribe to changes in it and trigger change detection\n   * manually.\n   */\n  private _subscribeToTabLabels() {\n    if (this._tabLabelSubscription) {\n      this._tabLabelSubscription.unsubscribe();\n    }\n\n    this._tabLabelSubscription = merge(\n      ...this._tabs.map((tab) => tab._stateChanges)\n    ).subscribe(() => this._changeDetectorRef.markForCheck());\n  }\n\n  /** Clamps the given index to the bounds of 0 and the tabs length. */\n  private _clampTabIndex(index: number | null): number {\n    // Note the `|| 0`, which ensures that values like NaN can't get through\n    // and which would otherwise throw the component into an infinite loop\n    // (since Math.max(NaN, 0) === NaN).\n    return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n  }\n\n  /** Returns a unique id for each tab label element */\n  _getTabLabelId(i: number): string {\n    return `oui-tab-label-${this._groupId}-${i}`;\n  }\n\n  /** Returns a unique id for each tab content element */\n  _getTabContentId(i: number): string {\n    return `oui-tab-content-${this._groupId}-${i}`;\n  }\n\n  /**\n   * Sets the height of the body wrapper to the height of the activating tab if dynamic\n   * height property is true.\n   */\n  _setTabBodyWrapperHeight(tabHeight: number): void {\n    if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n      return;\n    }\n\n    const wrapper: HTMLElement = this._tabBodyWrapper.nativeElement;\n    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n    wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n\n    // This conditional forces the browser to paint the height so that\n    // the animation to the new height can have an origin.\n    if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n      // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n      wrapper.style.height = tabHeight + 'px';\n    }\n  }\n\n  /** Removes the height of the tab body wrapper. */\n  _removeTabBodyWrapperHeight(): void {\n    const wrapper = this._tabBodyWrapper.nativeElement;\n    this._tabBodyWrapperHeight = wrapper.clientHeight;\n    wrapper.style.height = '';\n    this.animationDone.emit();\n  }\n\n  /** Handle click events, setting new selected index if appropriate. */\n  _handleClick(tab: OuiTab, tabHeader: OuiTabGroupBaseHeader, index: number) {\n    tabHeader.focusIndex = index;\n    this.getHTMLText = this.updatedTabHTML;\n\n    if (!tab.disabled) {\n      this.selectedIndex = index;\n    }\n  }\n\n  /** Retrieves the tabindex for the tab. */\n  _getTabIndex(index: number): number {\n    const targetIndex = this._lastFocusedTabIndex ?? this.selectedIndex;\n    return index === targetIndex ? 0 : -1;\n  }\n\n  /** Callback for when the focused state of a tab has changed. */\n  _tabFocusChanged(focusOrigin: FocusOrigin, index: number) {\n    // Mouse/touch focus happens during the `mousedown`/`touchstart` phase which\n    // can cause the tab to be moved out from under the pointer, interrupting the\n    // click sequence (see #21898). We don't need to scroll the tab into view for\n    // such cases anyway, because it will be done when the tab becomes selected.\n    if (focusOrigin && focusOrigin !== 'mouse' && focusOrigin !== 'touch') {\n      this._tabHeader.focusIndex = index;\n    }\n  }\n}\n\n/** A simple change event emitted on focus or selection changes. */\nexport class OuiTabChangeEvent {\n  /** Index of the currently-selected tab. */\n  index: number;\n  /** Reference to the currently-selected tab. */\n  tab: OuiTab;\n  event: Event;\n}\n","<oui-tab-header\n  #tabHeader\n  [selectedIndex]=\"selectedIndex || 0\"\n  [disableRipple]=\"disableRipple\"\n  [disablePagination]=\"disablePagination\"\n  (indexFocused)=\"_focusChanged($event)\"\n  (selectFocusedIndex)=\"selectedIndex = $event\"\n>\n  <div\n    class=\"mdc-tab oui-mdc-tab oui-mdc-focus-indicator\"\n    #tabNode\n    role=\"tab\"\n    ouiTabLabelWrapper\n    cdkMonitorElementFocus\n    *ngFor=\"let tab of _tabs; let i = index\"\n    [id]=\"_getTabLabelId(i)\"\n    [attr.tabIndex]=\"_getTabIndex(i)\"\n    [attr.aria-posinset]=\"i + 1\"\n    [attr.aria-setsize]=\"_tabs.length\"\n    [attr.aria-controls]=\"_getTabContentId(i)\"\n    [attr.aria-selected]=\"selectedIndex === i\"\n    [attr.aria-label]=\"tab.ariaLabel || null\"\n    [attr.aria-labelledby]=\"(!tab.ariaLabel && tab.ariaLabelledby) ? tab.ariaLabelledby : null\"\n    [class.mdc-tab--active]=\"selectedIndex === i\"\n    [ngClass]=\"tab.labelClass\"\n    [disabled]=\"tab.disabled\"\n    [fitInkBarToContent]=\"fitInkBarToContent\"\n    (click)=\"_handleClick(tab, tabHeader, i)\"\n    (keyup.enter)=\"_handleEnter()\"\n    (cdkFocusChange)=\"_tabFocusChanged($event, i)\"\n  >\n    <span class=\"mdc-tab__ripple\"></span>\n\n    <!-- Needs to be a separate element, because we can't put\n         `overflow: hidden` on tab due to the ink bar. -->\n    <div class=\"oui-mdc-tab-ripple\"></div>\n\n    <span class=\"mdc-tab__content\">\n      <span class=\"mdc-tab__text-label\">\n        <!-- If there is a label template, use it. -->\n        <ng-template [ngIf]=\"tab.templateLabel\" [ngIfElse]=\"tabTextLabel\">\n          <ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template>\n        </ng-template>\n\n        <!-- If there is not a label template, fall back to the text label. -->\n        <ng-template #tabTextLabel>{{tab.textLabel}}</ng-template>\n      </span>\n    </span>\n  </div>\n</oui-tab-header>\n\n<div\n  class=\"oui-mdc-tab-body-wrapper\"\n  [class.oui-text-height]=\"getHTMLText\"\n  [class._oui-animation-noopable]=\"_animationMode === 'NoopAnimations'\"\n  #tabBodyWrapper\n>\n  <oui-tab-body\n    role=\"tabpanel\"\n    *ngFor=\"let tab of _tabs; let i = index\"\n    [id]=\"_getTabContentId(i)\"\n    [attr.tabindex]=\"(contentTabIndex !== null && selectedIndex === i) ? contentTabIndex : null\"\n    [attr.aria-labelledby]=\"_getTabLabelId(i)\"\n    [class.oui-mdc-tab-body-active]=\"selectedIndex === i\"\n    [ngClass]=\"tab.bodyClass\"\n    [content]=\"tab.contentWithin\"\n    [position]=\"tab.position!\"\n    [origin]=\"tab.origin\"\n    [animationDuration]=\"animationDuration\"\n    [preserveContent]=\"preserveContent\"\n    (_onCentered)=\"_removeTabBodyWrapperHeight()\"\n    (_onCentering)=\"_setTabBodyWrapperHeight($event)\"\n  >\n  </oui-tab-body>\n</div>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n  AfterContentChecked,\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  forwardRef,\n  Input,\n  OnDestroy,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n  HostAttributeToken,\n} from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport {\n  CanDisable,\n  CanDisableRipple,\n  HasTabIndex,\n  mixinDisabled,\n  mixinDisableRipple,\n  mixinTabIndex,\n  ThemePalette,\n} from '../../core';\nimport { FocusableOption, FocusMonitor } from '@angular/cdk/a11y';\nimport { OuiInkBar, mixinInkBarItem } from '../ink-bar';\nimport {\n  BooleanInput,\n  coerceBooleanProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { OUI_TABS_CONFIG, OuiTabsConfig } from '../tab-config';\nimport { OuiPaginatedTabHeader } from '../paginated-tab-header';\n// import { isDevMode } from '@angular/core';\n\n// Increasing integer for generating unique ids for tab nav components.\nlet nextUniqueId = 0;\n\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[oui-tab-nav-bar]',\n  exportAs: 'OuiTabNavBar, OuiTabNav',\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['color'],\n  templateUrl: 'tab-nav-bar.html',\n  styleUrls: ['tab-nav-bar.scss'],\n  host: {\n    '[attr.role]': '_getRole()',\n    class: 'oui-mdc-tab-nav-bar oui-mdc-tab-header oui-tab',\n    '[class.oui-mdc-tab-header-pagination-controls-enabled]':\n      '_showPaginationControls',\n    '[class.oui-mdc-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n    '[class.oui-mdc-tab-nav-bar-stretch-tabs]': 'stretchTabs',\n    '[class.oui-primary]': 'color !== \"warn\" && color !== \"accent\"',\n    '[class.oui-accent]': 'color === \"accent\"',\n    '[class.oui-warn]': 'color === \"warn\"',\n    '[class._oui-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n    '[style.--oui-tab-animation-duration]': 'animationDuration',\n  },\n  encapsulation: ViewEncapsulation.None,\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  standalone: false,\n})\nexport class OuiTabNav\n  extends OuiPaginatedTabHeader\n  implements AfterContentChecked, AfterContentInit, OnDestroy, AfterViewInit\n{\n  /** Whether the ink bar should fit its width to the size of the tab label content. */\n  @Input()\n  get fitInkBarToContent(): boolean {\n    return this._fitInkBarToContent.value;\n  }\n  set fitInkBarToContent(v: BooleanInput) {\n    this._fitInkBarToContent.next(coerceBooleanProperty(v));\n    this._changeDetectorRef.markForCheck();\n  }\n  _fitInkBarToContent = new BehaviorSubject(false);\n\n  /** Whether tabs should be stretched to fill the header. */\n  @Input('oui-stretch-tabs')\n  get stretchTabs(): boolean {\n    return this._stretchTabs;\n  }\n  set stretchTabs(v: BooleanInput) {\n    this._stretchTabs = coerceBooleanProperty(v);\n  }\n  private _stretchTabs = true;\n\n  @Input()\n  get animationDuration(): string {\n    return this._animationDuration;\n  }\n\n  set animationDuration(value: NumberInput) {\n    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n    this._animationDuration = /^\\d+$/.test(value + '') // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n      ? value + 'ms'\n      : (value as string);\n  }\n\n  private _animationDuration: string;\n\n  /** Query list of all tab links of the tab navigation. */\n  @ContentChildren(forwardRef(() => OuiTabLink), { descendants: true })\n  _items: QueryList<OuiTabLink>;\n\n  /** Background color of the tab nav. */\n  @Input()\n  get backgroundColor(): ThemePalette {\n    return this._backgroundColor;\n  }\n\n  set backgroundColor(value: ThemePalette) {\n    const classList = this._elementRef.nativeElement.classList;\n    classList.remove(\n      'oui-tabs-with-background',\n      `oui-background-${this.backgroundColor}`\n    );\n\n    if (value) {\n      classList.add('oui-tabs-with-background', `oui-background-${value}`);\n    }\n\n    this._backgroundColor = value;\n  }\n\n  private _backgroundColor: ThemePalette;\n\n  /** Whether the ripple effect is disabled or not. */\n  @Input()\n  get disableRipple(): boolean {\n    return this._disableRipple;\n  }\n\n  set disableRipple(value: BooleanInput) {\n    this._disableRipple = coerceBooleanProperty(value);\n  }\n\n  private _disableRipple = false;\n\n  /** Theme color of the nav bar. */\n  @Input() color: ThemePalette = 'primary';\n\n  /**\n   * Associated tab panel controlled by the nav bar. If not provided, then the nav bar\n   * follows the ARIA link / navigation landmark pattern. If provided, it follows the\n   * ARIA tabs design pattern.\n   */\n  @Input() tabPanel?: ouiTabNavPanel;\n\n  @ViewChild('tabListContainer', { static: true })\n  _tabListContainer: ElementRef;\n  @ViewChild('tabList', { static: true }) _tabList: ElementRef;\n  @ViewChild('tabListInner', { static: true }) _tabListInner: ElementRef;\n  @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\n  @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\n  _inkBar: OuiInkBar;\n\n  constructor() {\n    const defaultConfig = inject<OuiTabsConfig>(OUI_TABS_CONFIG, {\n      optional: true,\n    });\n\n    super();\n    this.disablePagination =\n      defaultConfig && defaultConfig.disablePagination != null\n        ? defaultConfig.disablePagination\n        : false;\n    this.fitInkBarToContent =\n      defaultConfig && defaultConfig.fitInkBarToContent != null\n        ? defaultConfig.fitInkBarToContent\n        : false;\n    this.stretchTabs =\n      defaultConfig && defaultConfig.stretchTabs != null\n        ? defaultConfig.stretchTabs\n        : true;\n  }\n\n  protected _itemSelected() {\n    // noop\n  }\n\n  override ngAfterContentInit() {\n    this._inkBar = new OuiInkBar(this._items);\n    // We need this to run before the `changes` subscription in parent to ensure that the\n    // selectedIndex is up-to-date by the time the super class starts looking for it.\n    this._items.changes\n      .pipe(startWith(null), takeUntil(this._destroyed))\n      .subscribe(() => {\n        this.updateActiveLink();\n      });\n\n    super.ngAfterContentInit();\n  }\n\n  /** Notifies the component that the active link has been changed. */\n  updateActiveLink() {\n    if (!this._items) {\n      return;\n    }\n\n    const items = this._items.toArray();\n\n    for (let i = 0; i < items.length; i++) {\n      if (items[i].active) {\n        this.selectedIndex = i;\n        this._changeDetectorRef.markForCheck();\n\n        if (this.tabPanel) {\n          this.tabPanel._activeTabId = items[i].id;\n        }\n\n        return;\n      }\n    }\n\n    // The ink bar should hide itself if no items are active.\n    this.selectedIndex = -1;\n    this._inkBar.hide();\n  }\n\n  _getRole(): string | null {\n    return this.tabPanel\n      ? 'tablist'\n      : this._elementRef.nativeElement.getAttribute('role');\n  }\n}\n\n// Boilerplate for applying mixins to OuiTabLink.\nconst _OuiTabLinkMixinBase = mixinInkBarItem(\n  mixinTabIndex(\n    mixinDisableRipple(\n      mixinDisabled(\n        class {\n          elementRef: ElementRef;\n        }\n      )\n    )\n  )\n);\n\n/**\n * Link inside a `oui-tab-nav-bar`.\n */\n@Component({\n  // eslint-disable-next-line\n  selector: '[oui-tab-link], [OuiTabLink]',\n  exportAs: 'OuiTabLink',\n  // eslint-disable-next-line\n  inputs: [\n    'disabled',\n    'disableRipple',\n    'tabIndex',\n    'active',\n    'id',\n    'routerLink',\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  templateUrl: 'tab-link.html',\n  styleUrls: ['tab-link.scss'],\n  // eslint-disable-next-line\n  host: {\n    class: 'mdc-tab oui-mdc-tab-link oui-mdc-focus-indicator',\n    '[attr.aria-controls]': '_getAriaControls()',\n    '[attr.aria-current]': '_getAriaCurrent()',\n    '[attr.aria-disabled]': 'disabled',\n    '[attr.aria-selected]': '_getAriaSelected()',\n    '[attr.id]': 'id',\n    '[attr.tabIndex]': '_getTabIndex()',\n    '[attr.role]': '_getRole()',\n    '[class.oui-mdc-tab-disabled]': 'disabled',\n    '[class.mdc-tab--active]': 'active',\n    '(focus)': '_handleFocus()',\n    '(keydown)': '_handleKeydown($event)',\n  },\n  standalone: false,\n})\nexport class OuiTabLink\n  extends _OuiTabLinkMixinBase\n  implements\n    AfterViewInit,\n    OnDestroy,\n    CanDisable,\n    CanDisableRipple,\n    HasTabIndex,\n    FocusableOption\n{\n  private _tabNavBar = inject(OuiTabNav);\n  private _focusMonitor = inject(FocusMonitor);\n\n  private readonly _destroyed = new Subject<void>();\n\n  /** Whether the tab link is active or not. */\n  protected _isActive = false;\n\n  /** Whether the link is active. */\n  @Input()\n  get active(): boolean {\n    return this._isActive;\n  }\n\n  set active(value: BooleanInput) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._isActive) {\n      this._isActive = newValue;\n      this._tabNavBar.updateActiveLink();\n    }\n  }\n\n  /**\n   * Whether ripples are disabled on interaction.\n   * @docs-private\n   */\n  get rippleDisabled(): boolean {\n    return this.disabled || this.disableRipple || this._tabNavBar.disableRipple;\n  }\n\n  /** Unique id for the tab. */\n  @Input() id = `oui-tab-link-${nextUniqueId++}`;\n\n  constructor() {\n    const tabIndex = inject(new HostAttributeToken('tabindex'), {\n      optional: true,\n    })!;\n    const animationMode = inject(ANIMATION_MODULE_TYPE, { optional: true });\n\n    super();\n    const _tabNavBar = this._tabNavBar;\n\n    // Inject ElementRef for the mixin\n    this.elementRef = inject(ElementRef);\n\n    this.tabIndex = parseInt(tabIndex) || 0;\n\n    if (animationMode === 'NoopAnimations') {\n      // this.rippleConfig.animation = { enterDuration: 0, exitDuration: 0 };\n    }\n\n    _tabNavBar._fitInkBarToContent\n      .pipe(takeUntil(this._destroyed))\n      .subscribe((fitInkBarToContent) => {\n        this.fitInkBarToContent = fitInkBarToContent;\n      });\n  }\n\n  /** Focuses the tab link. */\n  focus() {\n    this.elementRef.nativeElement.focus();\n  }\n\n  ngAfterViewInit() {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n    if (this.elementRef?.nativeElement) {\n      this._focusMonitor.monitor(this.elementRef);\n    }\n  }\n\n  override ngOnDestroy() {\n    this._destroyed.next();\n    this._destroyed.complete();\n    super.ngOnDestroy();\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n    if (this.elementRef?.nativeElement) {\n      this._focusMonitor.stopMonitoring(this.elementRef);\n    }\n  }\n\n  _handleFocus() {\n    // Since we allow navigation through tabbing in the nav bar, we\n    // have to update the focused index whenever the link receives focus.\n    if (this._tabNavBar?._items) {\n      this._tabNavBar.focusIndex = this._tabNavBar._items\n        .toArray()\n        .indexOf(this);\n    }\n  }\n\n  _handleKeydown(event: KeyboardEvent) {\n    if (this.disabled && (event.keyCode === SPACE || event.keyCode === ENTER)) {\n      event.preventDefault();\n    } else if (this._tabNavBar.tabPanel && event.keyCode === SPACE) {\n      this.elementRef.nativeElement.click();\n    }\n  }\n\n  _getAriaControls(): string | null {\n    return this._tabNavBar.tabPanel\n      ? this._tabNavBar.tabPanel?.id\n      : this.elementRef.nativeElement.getAttribute('aria-controls');\n  }\n\n  _getAriaSelected(): string | null {\n    if (this._tabNavBar.tabPanel) {\n      return this.active ? 'true' : 'false';\n    } else {\n      return this.elementRef.nativeElement.getAttribute('aria-selected');\n    }\n  }\n\n  _getAriaCurrent(): string | null {\n    return this.active && !this._tabNavBar.tabPanel ? 'page' : null;\n  }\n\n  _getRole(): string | null {\n    return this._tabNavBar.tabPanel\n      ? 'tab'\n      : this.elementRef.nativeElement.getAttribute('role');\n  }\n\n  _getTabIndex(): number {\n    if (this._tabNavBar.tabPanel) {\n      return this._isActive && !this.disabled ? 0 : -1;\n    } else {\n      return this.tabIndex;\n    }\n  }\n}\n\n/**\n * Tab panel component associated with OuiTabNav.\n */\n@Component({\n  selector: 'oui-tab-nav-panel',\n  exportAs: 'ouiTabNavPanel',\n  template: '<ng-content></ng-content>',\n  host: {\n    '[attr.aria-labelledby]': '_activeTabId',\n    '[attr.id]': 'id',\n    class: 'oui-mdc-tab-nav-panel',\n    role: 'tabpanel',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ouiTabNavPanel {\n  /** Unique id for the tab panel. */\n  @Input() id = `oui-tab-nav-panel-${nextUniqueId++}`;\n\n  /** Id of the active tab in the nav bar. */\n  _activeTabId?: string;\n}\n","<!-- TODO: this also had `mat-elevation-z4`. Figure out what we should do with it. -->\n<button\n  class=\"oui-mdc-tab-header-pagination oui-mdc-tab-header-pagination-before\"\n  #previousPaginator\n  aria-hidden=\"true\"\n  type=\"button\"\n  tabindex=\"-1\"\n  [class.oui-mdc-tab-header-pagination-disabled]=\"_disableScrollBefore\"\n  [disabled]=\"_disableScrollBefore || null\"\n  (click)=\"_handlePaginatorClick('before')\"\n  (mousedown)=\"_handlePaginatorPress('before', $event)\"\n  (touchend)=\"_stopInterval()\"\n>\n  <div class=\"oui-mdc-tab-header-pagination-chevron\"></div>\n</button>\n\n<div\n  class=\"oui-mdc-tab-link-container\"\n  #tabListContainer\n  (keydown)=\"_handleKeydown($event)\"\n>\n  <div\n    class=\"oui-mdc-tab-list\"\n    #tabList\n    (cdkObserveContent)=\"_onContentChanges()\"\n  >\n    <div class=\"oui-mdc-tab-links\" #tabListInner>\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>\n\n<!-- TODO: this also had `mat-elevation-z4`. Figure out what we should do with it. -->\n<button\n  class=\"oui-mdc-tab-header-pagination oui-mdc-tab-header-pagination-after\"\n  #nextPaginator\n  aria-hidden=\"true\"\n  type=\"button\"\n  [class.oui-mdc-tab-header-pagination-disabled]=\"_disableScrollAfter\"\n  [disabled]=\"_disableScrollAfter || null\"\n  tabindex=\"-1\"\n  (mousedown)=\"_handlePaginatorPress('after', $event)\"\n  (click)=\"_handlePaginatorClick('after')\"\n  (touchend)=\"_stopInterval()\"\n>\n  <div class=\"oui-mdc-tab-header-pagination-chevron\"></div>\n</button>\n","<span class=\"mdc-tab__ripple\"></span>\n\n<div class=\"oui-mdc-tab-ripple\"></div>\n\n<span class=\"mdc-tab__content\">\n  <span class=\"mdc-tab__text-label\">\n    <ng-content></ng-content>\n  </span>\n</span>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OuiTabBodyPortal } from './tab-body';\nimport { OuiTabContent } from './tab-content';\nimport { OuiTabLabel } from './tab-label';\nimport { OuiTabLabelWrapper } from './tab-label-wrapper';\nimport { OuiTab } from './tab';\nimport { OuiTabHeader } from './tab-header';\nimport { ouiTabGroup } from './tab-group';\nimport {\n  OuiTabNav,\n  ouiTabNavPanel,\n  OuiTabLink,\n} from './tab-nav-bar/tab-nav-bar';\nimport { OuiTabBody } from './tab-body';\n\n@NgModule({\n  imports: [CommonModule, PortalModule, ObserversModule, A11yModule],\n  exports: [\n    OuiTabContent,\n    OuiTabLabel,\n    OuiTab,\n    ouiTabGroup,\n    OuiTabNav,\n    ouiTabNavPanel,\n    OuiTabLink,\n    OuiTabBodyPortal,\n    OuiTabBody,\n  ],\n  declarations: [\n    OuiTabContent,\n    OuiTabLabel,\n    OuiTab,\n    ouiTabGroup,\n    OuiTabNav,\n    ouiTabNavPanel,\n    OuiTabLink,\n\n    // Private directives, should not be exported.\n    OuiTabLabelWrapper,\n    OuiTabHeader,\n    OuiTabBody,\n    OuiTabBodyPortal,\n  ],\n})\nexport class OuiTabsModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './module';\nexport * from './paginated-tab-header';\nexport * from './tab';\nexport * from './tab-body';\nexport * from './tab-config';\nexport * from './tab-content';\nexport * from './tab-label';\nexport * from './ink-bar';\nexport * from './tab-header';\nexport * from './tab-group';\nexport * from './tab-nav-bar/tab-nav-bar';\nexport * from './tabs-animations';\nexport * from './tab-label-wrapper';\n","/*\n * Public API Surface of ui\n */\nexport * from './components/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_c0","observableThrow","observableOf","CDK_VERSION","ErrorStateMatcher","ShowOnDirtyErrorStateMatcher","DEFAULT_COLOR","_c1","i3.OuiCalendar","nextUniqueId","passiveEventListenerOptions","_c6"],"mappings":"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"}