{"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/list/testing/list-item-harness-base.ts","../../../../../../../src/material/list/testing/list-harness-base.ts","../../../../../../../src/material/list/testing/action-list-harness.ts","../../../../../../../src/material/list/testing/list-harness.ts","../../../../../../../src/material/list/testing/list-harness-filters.ts","../../../../../../../src/material/list/testing/nav-list-harness.ts","../../../../../../../src/material/list/testing/selection-list-harness.ts","../../../../../../../src/material/list/testing/public-api.ts","../../../../../../../src/material/list/testing/index.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.io/license\n */\n\nimport {\n  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessLoader,\n  HarnessPredicate,\n  ContentContainerComponentHarness,\n  parallel,\n} from '@angular/cdk/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\n\nconst iconSelector = '.mat-list-icon';\nconst avatarSelector = '.mat-list-avatar';\n\n/**\n * Gets a `HarnessPredicate` that applies the given `BaseListItemHarnessFilters` to the given\n * list item harness.\n * @template H The type of list item harness to create a predicate for.\n * @param harnessType A constructor for a list item harness.\n * @param options An instance of `BaseListItemHarnessFilters` to apply.\n * @return A `HarnessPredicate` for the given harness type with the given options applied.\n */\nexport function getListItemPredicate<H extends MatListItemHarnessBase>(\n    harnessType: ComponentHarnessConstructor<H>,\n    options: BaseListItemHarnessFilters): HarnessPredicate<H> {\n  return new HarnessPredicate(harnessType, options)\n      .addOption('text', options.text,\n          (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text));\n}\n\n/** Harness for interacting with a list subheader. */\nexport class MatSubheaderHarness extends ComponentHarness {\n  static hostSelector = '.mat-subheader';\n\n  static with(options: SubheaderHarnessFilters = {}): HarnessPredicate<MatSubheaderHarness> {\n    return new HarnessPredicate(MatSubheaderHarness, options)\n        .addOption('text', options.text,\n            (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text));\n  }\n\n  /** Gets the full text content of the list item (including text from any font icons). */\n  async getText(): Promise<string> {\n    return (await this.host()).text();\n  }\n}\n\n/** Selectors for the various list item sections that may contain user content. */\nexport const enum MatListItemSection {\n  CONTENT = '.mat-list-item-content'\n  // TODO(mmalerba): consider adding sections for leading/trailing icons.\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatListItem` flavors.\n * @docs-private\n */\nexport abstract class MatListItemHarnessBase\n    extends ContentContainerComponentHarness<MatListItemSection> {\n\n  private _lines = this.locatorForAll('.mat-line');\n  private _avatar = this.locatorForOptional(avatarSelector);\n  private _icon = this.locatorForOptional(iconSelector);\n\n  /** Gets the full text content of the list item. */\n  async getText(): Promise<string> {\n    return (await this.host()).text({exclude: `${iconSelector}, ${avatarSelector}`});\n  }\n\n  /** Gets the lines of text (`mat-line` elements) in this nav list item. */\n  async getLinesText(): Promise<string[]> {\n    const lines = await this._lines();\n    return parallel(() => lines.map(l => l.text()));\n  }\n\n  /** Whether this list item has an avatar. */\n  async hasAvatar(): Promise<boolean> {\n    return !!await this._avatar();\n  }\n\n  /** Whether this list item has an icon. */\n  async hasIcon(): Promise<boolean> {\n    return !!await this._icon();\n  }\n\n  /**\n   * Gets a `HarnessLoader` used to get harnesses within the list item's content.\n   * @deprecated Use `getChildLoader(MatListItemSection.CONTENT)` or `getHarness` instead.\n   * @breaking-change 12.0.0\n   */\n  async getHarnessLoaderForContent(): Promise<HarnessLoader> {\n    return this.getChildLoader(MatListItemSection.CONTENT);\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  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessPredicate,\n  parallel\n} from '@angular/cdk/testing';\nimport {DividerHarnessFilters, MatDividerHarness} from '@angular/material/divider/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\nimport {MatSubheaderHarness} from './list-item-harness-base';\n\n/** Represents a section of a list falling under a specific header. */\nexport interface ListSection<I> {\n  /** The heading for this list section. `undefined` if there is no heading. */\n  heading?: string;\n\n  /** The items in this list section. */\n  items: I[];\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatList` flavors.\n * @template T A constructor type for a list item harness type used by this list harness.\n * @template C The list item harness type that `T` constructs.\n * @template F The filter type used filter list item harness of type `C`.\n * @docs-private\n */\nexport abstract class MatListHarnessBase\n    <\n      T extends (ComponentHarnessConstructor<C> & {with: (options?: F) => HarnessPredicate<C>}),\n      C extends ComponentHarness,\n      F extends BaseListItemHarnessFilters\n    > extends ComponentHarness {\n  protected _itemHarness: T;\n\n  /**\n   * Gets a list of harnesses representing the items in this list.\n   * @param filters Optional filters used to narrow which harnesses are included\n   * @return The list of items matching the given filters.\n   */\n  async getItems(filters?: F): Promise<C[]> {\n    return this.locatorForAll(this._itemHarness.with(filters))();\n  }\n\n  /**\n   * Gets a list of `ListSection` representing the list items grouped by subheaders. If the list has\n   * no subheaders it is represented as a single `ListSection` with an undefined `heading` property.\n   * @param filters Optional filters used to narrow which list item harnesses are included\n   * @return The list of items matching the given filters, grouped into sections by subheader.\n   */\n  async getItemsGroupedBySubheader(filters?: F): Promise<ListSection<C>[]> {\n    type Section = {items: C[], heading?: Promise<string>};\n    const listSections: Section[] = [];\n    let currentSection: Section = {items: []};\n    const itemsAndSubheaders =\n        await this.getItemsWithSubheadersAndDividers({item: filters, divider: false});\n    for (const itemOrSubheader of itemsAndSubheaders) {\n      if (itemOrSubheader instanceof MatSubheaderHarness) {\n        if (currentSection.heading !== undefined || currentSection.items.length) {\n          listSections.push(currentSection);\n        }\n        currentSection = {heading: itemOrSubheader.getText(), items: []};\n      } else {\n        currentSection.items.push(itemOrSubheader);\n      }\n    }\n    if (currentSection.heading !== undefined || currentSection.items.length ||\n        !listSections.length) {\n      listSections.push(currentSection);\n    }\n\n    // Concurrently wait for all sections to resolve their heading if present.\n    return parallel(() => listSections.map(async (s) =>\n      ({items: s.items, heading: await s.heading})));\n  }\n\n  /**\n   * Gets a list of sub-lists representing the list items grouped by dividers. If the list has no\n   * dividers it is represented as a list with a single sub-list.\n   * @param filters Optional filters used to narrow which list item harnesses are included\n   * @return The list of items matching the given filters, grouped into sub-lists by divider.\n   */\n  async getItemsGroupedByDividers(filters?: F): Promise<C[][]> {\n    const listSections: C[][] = [[]];\n    const itemsAndDividers =\n        await this.getItemsWithSubheadersAndDividers({item: filters, subheader: false});\n    for (const itemOrDivider of itemsAndDividers) {\n      if (itemOrDivider instanceof MatDividerHarness) {\n        listSections.push([]);\n      } else {\n        listSections[listSections.length - 1].push(itemOrDivider);\n      }\n    }\n    return listSections;\n  }\n\n  /**\n   * Gets a list of harnesses representing all of the items, subheaders, and dividers\n   * (in the order they appear in the list). Use `instanceof` to check which type of harness a given\n   * item is.\n   * @param filters Optional filters used to narrow which list items, subheaders, and dividers are\n   *     included. A value of `false` for the `item`, `subheader`, or `divider` properties indicates\n   *     that the respective harness type should be omitted completely.\n   * @return The list of harnesses representing the items, subheaders, and dividers matching the\n   *     given filters.\n   */\n  getItemsWithSubheadersAndDividers(filters: {\n    item: false,\n    subheader: false,\n    divider: false\n  }): Promise<[]>;\n  getItemsWithSubheadersAndDividers(filters: {\n    item?: F | false,\n    subheader: false,\n    divider: false\n  }): Promise<C[]>;\n  getItemsWithSubheadersAndDividers(filters: {\n    item: false,\n    subheader?: SubheaderHarnessFilters | false,\n    divider: false\n  }): Promise<MatSubheaderHarness[]>;\n  getItemsWithSubheadersAndDividers(filters: {\n    item: false,\n    subheader: false,\n    divider?: DividerHarnessFilters | false\n  }): Promise<MatDividerHarness[]>;\n  getItemsWithSubheadersAndDividers(filters: {\n    item?: F | false,\n    subheader?: SubheaderHarnessFilters | false,\n    divider: false\n  }): Promise<(C | MatSubheaderHarness)[]>;\n  getItemsWithSubheadersAndDividers(filters: {\n    item?: F | false,\n    subheader: false,\n    divider?: false | DividerHarnessFilters\n  }): Promise<(C | MatDividerHarness)[]>;\n  getItemsWithSubheadersAndDividers(filters: {\n    item: false,\n    subheader?: false | SubheaderHarnessFilters,\n    divider?: false | DividerHarnessFilters\n  }): Promise<(MatSubheaderHarness | MatDividerHarness)[]>;\n  getItemsWithSubheadersAndDividers(filters?: {\n    item?: F | false,\n    subheader?: SubheaderHarnessFilters | false,\n    divider?: DividerHarnessFilters | false\n  }): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]>;\n  async getItemsWithSubheadersAndDividers(filters: {\n    item?: F | false,\n    subheader?: SubheaderHarnessFilters | false,\n    divider?: DividerHarnessFilters | false\n  } = {}): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]> {\n    const query = [];\n    if (filters.item !== false) {\n      query.push(this._itemHarness.with(filters.item || {} as F));\n    }\n    if (filters.subheader !== false) {\n      query.push(MatSubheaderHarness.with(filters.subheader));\n    }\n    if (filters.divider !== false) {\n      query.push(MatDividerHarness.with(filters.divider));\n    }\n    return this.locatorForAll(...query)();\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 {HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ActionListHarnessFilters, ActionListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a standard mat-action-list in tests. */\nexport class MatActionListHarness extends MatListHarnessBase<\n    typeof MatActionListItemHarness, MatActionListItemHarness, ActionListItemHarnessFilters> {\n  /** The selector for the host element of a `MatActionList` instance. */\n  static hostSelector = 'mat-action-list.mat-list';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatActionListHarness` that meets\n   * certain criteria.\n   * @param options Options for filtering which action list instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: ActionListHarnessFilters = {}): HarnessPredicate<MatActionListHarness> {\n    return new HarnessPredicate(MatActionListHarness, options);\n  }\n\n  override _itemHarness = MatActionListItemHarness;\n}\n\n/** Harness for interacting with an action list item. */\nexport class MatActionListItemHarness extends MatListItemHarnessBase {\n  /** The selector for the host element of a `MatListItem` instance. */\n  static hostSelector = `${MatActionListHarness.hostSelector} .mat-list-item`;\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatActionListItemHarness` that\n   * meets certain criteria.\n   * @param options Options for filtering which action list item instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: ActionListItemHarnessFilters = {}):\n      HarnessPredicate<MatActionListItemHarness> {\n    return getListItemPredicate(MatActionListItemHarness, options);\n  }\n\n  /** Clicks on the action list item. */\n  async click(): Promise<void> {\n    return (await this.host()).click();\n  }\n\n  /** Focuses the action list item. */\n  async focus(): Promise<void> {\n    return (await this.host()).focus();\n  }\n\n  /** Blurs the action list item. */\n  async blur(): Promise<void> {\n    return (await this.host()).blur();\n  }\n\n  /** Whether the action list item is focused. */\n  async isFocused(): Promise<boolean> {\n    return (await this.host()).isFocused();\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 {HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ListHarnessFilters, ListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a standard mat-list in tests. */\nexport class MatListHarness extends\n    MatListHarnessBase<typeof MatListItemHarness, MatListItemHarness, ListItemHarnessFilters> {\n  /** The selector for the host element of a `MatList` instance. */\n  static hostSelector = '.mat-list:not(mat-action-list)';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatListHarness` that meets certain\n   * criteria.\n   * @param options Options for filtering which list instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: ListHarnessFilters = {}): HarnessPredicate<MatListHarness> {\n    return new HarnessPredicate(MatListHarness, options);\n  }\n\n  override _itemHarness = MatListItemHarness;\n}\n\n/** Harness for interacting with a list item. */\nexport class MatListItemHarness extends MatListItemHarnessBase {\n  /** The selector for the host element of a `MatListItem` instance. */\n  static hostSelector = `${MatListHarness.hostSelector} .mat-list-item`;\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatListItemHarness` that meets\n   * certain criteria.\n   * @param options Options for filtering which list item instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: ListItemHarnessFilters = {}): HarnessPredicate<MatListItemHarness> {\n    return getListItemPredicate(MatListItemHarness, options);\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 {BaseHarnessFilters} from '@angular/cdk/testing';\n\nexport interface ListHarnessFilters extends BaseHarnessFilters {}\n\nexport interface ActionListHarnessFilters extends BaseHarnessFilters {}\n\nexport interface NavListHarnessFilters extends BaseHarnessFilters {}\n\nexport interface SelectionListHarnessFilters extends BaseHarnessFilters {}\n\nexport interface BaseListItemHarnessFilters extends BaseHarnessFilters {\n  text?: string | RegExp;\n}\n\nexport interface ListItemHarnessFilters extends BaseListItemHarnessFilters {}\n\nexport interface ActionListItemHarnessFilters extends BaseListItemHarnessFilters {}\n\nexport interface NavListItemHarnessFilters extends BaseListItemHarnessFilters {\n  href?: string | RegExp | null;\n}\n\nexport interface ListOptionHarnessFilters extends BaseListItemHarnessFilters {\n  selected?: boolean;\n}\n\nexport interface SubheaderHarnessFilters extends BaseHarnessFilters {\n  text?: string | RegExp;\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 {HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {NavListHarnessFilters, NavListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a standard mat-nav-list in tests. */\nexport class MatNavListHarness extends MatListHarnessBase<\n    typeof MatNavListItemHarness, MatNavListItemHarness, NavListItemHarnessFilters> {\n  /** The selector for the host element of a `MatNavList` instance. */\n  static hostSelector = '.mat-nav-list';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatNavListHarness` that meets\n   * certain criteria.\n   * @param options Options for filtering which nav list instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: NavListHarnessFilters = {}): HarnessPredicate<MatNavListHarness> {\n    return new HarnessPredicate(MatNavListHarness, options);\n  }\n\n  override _itemHarness = MatNavListItemHarness;\n}\n\n/** Harness for interacting with a nav list item. */\nexport class MatNavListItemHarness extends MatListItemHarnessBase {\n  /** The selector for the host element of a `MatListItem` instance. */\n  static hostSelector = `${MatNavListHarness.hostSelector} .mat-list-item`;\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatNavListItemHarness` that\n   * meets certain criteria.\n   * @param options Options for filtering which nav list item instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: NavListItemHarnessFilters = {}): HarnessPredicate<MatNavListItemHarness> {\n    return getListItemPredicate(MatNavListItemHarness, options)\n        .addOption('href', options.href,\n            async (harness, href) => HarnessPredicate.stringMatches(harness.getHref(), href));\n  }\n\n  /** Gets the href for this nav list item. */\n  async getHref(): Promise<string | null> {\n    return (await this.host()).getAttribute('href');\n  }\n\n  /** Clicks on the nav list item. */\n  async click(): Promise<void> {\n    return (await this.host()).click();\n  }\n\n  /** Focuses the nav list item. */\n  async focus(): Promise<void> {\n    return (await this.host()).focus();\n  }\n\n  /** Blurs the nav list item. */\n  async blur(): Promise<void> {\n    return (await this.host()).blur();\n  }\n\n  /** Whether the nav list item is focused. */\n  async isFocused(): Promise<boolean> {\n    return (await this.host()).isFocused();\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 {HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatListOptionCheckboxPosition} from '@angular/material/list';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {\n  ListItemHarnessFilters,\n  ListOptionHarnessFilters,\n  SelectionListHarnessFilters\n} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a standard mat-selection-list in tests. */\nexport class MatSelectionListHarness extends MatListHarnessBase<\n    typeof MatListOptionHarness, MatListOptionHarness, ListOptionHarnessFilters> {\n  /** The selector for the host element of a `MatSelectionList` instance. */\n  static hostSelector = '.mat-selection-list';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatSelectionListHarness` that meets\n   * certain criteria.\n   * @param options Options for filtering which selection list instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: SelectionListHarnessFilters = {}):\n      HarnessPredicate<MatSelectionListHarness> {\n    return new HarnessPredicate(MatSelectionListHarness, options);\n  }\n\n  override _itemHarness = MatListOptionHarness;\n\n  /** Whether the selection list is disabled. */\n  async isDisabled(): Promise<boolean> {\n    return await (await this.host()).getAttribute('aria-disabled') === 'true';\n  }\n\n  /**\n   * Selects all items matching any of the given filters.\n   * @param filters Filters that specify which items should be selected.\n   */\n  async selectItems(...filters: ListOptionHarnessFilters[]): Promise<void> {\n    const items = await this._getItems(filters);\n    await parallel(() => items.map(item => item.select()));\n  }\n\n  /**\n   * Deselects all items matching any of the given filters.\n   * @param filters Filters that specify which items should be deselected.\n   */\n  async deselectItems(...filters: ListItemHarnessFilters[]): Promise<void> {\n    const items = await this._getItems(filters);\n    await parallel(() => items.map(item => item.deselect()));\n  }\n\n  /** Gets all items matching the given list of filters. */\n  private async _getItems(filters: ListOptionHarnessFilters[]): Promise<MatListOptionHarness[]> {\n    if (!filters.length) {\n      return this.getItems();\n    }\n    const matches = await parallel(() => {\n      return filters.map(filter => this.locatorForAll(MatListOptionHarness.with(filter))());\n    });\n    return matches.reduce((result, current) => [...result, ...current], []);\n  }\n}\n\n/** Harness for interacting with a list option. */\nexport class MatListOptionHarness extends MatListItemHarnessBase {\n  /** The selector for the host element of a `MatListOption` instance. */\n  static hostSelector = '.mat-list-option';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatListOptionHarness` that\n   * meets certain criteria.\n   * @param options Options for filtering which list option instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: ListOptionHarnessFilters = {}): HarnessPredicate<MatListOptionHarness> {\n    return getListItemPredicate(MatListOptionHarness, options)\n        .addOption('is selected', options.selected,\n            async (harness, selected) => await harness.isSelected() === selected);\n  }\n\n  private _itemContent = this.locatorFor('.mat-list-item-content');\n\n  /** Gets the position of the checkbox relative to the list option content. */\n  async getCheckboxPosition(): Promise<MatListOptionCheckboxPosition> {\n    return await (await this._itemContent()).hasClass('mat-list-item-content-reverse') ?\n        'after' : 'before';\n  }\n\n  /** Whether the list option is selected. */\n  async isSelected(): Promise<boolean> {\n    return await (await this.host()).getAttribute('aria-selected') === 'true';\n  }\n\n  /** Whether the list option is disabled. */\n  async isDisabled(): Promise<boolean> {\n    return await (await this.host()).getAttribute('aria-disabled') === 'true';\n  }\n\n  /** Focuses the list option. */\n  async focus(): Promise<void> {\n    return (await this.host()).focus();\n  }\n\n  /** Blurs the list option. */\n  async blur(): Promise<void> {\n    return (await this.host()).blur();\n  }\n\n  /** Whether the list option is focused. */\n  async isFocused(): Promise<boolean> {\n    return (await this.host()).isFocused();\n  }\n\n  /** Toggles the checked state of the checkbox. */\n  async toggle() {\n    return (await this.host()).click();\n  }\n\n  /**\n   * Puts the list option in a checked state by toggling it if it is currently unchecked, or doing\n   * nothing if it is already checked.\n   */\n  async select() {\n    if (!await this.isSelected()) {\n      return this.toggle();\n    }\n  }\n\n  /**\n   * Puts the list option in an unchecked state by toggling it if it is currently checked, or doing\n   * nothing if it is already unchecked.\n   */\n  async deselect() {\n    if (await this.isSelected()) {\n      return this.toggle();\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\nexport * from './action-list-harness';\nexport * from './list-harness';\nexport * from './list-harness-filters';\nexport * from './nav-list-harness';\nexport * from './selection-list-harness';\nexport {MatListItemSection} from './list-item-harness-base';\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 './public-api';\n"],"names":[],"mappings":"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"}