{"version":3,"file":"chips-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-avatar-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-edit-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-remove-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-option-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-listbox-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-edit-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-row-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-grid-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-set-harness.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 {\n  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipAvatarHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip avatar in tests. */\nexport class MatChipAvatarHarness extends ComponentHarness {\n  static hostSelector = '.mat-mdc-chip-avatar';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip avatar with specific\n   * attributes.\n   * @param options Options for filtering which input instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipAvatarHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipAvatarHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, 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.dev/license\n */\n\nimport {\n  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipEditHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip edit button in tests. */\nexport class MatChipEditHarness extends ComponentHarness {\n  static hostSelector = '.mat-mdc-chip-edit';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip edit with specific\n   * attributes.\n   * @param options Options for filtering which input instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipEditHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipEditHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, options);\n  }\n\n  /** Clicks the edit button. */\n  async click(): Promise<void> {\n    return (await this.host()).click();\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 {\n  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipRemoveHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip remove button in tests. */\nexport class MatChipRemoveHarness extends ComponentHarness {\n  static hostSelector = '.mat-mdc-chip-remove';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip remove with specific\n   * attributes.\n   * @param options Options for filtering which input instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipRemoveHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipRemoveHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, options);\n  }\n\n  /** Clicks the remove button. */\n  async click(): Promise<void> {\n    return (await this.host()).click();\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 {\n  ComponentHarnessConstructor,\n  ContentContainerComponentHarness,\n  HarnessPredicate,\n  TestKey,\n} from '@angular/cdk/testing';\nimport {MatChipAvatarHarness} from './chip-avatar-harness';\nimport {\n  ChipAvatarHarnessFilters,\n  ChipEditHarnessFilters,\n  ChipHarnessFilters,\n  ChipRemoveHarnessFilters,\n} from './chip-harness-filters';\nimport {MatChipEditHarness} from './chip-edit-harness';\nimport {MatChipRemoveHarness} from './chip-remove-harness';\n\n/** Harness for interacting with a mat-chip in tests. */\nexport class MatChipHarness extends ContentContainerComponentHarness {\n  protected _primaryAction = this.locatorFor('.mdc-evolution-chip__action--primary');\n\n  static hostSelector = '.mat-mdc-basic-chip, .mat-mdc-chip';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip with specific attributes.\n   * @param options Options for narrowing the search.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, options)\n      .addOption('text', options.text, (harness, label) => {\n        return HarnessPredicate.stringMatches(harness.getText(), label);\n      })\n      .addOption('disabled', options.disabled, async (harness, disabled) => {\n        return (await harness.isDisabled()) === disabled;\n      });\n  }\n\n  /** Gets a promise for the text content the option. */\n  async getText(): Promise<string> {\n    return (await this.host()).text({\n      exclude: '.mat-mdc-chip-avatar, .mat-mdc-chip-trailing-icon, .mat-icon',\n    });\n  }\n\n  /** Whether the chip is disabled. */\n  async isDisabled(): Promise<boolean> {\n    return (await this.host()).hasClass('mat-mdc-chip-disabled');\n  }\n\n  /** Delete a chip from the set. */\n  async remove(): Promise<void> {\n    const hostEl = await this.host();\n    await hostEl.sendKeys(TestKey.DELETE);\n  }\n\n  /**\n   * Gets the edit button inside of a chip.\n   * @param filter Optionally filters which chips are included.\n   */\n  async geEditButton(filter: ChipEditHarnessFilters = {}): Promise<MatChipEditHarness> {\n    return this.locatorFor(MatChipEditHarness.with(filter))();\n  }\n\n  /**\n   * Gets the remove button inside of a chip.\n   * @param filter Optionally filters which chips are included.\n   */\n  async getRemoveButton(filter: ChipRemoveHarnessFilters = {}): Promise<MatChipRemoveHarness> {\n    return this.locatorFor(MatChipRemoveHarness.with(filter))();\n  }\n\n  /**\n   * Gets the avatar inside a chip.\n   * @param filter Optionally filters which avatars are included.\n   */\n  async getAvatar(filter: ChipAvatarHarnessFilters = {}): Promise<MatChipAvatarHarness | null> {\n    return this.locatorForOptional(MatChipAvatarHarness.with(filter))();\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 {\n  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessPredicate,\n  TestKey,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ChipInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a grid's chip input in tests. */\nexport class MatChipInputHarness extends ComponentHarness {\n  static hostSelector = '.mat-mdc-chip-input';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip input with specific\n   * attributes.\n   * @param options Options for filtering which input instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipInputHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipInputHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, options)\n      .addOption('value', options.value, async (harness, value) => {\n        return (await harness.getValue()) === value;\n      })\n      .addOption('placeholder', options.placeholder, async (harness, placeholder) => {\n        return (await harness.getPlaceholder()) === placeholder;\n      })\n      .addOption('disabled', options.disabled, async (harness, disabled) => {\n        return (await harness.isDisabled()) === disabled;\n      });\n  }\n\n  /** Whether the input is disabled. */\n  async isDisabled(): Promise<boolean> {\n    const host = await this.host();\n    const disabled = await host.getAttribute('disabled');\n\n    if (disabled !== null) {\n      return coerceBooleanProperty(disabled);\n    }\n\n    return (await host.getAttribute('aria-disabled')) === 'true';\n  }\n\n  /** Whether the input is required. */\n  async isRequired(): Promise<boolean> {\n    return (await this.host()).getProperty<boolean>('required');\n  }\n\n  /** Gets the value of the input. */\n  async getValue(): Promise<string> {\n    // The \"value\" property of the native input is never undefined.\n    return await (await this.host()).getProperty<string>('value');\n  }\n\n  /** Gets the placeholder of the input. */\n  async getPlaceholder(): Promise<string> {\n    return await (await this.host()).getProperty<string>('placeholder');\n  }\n\n  /**\n   * Focuses the input and returns a promise that indicates when the\n   * action is complete.\n   */\n  async focus(): Promise<void> {\n    return (await this.host()).focus();\n  }\n\n  /**\n   * Blurs the input and returns a promise that indicates when the\n   * action is complete.\n   */\n  async blur(): Promise<void> {\n    return (await this.host()).blur();\n  }\n\n  /** Whether the input is focused. */\n  async isFocused(): Promise<boolean> {\n    return (await this.host()).isFocused();\n  }\n\n  /**\n   * Sets the value of the input. The value will be set by simulating\n   * keypresses that correspond to the given value.\n   */\n  async setValue(newValue: string): Promise<void> {\n    const inputEl = await this.host();\n    await inputEl.clear();\n\n    // We don't want to send keys for the value if the value is an empty\n    // string in order to clear the value. Sending keys with an empty string\n    // still results in unnecessary focus events.\n    if (newValue) {\n      await inputEl.sendKeys(newValue);\n    }\n  }\n\n  /** Sends a chip separator key to the input element. */\n  async sendSeparatorKey(key: TestKey | string): Promise<void> {\n    const inputEl = await this.host();\n    return inputEl.sendKeys(key);\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipOptionHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-option in tests. */\nexport class MatChipOptionHarness extends MatChipHarness {\n  static override hostSelector = '.mat-mdc-chip-option';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip option with specific\n   * attributes.\n   * @param options Options for narrowing the search.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static override with<T extends MatChipHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipOptionHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(MatChipOptionHarness, options)\n      .addOption('text', options.text, (harness, label) =>\n        HarnessPredicate.stringMatches(harness.getText(), label),\n      )\n      .addOption(\n        'selected',\n        options.selected,\n        async (harness, selected) => (await harness.isSelected()) === selected,\n      ) as unknown as HarnessPredicate<T>;\n  }\n\n  /** Whether the chip is selected. */\n  async isSelected(): Promise<boolean> {\n    return (await this.host()).hasClass('mat-mdc-chip-selected');\n  }\n\n  /** Selects the given chip. Only applies if it's selectable. */\n  async select(): Promise<void> {\n    if (!(await this.isSelected())) {\n      await this.toggle();\n    }\n  }\n\n  /** Deselects the given chip. Only applies if it's selectable. */\n  async deselect(): Promise<void> {\n    if (await this.isSelected()) {\n      await this.toggle();\n    }\n  }\n\n  /** Toggles the selected state of the given chip. */\n  async toggle(): Promise<void> {\n    return (await this._primaryAction()).click();\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 {\n  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessPredicate,\n  parallel,\n} from '@angular/cdk/testing';\nimport {ChipListboxHarnessFilters, ChipOptionHarnessFilters} from './chip-harness-filters';\nimport {MatChipOptionHarness} from './chip-option-harness';\n\n/** Harness for interacting with a mat-chip-listbox in tests. */\nexport class MatChipListboxHarness extends ComponentHarness {\n  static hostSelector = '.mat-mdc-chip-listbox';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip listbox with specific\n   * attributes.\n   * @param options Options for narrowing the search.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipListboxHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipListboxHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, options).addOption(\n      'disabled',\n      options.disabled,\n      async (harness, disabled) => {\n        return (await harness.isDisabled()) === disabled;\n      },\n    );\n  }\n\n  /** Gets whether the chip listbox is disabled. */\n  async isDisabled(): Promise<boolean> {\n    return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n  }\n\n  /** Gets whether the chip listbox is required. */\n  async isRequired(): Promise<boolean> {\n    return (await (await this.host()).getAttribute('aria-required')) === 'true';\n  }\n\n  /** Gets whether the chip listbox is in multi selection mode. */\n  async isMultiple(): Promise<boolean> {\n    return (await (await this.host()).getAttribute('aria-multiselectable')) === 'true';\n  }\n\n  /** Gets whether the orientation of the chip list. */\n  async getOrientation(): Promise<'horizontal' | 'vertical'> {\n    const orientation = await (await this.host()).getAttribute('aria-orientation');\n    return orientation === 'vertical' ? 'vertical' : 'horizontal';\n  }\n\n  /**\n   * Gets the list of chips inside the chip list.\n   * @param filter Optionally filters which chips are included.\n   */\n  async getChips(filter: ChipOptionHarnessFilters = {}): Promise<MatChipOptionHarness[]> {\n    return this.locatorForAll(MatChipOptionHarness.with(filter))();\n  }\n\n  /**\n   * Selects a chip inside the chip list.\n   * @param filter An optional filter to apply to the child chips.\n   *    All the chips matching the filter will be selected.\n   */\n  async selectChips(filter: ChipOptionHarnessFilters = {}): Promise<void> {\n    const chips = await this.getChips(filter);\n    if (!chips.length) {\n      throw Error(`Cannot find chip matching filter ${JSON.stringify(filter)}`);\n    }\n    await parallel(() => chips.map(chip => chip.select()));\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 {\n  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipEditInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with an editable chip's input in tests. */\nexport class MatChipEditInputHarness extends ComponentHarness {\n  static hostSelector = '.mat-chip-edit-input';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip edit input with specific\n   * attributes.\n   * @param options Options for filtering which input instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipEditInputHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipEditInputHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, options);\n  }\n\n  /** Sets the value of the input. */\n  async setValue(value: string): Promise<void> {\n    const host = await this.host();\n    return host.setContenteditableValue(value);\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 {TestKey} from '@angular/cdk/testing';\nimport {MatChipEditInputHarness} from './chip-edit-input-harness';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipEditInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-row in tests. */\nexport class MatChipRowHarness extends MatChipHarness {\n  static override hostSelector = '.mat-mdc-chip-row';\n\n  /** Whether the chip is editable. */\n  async isEditable(): Promise<boolean> {\n    return (await this.host()).hasClass('mat-mdc-chip-editable');\n  }\n\n  /** Whether the chip is currently being edited. */\n  async isEditing(): Promise<boolean> {\n    return (await this.host()).hasClass('mat-mdc-chip-editing');\n  }\n\n  /** Sets the chip row into an editing state, if it is editable. */\n  async startEditing(): Promise<void> {\n    if (!(await this.isEditable())) {\n      throw new Error('Cannot begin editing a chip that is not editable.');\n    }\n    return (await this.host()).dispatchEvent('dblclick');\n  }\n\n  /** Stops editing the chip, if it was in the editing state. */\n  async finishEditing(): Promise<void> {\n    if (await this.isEditing()) {\n      await (await this.host()).sendKeys(TestKey.ENTER);\n    }\n  }\n\n  /** Gets the edit input inside the chip row. */\n  async getEditInput(filter: ChipEditInputHarnessFilters = {}): Promise<MatChipEditInputHarness> {\n    return this.locatorFor(MatChipEditInputHarness.with(filter))();\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 {\n  ComponentHarness,\n  ComponentHarnessConstructor,\n  HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {\n  ChipGridHarnessFilters,\n  ChipInputHarnessFilters,\n  ChipRowHarnessFilters,\n} from './chip-harness-filters';\nimport {MatChipInputHarness} from './chip-input-harness';\nimport {MatChipRowHarness} from './chip-row-harness';\n\n/** Harness for interacting with a mat-chip-grid in tests. */\nexport class MatChipGridHarness extends ComponentHarness {\n  static hostSelector = '.mat-mdc-chip-grid';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip grid with specific attributes.\n   * @param options Options for filtering which chip grid instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipGridHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipGridHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, options).addOption(\n      'disabled',\n      options.disabled,\n      async (harness, disabled) => {\n        return (await harness.isDisabled()) === disabled;\n      },\n    );\n  }\n\n  /** Gets whether the chip grid is disabled. */\n  async isDisabled(): Promise<boolean> {\n    return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n  }\n\n  /** Gets whether the chip grid is required. */\n  async isRequired(): Promise<boolean> {\n    return await (await this.host()).hasClass('mat-mdc-chip-list-required');\n  }\n\n  /** Gets whether the chip grid is invalid. */\n  async isInvalid(): Promise<boolean> {\n    return (await (await this.host()).getAttribute('aria-invalid')) === 'true';\n  }\n\n  /** Gets promise of the harnesses for the chip rows. */\n  getRows(filter: ChipRowHarnessFilters = {}): Promise<MatChipRowHarness[]> {\n    return this.locatorForAll(MatChipRowHarness.with(filter))();\n  }\n\n  /** Gets promise of the chip text input harness. */\n  getInput(filter: ChipInputHarnessFilters = {}): Promise<MatChipInputHarness | null> {\n    return this.locatorFor(MatChipInputHarness.with(filter))();\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 {\n  ComponentHarnessConstructor,\n  ComponentHarness,\n  HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipHarnessFilters, ChipSetHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-set in tests. */\nexport class MatChipSetHarness extends ComponentHarness {\n  static hostSelector = '.mat-mdc-chip-set';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a chip set with specific attributes.\n   * @param options Options for filtering which chip set instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with<T extends MatChipSetHarness>(\n    this: ComponentHarnessConstructor<T>,\n    options: ChipSetHarnessFilters = {},\n  ): HarnessPredicate<T> {\n    return new HarnessPredicate(this, options);\n  }\n\n  /** Gets promise of the harnesses for the chips. */\n  async getChips(filter: ChipHarnessFilters = {}): Promise<MatChipHarness[]> {\n    return await this.locatorForAll(MatChipHarness.with(filter))();\n  }\n}\n"],"names":[],"mappings":"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"}