{"version":3,"file":"list.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/list-option-types.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/list-item-sections.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/list-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/action-list.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/list.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/list-item.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/list-option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/list-option.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/subheader.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/nav-list.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/selection-list.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/list-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Type describing possible positions of a checkbox or radio in a list option\n * with respect to the list item's text.\n */\nexport type MatListOptionTogglePosition = 'before' | 'after';\n\n/**\n * Interface describing a list option. This is used to avoid circular\n * dependencies between the list-option and the styler directives.\n * @docs-private\n */\nexport interface ListOption {\n  _getTogglePosition(): MatListOptionTogglePosition;\n}\n\n/**\n * Injection token that can be used to reference instances of an `ListOption`. It serves\n * as alternative token to an actual implementation which could result in undesired\n * retention of the class or circular references breaking runtime execution.\n * @docs-private\n */\nexport const LIST_OPTION = new InjectionToken<ListOption>('ListOption');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, ElementRef, inject} from '@angular/core';\nimport {LIST_OPTION, ListOption} from './list-option-types';\n\n/**\n * Directive capturing the title of a list item. A list item usually consists of a\n * title and optional secondary or tertiary lines.\n *\n * Text content for the title never wraps. There can only be a single title per list item.\n */\n@Directive({\n  selector: '[matListItemTitle]',\n  host: {'class': 'mat-mdc-list-item-title mdc-list-item__primary-text'},\n})\nexport class MatListItemTitle {\n  _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n}\n\n/**\n * Directive capturing a line in a list item. A list item usually consists of a\n * title and optional secondary or tertiary lines.\n *\n * Text content inside a line never wraps. There can be at maximum two lines per list item.\n */\n@Directive({\n  selector: '[matListItemLine]',\n  host: {'class': 'mat-mdc-list-item-line mdc-list-item__secondary-text'},\n})\nexport class MatListItemLine {\n  _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n}\n\n/**\n * Directive matching an optional meta section for list items.\n *\n * List items can reserve space at the end of an item to display a control,\n * button or additional text content.\n */\n@Directive({\n  selector: '[matListItemMeta]',\n  host: {'class': 'mat-mdc-list-item-meta mdc-list-item__end'},\n})\nexport class MatListItemMeta {}\n\n/**\n * @docs-private\n *\n * MDC uses the very intuitively named classes `.mdc-list-item__start` and `.mat-list-item__end` to\n * position content such as icons or checkboxes/radios that comes either before or after the text\n * content respectively. This directive detects the placement of the checkbox/radio and applies the\n * correct MDC class to position the icon/avatar on the opposite side.\n */\n@Directive({\n  host: {\n    // MDC uses intuitively named classes `.mdc-list-item__start` and `.mat-list-item__end` to\n    // position content such as icons or checkboxes/radios that comes either before or after the\n    // text content respectively. This directive detects the placement of the checkbox/radio and\n    // applies the correct MDC class to position the icon/avatar on the opposite side.\n    '[class.mdc-list-item__start]': '_isAlignedAtStart()',\n    '[class.mdc-list-item__end]': '!_isAlignedAtStart()',\n  },\n})\nexport class _MatListItemGraphicBase {\n  _listOption = inject<ListOption>(LIST_OPTION, {optional: true});\n\n  _isAlignedAtStart() {\n    // By default, in all list items the graphic is aligned at start. In list options,\n    // the graphic is only aligned at start if the checkbox/radio is at the end.\n    return !this._listOption || this._listOption?._getTogglePosition() === 'after';\n  }\n}\n\n/**\n * Directive matching an optional avatar within a list item.\n *\n * List items can reserve space at the beginning of an item to display an avatar.\n */\n@Directive({\n  selector: '[matListItemAvatar]',\n  host: {'class': 'mat-mdc-list-item-avatar'},\n})\nexport class MatListItemAvatar extends _MatListItemGraphicBase {}\n\n/**\n * Directive matching an optional icon within a list item.\n *\n * List items can reserve space at the beginning of an item to display an icon.\n */\n@Directive({\n  selector: '[matListItemIcon]',\n  host: {'class': 'mat-mdc-list-item-icon'},\n})\nexport class MatListItemIcon extends _MatListItemGraphicBase {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/** Object that can be used to configure the default options for the list module. */\nexport interface MatListConfig {\n  /** Whether icon indicators should be hidden for single-selection. */\n  hideSingleSelectionIndicator?: boolean;\n}\n\n/** Injection token that can be used to provide the default options for the list module. */\nexport const MAT_LIST_CONFIG = new InjectionToken<MatListConfig>('MAT_LIST_CONFIG');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BooleanInput, coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  AfterViewInit,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  QueryList,\n  Injector,\n  signal,\n} from '@angular/core';\nimport {\n  _animationsDisabled,\n  _StructuralStylesLoader,\n  MAT_RIPPLE_GLOBAL_OPTIONS,\n  RippleConfig,\n  RippleGlobalOptions,\n  RippleRenderer,\n  RippleTarget,\n} from '../core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {Subscription, merge} from 'rxjs';\nimport {\n  MatListItemLine,\n  MatListItemTitle,\n  MatListItemIcon,\n  MatListItemAvatar,\n} from './list-item-sections';\nimport {MAT_LIST_CONFIG} from './tokens';\n\n@Directive({\n  host: {\n    '[attr.aria-disabled]': 'disabled',\n  },\n})\n/** @docs-private */\nexport abstract class MatListBase {\n  _isNonInteractive: boolean = true;\n\n  /** Whether ripples for all list items is disabled. */\n  @Input()\n  get disableRipple(): boolean {\n    return this._disableRipple;\n  }\n  set disableRipple(value: BooleanInput) {\n    this._disableRipple = coerceBooleanProperty(value);\n  }\n  private _disableRipple: boolean = false;\n\n  /**\n   * Whether the entire list is disabled. When disabled, the list itself and each of its list items\n   * are disabled.\n   */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled();\n  }\n  set disabled(value: BooleanInput) {\n    this._disabled.set(coerceBooleanProperty(value));\n  }\n  private _disabled = signal(false);\n\n  protected _defaultOptions = inject(MAT_LIST_CONFIG, {optional: true});\n}\n\n@Directive({\n  host: {\n    '[class.mdc-list-item--disabled]': 'disabled',\n    '[attr.aria-disabled]': 'disabled',\n    '[attr.disabled]': '(_isButtonElement && disabled) || null',\n  },\n})\n/** @docs-private */\nexport abstract class MatListItemBase implements AfterViewInit, OnDestroy, RippleTarget {\n  _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected _ngZone = inject(NgZone);\n  private _listBase = inject(MatListBase, {optional: true});\n  private _platform = inject(Platform);\n\n  /** Query list matching list-item line elements. */\n  abstract _lines: QueryList<MatListItemLine> | undefined;\n\n  /** Query list matching list-item title elements. */\n  abstract _titles: QueryList<MatListItemTitle> | undefined;\n\n  /**\n   * Element reference to the unscoped content in a list item.\n   *\n   * Unscoped content is user-projected text content in a list item that is\n   * not part of an explicit line or title.\n   */\n  abstract _unscopedContent: ElementRef<HTMLSpanElement> | undefined;\n\n  /** Host element for the list item. */\n  _hostElement: HTMLElement;\n\n  /** indicate whether the host element is a button or not */\n  _isButtonElement: boolean;\n\n  /** Whether animations are disabled. */\n  _noopAnimations = _animationsDisabled();\n\n  @ContentChildren(MatListItemAvatar, {descendants: false}) _avatars!: QueryList<never>;\n  @ContentChildren(MatListItemIcon, {descendants: false}) _icons!: QueryList<never>;\n\n  /**\n   * The number of lines this list item should reserve space for. If not specified,\n   * lines are inferred based on the projected content.\n   *\n   * Explicitly specifying the number of lines is useful if you want to acquire additional\n   * space and enable the wrapping of text. The unscoped text content of a list item will\n   * always be able to take up the remaining space of the item, unless it represents the title.\n   *\n   * A maximum of three lines is supported as per the Material Design specification.\n   */\n  @Input()\n  set lines(lines: number | string | null) {\n    this._explicitLines = coerceNumberProperty(lines, null);\n    this._updateItemLines(false);\n  }\n  _explicitLines: number | null = null;\n\n  /** Whether ripples for list items are disabled. */\n  @Input()\n  get disableRipple(): boolean {\n    return (\n      this.disabled ||\n      this._disableRipple ||\n      this._noopAnimations ||\n      !!this._listBase?.disableRipple\n    );\n  }\n  set disableRipple(value: BooleanInput) {\n    this._disableRipple = coerceBooleanProperty(value);\n  }\n  private _disableRipple: boolean = false;\n\n  /** Whether the list-item is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled() || !!this._listBase?.disabled;\n  }\n  set disabled(value: BooleanInput) {\n    this._disabled.set(coerceBooleanProperty(value));\n  }\n  private _disabled = signal(false);\n\n  private _subscriptions = new Subscription();\n  private _rippleRenderer: RippleRenderer | null = null;\n\n  /** Whether the list item has unscoped text content. */\n  _hasUnscopedTextContent: boolean = false;\n\n  /**\n   * Implemented as part of `RippleTarget`.\n   * @docs-private\n   */\n  rippleConfig: RippleConfig & RippleGlobalOptions;\n\n  /**\n   * Implemented as part of `RippleTarget`.\n   * @docs-private\n   */\n  get rippleDisabled(): boolean {\n    return this.disableRipple || !!this.rippleConfig.disabled;\n  }\n\n  constructor() {\n    inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n    const globalRippleOptions = inject<RippleGlobalOptions>(MAT_RIPPLE_GLOBAL_OPTIONS, {\n      optional: true,\n    });\n    this.rippleConfig = globalRippleOptions || {};\n    this._hostElement = this._elementRef.nativeElement;\n    this._isButtonElement = this._hostElement.nodeName.toLowerCase() === 'button';\n\n    if (this._listBase && !this._listBase._isNonInteractive) {\n      this._initInteractiveListItem();\n    }\n\n    // If no type attribute is specified for a host `<button>` element, set it to `button`. If a\n    // type attribute is already specified, we do nothing. We do this for backwards compatibility.\n    // TODO: Determine if we intend to continue doing this for the MDC-based list.\n    if (this._isButtonElement && !this._hostElement.hasAttribute('type')) {\n      this._hostElement.setAttribute('type', 'button');\n    }\n  }\n\n  ngAfterViewInit() {\n    this._monitorProjectedLinesAndTitle();\n    this._updateItemLines(true);\n  }\n\n  ngOnDestroy() {\n    this._subscriptions.unsubscribe();\n    if (this._rippleRenderer !== null) {\n      this._rippleRenderer._removeTriggerEvents();\n    }\n  }\n\n  /** Whether the list item has icons or avatars. */\n  _hasIconOrAvatar() {\n    return !!(this._avatars.length || this._icons.length);\n  }\n\n  private _initInteractiveListItem() {\n    this._hostElement.classList.add('mat-mdc-list-item-interactive');\n    this._rippleRenderer = new RippleRenderer(\n      this,\n      this._ngZone,\n      this._hostElement,\n      this._platform,\n      inject(Injector),\n    );\n    this._rippleRenderer.setupTriggerEvents(this._hostElement);\n  }\n\n  /**\n   * Subscribes to changes in the projected title and lines. Triggers a\n   * item lines update whenever a change occurs.\n   */\n  private _monitorProjectedLinesAndTitle() {\n    this._ngZone.runOutsideAngular(() => {\n      this._subscriptions.add(\n        merge(this._lines!.changes, this._titles!.changes).subscribe(() =>\n          this._updateItemLines(false),\n        ),\n      );\n    });\n  }\n\n  /**\n   * Updates the lines of the list item. Based on the projected user content and optional\n   * explicit lines setting, the visual appearance of the list item is determined.\n   *\n   * This method should be invoked whenever the projected user content changes, or\n   * when the explicit lines have been updated.\n   *\n   * @param recheckUnscopedContent Whether the projected unscoped content should be re-checked.\n   *   The unscoped content is not re-checked for every update as it is a rather expensive check\n   *   for content that is expected to not change very often.\n   */\n  _updateItemLines(recheckUnscopedContent: boolean) {\n    // If the updated is triggered too early before the view and content is initialized,\n    // we just skip the update. After view initialization the update is triggered again.\n    if (!this._lines || !this._titles || !this._unscopedContent) {\n      return;\n    }\n\n    // Re-check the DOM for unscoped text content if requested. This needs to\n    // happen before any computation or sanity checks run as these rely on the\n    // result of whether there is unscoped text content or not.\n    if (recheckUnscopedContent) {\n      this._checkDomForUnscopedTextContent();\n    }\n\n    // Sanity check the list item lines and title in the content. This is a dev-mode only\n    // check that can be dead-code eliminated by Terser in production.\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      sanityCheckListItemContent(this);\n    }\n\n    const numberOfLines = this._explicitLines ?? this._inferLinesFromContent();\n    const unscopedContentEl = this._unscopedContent.nativeElement;\n\n    // Update the list item element to reflect the number of lines.\n    this._hostElement.classList.toggle('mat-mdc-list-item-single-line', numberOfLines <= 1);\n    this._hostElement.classList.toggle('mdc-list-item--with-one-line', numberOfLines <= 1);\n    this._hostElement.classList.toggle('mdc-list-item--with-two-lines', numberOfLines === 2);\n    this._hostElement.classList.toggle('mdc-list-item--with-three-lines', numberOfLines === 3);\n\n    // If there is no title and the unscoped content is the is the only line, the\n    // unscoped text content will be treated as the title of the list-item.\n    if (this._hasUnscopedTextContent) {\n      const treatAsTitle = this._titles.length === 0 && numberOfLines === 1;\n      unscopedContentEl.classList.toggle('mdc-list-item__primary-text', treatAsTitle);\n      unscopedContentEl.classList.toggle('mdc-list-item__secondary-text', !treatAsTitle);\n    } else {\n      unscopedContentEl.classList.remove('mdc-list-item__primary-text');\n      unscopedContentEl.classList.remove('mdc-list-item__secondary-text');\n    }\n  }\n\n  /**\n   * Infers the number of lines based on the projected user content. This is useful\n   * if no explicit number of lines has been specified on the list item.\n   *\n   * The number of lines is inferred based on whether there is a title, the number of\n   * additional lines (secondary/tertiary). An additional line is acquired if there is\n   * unscoped text content.\n   */\n  private _inferLinesFromContent() {\n    let numOfLines = this._titles!.length + this._lines!.length;\n    if (this._hasUnscopedTextContent) {\n      numOfLines += 1;\n    }\n    return numOfLines;\n  }\n\n  /** Checks whether the list item has unscoped text content. */\n  private _checkDomForUnscopedTextContent() {\n    this._hasUnscopedTextContent = Array.from<ChildNode>(\n      this._unscopedContent!.nativeElement.childNodes,\n    )\n      .filter(node => node.nodeType !== node.COMMENT_NODE)\n      .some(node => !!(node.textContent && node.textContent.trim()));\n  }\n}\n\n/**\n * Sanity checks the configuration of the list item with respect to the amount\n * of lines, whether there is a title, or if there is unscoped text content.\n *\n * The checks are extracted into a top-level function that can be dead-code\n * eliminated by Terser or other optimizers in production mode.\n */\nfunction sanityCheckListItemContent(item: MatListItemBase) {\n  const numTitles = item._titles!.length;\n  const numLines = item._lines!.length;\n\n  if (numTitles > 1) {\n    console.warn('A list item cannot have multiple titles.');\n  }\n  if (numTitles === 0 && numLines > 0) {\n    console.warn('A list item line can only be used if there is a list item title.');\n  }\n  if (\n    numTitles === 0 &&\n    item._hasUnscopedTextContent &&\n    item._explicitLines !== null &&\n    item._explicitLines > 1\n  ) {\n    console.warn('A list item cannot have wrapping content without a title.');\n  }\n  if (numLines > 2 || (numLines === 2 && item._hasUnscopedTextContent)) {\n    console.warn('A list item can have at maximum three lines.');\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Component, ViewEncapsulation} from '@angular/core';\nimport {MatListBase} from './list-base';\n\n@Component({\n  selector: 'mat-action-list',\n  exportAs: 'matActionList',\n  template: '<ng-content></ng-content>',\n  host: {\n    'class': 'mat-mdc-action-list mat-mdc-list-base mdc-list',\n    'role': 'group',\n  },\n  styleUrl: 'list.css',\n  encapsulation: ViewEncapsulation.None,\n  providers: [{provide: MatListBase, useExisting: MatActionList}],\n})\nexport class MatActionList extends MatListBase {\n  // An navigation list is considered interactive, but does not extend the interactive list\n  // base class. We do this because as per MDC, items of interactive lists are only reachable\n  // through keyboard shortcuts. We want all items for the navigation list to be reachable\n  // through tab key as we do not intend to provide any special accessibility treatment. The\n  // accessibility treatment depends on how the end-user will interact with it.\n  override _isNonInteractive = false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  Component,\n  Input,\n  ContentChildren,\n  ElementRef,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n  InjectionToken,\n} from '@angular/core';\nimport {MatListBase, MatListItemBase} from './list-base';\nimport {MatListItemLine, MatListItemMeta, MatListItemTitle} from './list-item-sections';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CdkObserveContent} from '@angular/cdk/observers';\n\n/**\n * Injection token that can be used to inject instances of `MatList`. It serves as\n * alternative token to the actual `MatList` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_LIST = new InjectionToken<MatList>('MatList');\n\n@Component({\n  selector: 'mat-list',\n  exportAs: 'matList',\n  template: '<ng-content></ng-content>',\n  host: {\n    'class': 'mat-mdc-list mat-mdc-list-base mdc-list',\n  },\n  styleUrl: 'list.css',\n  encapsulation: ViewEncapsulation.None,\n  providers: [{provide: MatListBase, useExisting: MatList}],\n})\nexport class MatList extends MatListBase {}\n\n@Component({\n  selector: 'mat-list-item, a[mat-list-item], button[mat-list-item]',\n  exportAs: 'matListItem',\n  host: {\n    'class': 'mat-mdc-list-item mdc-list-item',\n    '[class.mdc-list-item--activated]': 'activated',\n    '[class.mdc-list-item--with-leading-avatar]': '_avatars.length !== 0',\n    '[class.mdc-list-item--with-leading-icon]': '_icons.length !== 0',\n    '[class.mdc-list-item--with-trailing-meta]': '_meta.length !== 0',\n    // Utility class that makes it easier to target the case where there's both a leading\n    // and a trailing icon. Avoids having to write out all the combinations.\n    '[class.mat-mdc-list-item-both-leading-and-trailing]': '_hasBothLeadingAndTrailing()',\n    '[class._mat-animation-noopable]': '_noopAnimations',\n    '[attr.aria-current]': '_getAriaCurrent()',\n  },\n  templateUrl: 'list-item.html',\n  encapsulation: ViewEncapsulation.None,\n  imports: [CdkObserveContent],\n})\nexport class MatListItem extends MatListItemBase {\n  @ContentChildren(MatListItemLine, {descendants: true}) _lines!: QueryList<MatListItemLine>;\n  @ContentChildren(MatListItemTitle, {descendants: true}) _titles!: QueryList<MatListItemTitle>;\n  @ContentChildren(MatListItemMeta, {descendants: true}) _meta!: QueryList<MatListItemMeta>;\n  @ViewChild('unscopedContent') _unscopedContent!: ElementRef<HTMLSpanElement>;\n  @ViewChild('text') _itemText!: ElementRef<HTMLElement>;\n\n  /** Indicates whether an item in a `<mat-nav-list>` is the currently active page. */\n  @Input()\n  get activated(): boolean {\n    return this._activated;\n  }\n  set activated(activated) {\n    this._activated = coerceBooleanProperty(activated);\n  }\n  _activated = false;\n\n  /**\n   * Determine the value of `aria-current`. Return 'page' if this item is an activated anchor tag.\n   * Otherwise, return `null`. This method is safe to use with server-side rendering.\n   */\n  _getAriaCurrent(): string | null {\n    return this._hostElement.nodeName === 'A' && this._activated ? 'page' : null;\n  }\n\n  protected _hasBothLeadingAndTrailing(): boolean {\n    return this._meta.length !== 0 && (this._avatars.length !== 0 || this._icons.length !== 0);\n  }\n}\n","<ng-content select=\"[matListItemAvatar],[matListItemIcon]\"></ng-content>\n\n<span class=\"mdc-list-item__content\">\n  <ng-content select=\"[matListItemTitle]\"></ng-content>\n  <ng-content select=\"[matListItemLine]\"></ng-content>\n  <span #unscopedContent class=\"mat-mdc-list-item-unscoped-content\"\n        (cdkObserveContent)=\"_updateItemLines(true)\">\n    <ng-content></ng-content>\n  </span>\n</span>\n\n<ng-content select=\"[matListItemMeta]\"></ng-content>\n\n<ng-content select=\"mat-divider\"></ng-content>\n\n<!--\n  Strong focus indicator element. MDC uses the `::before` pseudo element for the default\n  focus/hover/selected state, so we need a separate element.\n-->\n<div class=\"mat-focus-indicator\"></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.dev/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport {ThemePalette} from '../core';\nimport {MatListBase, MatListItemBase} from './list-base';\nimport {LIST_OPTION, ListOption, MatListOptionTogglePosition} from './list-option-types';\nimport {MatListItemLine, MatListItemTitle} from './list-item-sections';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {CdkObserveContent} from '@angular/cdk/observers';\n\n/**\n * Injection token that can be used to reference instances of an `SelectionList`. It serves\n * as alternative token to an actual implementation which would result in circular references.\n * @docs-private\n */\nexport const SELECTION_LIST = new InjectionToken<SelectionList>('SelectionList');\n\n/**\n * Interface describing the containing list of a list option. This is used to avoid\n * circular dependencies between the list-option and the selection list.\n * @docs-private\n */\nexport interface SelectionList extends MatListBase {\n  multiple: boolean;\n  color: ThemePalette;\n  selectedOptions: SelectionModel<MatListOption>;\n  hideSingleSelectionIndicator: boolean;\n  compareWith: (o1: any, o2: any) => boolean;\n  _value: string[] | null;\n  _reportValueChange(): void;\n  _emitChangeEvent(options: MatListOption[]): void;\n  _onTouched(): void;\n}\n\n@Component({\n  selector: 'mat-list-option',\n  exportAs: 'matListOption',\n  styleUrl: 'list-option.css',\n  host: {\n    'class': 'mat-mdc-list-item mat-mdc-list-option mdc-list-item',\n    'role': 'option',\n    // As per MDC, only list items without checkbox or radio indicator should receive the\n    // `--selected` class.\n    '[class.mdc-list-item--selected]':\n      'selected && !_selectionList.multiple && _selectionList.hideSingleSelectionIndicator',\n    // Based on the checkbox/radio position and whether there are icons or avatars, we apply MDC's\n    // list-item `--leading` and `--trailing` classes.\n    '[class.mdc-list-item--with-leading-avatar]': '_hasProjected(\"avatars\", \"before\")',\n    '[class.mdc-list-item--with-leading-icon]': '_hasProjected(\"icons\", \"before\")',\n    '[class.mdc-list-item--with-trailing-icon]': '_hasProjected(\"icons\", \"after\")',\n    '[class.mat-mdc-list-option-with-trailing-avatar]': '_hasProjected(\"avatars\", \"after\")',\n    // Based on the checkbox/radio position, we apply the `--leading` or `--trailing` MDC classes\n    // which ensure that the checkbox/radio is positioned correctly within the list item.\n    '[class.mdc-list-item--with-leading-checkbox]': '_hasCheckboxAt(\"before\")',\n    '[class.mdc-list-item--with-trailing-checkbox]': '_hasCheckboxAt(\"after\")',\n    '[class.mdc-list-item--with-leading-radio]': '_hasRadioAt(\"before\")',\n    '[class.mdc-list-item--with-trailing-radio]': '_hasRadioAt(\"after\")',\n\n    // Utility class that makes it easier to target the case where there's both a leading\n    // and a trailing icon. Avoids having to write out all the combinations.\n    '[class.mat-mdc-list-item-both-leading-and-trailing]': '_hasBothLeadingAndTrailing()',\n    '[class.mat-accent]': 'color !== \"primary\" && color !== \"warn\"',\n    '[class.mat-warn]': 'color === \"warn\"',\n    '[class._mat-animation-noopable]': '_noopAnimations',\n    '[attr.aria-selected]': 'selected',\n    '(blur)': '_handleBlur()',\n    '(click)': '_toggleOnInteraction()',\n  },\n  templateUrl: 'list-option.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {provide: MatListItemBase, useExisting: MatListOption},\n    {provide: LIST_OPTION, useExisting: MatListOption},\n  ],\n  imports: [NgTemplateOutlet, CdkObserveContent],\n})\nexport class MatListOption extends MatListItemBase implements ListOption, OnInit, OnDestroy {\n  protected _selectionList = inject<SelectionList>(SELECTION_LIST);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  @ContentChildren(MatListItemLine, {descendants: true}) _lines!: QueryList<MatListItemLine>;\n  @ContentChildren(MatListItemTitle, {descendants: true}) _titles!: QueryList<MatListItemTitle>;\n  @ViewChild('unscopedContent') _unscopedContent!: ElementRef<HTMLSpanElement>;\n\n  /**\n   * Emits when the selected state of the option has changed.\n   * Use to facilitate two-data binding to the `selected` property.\n   * @docs-private\n   */\n  @Output()\n  readonly selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  /** Whether the label should appear before or after the checkbox/radio. Defaults to 'after' */\n  @Input() togglePosition: MatListOptionTogglePosition = 'after';\n\n  /**\n   * Theme color of the list option. This sets the color of the checkbox/radio.\n   * This API is supported in M2 themes only, it has no effect in M3 themes. For color customization\n   * in M3, see https://material.angular.dev/components/list/styling.\n   *\n   * For information on applying color variants in M3, see\n   * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n   */\n  @Input()\n  get color(): ThemePalette {\n    return this._color || this._selectionList.color;\n  }\n  set color(newValue: ThemePalette) {\n    this._color = newValue;\n  }\n  private _color: ThemePalette;\n\n  /** Value of the option */\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(newValue: any) {\n    if (this.selected && newValue !== this.value && this._inputsInitialized) {\n      this.selected = false;\n    }\n\n    this._value = newValue;\n  }\n  private _value: any;\n\n  /** Whether the option is selected. */\n  @Input()\n  get selected(): boolean {\n    return this._selectionList.selectedOptions.isSelected(this);\n  }\n  set selected(value: BooleanInput) {\n    const isSelected = coerceBooleanProperty(value);\n\n    if (isSelected !== this._selected) {\n      this._setSelected(isSelected);\n\n      if (isSelected || this._selectionList.multiple) {\n        this._selectionList._reportValueChange();\n      }\n    }\n  }\n  private _selected = false;\n\n  /**\n   * This is set to true after the first OnChanges cycle so we don't\n   * clear the value of `selected` in the first cycle.\n   */\n  private _inputsInitialized = false;\n\n  ngOnInit() {\n    const list = this._selectionList;\n\n    if (list._value && list._value.some(value => list.compareWith(this._value, value))) {\n      this._setSelected(true);\n    }\n\n    const wasSelected = this._selected;\n\n    // List options that are selected at initialization can't be reported properly to the form\n    // control. This is because it takes some time until the selection-list knows about all\n    // available options. Also it can happen that the ControlValueAccessor has an initial value\n    // that should be used instead. Deferring the value change report to the next tick ensures\n    // that the form control value is not being overwritten.\n    Promise.resolve().then(() => {\n      if (this._selected || wasSelected) {\n        this.selected = true;\n        this._changeDetectorRef.markForCheck();\n      }\n    });\n    this._inputsInitialized = true;\n  }\n\n  override ngOnDestroy(): void {\n    super.ngOnDestroy();\n\n    if (this.selected) {\n      // We have to delay this until the next tick in order\n      // to avoid changed after checked errors.\n      Promise.resolve().then(() => {\n        this.selected = false;\n      });\n    }\n  }\n\n  /** Toggles the selection state of the option. */\n  toggle(): void {\n    this.selected = !this.selected;\n  }\n\n  /** Allows for programmatic focusing of the option. */\n  focus(): void {\n    this._hostElement.focus();\n  }\n\n  /** Gets the text label of the list option. Used for the typeahead functionality in the list. */\n  getLabel() {\n    const titleElement = this._titles?.get(0)?._elementRef.nativeElement;\n    // If there is no explicit title element, the unscoped text content\n    // is treated as the list item title.\n    const labelEl = titleElement || this._unscopedContent?.nativeElement;\n    return labelEl?.textContent || '';\n  }\n\n  /** Whether a checkbox is shown at the given position. */\n  _hasCheckboxAt(position: MatListOptionTogglePosition): boolean {\n    return this._selectionList.multiple && this._getTogglePosition() === position;\n  }\n\n  /** Where a radio indicator is shown at the given position. */\n  _hasRadioAt(position: MatListOptionTogglePosition): boolean {\n    return (\n      !this._selectionList.multiple &&\n      this._getTogglePosition() === position &&\n      !this._selectionList.hideSingleSelectionIndicator\n    );\n  }\n\n  /** Whether icons or avatars are shown at the given position. */\n  _hasIconsOrAvatarsAt(position: 'before' | 'after'): boolean {\n    return this._hasProjected('icons', position) || this._hasProjected('avatars', position);\n  }\n\n  /** Gets whether the given type of element is projected at the specified position. */\n  _hasProjected(type: 'icons' | 'avatars', position: 'before' | 'after'): boolean {\n    // If the checkbox/radio is shown at the specified position, neither icons or\n    // avatars can be shown at the position.\n    return (\n      this._getTogglePosition() !== position &&\n      (type === 'avatars' ? this._avatars.length !== 0 : this._icons.length !== 0)\n    );\n  }\n\n  _handleBlur() {\n    this._selectionList._onTouched();\n  }\n\n  /** Gets the current position of the checkbox/radio. */\n  _getTogglePosition() {\n    return this.togglePosition || 'after';\n  }\n\n  /**\n   * Sets the selected state of the option.\n   * @returns Whether the value has changed.\n   */\n  _setSelected(selected: boolean): boolean {\n    if (selected === this._selected) {\n      return false;\n    }\n\n    this._selected = selected;\n\n    if (selected) {\n      this._selectionList.selectedOptions.select(this);\n    } else {\n      this._selectionList.selectedOptions.deselect(this);\n    }\n\n    this.selectedChange.emit(selected);\n    this._changeDetectorRef.markForCheck();\n    return true;\n  }\n\n  /**\n   * Notifies Angular that the option needs to be checked in the next change detection run.\n   * Mainly used to trigger an update of the list option if the disabled state of the selection\n   * list changed.\n   */\n  _markForCheck() {\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Toggles the option's value based on a user interaction. */\n  _toggleOnInteraction() {\n    if (!this.disabled) {\n      if (this._selectionList.multiple) {\n        this.selected = !this.selected;\n        this._selectionList._emitChangeEvent([this]);\n      } else if (!this.selected) {\n        this.selected = true;\n        this._selectionList._emitChangeEvent([this]);\n      }\n    }\n  }\n\n  /** Sets the tabindex of the list option. */\n  _setTabindex(value: number) {\n    this._hostElement.setAttribute('tabindex', value + '');\n  }\n\n  protected _hasBothLeadingAndTrailing(): boolean {\n    const hasLeading =\n      this._hasProjected('avatars', 'before') ||\n      this._hasProjected('icons', 'before') ||\n      this._hasCheckboxAt('before') ||\n      this._hasRadioAt('before');\n    const hasTrailing =\n      this._hasProjected('icons', 'after') ||\n      this._hasProjected('avatars', 'after') ||\n      this._hasCheckboxAt('after') ||\n      this._hasRadioAt('after');\n    return hasLeading && hasTrailing;\n  }\n}\n","<!--\n  Save icons and the pseudo checkbox/radio so that they can be re-used in the template without\n  duplication. Also content can only be injected once so we need to extract icons/avatars\n  into a template since we use it in multiple places.\n-->\n<ng-template #icons>\n  <ng-content select=\"[matListItemAvatar],[matListItemIcon]\">\n  </ng-content>\n</ng-template>\n\n<ng-template #checkbox>\n  <div class=\"mdc-checkbox\" [class.mdc-checkbox--disabled]=\"disabled\">\n    <input type=\"checkbox\" class=\"mdc-checkbox__native-control\"\n           [checked]=\"selected\" [disabled]=\"disabled\"/>\n    <div class=\"mdc-checkbox__background\">\n      <svg class=\"mdc-checkbox__checkmark\"\n           viewBox=\"0 0 24 24\"\n           aria-hidden=\"true\">\n        <path class=\"mdc-checkbox__checkmark-path\"\n              fill=\"none\"\n              d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"/>\n      </svg>\n      <div class=\"mdc-checkbox__mixedmark\"></div>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #radio>\n  <div class=\"mdc-radio\" [class.mdc-radio--disabled]=\"disabled\">\n    <input type=\"radio\" class=\"mdc-radio__native-control\"\n           [checked]=\"selected\" [disabled]=\"disabled\"/>\n    <div class=\"mdc-radio__background\">\n      <div class=\"mdc-radio__outer-circle\"></div>\n      <div class=\"mdc-radio__inner-circle\"></div>\n    </div>\n  </div>\n</ng-template>\n\n@if (_hasCheckboxAt('before')) {\n  <!-- Container for the checkbox at start. -->\n  <span class=\"mdc-list-item__start mat-mdc-list-option-checkbox-before\">\n    <ng-template [ngTemplateOutlet]=\"checkbox\"></ng-template>\n  </span>\n} @else if (_hasRadioAt('before')) {\n  <!-- Container for the radio at the start. -->\n  <span class=\"mdc-list-item__start mat-mdc-list-option-radio-before\">\n    <ng-template [ngTemplateOutlet]=\"radio\"></ng-template>\n  </span>\n}\n<!-- Conditionally renders icons/avatars before the list item text. -->\n@if (_hasIconsOrAvatarsAt('before')) {\n  <ng-template [ngTemplateOutlet]=\"icons\"></ng-template>\n}\n\n<!-- Text -->\n<span class=\"mdc-list-item__content\">\n  <ng-content select=\"[matListItemTitle]\"></ng-content>\n  <ng-content select=\"[matListItemLine]\"></ng-content>\n  <span #unscopedContent class=\"mat-mdc-list-item-unscoped-content\"\n        (cdkObserveContent)=\"_updateItemLines(true)\">\n    <ng-content></ng-content>\n  </span>\n</span>\n\n@if (_hasCheckboxAt('after')) {\n  <!-- Container for the checkbox at the end. -->\n  <span class=\"mdc-list-item__end\">\n    <ng-template [ngTemplateOutlet]=\"checkbox\"></ng-template>\n  </span>\n} @else if (_hasRadioAt('after')) {\n  <!-- Container for the radio at the end. -->\n  <span class=\"mdc-list-item__end\">\n    <ng-template [ngTemplateOutlet]=\"radio\"></ng-template>\n  </span>\n}\n\n<!-- Conditionally renders icons/avatars after the list item text. -->\n@if (_hasIconsOrAvatarsAt('after')) {\n  <ng-template [ngTemplateOutlet]=\"icons\"></ng-template>\n}\n\n<!-- Divider -->\n<ng-content select=\"mat-divider\"></ng-content>\n\n<!--\n  Strong focus indicator element. MDC uses the `::before` pseudo element for the default\n  focus/hover/selected state, so we need a separate element.\n-->\n<div class=\"mat-focus-indicator\"></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.dev/license\n */\n\nimport {Directive} from '@angular/core';\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n  selector: '[mat-subheader], [matSubheader]',\n  // TODO(mmalerba): MDC's subheader font looks identical to the list item font, figure out why and\n  //  make a change in one of the repos to visually distinguish.\n  host: {'class': 'mat-mdc-subheader mdc-list-group__subheader'},\n})\nexport class MatListSubheaderCssMatStyler {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Component, InjectionToken, ViewEncapsulation} from '@angular/core';\nimport {MatListBase} from './list-base';\n\n/**\n * Injection token that can be used to inject instances of `MatNavList`. It serves as\n * alternative token to the actual `MatNavList` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_NAV_LIST = new InjectionToken<MatNavList>('MatNavList');\n\n@Component({\n  selector: 'mat-nav-list',\n  exportAs: 'matNavList',\n  template: '<ng-content></ng-content>',\n  host: {\n    'class': 'mat-mdc-nav-list mat-mdc-list-base mdc-list',\n    'role': 'navigation',\n  },\n  styleUrl: 'list.css',\n  encapsulation: ViewEncapsulation.None,\n  providers: [{provide: MatListBase, useExisting: MatNavList}],\n})\nexport class MatNavList extends MatListBase {\n  // An navigation list is considered interactive, but does not extend the interactive list\n  // base class. We do this because as per MDC, items of interactive lists are only reachable\n  // through keyboard shortcuts. We want all items for the navigation list to be reachable\n  // through tab key as we do not intend to provide any special accessibility treatment. The\n  // accessibility treatment depends on how the end-user will interact with it.\n  override _isNonInteractive = false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {FocusKeyManager} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {A, ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  ViewEncapsulation,\n  forwardRef,\n  inject,\n  signal,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ThemePalette} from '../core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {MatListBase} from './list-base';\nimport {MatListOption, SELECTION_LIST, SelectionList} from './list-option';\n\nexport const MAT_SELECTION_LIST_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => MatSelectionList),\n  multi: true,\n};\n\n/** Change event that is being fired whenever the selected state of an option changes. */\nexport class MatSelectionListChange {\n  constructor(\n    /** Reference to the selection list that emitted the event. */\n    public source: MatSelectionList,\n    /** Reference to the options that have been changed. */\n    public options: MatListOption[],\n  ) {}\n}\n\n@Component({\n  selector: 'mat-selection-list',\n  exportAs: 'matSelectionList',\n  host: {\n    'class': 'mat-mdc-selection-list mat-mdc-list-base mdc-list',\n    'role': 'listbox',\n    '[attr.aria-multiselectable]': 'multiple',\n    '(keydown)': '_handleKeydown($event)',\n  },\n  template: '<ng-content></ng-content>',\n  styleUrl: 'list.css',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    MAT_SELECTION_LIST_VALUE_ACCESSOR,\n    {provide: MatListBase, useExisting: MatSelectionList},\n    {provide: SELECTION_LIST, useExisting: MatSelectionList},\n  ],\n})\nexport class MatSelectionList\n  extends MatListBase\n  implements SelectionList, ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy\n{\n  _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _ngZone = inject(NgZone);\n  private _renderer = inject(Renderer2);\n\n  private _initialized = false;\n  private _keyManager!: FocusKeyManager<MatListOption>;\n  private _listenerCleanups: (() => void)[] | undefined;\n\n  /** Emits when the list has been destroyed. */\n  private _destroyed = new Subject<void>();\n\n  /** Whether the list has been destroyed. */\n  private _isDestroyed = false;\n\n  /** View to model callback that should be called whenever the selected options change. */\n  private _onChange: (value: any) => void = (_: any) => {};\n\n  @ContentChildren(MatListOption, {descendants: true}) _items!: QueryList<MatListOption>;\n\n  /** Emits a change event whenever the selected state of an option changes. */\n  @Output() readonly selectionChange: EventEmitter<MatSelectionListChange> =\n    new EventEmitter<MatSelectionListChange>();\n\n  /**\n   * Theme color of the selection list. This sets the checkbox color for all\n   * list options. This API is supported in M2 themes only, it has no effect in\n   * M3 themes. For color customization in M3, see https://material.angular.dev/components/list/styling.\n   *\n   * For information on applying color variants in M3, see\n   * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n   */\n  @Input() color: ThemePalette = 'accent';\n\n  /**\n   * Function used for comparing an option against the selected value when determining which\n   * options should appear as selected. The first argument is the value of an options. The second\n   * one is a value from the selected value. A boolean must be returned.\n   */\n  @Input() compareWith: (o1: any, o2: any) => boolean = (a1, a2) => a1 === a2;\n\n  /** Whether selection is limited to one or multiple items (default multiple). */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: BooleanInput) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._multiple) {\n      if ((typeof ngDevMode === 'undefined' || ngDevMode) && this._initialized) {\n        throw new Error(\n          'Cannot change `multiple` mode of mat-selection-list after initialization.',\n        );\n      }\n\n      this._multiple = newValue;\n      this.selectedOptions = new SelectionModel(this._multiple, this.selectedOptions.selected);\n    }\n  }\n  private _multiple = true;\n\n  /** Whether radio indicator for all list items is hidden. */\n  @Input()\n  get hideSingleSelectionIndicator(): boolean {\n    return this._hideSingleSelectionIndicator;\n  }\n  set hideSingleSelectionIndicator(value: BooleanInput) {\n    this._hideSingleSelectionIndicator = coerceBooleanProperty(value);\n  }\n  private _hideSingleSelectionIndicator: boolean =\n    this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n\n  /** The currently selected options. */\n  selectedOptions = new SelectionModel<MatListOption>(this._multiple);\n\n  /** Keeps track of the currently-selected value. */\n  _value: string[] | null = null;\n\n  /** View to model callback that should be called if the list or its options lost focus. */\n  _onTouched: () => void = () => {};\n\n  private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n  constructor() {\n    super();\n    this._isNonInteractive = false;\n  }\n\n  ngAfterViewInit() {\n    // Mark the selection list as initialized so that the `multiple`\n    // binding can no longer be changed.\n    this._initialized = true;\n    this._setupRovingTabindex();\n\n    // These events are bound outside the zone, because they don't change\n    // any change-detected properties and they can trigger timeouts.\n    this._ngZone.runOutsideAngular(() => {\n      this._listenerCleanups = [\n        this._renderer.listen(this._element.nativeElement, 'focusin', this._handleFocusin),\n        this._renderer.listen(this._element.nativeElement, 'focusout', this._handleFocusout),\n      ];\n    });\n\n    if (this._value) {\n      this._setOptionsFromValues(this._value);\n    }\n\n    this._watchForSelectionChange();\n  }\n\n  ngOnChanges(changes: SimpleChanges<this>) {\n    const disabledChanges = changes['disabled'];\n    const disableRippleChanges = changes['disableRipple'];\n    const hideSingleSelectionIndicatorChanges = changes['hideSingleSelectionIndicator'];\n\n    if (\n      (disableRippleChanges && !disableRippleChanges.firstChange) ||\n      (disabledChanges && !disabledChanges.firstChange) ||\n      (hideSingleSelectionIndicatorChanges && !hideSingleSelectionIndicatorChanges.firstChange)\n    ) {\n      this._markOptionsForCheck();\n    }\n  }\n\n  ngOnDestroy() {\n    this._keyManager?.destroy();\n    this._listenerCleanups?.forEach(current => current());\n    this._destroyed.next();\n    this._destroyed.complete();\n    this._isDestroyed = true;\n  }\n\n  /** Focuses the selection list. */\n  focus(options?: FocusOptions) {\n    this._element.nativeElement.focus(options);\n  }\n\n  /** Selects all of the options. Returns the options that changed as a result. */\n  selectAll(): MatListOption[] {\n    return this._setAllOptionsSelected(true);\n  }\n\n  /** Deselects all of the options. Returns the options that changed as a result. */\n  deselectAll(): MatListOption[] {\n    return this._setAllOptionsSelected(false);\n  }\n\n  /** Reports a value change to the ControlValueAccessor */\n  _reportValueChange() {\n    // Stop reporting value changes after the list has been destroyed. This avoids\n    // cases where the list might wrongly reset its value once it is removed, but\n    // the form control is still live.\n    if (this.options && !this._isDestroyed) {\n      const value = this._getSelectedOptionValues();\n      this._onChange(value);\n      this._value = value;\n    }\n  }\n\n  /** Emits a change event if the selected state of an option changed. */\n  _emitChangeEvent(options: MatListOption[]) {\n    this.selectionChange.emit(new MatSelectionListChange(this, options));\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  writeValue(values: string[]): void {\n    this._value = values;\n\n    if (this.options) {\n      this._setOptionsFromValues(values || []);\n    }\n  }\n\n  /** Implemented as a part of ControlValueAccessor. */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._changeDetectorRef.markForCheck();\n    this._markOptionsForCheck();\n  }\n\n  /**\n   * Whether the *entire* selection list is disabled. When true, each list item is also disabled\n   * and each list item is removed from the tab order (has tabindex=\"-1\").\n   */\n  @Input()\n  override get disabled(): boolean {\n    return this._selectionListDisabled();\n  }\n  override set disabled(value: BooleanInput) {\n    // Update the disabled state of this list. Write to `this._selectionListDisabled` instead of\n    // `super.disabled`. That is to avoid closure compiler compatibility issues with assigning to\n    // a super property.\n    this._selectionListDisabled.set(coerceBooleanProperty(value));\n    if (this._selectionListDisabled()) {\n      this._keyManager?.setActiveItem(-1);\n    }\n  }\n  private _selectionListDisabled = signal(false);\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnChange(fn: (value: any) => void): void {\n    this._onChange = fn;\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  /** Watches for changes in the selected state of the options and updates the list accordingly. */\n  private _watchForSelectionChange() {\n    this.selectedOptions.changed.pipe(takeUntil(this._destroyed)).subscribe(event => {\n      // Sync external changes to the model back to the options.\n      for (let item of event.added) {\n        item.selected = true;\n      }\n\n      for (let item of event.removed) {\n        item.selected = false;\n      }\n\n      if (!this._containsFocus()) {\n        this._resetActiveOption();\n      }\n    });\n  }\n\n  /** Sets the selected options based on the specified values. */\n  private _setOptionsFromValues(values: string[]) {\n    this.options.forEach(option => option._setSelected(false));\n\n    values.forEach(value => {\n      const correspondingOption = this.options.find(option => {\n        // Skip options that are already in the model. This allows us to handle cases\n        // where the same primitive value is selected multiple times.\n        return option.selected ? false : this.compareWith(option.value, value);\n      });\n\n      if (correspondingOption) {\n        correspondingOption._setSelected(true);\n      }\n    });\n  }\n\n  /** Returns the values of the selected options. */\n  private _getSelectedOptionValues(): string[] {\n    return this.options.filter(option => option.selected).map(option => option.value);\n  }\n\n  /** Marks all the options to be checked in the next change detection run. */\n  private _markOptionsForCheck() {\n    if (this.options) {\n      this.options.forEach(option => option._markForCheck());\n    }\n  }\n\n  /**\n   * Sets the selected state on all of the options\n   * and emits an event if anything changed.\n   */\n  private _setAllOptionsSelected(isSelected: boolean, skipDisabled?: boolean): MatListOption[] {\n    // Keep track of whether anything changed, because we only want to\n    // emit the changed event when something actually changed.\n    const changedOptions: MatListOption[] = [];\n\n    this.options.forEach(option => {\n      if ((!skipDisabled || !option.disabled) && option._setSelected(isSelected)) {\n        changedOptions.push(option);\n      }\n    });\n\n    if (changedOptions.length) {\n      this._reportValueChange();\n    }\n\n    return changedOptions;\n  }\n\n  // Note: This getter exists for backwards compatibility. The `_items` query list\n  // cannot be named `options` as it will be picked up by the interactive list base.\n  /** The option components contained within this selection-list. */\n  get options(): QueryList<MatListOption> {\n    return this._items;\n  }\n\n  /** Handles keydown events within the list. */\n  _handleKeydown(event: KeyboardEvent) {\n    const activeItem = this._keyManager.activeItem;\n\n    if (\n      (event.keyCode === ENTER || event.keyCode === SPACE) &&\n      !this._keyManager.isTyping() &&\n      activeItem &&\n      !activeItem.disabled\n    ) {\n      event.preventDefault();\n      activeItem._toggleOnInteraction();\n    } else if (\n      event.keyCode === A &&\n      this.multiple &&\n      !this._keyManager.isTyping() &&\n      hasModifierKey(event, 'ctrlKey', 'metaKey')\n    ) {\n      const shouldSelect = this.options.some(option => !option.disabled && !option.selected);\n      event.preventDefault();\n      this._emitChangeEvent(this._setAllOptionsSelected(shouldSelect, true));\n    } else {\n      this._keyManager.onKeydown(event);\n    }\n  }\n\n  /** Handles focusout events within the list. */\n  private _handleFocusout = () => {\n    // Focus takes a while to update so we have to wrap our call in a timeout.\n    setTimeout(() => {\n      if (!this._containsFocus()) {\n        this._resetActiveOption();\n      }\n    });\n  };\n\n  /** Handles focusin events within the list. */\n  private _handleFocusin = (event: FocusEvent) => {\n    if (this.disabled) {\n      return;\n    }\n\n    const activeIndex = this._items\n      .toArray()\n      .findIndex(item => item._elementRef.nativeElement.contains(event.target as HTMLElement));\n\n    if (activeIndex > -1) {\n      this._setActiveOption(activeIndex);\n    } else {\n      this._resetActiveOption();\n    }\n  };\n\n  /**\n   * Sets up the logic for maintaining the roving tabindex.\n   *\n   * `skipPredicate` determines if key manager should avoid putting a given list item in the tab\n   * index. Allow disabled list items to receive focus to align with WAI ARIA recommendation.\n   * Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n   * makes a few exceptions for compound widgets.\n   *\n   * From [Developing a Keyboard Interface](\n   * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n   *   \"For the following composite widget elements, keep them focusable when disabled: Options in a\n   *   Listbox...\"\n   */\n  private _setupRovingTabindex() {\n    this._keyManager = new FocusKeyManager(this._items)\n      .withHomeAndEnd()\n      .withTypeAhead()\n      .withWrap()\n      .skipPredicate(() => this.disabled);\n\n    // Set the initial focus.\n    this._resetActiveOption();\n\n    // Move the tabindex to the currently-focused list item.\n    this._keyManager.change.subscribe(activeItemIndex => this._setActiveOption(activeItemIndex));\n\n    // If the active item is removed from the list, reset back to the first one.\n    this._items.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      const activeItem = this._keyManager.activeItem;\n\n      if (!activeItem || this._items.toArray().indexOf(activeItem) === -1) {\n        this._resetActiveOption();\n      }\n    });\n  }\n\n  /**\n   * Sets an option as active.\n   * @param index Index of the active option. If set to -1, no option will be active.\n   */\n  private _setActiveOption(index: number) {\n    this._items.forEach((item, itemIndex) => item._setTabindex(itemIndex === index ? 0 : -1));\n    this._keyManager.updateActiveItem(index);\n  }\n\n  /**\n   * Resets the active option. When the list is disabled, remove all options from to the tab order.\n   * Otherwise, focus the first selected option.\n   */\n  private _resetActiveOption() {\n    if (this.disabled) {\n      this._setActiveOption(-1);\n      return;\n    }\n\n    const activeItem =\n      this._items.find(item => item.selected && !item.disabled) || this._items.first;\n    this._setActiveOption(activeItem ? this._items.toArray().indexOf(activeItem) : -1);\n  }\n\n  /** Returns whether the focus is currently within the list. */\n  private _containsFocus() {\n    const activeElement = _getFocusedElementPierceShadowDom();\n    return activeElement && this._element.nativeElement.contains(activeElement);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckboxModule, MatRippleModule} from '../core';\nimport {MatDividerModule, MatDivider} from '../divider';\nimport {MatActionList} from './action-list';\nimport {MatList, MatListItem} from './list';\nimport {MatListOption} from './list-option';\nimport {MatListSubheaderCssMatStyler} from './subheader';\nimport {\n  MatListItemLine,\n  MatListItemTitle,\n  MatListItemMeta,\n  MatListItemAvatar,\n  MatListItemIcon,\n} from './list-item-sections';\nimport {MatNavList} from './nav-list';\nimport {MatSelectionList} from './selection-list';\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {BidiModule} from '@angular/cdk/bidi';\n\n// Export required to fix compiler confusion about import module paths\nexport {MatDivider};\n\n@NgModule({\n  imports: [\n    ObserversModule,\n    MatRippleModule,\n    MatPseudoCheckboxModule,\n    MatList,\n    MatActionList,\n    MatNavList,\n    MatSelectionList,\n    MatListItem,\n    MatListOption,\n    MatListSubheaderCssMatStyler,\n    MatListItemAvatar,\n    MatListItemIcon,\n    MatListItemLine,\n    MatListItemTitle,\n    MatListItemMeta,\n  ],\n  exports: [\n    BidiModule,\n    MatList,\n    MatActionList,\n    MatNavList,\n    MatSelectionList,\n    MatListItem,\n    MatListOption,\n    MatListItemAvatar,\n    MatListItemIcon,\n    MatListSubheaderCssMatStyler,\n    MatDividerModule,\n    MatListItemLine,\n    MatListItemTitle,\n    MatListItemMeta,\n  ],\n})\nexport class MatListModule {}\n"],"names":["LIST_OPTION","InjectionToken","MatListItemTitle","_elementRef","inject","ElementRef","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","ngImport","decorators","args","MatListItemLine","MatListItemMeta","_MatListItemGraphicBase","_listOption","optional","_isAlignedAtStart","_getTogglePosition","properties","MatListItemAvatar","usesInheritance","MatListItemIcon","MAT_LIST_CONFIG","MatListBase","_isNonInteractive","disableRipple","_disableRipple","value","coerceBooleanProperty","disabled","_disabled","set","signal","_defaultOptions","inputs","Input","MatListItemBase","_ngZone","NgZone","_listBase","_platform","Platform","_hostElement","_isButtonElement","_noopAnimations","_animationsDisabled","_avatars","_icons","lines","_explicitLines","coerceNumberProperty","_updateItemLines","_subscriptions","Subscription","_rippleRenderer","_hasUnscopedTextContent","rippleConfig","rippleDisabled","constructor","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","globalRippleOptions","MAT_RIPPLE_GLOBAL_OPTIONS","nativeElement","nodeName","toLowerCase","_initInteractiveListItem","hasAttribute","setAttribute","ngAfterViewInit","_monitorProjectedLinesAndTitle","ngOnDestroy","unsubscribe","_removeTriggerEvents","_hasIconOrAvatar","length","classList","add","RippleRenderer","Injector","setupTriggerEvents","runOutsideAngular","merge","_lines","changes","_titles","subscribe","recheckUnscopedContent","_unscopedContent","_checkDomForUnscopedTextContent","ngDevMode","sanityCheckListItemContent","numberOfLines","_inferLinesFromContent","unscopedContentEl","toggle","treatAsTitle","remove","numOfLines","Array","from","childNodes","filter","node","nodeType","COMMENT_NODE","some","textContent","trim","queries","propertyName","predicate","ContentChildren","descendants","item","numTitles","numLines","console","warn","MatActionList","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","attributes","providers","provide","useExisting","isInline","styles","encapsulation","ViewEncapsulation","None","exportAs","template","MAT_LIST","MatList","MatListItem","_meta","_itemText","activated","_activated","_getAriaCurrent","_hasBothLeadingAndTrailing","viewQueries","first","dependencies","kind","CdkObserveContent","outputs","imports","ViewChild","SELECTION_LIST","MatListOption","_selectionList","_changeDetectorRef","ChangeDetectorRef","selectedChange","EventEmitter","togglePosition","color","_color","newValue","_value","selected","_inputsInitialized","selectedOptions","isSelected","_selected","_setSelected","multiple","_reportValueChange","ngOnInit","list","compareWith","wasSelected","Promise","resolve","then","markForCheck","focus","getLabel","titleElement","get","labelEl","_hasCheckboxAt","position","_hasRadioAt","hideSingleSelectionIndicator","_hasIconsOrAvatarsAt","_hasProjected","_handleBlur","_onTouched","select","deselect","emit","_markForCheck","_toggleOnInteraction","_emitChangeEvent","_setTabindex","hasLeading","hasTrailing","listeners","NgTemplateOutlet","Output","MatListSubheaderCssMatStyler","MAT_NAV_LIST","MatNavList","MAT_SELECTION_LIST_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","forwardRef","MatSelectionList","multi","MatSelectionListChange","source","options","_element","_renderer","Renderer2","_initialized","_keyManager","_listenerCleanups","_destroyed","Subject","_isDestroyed","_onChange","_","_items","selectionChange","a1","a2","_multiple","Error","SelectionModel","_hideSingleSelectionIndicator","_setupRovingTabindex","listen","_handleFocusin","_handleFocusout","_setOptionsFromValues","_watchForSelectionChange","ngOnChanges","disabledChanges","disableRippleChanges","hideSingleSelectionIndicatorChanges","firstChange","_markOptionsForCheck","destroy","forEach","current","next","complete","selectAll","_setAllOptionsSelected","deselectAll","_getSelectedOptionValues","writeValue","values","setDisabledState","isDisabled","_selectionListDisabled","setActiveItem","registerOnChange","fn","registerOnTouched","changed","pipe","takeUntil","event","added","removed","_containsFocus","_resetActiveOption","option","correspondingOption","find","map","skipDisabled","changedOptions","push","_handleKeydown","activeItem","keyCode","ENTER","SPACE","isTyping","preventDefault","A","hasModifierKey","shouldSelect","onKeydown","setTimeout","activeIndex","toArray","findIndex","contains","_setActiveOption","FocusKeyManager","withHomeAndEnd","withTypeAhead","withWrap","skipPredicate","change","activeItemIndex","indexOf","index","itemIndex","updateActiveItem","activeElement","_getFocusedElementPierceShadowDom","MatListModule","NgModule","ɵmod","ɵɵngDeclareNgModule","ObserversModule","MatRippleModule","MatPseudoCheckboxModule","BidiModule","MatDividerModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}