@skyux/lookup 14.11.0 → 14.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -628,6 +628,7 @@ class SkySelectionModalHarness extends ComponentHarness {
|
|
|
628
628
|
#getCancelButton = this.locatorFor('button.sky-lookup-show-more-modal-close');
|
|
629
629
|
#getClearAllButton = this.locatorForOptional('button.sky-lookup-show-more-modal-clear-all-btn');
|
|
630
630
|
#getCheckboxHarness = this.locatorFor(SkyCheckboxHarness);
|
|
631
|
+
#getHeading = this.locatorFor('.sky-modal-heading');
|
|
631
632
|
#getInfiniteScroll = this.locatorFor(SkyInfiniteScrollHarness);
|
|
632
633
|
#getSaveButton = this.locatorFor('button.sky-lookup-show-more-modal-save');
|
|
633
634
|
#getSearchHarness = this.locatorFor(SkySearchHarness);
|
|
@@ -651,6 +652,12 @@ class SkySelectionModalHarness extends ComponentHarness {
|
|
|
651
652
|
async getSearchAriaLabel() {
|
|
652
653
|
return await (await this.#getSearchHarness()).getAriaLabel();
|
|
653
654
|
}
|
|
655
|
+
/**
|
|
656
|
+
* Gets the selection modal's heading text.
|
|
657
|
+
*/
|
|
658
|
+
async getHeadingText() {
|
|
659
|
+
return await (await this.#getHeading()).text();
|
|
660
|
+
}
|
|
654
661
|
/**
|
|
655
662
|
* Selects multiple search results based on a set of criteria.
|
|
656
663
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-lookup-testing.mjs","sources":["../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-input-harness.ts","../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-harness.ts","../../../../../libs/components/lookup/testing/src/modules/country-field/country-field-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/country-field/country-field-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-selections-list-harness.ts","../../../../../libs/components/lookup/testing/src/modules/search/search-harness.ts","../../../../../libs/components/lookup/testing/src/modules/selection-modal/selection-modal-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-show-more-picker-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-selection-harness.ts","../../../../../libs/components/lookup/testing/src/modules/selection-modal/selection-modal-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-show-more-picker-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/legacy/search/search-fixture.ts","../../../../../libs/components/lookup/testing/src/legacy/search/search-testing.module.ts","../../../../../libs/components/lookup/testing/src/skyux-lookup-testing.ts"],"sourcesContent":["import { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the autocomplete input harness.\n */\nexport class SkyAutocompleteInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = '[skyAutocomplete]';\n\n /**\n * Returns the value of the input's `aria-controls` attribute.\n */\n public async getAriaControls(): Promise<string | null> {\n return await (await this.host()).getAttribute('aria-controls');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteSearchResultHarnessFilters } from './autocomplete-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyAutocompleteSearchResultHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-autocomplete-result';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyAutocompleteSearchResultHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyAutocompleteSearchResultHarnessFilters,\n ): HarnessPredicate<SkyAutocompleteSearchResultHarness> {\n return new HarnessPredicate(\n SkyAutocompleteSearchResultHarness,\n filters,\n ).addOption(\n 'textContent',\n filters.text,\n async (harness, text) =>\n await HarnessPredicate.stringMatches(await harness.getText(), text),\n );\n }\n\n /**\n * Returns the value of the search result's descriptor property.\n * This value is set by the autocomplete's `descriptorProperty` input.\n */\n public async getDescriptorValue(): Promise<string> {\n return (await (\n await this.host()\n ).getAttribute('data-descriptor-value')) as string;\n }\n\n /**\n * Selects the search result.\n */\n public async select(): Promise<void> {\n await (await this.host()).click();\n }\n\n /**\n * Returns the text of the search result.\n */\n public async getText(): Promise<string> {\n return await (await this.host()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness, SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarnessFilters } from './autocomplete-harness-filters';\nimport { SkyAutocompleteInputHarness } from './autocomplete-input-harness';\nimport { SkyAutocompleteSearchResultHarness } from './autocomplete-search-result-harness';\nimport { SkyAutocompleteSearchResultHarnessFilters } from './autocomplete-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete component in tests.\n */\nexport class SkyAutocompleteHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-autocomplete';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n #getAutocomplete = this.locatorFor('.sky-autocomplete');\n #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyAutocompleteHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyAutocompleteHarnessFilters,\n ): HarnessPredicate<SkyAutocompleteHarness> {\n return SkyAutocompleteHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the autocomplete input.\n * @deprecated Call `await (await autocomplete.getControl()).blur()` instead.\n */\n public async blur(): Promise<void> {\n await (await this.#getInput()).blur();\n }\n\n /**\n * Clears the autocomplete input value.\n * @deprecated Call `await (await autocomplete.getControl()).clear()` instead.\n */\n public async clear(): Promise<void> {\n await (await this.#getInput()).clear();\n }\n\n /**\n * Enters text into the autocomplete input.\n * @deprecated Call `await (await autocomplete.getControl()).setValue()` instead.\n */\n public async enterText(value: string): Promise<void> {\n await (await this.#getInput()).setValue(value);\n }\n\n /**\n * Focuses the autocomplete input.\n * @deprecated Call `await (await autocomplete.getControl()).focus()` instead.\n */\n public async focus(): Promise<void> {\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the autocomplete `aria-labelledby` value.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (\n await this.#getAutocomplete()\n ).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the autocomplete input harness.\n */\n public async getControl(): Promise<SkyAutocompleteInputHarness> {\n return await this.#getInput();\n }\n\n /**\n * Gets a specific autocomplete search result based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getSearchResult(\n filter: SkyAutocompleteSearchResultHarnessFilters,\n ): Promise<SkyAutocompleteSearchResultHarness> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search result. The autocomplete is closed.',\n );\n }\n\n return await overlay.queryHarness(\n SkyAutocompleteSearchResultHarness.with(filter),\n );\n }\n\n /**\n * Gets an array of autocomplete search results based on the filter criteria.\n * If no filter is provided, returns all autocomplete search results.\n * @param filters The optional filter criteria.\n */\n public async getSearchResults(\n filters?: SkyAutocompleteSearchResultHarnessFilters,\n ): Promise<SkyAutocompleteSearchResultHarness[]> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search results. The autocomplete is closed.',\n );\n }\n\n return await overlay.queryHarnesses(\n SkyAutocompleteSearchResultHarness.with(filters || {}),\n );\n }\n\n /**\n * Returns the text content for each autocomplete search result.\n */\n public async getSearchResultsText(\n filters?: SkyAutocompleteSearchResultHarnessFilters,\n ): Promise<string[]> {\n const harnesses = await this.getSearchResults(filters);\n\n const text: string[] = [];\n for (const harness of harnesses) {\n text.push(await harness.getText());\n }\n\n return text;\n }\n\n /**\n * Gets the value of the autocomplete input.\n * @deprecated Call `await (await autocomplete.getControl()).getValue()` instead.\n */\n public async getValue(): Promise<string> {\n return await (await this.#getInput()).getValue();\n }\n\n /**\n * Gets the text displayed when no search results are found.\n */\n public async getNoResultsFoundText(): Promise<string> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Cannot find \"no results found\" text as the dropdown is closed.',\n );\n }\n\n try {\n const noResultFoundText = await overlay.querySelector(\n '.sky-autocomplete-no-results',\n );\n return (await noResultFoundText.text()).trim();\n } catch {\n throw new Error(\n 'Cannot find \"no results found\" text because there are search results.',\n );\n }\n }\n\n /**\n * Whether the autocomplete input is disabled.\n * @deprecated Call `await (await autocomplete.getControl()).isDisabled()` instead.\n */\n public async isDisabled(): Promise<boolean> {\n return await (await this.#getInput()).isDisabled();\n }\n\n /**\n * Whether the autocomplete input is focused.\n * @deprecated Call `await (await autocomplete.getControl()).isFocused()` instead.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getInput()).isFocused();\n }\n\n /**\n * Whether the autocomplete is open.\n */\n public async isOpen(): Promise<boolean> {\n const overlay = await this.#getOverlay();\n return !!overlay;\n }\n\n /**\n * Selects a search result.\n */\n public async selectSearchResult(\n filters: SkyAutocompleteSearchResultHarnessFilters,\n ): Promise<void> {\n const results = await this.getSearchResults(filters);\n if (results && results.length > 0) {\n await results[0].select();\n }\n }\n\n /**\n * Clicks the \"Add\" button in the autocomplete search results panel.\n * (The \"Add\" functionality is not included in the public API\n * of a \"vanilla\" autocomplete component, so this method is protected\n * to prevent consumers of the autocomplete harness from calling it.\n * The lookup harness, which extends the autocomplete harness, may\n * still access this feature, however.)\n * @internal\n */\n protected async clickAddButton(): Promise<void> {\n const overlay = await this.#getOverlay();\n if (!overlay) {\n throw new Error(\n 'Unable to find the \"Add\" button. The autocomplete is closed.',\n );\n }\n\n const button = await overlay.querySelectorOrNull(\n 'button.sky-autocomplete-action-add',\n );\n\n if (!button) {\n throw new Error(\n 'The \"Add\" button cannot be clicked because it does not exist.',\n );\n }\n\n await button.click();\n }\n\n /**\n * Clicks the \"Show more\" button.\n * (The \"Show more\" functionality is not included in the public API\n * of a \"vanilla\" autocomplete component, so this method is protected\n * to prevent consumers of the autocomplete harness from calling it.\n * The lookup harness, which extends the autocomplete harness, may\n * still access this feature, however.)\n * @internal\n */\n protected async clickShowMoreButton(): Promise<void> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to find the \"Show more\" button. ' +\n 'The autocomplete is closed.',\n );\n }\n\n const button = await overlay.querySelectorOrNull(\n 'button.sky-autocomplete-action-more',\n );\n\n if (!button) {\n throw new Error(\n 'The \"Show more\" button cannot be clicked because it does not exist.',\n );\n }\n\n await button.click();\n }\n\n async #getOverlay(): Promise<SkyOverlayHarness | null> {\n const overlayId = await (await this.#getInput()).getAriaControls();\n\n return overlayId\n ? await this.#documentRootLocator.locatorForOptional(\n SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n )()\n : null;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyAutocompleteSearchResultHarness } from '../autocomplete/autocomplete-search-result-harness';\n\nimport { SkyCountryFieldSearchResultHarnessFilters } from './country-field-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyCountryFieldSearchResultHarness extends SkyAutocompleteSearchResultHarness {\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCountryFieldSearchResultHarness` that meets certain criteria.\n */\n public static override with(\n filters: SkyCountryFieldSearchResultHarnessFilters,\n ): HarnessPredicate<SkyCountryFieldSearchResultHarness> {\n return new HarnessPredicate(\n SkyCountryFieldSearchResultHarness,\n filters,\n ).addOption('textContent', filters.text, async (harness, text) => {\n const searchResultText = await harness.getText();\n return await HarnessPredicate.stringMatches(searchResultText, text);\n });\n }\n\n /**\n * Returns the value of the search result's descriptor property.\n * This is not needed by country field because it is always set to the country name,\n * and the method is marked internal to prevent it from being documented publicly.\n * @internal\n */\n public override async getDescriptorValue(): Promise<string> {\n return await super.getDescriptorValue();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarness } from '../autocomplete/autocomplete-harness';\nimport { SkyAutocompleteInputHarness } from '../autocomplete/autocomplete-input-harness';\n\nimport { SkyCountryFieldHarnessFilters } from './country-field-harness-filters';\nimport { SkyCountryFieldSearchResultHarness } from './country-field-search-result-harness';\nimport { SkyCountryFieldSearchResultHarnessFilters } from './country-field-search-result-harness-filters';\n\n/**\n * Harness for interacting with a country field component in tests.\n */\nexport class SkyCountryFieldHarness extends SkyAutocompleteHarness {\n /**\n * Finds a standard country field component, or a country field component that is wrapped by an input box component.\n * For input box implementations, we need to use the `.sky-input-box` selector since the `sky-country-field`\n * element is removed from the DOM.\n * @internal\n */\n public static override hostSelector =\n 'sky-country-field,.sky-country-field-container';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCountryFieldHarness` that meets certain criteria.\n * These filters only work for standalone country fields.\n * For country fields wrapped inside `sky-input-box`, place filters\n * on the input box instead, and query the country field using a `SkyInputBoxHarness`.\n * For the input box implementation, see the code example.\n */\n public static override with(\n filters: SkyCountryFieldHarnessFilters,\n ): HarnessPredicate<SkyCountryFieldHarness> {\n return SkyCountryFieldHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the country field input.\n * @deprecated Call `await (await countryField.getControl()).blur()` instead.\n */\n public override async blur(): Promise<void> {\n return await (await super.getControl()).blur();\n }\n\n /**\n * Clears the country field input value.\n * @deprecated Call `await (await countryField.getControl()).clear()` instead.\n */\n public override async clear(): Promise<void> {\n return await (await super.getControl()).clear();\n }\n\n /**\n * Enters text into the country field input.\n * @deprecated Call `await (await countryField.getControl()).setValue()` instead.\n */\n public override async enterText(value: string): Promise<void> {\n return await (await super.getControl()).setValue(value);\n }\n\n /**\n * Focuses the country field input.\n * @deprecated Call `await (await countryField.getControl()).focus()` instead.\n */\n public override async focus(): Promise<void> {\n return await (await super.getControl()).focus();\n }\n\n /**\n * Gets the country field `aria-labelledby` value.\n * This is not needed for country field because the id is generated internally,\n * and the method is marked internal to prevent it from being documented publicly.\n * @internal\n */\n /* istanbul ignore next */\n public override async getAriaLabelledby(): Promise<string | null> {\n return await super.getAriaLabelledby();\n }\n\n /**\n * Gets a specific country field search result based on the filter criteria.\n * @param filter The filter criteria.\n */\n public override async getSearchResult(\n filter: SkyCountryFieldSearchResultHarnessFilters,\n ): Promise<SkyCountryFieldSearchResultHarness> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search result. The country field is closed.',\n );\n }\n\n return await overlay.queryHarness(\n SkyCountryFieldSearchResultHarness.with(filter),\n );\n }\n\n /**\n * Gets an array of country field search results based on the filter criteria.\n * If no filter is provided, returns all country field search results.\n * @param filters The optional filter criteria.\n */\n public override async getSearchResults(\n filters?: SkyCountryFieldSearchResultHarnessFilters,\n ): Promise<SkyCountryFieldSearchResultHarness[]> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search results. The country field is closed.',\n );\n }\n\n return await overlay.queryHarnesses(\n SkyCountryFieldSearchResultHarness.with(filters || {}),\n );\n }\n\n /**\n * Returns the text content for each country field search result.\n */\n public override async getSearchResultsText(\n filters?: SkyCountryFieldSearchResultHarnessFilters,\n ): Promise<string[]> {\n const harnesses = await this.getSearchResults(filters);\n\n const text: string[] = [];\n for (const harness of harnesses) {\n text.push(await harness.getText());\n }\n\n return text;\n }\n\n /**\n * Gets the value of the country field input.\n * @deprecated Call `await (await countryField.getControl()).getValue()` instead.\n */\n public override async getValue(): Promise<string> {\n return await (await super.getControl()).getValue();\n }\n\n /**\n * Gets the text displayed when no search results are found.\n * For a country field, this is always the default text and the method\n * is marked internal to prevent it from being documented publicly.\n * @internal\n */\n /* istanbul ignore next */\n public override async getNoResultsFoundText(): Promise<string> {\n return await super.getNoResultsFoundText();\n }\n\n /**\n * Whether the country field input is disabled.\n * @deprecated Call `await (await countryField.getControl()).isDisabled()` instead.\n */\n public override async isDisabled(): Promise<boolean> {\n return await (await super.getControl()).isDisabled();\n }\n\n /**\n * Whether the country field input is focused.\n * @deprecated Call `await (await countryField.getControl()).isFocused()` instead.\n */\n public override async isFocused(): Promise<boolean> {\n return await (await super.getControl()).isFocused();\n }\n\n /**\n * Whether the country field is open.\n */\n public override async isOpen(): Promise<boolean> {\n return await super.isOpen();\n }\n\n /**\n * Selects a search result.\n */\n public override async selectSearchResult(\n filters: SkyCountryFieldSearchResultHarnessFilters,\n ): Promise<void> {\n return await super.selectSearchResult(filters);\n }\n\n async #getOverlay(): Promise<SkyOverlayHarness | null> {\n const overlayId = await (await this.#getInput()).getAriaControls();\n\n return overlayId\n ? await this.#documentRootLocator.locatorForOptional(\n SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n )()\n : null;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyAutocompleteSearchResultHarness } from '../autocomplete/autocomplete-search-result-harness';\n\nimport { SkyLookupSearchResultHarnessFilters } from './lookup-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyLookupSearchResultHarness extends SkyAutocompleteSearchResultHarness {\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyLookupSearchResultHarness` that meets certain criteria.\n */\n public static override with(\n filters: SkyLookupSearchResultHarnessFilters,\n ): HarnessPredicate<SkyLookupSearchResultHarness> {\n return new HarnessPredicate(\n SkyLookupSearchResultHarness,\n filters,\n ).addOption('textContent', filters.text, async (harness, text) => {\n const searchResultText = await harness.getText();\n return await HarnessPredicate.stringMatches(searchResultText, text);\n });\n }\n\n /**\n * Returns the value of the search result's descriptor property.\n */\n public override async getDescriptorValue(): Promise<string> {\n return await super.getDescriptorValue();\n }\n}\n","import { SkyTokensHarness } from '@skyux/indicators/testing';\n\nimport { SkyLookupSelectionHarness } from './lookup-selection-harness';\n\n/**\n * Harness for interacting with multiselect lookup selections in tests.\n * @internal\n */\nexport class SkyLookupSelectionsListHarness extends SkyTokensHarness {\n /**\n * Gets a list of selections.\n */\n public async getSelections(): Promise<SkyLookupSelectionHarness[]> {\n return await super.getTokens();\n }\n\n /**\n * Dismisses the selections in the list.\n */\n public async dismissSelections(): Promise<void> {\n await super.dismissTokens();\n }\n\n /**\n * Gets the text content of all selections in the list.\n */\n public async getSelectionsText(): Promise<string[]> {\n return await super.getTokensText();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkySearchHarnessFilters } from './search-harness-filters';\n\n/**\n * Harness for interacting with a search component in tests.\n */\nexport class SkySearchHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-search';\n\n #getInput = this.locatorFor('input.sky-search-input');\n\n #getClearButton = this.locatorFor('button.sky-search-btn-clear');\n #getDismissButton = this.locatorForOptional('button.sky-search-btn-dismiss');\n #getSubmitButton = this.locatorFor('button.sky-search-btn-apply');\n #getOpenButton = this.locatorFor('button.sky-search-btn-open');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySearchHarness` that meets certain criteria.\n */\n public static with(\n filters: SkySearchHarnessFilters,\n ): HarnessPredicate<SkySearchHarness> {\n return this.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the search input.\n */\n public async blur(): Promise<void> {\n await this.#assertIsExpanded('Failed to blur the search input.');\n\n await (await this.#getInput()).blur();\n }\n\n /**\n * Clears the search input.\n */\n public async clear(): Promise<void> {\n await this.#assertIsExpanded('Failed to clear the search input.');\n\n const input = await this.#getInput();\n await input.focus();\n await input.clear();\n await this.clickSubmitButton();\n }\n\n /**\n * Clicks the search input clear button.\n */\n public async clickClearButton(): Promise<void> {\n await this.#assertIsExpanded('Failed to click clear button.');\n await (await this.#getClearButton()).click();\n }\n\n /**\n * Clicks search dismiss button to collapse search back to a button.\n */\n public async clickDismissSearchButton(): Promise<void> {\n const button = await this.#getDismissButton();\n\n if (!button) {\n throw new Error(\n 'Cannot find dismiss search button. Is a collapsed search open?',\n );\n }\n\n await button.click();\n }\n\n /**\n * Clicks the search icon button that opens search input when it is collapsed.\n */\n public async clickOpenSearchButton(): Promise<void> {\n const button = await this.#getOpenButton();\n\n if (!(await this.isCollapsed())) {\n throw new Error(\n 'Cannot click search open button as search is not collapsed',\n );\n }\n\n await button.click();\n }\n\n /**\n * Clicks the search submit button.\n */\n public async clickSubmitButton(): Promise<void> {\n await this.#assertIsExpanded('Failed to click the submit button.');\n await (await this.#getSubmitButton()).click();\n }\n\n /**\n * Enters text into the search input and performs a search.\n */\n public async enterText(value: string): Promise<void> {\n await this.#assertIsExpanded('Failed to enter text into the search input.');\n\n const input = await this.#getInput();\n await input.clear();\n await input.focus();\n await input.sendKeys(value);\n await this.clickSubmitButton();\n }\n\n /**\n * Focuses the search input.\n */\n public async focus(): Promise<void> {\n await this.#assertIsExpanded('Failed to focus the search input.');\n\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the search input's `aria-label`.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the search's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the value of the input's placeholder attribute.\n */\n public async getPlaceholderText(): Promise<string | null> {\n await this.#assertIsExpanded('Failed to get the placeholder text.');\n\n return await (await this.#getInput()).getAttribute('placeholder');\n }\n\n /**\n * Gets the value of the search input.\n */\n public async getValue(): Promise<string> {\n await this.#assertIsExpanded(\n 'Failed to get the value of the search input.',\n );\n\n return await (await this.#getInput()).getProperty('value');\n }\n\n /**\n * Whether the search input is collapsed.\n */\n public async isCollapsed(): Promise<boolean> {\n return (\n (await (await this.#getOpenButton()).getAttribute('hidden')) === null\n );\n }\n\n /**\n * Whether the search input is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the search input is focused.\n */\n public async isFocused(): Promise<boolean> {\n await this.#assertIsExpanded(\n 'Failed to get the search input focus status.',\n );\n\n return await (await this.#getInput()).isFocused();\n }\n\n async #assertIsExpanded(errorMessage: string): Promise<void> {\n if (await this.isCollapsed()) {\n throw new Error(`${errorMessage} Search is collapsed.`);\n }\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\nimport { SkyCheckboxHarness } from '@skyux/forms/testing';\nimport {\n SkyInfiniteScrollHarness,\n SkyRepeaterItemHarness,\n} from '@skyux/lists/testing';\n\nimport { SkySearchHarness } from '../search/search-harness';\n\nimport { SkySelectionModalSearchResultHarness } from './selection-modal-search-result-harness';\nimport { SkySelectionModalSearchResultHarnessFilters } from './selection-modal-search-result-harness-filters';\n\n/**\n * Harness for interacting with a selection modal in tests.\n */\nexport class SkySelectionModalHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-lookup-show-more-modal';\n\n #getCancelButton = this.locatorFor('button.sky-lookup-show-more-modal-close');\n\n #getClearAllButton = this.locatorForOptional(\n 'button.sky-lookup-show-more-modal-clear-all-btn',\n );\n\n #getCheckboxHarness = this.locatorFor(SkyCheckboxHarness);\n\n #getInfiniteScroll = this.locatorFor(SkyInfiniteScrollHarness);\n\n #getSaveButton = this.locatorFor('button.sky-lookup-show-more-modal-save');\n\n #getSearchHarness = this.locatorFor(SkySearchHarness);\n\n #getSelectAllButton = this.locatorForOptional(\n 'button.sky-lookup-show-more-modal-select-all-btn',\n );\n\n #getAddButton = this.locatorForOptional(\n 'button.sky-lookup-show-more-modal-add',\n );\n\n /**\n * Clears the text of the search input.\n */\n public async clearSearchText(): Promise<void> {\n await (await this.#getSearchHarness()).clear();\n }\n\n /**\n * Enters text into the search input and performs a search.\n */\n public async enterSearchText(value: string): Promise<void> {\n await (await this.#getSearchHarness()).enterText(value);\n }\n\n /**\n * Gets the search input's aria-label.\n */\n public async getSearchAriaLabel(): Promise<string | null> {\n return await (await this.#getSearchHarness()).getAriaLabel();\n }\n\n /**\n * Selects multiple search results based on a set of criteria.\n */\n public async selectSearchResult(\n filters?: SkySelectionModalSearchResultHarnessFilters,\n ): Promise<void> {\n const harnesses = await this.getSearchResults(filters);\n\n if (await this.isMultiselect()) {\n for (const harness of harnesses) {\n await harness.select();\n }\n } else {\n // Click on the item directly because we've added a custom click event in the picker's template.\n await (await harnesses[0].host()).click();\n }\n }\n\n /**\n * Saves any selections made and closes the modal.\n */\n public async saveAndClose(): Promise<void> {\n await (await this.#getSaveButton()).click();\n }\n\n /**\n *\n * Gets the save button's aria-label.\n */\n public async getSaveButtonAriaLabel(): Promise<string | null> {\n return await (await this.#getSaveButton()).getAttribute('aria-label');\n }\n\n /**\n * Closes the picker without saving any selections made.\n */\n public async cancel(): Promise<void> {\n await (await this.#getCancelButton()).click();\n }\n\n /**\n * Gets a specific search result based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getSearchResult(\n filter: SkySelectionModalSearchResultHarnessFilters,\n ): Promise<SkySelectionModalSearchResultHarness> {\n const pickerId = (await (await this.host()).getAttribute('id')) as string;\n\n return await this.locatorFor(\n SkyRepeaterItemHarness.with({\n ...filter,\n ancestor: `#${pickerId}`,\n }),\n )();\n }\n\n /**\n * Gets an array of search results based on the filter criteria.\n * If no filter is provided, returns all search results.\n * @param filters The optional filter criteria.\n */\n public async getSearchResults(\n filters?: SkySelectionModalSearchResultHarnessFilters,\n ): Promise<SkySelectionModalSearchResultHarness[]> {\n const pickerId = (await (await this.host()).getAttribute('id')) as string;\n\n return await this.locatorForAll(\n SkyRepeaterItemHarness.with({\n ...(filters || {}),\n ancestor: `#${pickerId}`,\n }),\n )();\n }\n\n /**\n * Clears all selections made.\n */\n public async clearAll(): Promise<void> {\n const button = await this.#getClearAllButton();\n if (!button) {\n throw new Error(\n 'Could not clear all selections because the \"Clear all\" button could not be found.',\n );\n }\n\n await button.click();\n }\n\n /**\n *\n * Gets the clear all button's aria-label.\n */\n public async getClearAllButtonAriaLabel(): Promise<string | null> {\n const button = await this.#getClearAllButton();\n\n if (!button) {\n throw new Error(\n 'Could not get the aria-label for the clear all button because the \"Clear all\" button could not be found.',\n );\n }\n\n return await button.getAttribute('aria-label');\n }\n\n /**\n * Whether the selection modal is configured to allow multiple selections.\n */\n public async isMultiselect(): Promise<boolean> {\n return !(await (\n await this.host()\n ).hasClass('sky-lookup-show-more-modal-single'));\n }\n\n /**\n * Selects all search results.\n */\n public async selectAll(): Promise<void> {\n const button = await this.#getSelectAllButton();\n if (!button) {\n throw new Error(\n 'Could not select all selections because the \"Select all\" button could not be found.',\n );\n }\n\n await button.click();\n }\n\n /**\n *\n * Gets the select all button's aria-label.\n */\n public async getSelectAllButtonAriaLabel(): Promise<string | null> {\n const button = await this.#getSelectAllButton();\n\n if (!button) {\n throw new Error(\n 'Could not get the aria-label for the select all button because the \"Select all\" button could not be found.',\n );\n }\n\n return await button.getAttribute('aria-label');\n }\n\n /**\n * Loads more results in the picker.\n */\n public async loadMore(): Promise<void> {\n await (await this.#getInfiniteScroll()).loadMore();\n }\n\n /**\n * Whether the selection modal is configured to show the add button.\n */\n public async hasAddButton(): Promise<boolean> {\n const button = await this.#getAddButton();\n return !!button;\n }\n\n /**\n * Clicks the add button.\n */\n public async clickAddButton(): Promise<void> {\n const button = await this.#getAddButton();\n if (!button) {\n throw new Error(\n 'Could not click the add button because the button could not be found.',\n );\n }\n\n await button.click();\n }\n\n /**\n * Gets the \"Only show selected\" checkbox's aria-label\n */\n public async getOnlyShowSelectedAriaLabel(): Promise<string | null> {\n try {\n const label = await (await this.#getCheckboxHarness()).getAriaLabel();\n\n return label;\n } catch {\n throw new Error(\n 'Could not get the \"Show only selected items\" checkbox because it could not be found.',\n );\n }\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkySelectionModalHarness } from '../selection-modal/selection-modal-harness';\n\nimport { SkyLookupShowMorePickerHarnessFilters } from './lookup-show-more-picker-harness-filters';\nimport { SkyLookupShowMorePickerSearchResultHarness } from './lookup-show-more-picker-search-result-harness';\nimport { SkyLookupShowMorePickerSearchResultHarnessFilters } from './lookup-show-more-picker-search-result-harness-filters';\n\n/**\n * Harness for interacting with a lookup's \"Show more\" picker in tests.\n */\nexport class SkyLookupShowMorePickerHarness extends SkySelectionModalHarness {\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyLookupShowMorePickerHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyLookupShowMorePickerHarnessFilters,\n ): HarnessPredicate<SkyLookupShowMorePickerHarness> {\n return new HarnessPredicate(SkyLookupShowMorePickerHarness, filters);\n }\n\n /**\n * Selects multiple search results based on a set of criteria.\n */\n public override async selectSearchResult(\n filters?: SkyLookupShowMorePickerSearchResultHarnessFilters,\n ): Promise<void> {\n await super.selectSearchResult(filters);\n }\n\n /**\n * Gets a list of search results.\n */\n public override async getSearchResults(\n filters?: SkyLookupShowMorePickerSearchResultHarnessFilters,\n ): Promise<SkyLookupShowMorePickerSearchResultHarness[]> {\n return await super.getSearchResults(filters);\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarness } from '../autocomplete/autocomplete-harness';\nimport { SkyAutocompleteInputHarness } from '../autocomplete/autocomplete-input-harness';\n\nimport { SkyLookupHarnessFilters } from './lookup-harness-filters';\nimport { SkyLookupSearchResultHarness } from './lookup-search-result-harness';\nimport { SkyLookupSearchResultHarnessFilters } from './lookup-search-result-harness-filters';\nimport { SkyLookupSelectionHarness } from './lookup-selection-harness';\nimport { SkyLookupSelectionsListHarness } from './lookup-selections-list-harness';\nimport { SkyLookupShowMorePickerHarness } from './lookup-show-more-picker-harness';\n\n/**\n * Harness for interacting with a lookup component in tests.\n */\nexport class SkyLookupHarness extends SkyAutocompleteHarness {\n /**\n * Finds a standard lookup component, or a lookup component that is wrapped by an input box component.\n * For input box implementations, we need to use the `.sky-input-box` selector since the `sky-lookup`\n * element is removed from the DOM.\n * @internal\n */\n public static override hostSelector = 'sky-lookup,.sky-input-box';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getAutocompleteHarness = this.locatorFor(SkyAutocompleteHarness);\n\n #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n #getSelectionsListHarness = this.locatorFor(SkyLookupSelectionsListHarness);\n\n #getWrapper = this.locatorFor('.sky-lookup');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyLookupHarness` that meets certain criteria.\n *\n * These filters only work for standalone lookups. For lookups\n * wrapped inside `sky-input-box`, place filters on the input box\n * instead and query the datepicker using a `SkyInputBoxHarness`.\n * For the input box implementation, see the code example.\n */\n public static override with(\n filters: SkyLookupHarnessFilters,\n ): HarnessPredicate<SkyLookupHarness> {\n return SkyLookupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the lookup input.\n * @deprecated Call `await (await lookup.getControl()).blur()` instead.\n */\n public override async blur(): Promise<void> {\n await (await super.getControl()).blur();\n }\n\n /**\n * Clears the lookup input value.\n * @deprecated Call `await (await lookup.getControl()).clear()` instead.\n */\n public override async clear(): Promise<void> {\n await (await super.getControl()).clear();\n }\n\n /**\n * Clicks the \"Add\" button on the search results panel.\n */\n public override async clickAddButton(): Promise<void> {\n await (await super.getControl()).focus();\n await super.clickAddButton();\n }\n\n /**\n * Clicks the \"Show more\" button on the search results panel.\n */\n public override async clickShowMoreButton(): Promise<void> {\n await (await super.getControl()).focus();\n await super.clickShowMoreButton();\n }\n\n /**\n * Dismisses the selections made with a multiselect lookup.\n */\n public async dismissSelections(): Promise<void> {\n await (await this.#getSelectionsListHarness()).dismissSelections();\n }\n\n /**\n * Enters text into the lookup input.\n * @deprecated Call `await (await lookup.getControl()).setValue()` instead.\n */\n public override async enterText(value: string): Promise<void> {\n await (await super.getControl()).setValue(value);\n }\n\n /**\n * Focuses the lookup input.\n * @deprecated Call `await (await lookup.getControl()).focus()` instead.\n */\n public override async focus(): Promise<void> {\n await (await super.getControl()).focus();\n }\n\n /**\n * Gets the lookup `aria-labelledby` value.\n * @deprecated Don't use this property. It returns a value from a deprecated input that lookup no longer uses.\n */\n public override async getAriaLabelledby(): Promise<string | null> {\n return await super.getAriaLabelledby();\n }\n\n /**\n * Gets a specific lookup search result based on the filter criteria.\n * @param filters The filter criteria.\n */\n public override async getSearchResult(\n filters: SkyLookupSearchResultHarnessFilters,\n ): Promise<SkyLookupSearchResultHarness> {\n const overlay = await this.#getOverlay();\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search result. The lookup is closed.',\n );\n }\n return await overlay.queryHarness(\n SkyLookupSearchResultHarness.with(filters),\n );\n }\n\n /**\n * Gets an array of lookup search results based on the filter criteria.\n * If no filter is provided, returns all lookup search results.\n * @param filters The optional filter criteria.\n */\n public override async getSearchResults(\n filters?: SkyLookupSearchResultHarnessFilters,\n ): Promise<SkyLookupSearchResultHarness[]> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search results. The lookup is closed.',\n );\n }\n\n return await overlay.queryHarnesses(\n SkyLookupSearchResultHarness.with(filters || {}),\n );\n }\n\n /**\n * Returns the text content for each lookup search result.\n */\n public override async getSearchResultsText(\n filters?: SkyLookupSearchResultHarnessFilters,\n ): Promise<string[]> {\n const harnesses = await this.getSearchResults(filters);\n\n const text: string[] = [];\n for (const harness of harnesses) {\n text.push(await harness.getText());\n }\n\n return text;\n }\n\n /**\n * Gets the \"Show more\" picker harness.\n */\n public async getShowMorePicker(): Promise<SkyLookupShowMorePickerHarness> {\n const pickerId = await (\n await (await this.#getAutocompleteHarness()).host()\n ).getAttribute('data-sky-lookup-show-more-picker-id');\n\n const defaultPicker = await this.#documentRootLocator.locatorForOptional(\n SkyLookupShowMorePickerHarness.with({ selector: `#${pickerId}` }),\n )();\n\n if (!defaultPicker) {\n throw new Error(\n 'Cannot get the \"Show more\" picker because it is not open.',\n );\n }\n\n return defaultPicker;\n }\n\n /**\n * Gets a list of selections made with a multiselect lookup.\n */\n public async getSelections(): Promise<SkyLookupSelectionHarness[]> {\n return await (await this.#getSelectionsListHarness()).getSelections();\n }\n\n /**\n * Gets the text content of all selections made with a multiselect lookup.\n */\n public async getSelectionsText(): Promise<string[]> {\n return await (await this.#getSelectionsListHarness()).getSelectionsText();\n }\n\n /**\n * Gets the value of the lookup input.\n * @deprecated Call `await (await lookup.getControl()).getValue()` instead.\n */\n public override async getValue(): Promise<string> {\n return await (await super.getControl()).getValue();\n }\n\n /**\n * Whether the lookup input is disabled.\n * @deprecated Call `await (await lookup.getControl()).isDisabled()` instead.\n */\n public override async isDisabled(): Promise<boolean> {\n return await (await super.getControl()).isDisabled();\n }\n\n /**\n * Whether the lookup input is focused.\n * @deprecated Call `await (await lookup.getControl()).isFocused()` instead.\n */\n public override async isFocused(): Promise<boolean> {\n return await (await super.getControl()).isFocused();\n }\n\n /**\n * Whether the lookup allows for multiple selections.\n */\n public async isMultiselect(): Promise<boolean> {\n return !(await (await this.#getWrapper()).hasClass('sky-lookup-single'));\n }\n\n /**\n * Whether the lookup is open.\n */\n public override async isOpen(): Promise<boolean> {\n return await super.isOpen();\n }\n\n /**\n * Selects a search result.\n */\n public override async selectSearchResult(\n filters: SkyLookupSearchResultHarnessFilters,\n ): Promise<void> {\n await super.selectSearchResult(filters);\n }\n\n async #getOverlay(): Promise<SkyOverlayHarness | null> {\n const overlayId = await (await this.#getInput()).getAriaControls();\n\n return overlayId\n ? await this.#documentRootLocator.locatorForOptional(\n SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n )()\n : null;\n }\n}\n","import { SkyTokenHarness } from '@skyux/indicators/testing';\n\n/**\n * Harness for interacting with a multiselect lookup selection in tests.\n */\nexport class SkyLookupSelectionHarness extends SkyTokenHarness {}\n","import { SkyRepeaterItemHarness } from '@skyux/lists/testing';\n\n/**\n * Harness for interacting with a selection modal's search results in tests.\n */\nexport class SkySelectionModalSearchResultHarness extends SkyRepeaterItemHarness {}\n","import { SkySelectionModalSearchResultHarness } from '../selection-modal/selection-modal-search-result-harness';\n\n/**\n * Harness for interacting with a lookup's \"Show more\" picker search results in tests.\n */\nexport class SkyLookupShowMorePickerSearchResultHarness extends SkySelectionModalSearchResultHarness {}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX search component.\n * @deprecated Use `SkySearchHarness` instead.\n * @internal\n */\nexport class SkySearchFixture {\n /**\n * Gets the search's current text.\n */\n public get searchText(): string {\n return this.#getInputEl().nativeElement.value;\n }\n\n /**\n * Gets the search's current placeholder text.\n */\n public get placeholderText(): string {\n return this.#getInputEl().nativeElement.placeholder;\n }\n\n #debugEl: DebugElement;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-search',\n );\n }\n\n /**\n * Applies the specified search text, invoking the search.\n * @param searchText The search text to apply. If none is specified, the search's\n * current search text will be applied.\n */\n public apply(searchText?: string): void {\n if (searchText) {\n SkyAppTestUtility.setInputValue(\n this.#getInputEl().nativeElement,\n searchText,\n );\n }\n\n const btnEl = this.#getApplyBtnEl();\n\n btnEl.triggerEventHandler('click', {});\n }\n\n /**\n * Clears the current search text. If there is no search text or the search text is\n * not currently applied, an error is thrown.\n */\n public clear(): void {\n const clearEl = this.#debugEl.query(By.css('.sky-input-group-clear'));\n\n if (!SkyAppTestUtility.isVisible(clearEl)) {\n throw new Error(\n 'There currently is no search text or the current search text has not been applied, ' +\n 'so the clear button is not visible.',\n );\n }\n\n const btnEl = this.#getClearBtnEl();\n\n btnEl.triggerEventHandler('click', {});\n }\n\n #getApplyBtnEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-search-btn-apply'));\n }\n\n #getClearBtnEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-search-btn-clear'));\n }\n\n #getInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-search-input'));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { provideNoopSkyAnimations } from '@skyux/core';\nimport { SkySearchModule } from '@skyux/lookup';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkySearchModule],\n providers: [provideNoopSkyAnimations()],\n})\nexport class SkySearchTestingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAEA;;AAEG;AACG,MAAO,2BAA4B,SAAQ,eAAe,CAAA;AAC9D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,mBAAmB,CAAC;AAEjD;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;AAC1B,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,eAAe,CAAC;IAChE;;;ACXF;;AAEG;AACG,MAAO,kCAAmC,SAAQ,4BAA4B,CAAA;AAClF;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,0BAA0B,CAAC;AAExD;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAkD,EAAA;AAElD,QAAA,OAAO,IAAI,gBAAgB,CACzB,kCAAkC,EAClC,OAAO,CACR,CAAC,SAAS,CACT,aAAa,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,OAAO,EAAE,IAAI,KAClB,MAAM,gBAAgB,CAAC,aAAa,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CACtE;IACH;AAEA;;;AAGG;AACI,IAAA,MAAM,kBAAkB,GAAA;AAC7B,QAAA,QAAQ,MAAM,CACZ,MAAM,IAAI,CAAC,IAAI,EAAE,EACjB,YAAY,CAAC,uBAAuB,CAAC;IACzC;AAEA;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;QACjB,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE;IACnC;AAEA;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;QAClB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;IACzC;;;AC9CF;;AAEG;AACG,MAAO,sBAAuB,SAAQ,mBAAmB,CAAA;AAC7D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,kBAAkB,CAAC;AAEhD,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACxD,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;AACvD,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;AAExD;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAsC,EAAA;AAEtC,QAAA,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC9D;AAEA;;;AAGG;AACI,IAAA,MAAM,IAAI,GAAA;QACf,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE;IACvC;AAEA;;;AAGG;AACI,IAAA,MAAM,KAAK,GAAA;QAChB,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;IACxC;AAEA;;;AAGG;IACI,MAAM,SAAS,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;IAChD;AAEA;;;AAGG;AACI,IAAA,MAAM,KAAK,GAAA;QAChB,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;IACxC;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAC7B,YAAY,CAAC,iBAAiB,CAAC;IACnC;AAEA;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,OAAO,MAAM,IAAI,CAAC,SAAS,EAAE;IAC/B;AAEA;;;AAGG;IACI,MAAM,eAAe,CAC1B,MAAiD,EAAA;AAEjD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,YAAY,CAC/B,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAChD;IACH;AAEA;;;;AAIG;IACI,MAAM,gBAAgB,CAC3B,OAAmD,EAAA;AAEnD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,cAAc,CACjC,kCAAkC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CACvD;IACH;AAEA;;AAEG;IACI,MAAM,oBAAoB,CAC/B,OAAmD,EAAA;QAEnD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEtD,MAAM,IAAI,GAAa,EAAE;AACzB,QAAA,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACI,IAAA,MAAM,QAAQ,GAAA;QACnB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE;IAClD;AAEA;;AAEG;AACI,IAAA,MAAM,qBAAqB,GAAA;AAChC,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;QACH;AAEA,QAAA,IAAI;YACF,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,aAAa,CACnD,8BAA8B,CAC/B;YACD,OAAO,CAAC,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;QAChD;AAAE,QAAA,MAAM;AACN,YAAA,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE;QACH;IACF;AAEA;;;AAGG;AACI,IAAA,MAAM,UAAU,GAAA;QACrB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE;IACpD;AAEA;;;AAGG;AACI,IAAA,MAAM,SAAS,GAAA;QACpB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE;IACnD;AAEA;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QACxC,OAAO,CAAC,CAAC,OAAO;IAClB;AAEA;;AAEG;IACI,MAAM,kBAAkB,CAC7B,OAAkD,EAAA;QAElD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACpD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QAC3B;IACF;AAEA;;;;;;;;AAQG;AACO,IAAA,MAAM,cAAc,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QACxC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D;QACH;QAEA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAC9C,oCAAoC,CACrC;QAED,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;;;;;;;AAQG;AACO,IAAA,MAAM,mBAAmB,GAAA;AACjC,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CACb,yCAAyC;AACvC,gBAAA,6BAA6B,CAChC;QACH;QAEA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAC9C,qCAAqC,CACtC;QAED,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE;AAElE,QAAA,OAAO;cACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAChD,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,CAAC,CACtD;cACD,IAAI;IACV;;;AC5QF;;AAEG;AACG,MAAO,kCAAmC,SAAQ,kCAAkC,CAAA;AACxF;;;AAGG;IACI,OAAgB,IAAI,CACzB,OAAkD,EAAA;QAElD,OAAO,IAAI,gBAAgB,CACzB,kCAAkC,EAClC,OAAO,CACR,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,OAAO,EAAE,IAAI,KAAI;AAC/D,YAAA,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;YAChD,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACrE,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;AAKG;AACa,IAAA,MAAM,kBAAkB,GAAA;AACtC,QAAA,OAAO,MAAM,KAAK,CAAC,kBAAkB,EAAE;IACzC;AACD;;ACzBD;;AAEG;AACG,MAAO,sBAAuB,SAAQ,sBAAsB,CAAA;AAChE;;;;;AAKG;aACoB,IAAA,CAAA,YAAY,GACjC,gDAAgD,CAAC;AAEnD,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAExD,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;AAExD;;;;;;;AAOG;IACI,OAAgB,IAAI,CACzB,OAAsC,EAAA;AAEtC,QAAA,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC9D;AAEA;;;AAGG;AACa,IAAA,MAAM,IAAI,GAAA;QACxB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;IAChD;AAEA;;;AAGG;AACa,IAAA,MAAM,KAAK,GAAA;QACzB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IACjD;AAEA;;;AAGG;IACa,MAAM,SAAS,CAAC,KAAa,EAAA;AAC3C,QAAA,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;IACzD;AAEA;;;AAGG;AACa,IAAA,MAAM,KAAK,GAAA;QACzB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IACjD;AAEA;;;;;AAKG;;AAEa,IAAA,MAAM,iBAAiB,GAAA;AACrC,QAAA,OAAO,MAAM,KAAK,CAAC,iBAAiB,EAAE;IACxC;AAEA;;;AAGG;IACa,MAAM,eAAe,CACnC,MAAiD,EAAA;AAEjD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,YAAY,CAC/B,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAChD;IACH;AAEA;;;;AAIG;IACa,MAAM,gBAAgB,CACpC,OAAmD,EAAA;AAEnD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,cAAc,CACjC,kCAAkC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CACvD;IACH;AAEA;;AAEG;IACa,MAAM,oBAAoB,CACxC,OAAmD,EAAA;QAEnD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEtD,MAAM,IAAI,GAAa,EAAE;AACzB,QAAA,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACa,IAAA,MAAM,QAAQ,GAAA;QAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE;IACpD;AAEA;;;;;AAKG;;AAEa,IAAA,MAAM,qBAAqB,GAAA;AACzC,QAAA,OAAO,MAAM,KAAK,CAAC,qBAAqB,EAAE;IAC5C;AAEA;;;AAGG;AACa,IAAA,MAAM,UAAU,GAAA;QAC9B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE;IACtD;AAEA;;;AAGG;AACa,IAAA,MAAM,SAAS,GAAA;QAC7B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE;IACrD;AAEA;;AAEG;AACa,IAAA,MAAM,MAAM,GAAA;AAC1B,QAAA,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE;IAC7B;AAEA;;AAEG;IACa,MAAM,kBAAkB,CACtC,OAAkD,EAAA;AAElD,QAAA,OAAO,MAAM,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;IAChD;AAEA,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE;AAElE,QAAA,OAAO;cACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAChD,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,CAAC,CACtD;cACD,IAAI;IACV;;;AClMF;;AAEG;AACG,MAAO,4BAA6B,SAAQ,kCAAkC,CAAA;AAClF;;;AAGG;IACI,OAAgB,IAAI,CACzB,OAA4C,EAAA;QAE5C,OAAO,IAAI,gBAAgB,CACzB,4BAA4B,EAC5B,OAAO,CACR,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,OAAO,EAAE,IAAI,KAAI;AAC/D,YAAA,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;YAChD,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACrE,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;AACa,IAAA,MAAM,kBAAkB,GAAA;AACtC,QAAA,OAAO,MAAM,KAAK,CAAC,kBAAkB,EAAE;IACzC;AACD;;AC5BD;;;AAGG;AACG,MAAO,8BAA+B,SAAQ,gBAAgB,CAAA;AAClE;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,OAAO,MAAM,KAAK,CAAC,SAAS,EAAE;IAChC;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,MAAM,KAAK,CAAC,aAAa,EAAE;IAC7B;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,OAAO,MAAM,KAAK,CAAC,aAAa,EAAE;IACpC;AACD;;ACxBD;;AAEG;AACG,MAAO,gBAAiB,SAAQ,mBAAmB,CAAA;AACvD;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC;AAE1C,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAErD,IAAA,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;AAChE,IAAA,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,+BAA+B,CAAC;AAC5E,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;AACjE,IAAA,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC;AAE9D;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC5C;AAEA;;AAEG;AACI,IAAA,MAAM,IAAI,GAAA;AACf,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,kCAAkC,CAAC;QAEhE,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE;IACvC;AAEA;;AAEG;AACI,IAAA,MAAM,KAAK,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;AAEjE,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACpC,QAAA,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE;IAChC;AAEA;;AAEG;AACI,IAAA,MAAM,gBAAgB,GAAA;AAC3B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,CAAC;QAC7D,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE;IAC9C;AAEA;;AAEG;AACI,IAAA,MAAM,wBAAwB,GAAA;AACnC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;QAE7C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;AAEG;AACI,IAAA,MAAM,qBAAqB,GAAA;AAChC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;QAE1C,IAAI,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,oCAAoC,CAAC;QAClE,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE;IAC/C;AAEA;;AAEG;IACI,MAAM,SAAS,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,6CAA6C,CAAC;AAE3E,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACpC,QAAA,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3B,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE;IAChC;AAEA;;AAEG;AACI,IAAA,MAAM,KAAK,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;QAEjE,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;IACxC;AAEA;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;IAClE;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,iBAAiB,CAAC;IACvE;AAEA;;AAEG;AACI,IAAA,MAAM,kBAAkB,GAAA;AAC7B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,qCAAqC,CAAC;AAEnE,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,aAAa,CAAC;IACnE;AAEA;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAC1B,8CAA8C,CAC/C;AAED,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5D;AAEA;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,QACE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,IAAI;IAEzE;AAEA;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC;QACxE,OAAO,QAAQ,KAAK,IAAI;IAC1B;AAEA;;AAEG;AACI,IAAA,MAAM,SAAS,GAAA;AACpB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAC1B,8CAA8C,CAC/C;QAED,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE;IACnD;IAEA,MAAM,iBAAiB,CAAC,YAAoB,EAAA;AAC1C,QAAA,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAA,qBAAA,CAAuB,CAAC;QACzD;IACF;;;AC9KF;;AAEG;AACG,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;AAC5D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,6BAA6B,CAAC;AAE3D,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,yCAAyC,CAAC;AAE7E,IAAA,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAC1C,iDAAiD,CAClD;AAED,IAAA,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAEzD,IAAA,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAE9D,IAAA,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,wCAAwC,CAAC;AAE1E,IAAA,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;AAErD,IAAA,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAC3C,kDAAkD,CACnD;AAED,IAAA,aAAa,GAAG,IAAI,CAAC,kBAAkB,CACrC,uCAAuC,CACxC;AAED;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;QAC1B,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE;IAChD;AAEA;;AAEG;IACI,MAAM,eAAe,CAAC,KAAa,EAAA;AACxC,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC;IACzD;AAEA;;AAEG;AACI,IAAA,MAAM,kBAAkB,GAAA;QAC7B,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE;IAC9D;AAEA;;AAEG;IACI,MAAM,kBAAkB,CAC7B,OAAqD,EAAA;QAErD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAEtD,QAAA,IAAI,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE;AAC9B,YAAA,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;AAC/B,gBAAA,MAAM,OAAO,CAAC,MAAM,EAAE;YACxB;QACF;aAAO;;AAEL,YAAA,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE;QAC3C;IACF;AAEA;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;QACvB,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;IAC7C;AAEA;;;AAGG;AACI,IAAA,MAAM,sBAAsB,GAAA;AACjC,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;IACvE;AAEA;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;QACjB,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE;IAC/C;AAEA;;;AAGG;IACI,MAAM,eAAe,CAC1B,MAAmD,EAAA;AAEnD,QAAA,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAW;QAEzE,OAAO,MAAM,IAAI,CAAC,UAAU,CAC1B,sBAAsB,CAAC,IAAI,CAAC;AAC1B,YAAA,GAAG,MAAM;YACT,QAAQ,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;SACzB,CAAC,CACH,EAAE;IACL;AAEA;;;;AAIG;IACI,MAAM,gBAAgB,CAC3B,OAAqD,EAAA;AAErD,QAAA,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAW;QAEzE,OAAO,MAAM,IAAI,CAAC,aAAa,CAC7B,sBAAsB,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,OAAO,IAAI,EAAE,CAAC;YAClB,QAAQ,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;SACzB,CAAC,CACH,EAAE;IACL;AAEA;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;QAC9C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;;AAGG;AACI,IAAA,MAAM,0BAA0B,GAAA;AACrC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;QAE9C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,0GAA0G,CAC3G;QACH;AAEA,QAAA,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;IAChD;AAEA;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,OAAO,EAAE,MAAM,CACb,MAAM,IAAI,CAAC,IAAI,EAAE,EACjB,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IAClD;AAEA;;AAEG;AACI,IAAA,MAAM,SAAS,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE;QAC/C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;;AAGG;AACI,IAAA,MAAM,2BAA2B,GAAA;AACtC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE;QAE/C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G;QACH;AAEA,QAAA,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;IAChD;AAEA;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;QACnB,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE;IACpD;AAEA;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QACzC,OAAO,CAAC,CAAC,MAAM;IACjB;AAEA;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QACzC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;AAEG;AACI,IAAA,MAAM,4BAA4B,GAAA;AACvC,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE;AAErE,YAAA,OAAO,KAAK;QACd;AAAE,QAAA,MAAM;AACN,YAAA,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF;QACH;IACF;;;AClPF;;AAEG;AACG,MAAO,8BAA+B,SAAQ,wBAAwB,CAAA;AAC1E;;;AAGG;IACI,OAAO,IAAI,CAChB,OAA8C,EAAA;AAE9C,QAAA,OAAO,IAAI,gBAAgB,CAAC,8BAA8B,EAAE,OAAO,CAAC;IACtE;AAEA;;AAEG;IACa,MAAM,kBAAkB,CACtC,OAA2D,EAAA;AAE3D,QAAA,MAAM,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;IACzC;AAEA;;AAEG;IACa,MAAM,gBAAgB,CACpC,OAA2D,EAAA;AAE3D,QAAA,OAAO,MAAM,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC9C;AACD;;AC1BD;;AAEG;AACG,MAAO,gBAAiB,SAAQ,sBAAsB,CAAA;AAC1D;;;;;AAKG;aACoB,IAAA,CAAA,YAAY,GAAG,2BAA2B,CAAC;AAElE,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAExD,IAAA,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;AAEjE,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;AAExD,IAAA,yBAAyB,GAAG,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC;AAE3E,IAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAE5C;;;;;;;;AAQG;IACI,OAAgB,IAAI,CACzB,OAAgC,EAAA;AAEhC,QAAA,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,CAAC;IACxD;AAEA;;;AAGG;AACa,IAAA,MAAM,IAAI,GAAA;QACxB,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;IACzC;AAEA;;;AAGG;AACa,IAAA,MAAM,KAAK,GAAA;QACzB,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IAC1C;AAEA;;AAEG;AACa,IAAA,MAAM,cAAc,GAAA;QAClC,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACxC,QAAA,MAAM,KAAK,CAAC,cAAc,EAAE;IAC9B;AAEA;;AAEG;AACa,IAAA,MAAM,mBAAmB,GAAA;QACvC,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACxC,QAAA,MAAM,KAAK,CAAC,mBAAmB,EAAE;IACnC;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;QAC5B,MAAM,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,iBAAiB,EAAE;IACpE;AAEA;;;AAGG;IACa,MAAM,SAAS,CAAC,KAAa,EAAA;AAC3C,QAAA,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;IAClD;AAEA;;;AAGG;AACa,IAAA,MAAM,KAAK,GAAA;QACzB,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IAC1C;AAEA;;;AAGG;AACa,IAAA,MAAM,iBAAiB,GAAA;AACrC,QAAA,OAAO,MAAM,KAAK,CAAC,iBAAiB,EAAE;IACxC;AAEA;;;AAGG;IACa,MAAM,eAAe,CACnC,OAA4C,EAAA;AAE5C,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QACxC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D;QACH;AACA,QAAA,OAAO,MAAM,OAAO,CAAC,YAAY,CAC/B,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAC3C;IACH;AAEA;;;;AAIG;IACa,MAAM,gBAAgB,CACpC,OAA6C,EAAA;AAE7C,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,cAAc,CACjC,4BAA4B,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CACjD;IACH;AAEA;;AAEG;IACa,MAAM,oBAAoB,CACxC,OAA6C,EAAA;QAE7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEtD,MAAM,IAAI,GAAa,EAAE;AACzB,QAAA,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;QAC5B,MAAM,QAAQ,GAAG,MAAM,CACrB,MAAM,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,EACnD,YAAY,CAAC,qCAAqC,CAAC;QAErD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CACtE,8BAA8B,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,EAAE,CAAC,CAClE,EAAE;QAEH,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D;QACH;AAEA,QAAA,OAAO,aAAa;IACtB;AAEA;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;QACxB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,aAAa,EAAE;IACvE;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;QAC5B,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,iBAAiB,EAAE;IAC3E;AAEA;;;AAGG;AACa,IAAA,MAAM,QAAQ,GAAA;QAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE;IACpD;AAEA;;;AAGG;AACa,IAAA,MAAM,UAAU,GAAA;QAC9B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE;IACtD;AAEA;;;AAGG;AACa,IAAA,MAAM,SAAS,GAAA;QAC7B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE;IACrD;AAEA;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC1E;AAEA;;AAEG;AACa,IAAA,MAAM,MAAM,GAAA;AAC1B,QAAA,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE;IAC7B;AAEA;;AAEG;IACa,MAAM,kBAAkB,CACtC,OAA4C,EAAA;AAE5C,QAAA,MAAM,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;IACzC;AAEA,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE;AAElE,QAAA,OAAO;cACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAChD,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,CAAC,CACtD;cACD,IAAI;IACV;;;AChQF;;AAEG;AACG,MAAO,yBAA0B,SAAQ,eAAe,CAAA;AAAG;;ACHjE;;AAEG;AACG,MAAO,oCAAqC,SAAQ,sBAAsB,CAAA;AAAG;;ACHnF;;AAEG;AACG,MAAO,0CAA2C,SAAQ,oCAAoC,CAAA;AAAG;;ACAvG;;;;AAIG;MACU,gBAAgB,CAAA;AAC3B;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,KAAK;IAC/C;AAEA;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,WAAW;IACrD;AAEA,IAAA,QAAQ;;IAGR,WAAA,CAAY,OAA8B,EAAE,SAAiB,EAAA;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,uBAAuB,CACvD,OAAO,EACP,SAAS,EACT,YAAY,CACb;IACH;AAEA;;;;AAIG;AACI,IAAA,KAAK,CAAC,UAAmB,EAAA;QAC9B,IAAI,UAAU,EAAE;AACd,YAAA,iBAAiB,CAAC,aAAa,CAC7B,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAChC,UAAU,CACX;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AAEnC,QAAA,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;IACxC;AAEA;;;AAGG;IACI,KAAK,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAErE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACzC,MAAM,IAAI,KAAK,CACb,qFAAqF;AACnF,gBAAA,qCAAqC,CACxC;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AAEnC,QAAA,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;IACxC;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC7D;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC7D;IAEA,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACzD;AACD;;AChFD;;AAEG;MAKU,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAHvB,eAAe,CAAA,EAAA,CAAA,CAAA;AAGd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,aAFtB,CAAC,wBAAwB,EAAE,CAAC,YAD7B,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAGd,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,oBAAA,SAAS,EAAE,CAAC,wBAAwB,EAAE,CAAC;AACxC,iBAAA;;;ACVD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"skyux-lookup-testing.mjs","sources":["../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-input-harness.ts","../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-harness.ts","../../../../../libs/components/lookup/testing/src/modules/country-field/country-field-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/country-field/country-field-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-selections-list-harness.ts","../../../../../libs/components/lookup/testing/src/modules/search/search-harness.ts","../../../../../libs/components/lookup/testing/src/modules/selection-modal/selection-modal-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-show-more-picker-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-selection-harness.ts","../../../../../libs/components/lookup/testing/src/modules/selection-modal/selection-modal-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-show-more-picker-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/legacy/search/search-fixture.ts","../../../../../libs/components/lookup/testing/src/legacy/search/search-testing.module.ts","../../../../../libs/components/lookup/testing/src/skyux-lookup-testing.ts"],"sourcesContent":["import { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the autocomplete input harness.\n */\nexport class SkyAutocompleteInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = '[skyAutocomplete]';\n\n /**\n * Returns the value of the input's `aria-controls` attribute.\n */\n public async getAriaControls(): Promise<string | null> {\n return await (await this.host()).getAttribute('aria-controls');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteSearchResultHarnessFilters } from './autocomplete-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyAutocompleteSearchResultHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-autocomplete-result';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyAutocompleteSearchResultHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyAutocompleteSearchResultHarnessFilters,\n ): HarnessPredicate<SkyAutocompleteSearchResultHarness> {\n return new HarnessPredicate(\n SkyAutocompleteSearchResultHarness,\n filters,\n ).addOption(\n 'textContent',\n filters.text,\n async (harness, text) =>\n await HarnessPredicate.stringMatches(await harness.getText(), text),\n );\n }\n\n /**\n * Returns the value of the search result's descriptor property.\n * This value is set by the autocomplete's `descriptorProperty` input.\n */\n public async getDescriptorValue(): Promise<string> {\n return (await (\n await this.host()\n ).getAttribute('data-descriptor-value')) as string;\n }\n\n /**\n * Selects the search result.\n */\n public async select(): Promise<void> {\n await (await this.host()).click();\n }\n\n /**\n * Returns the text of the search result.\n */\n public async getText(): Promise<string> {\n return await (await this.host()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness, SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarnessFilters } from './autocomplete-harness-filters';\nimport { SkyAutocompleteInputHarness } from './autocomplete-input-harness';\nimport { SkyAutocompleteSearchResultHarness } from './autocomplete-search-result-harness';\nimport { SkyAutocompleteSearchResultHarnessFilters } from './autocomplete-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete component in tests.\n */\nexport class SkyAutocompleteHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-autocomplete';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n #getAutocomplete = this.locatorFor('.sky-autocomplete');\n #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyAutocompleteHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyAutocompleteHarnessFilters,\n ): HarnessPredicate<SkyAutocompleteHarness> {\n return SkyAutocompleteHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the autocomplete input.\n * @deprecated Call `await (await autocomplete.getControl()).blur()` instead.\n */\n public async blur(): Promise<void> {\n await (await this.#getInput()).blur();\n }\n\n /**\n * Clears the autocomplete input value.\n * @deprecated Call `await (await autocomplete.getControl()).clear()` instead.\n */\n public async clear(): Promise<void> {\n await (await this.#getInput()).clear();\n }\n\n /**\n * Enters text into the autocomplete input.\n * @deprecated Call `await (await autocomplete.getControl()).setValue()` instead.\n */\n public async enterText(value: string): Promise<void> {\n await (await this.#getInput()).setValue(value);\n }\n\n /**\n * Focuses the autocomplete input.\n * @deprecated Call `await (await autocomplete.getControl()).focus()` instead.\n */\n public async focus(): Promise<void> {\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the autocomplete `aria-labelledby` value.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (\n await this.#getAutocomplete()\n ).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the autocomplete input harness.\n */\n public async getControl(): Promise<SkyAutocompleteInputHarness> {\n return await this.#getInput();\n }\n\n /**\n * Gets a specific autocomplete search result based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getSearchResult(\n filter: SkyAutocompleteSearchResultHarnessFilters,\n ): Promise<SkyAutocompleteSearchResultHarness> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search result. The autocomplete is closed.',\n );\n }\n\n return await overlay.queryHarness(\n SkyAutocompleteSearchResultHarness.with(filter),\n );\n }\n\n /**\n * Gets an array of autocomplete search results based on the filter criteria.\n * If no filter is provided, returns all autocomplete search results.\n * @param filters The optional filter criteria.\n */\n public async getSearchResults(\n filters?: SkyAutocompleteSearchResultHarnessFilters,\n ): Promise<SkyAutocompleteSearchResultHarness[]> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search results. The autocomplete is closed.',\n );\n }\n\n return await overlay.queryHarnesses(\n SkyAutocompleteSearchResultHarness.with(filters || {}),\n );\n }\n\n /**\n * Returns the text content for each autocomplete search result.\n */\n public async getSearchResultsText(\n filters?: SkyAutocompleteSearchResultHarnessFilters,\n ): Promise<string[]> {\n const harnesses = await this.getSearchResults(filters);\n\n const text: string[] = [];\n for (const harness of harnesses) {\n text.push(await harness.getText());\n }\n\n return text;\n }\n\n /**\n * Gets the value of the autocomplete input.\n * @deprecated Call `await (await autocomplete.getControl()).getValue()` instead.\n */\n public async getValue(): Promise<string> {\n return await (await this.#getInput()).getValue();\n }\n\n /**\n * Gets the text displayed when no search results are found.\n */\n public async getNoResultsFoundText(): Promise<string> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Cannot find \"no results found\" text as the dropdown is closed.',\n );\n }\n\n try {\n const noResultFoundText = await overlay.querySelector(\n '.sky-autocomplete-no-results',\n );\n return (await noResultFoundText.text()).trim();\n } catch {\n throw new Error(\n 'Cannot find \"no results found\" text because there are search results.',\n );\n }\n }\n\n /**\n * Whether the autocomplete input is disabled.\n * @deprecated Call `await (await autocomplete.getControl()).isDisabled()` instead.\n */\n public async isDisabled(): Promise<boolean> {\n return await (await this.#getInput()).isDisabled();\n }\n\n /**\n * Whether the autocomplete input is focused.\n * @deprecated Call `await (await autocomplete.getControl()).isFocused()` instead.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getInput()).isFocused();\n }\n\n /**\n * Whether the autocomplete is open.\n */\n public async isOpen(): Promise<boolean> {\n const overlay = await this.#getOverlay();\n return !!overlay;\n }\n\n /**\n * Selects a search result.\n */\n public async selectSearchResult(\n filters: SkyAutocompleteSearchResultHarnessFilters,\n ): Promise<void> {\n const results = await this.getSearchResults(filters);\n if (results && results.length > 0) {\n await results[0].select();\n }\n }\n\n /**\n * Clicks the \"Add\" button in the autocomplete search results panel.\n * (The \"Add\" functionality is not included in the public API\n * of a \"vanilla\" autocomplete component, so this method is protected\n * to prevent consumers of the autocomplete harness from calling it.\n * The lookup harness, which extends the autocomplete harness, may\n * still access this feature, however.)\n * @internal\n */\n protected async clickAddButton(): Promise<void> {\n const overlay = await this.#getOverlay();\n if (!overlay) {\n throw new Error(\n 'Unable to find the \"Add\" button. The autocomplete is closed.',\n );\n }\n\n const button = await overlay.querySelectorOrNull(\n 'button.sky-autocomplete-action-add',\n );\n\n if (!button) {\n throw new Error(\n 'The \"Add\" button cannot be clicked because it does not exist.',\n );\n }\n\n await button.click();\n }\n\n /**\n * Clicks the \"Show more\" button.\n * (The \"Show more\" functionality is not included in the public API\n * of a \"vanilla\" autocomplete component, so this method is protected\n * to prevent consumers of the autocomplete harness from calling it.\n * The lookup harness, which extends the autocomplete harness, may\n * still access this feature, however.)\n * @internal\n */\n protected async clickShowMoreButton(): Promise<void> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to find the \"Show more\" button. ' +\n 'The autocomplete is closed.',\n );\n }\n\n const button = await overlay.querySelectorOrNull(\n 'button.sky-autocomplete-action-more',\n );\n\n if (!button) {\n throw new Error(\n 'The \"Show more\" button cannot be clicked because it does not exist.',\n );\n }\n\n await button.click();\n }\n\n async #getOverlay(): Promise<SkyOverlayHarness | null> {\n const overlayId = await (await this.#getInput()).getAriaControls();\n\n return overlayId\n ? await this.#documentRootLocator.locatorForOptional(\n SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n )()\n : null;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyAutocompleteSearchResultHarness } from '../autocomplete/autocomplete-search-result-harness';\n\nimport { SkyCountryFieldSearchResultHarnessFilters } from './country-field-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyCountryFieldSearchResultHarness extends SkyAutocompleteSearchResultHarness {\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCountryFieldSearchResultHarness` that meets certain criteria.\n */\n public static override with(\n filters: SkyCountryFieldSearchResultHarnessFilters,\n ): HarnessPredicate<SkyCountryFieldSearchResultHarness> {\n return new HarnessPredicate(\n SkyCountryFieldSearchResultHarness,\n filters,\n ).addOption('textContent', filters.text, async (harness, text) => {\n const searchResultText = await harness.getText();\n return await HarnessPredicate.stringMatches(searchResultText, text);\n });\n }\n\n /**\n * Returns the value of the search result's descriptor property.\n * This is not needed by country field because it is always set to the country name,\n * and the method is marked internal to prevent it from being documented publicly.\n * @internal\n */\n public override async getDescriptorValue(): Promise<string> {\n return await super.getDescriptorValue();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarness } from '../autocomplete/autocomplete-harness';\nimport { SkyAutocompleteInputHarness } from '../autocomplete/autocomplete-input-harness';\n\nimport { SkyCountryFieldHarnessFilters } from './country-field-harness-filters';\nimport { SkyCountryFieldSearchResultHarness } from './country-field-search-result-harness';\nimport { SkyCountryFieldSearchResultHarnessFilters } from './country-field-search-result-harness-filters';\n\n/**\n * Harness for interacting with a country field component in tests.\n */\nexport class SkyCountryFieldHarness extends SkyAutocompleteHarness {\n /**\n * Finds a standard country field component, or a country field component that is wrapped by an input box component.\n * For input box implementations, we need to use the `.sky-input-box` selector since the `sky-country-field`\n * element is removed from the DOM.\n * @internal\n */\n public static override hostSelector =\n 'sky-country-field,.sky-country-field-container';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCountryFieldHarness` that meets certain criteria.\n * These filters only work for standalone country fields.\n * For country fields wrapped inside `sky-input-box`, place filters\n * on the input box instead, and query the country field using a `SkyInputBoxHarness`.\n * For the input box implementation, see the code example.\n */\n public static override with(\n filters: SkyCountryFieldHarnessFilters,\n ): HarnessPredicate<SkyCountryFieldHarness> {\n return SkyCountryFieldHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the country field input.\n * @deprecated Call `await (await countryField.getControl()).blur()` instead.\n */\n public override async blur(): Promise<void> {\n return await (await super.getControl()).blur();\n }\n\n /**\n * Clears the country field input value.\n * @deprecated Call `await (await countryField.getControl()).clear()` instead.\n */\n public override async clear(): Promise<void> {\n return await (await super.getControl()).clear();\n }\n\n /**\n * Enters text into the country field input.\n * @deprecated Call `await (await countryField.getControl()).setValue()` instead.\n */\n public override async enterText(value: string): Promise<void> {\n return await (await super.getControl()).setValue(value);\n }\n\n /**\n * Focuses the country field input.\n * @deprecated Call `await (await countryField.getControl()).focus()` instead.\n */\n public override async focus(): Promise<void> {\n return await (await super.getControl()).focus();\n }\n\n /**\n * Gets the country field `aria-labelledby` value.\n * This is not needed for country field because the id is generated internally,\n * and the method is marked internal to prevent it from being documented publicly.\n * @internal\n */\n /* istanbul ignore next */\n public override async getAriaLabelledby(): Promise<string | null> {\n return await super.getAriaLabelledby();\n }\n\n /**\n * Gets a specific country field search result based on the filter criteria.\n * @param filter The filter criteria.\n */\n public override async getSearchResult(\n filter: SkyCountryFieldSearchResultHarnessFilters,\n ): Promise<SkyCountryFieldSearchResultHarness> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search result. The country field is closed.',\n );\n }\n\n return await overlay.queryHarness(\n SkyCountryFieldSearchResultHarness.with(filter),\n );\n }\n\n /**\n * Gets an array of country field search results based on the filter criteria.\n * If no filter is provided, returns all country field search results.\n * @param filters The optional filter criteria.\n */\n public override async getSearchResults(\n filters?: SkyCountryFieldSearchResultHarnessFilters,\n ): Promise<SkyCountryFieldSearchResultHarness[]> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search results. The country field is closed.',\n );\n }\n\n return await overlay.queryHarnesses(\n SkyCountryFieldSearchResultHarness.with(filters || {}),\n );\n }\n\n /**\n * Returns the text content for each country field search result.\n */\n public override async getSearchResultsText(\n filters?: SkyCountryFieldSearchResultHarnessFilters,\n ): Promise<string[]> {\n const harnesses = await this.getSearchResults(filters);\n\n const text: string[] = [];\n for (const harness of harnesses) {\n text.push(await harness.getText());\n }\n\n return text;\n }\n\n /**\n * Gets the value of the country field input.\n * @deprecated Call `await (await countryField.getControl()).getValue()` instead.\n */\n public override async getValue(): Promise<string> {\n return await (await super.getControl()).getValue();\n }\n\n /**\n * Gets the text displayed when no search results are found.\n * For a country field, this is always the default text and the method\n * is marked internal to prevent it from being documented publicly.\n * @internal\n */\n /* istanbul ignore next */\n public override async getNoResultsFoundText(): Promise<string> {\n return await super.getNoResultsFoundText();\n }\n\n /**\n * Whether the country field input is disabled.\n * @deprecated Call `await (await countryField.getControl()).isDisabled()` instead.\n */\n public override async isDisabled(): Promise<boolean> {\n return await (await super.getControl()).isDisabled();\n }\n\n /**\n * Whether the country field input is focused.\n * @deprecated Call `await (await countryField.getControl()).isFocused()` instead.\n */\n public override async isFocused(): Promise<boolean> {\n return await (await super.getControl()).isFocused();\n }\n\n /**\n * Whether the country field is open.\n */\n public override async isOpen(): Promise<boolean> {\n return await super.isOpen();\n }\n\n /**\n * Selects a search result.\n */\n public override async selectSearchResult(\n filters: SkyCountryFieldSearchResultHarnessFilters,\n ): Promise<void> {\n return await super.selectSearchResult(filters);\n }\n\n async #getOverlay(): Promise<SkyOverlayHarness | null> {\n const overlayId = await (await this.#getInput()).getAriaControls();\n\n return overlayId\n ? await this.#documentRootLocator.locatorForOptional(\n SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n )()\n : null;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyAutocompleteSearchResultHarness } from '../autocomplete/autocomplete-search-result-harness';\n\nimport { SkyLookupSearchResultHarnessFilters } from './lookup-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyLookupSearchResultHarness extends SkyAutocompleteSearchResultHarness {\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyLookupSearchResultHarness` that meets certain criteria.\n */\n public static override with(\n filters: SkyLookupSearchResultHarnessFilters,\n ): HarnessPredicate<SkyLookupSearchResultHarness> {\n return new HarnessPredicate(\n SkyLookupSearchResultHarness,\n filters,\n ).addOption('textContent', filters.text, async (harness, text) => {\n const searchResultText = await harness.getText();\n return await HarnessPredicate.stringMatches(searchResultText, text);\n });\n }\n\n /**\n * Returns the value of the search result's descriptor property.\n */\n public override async getDescriptorValue(): Promise<string> {\n return await super.getDescriptorValue();\n }\n}\n","import { SkyTokensHarness } from '@skyux/indicators/testing';\n\nimport { SkyLookupSelectionHarness } from './lookup-selection-harness';\n\n/**\n * Harness for interacting with multiselect lookup selections in tests.\n * @internal\n */\nexport class SkyLookupSelectionsListHarness extends SkyTokensHarness {\n /**\n * Gets a list of selections.\n */\n public async getSelections(): Promise<SkyLookupSelectionHarness[]> {\n return await super.getTokens();\n }\n\n /**\n * Dismisses the selections in the list.\n */\n public async dismissSelections(): Promise<void> {\n await super.dismissTokens();\n }\n\n /**\n * Gets the text content of all selections in the list.\n */\n public async getSelectionsText(): Promise<string[]> {\n return await super.getTokensText();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkySearchHarnessFilters } from './search-harness-filters';\n\n/**\n * Harness for interacting with a search component in tests.\n */\nexport class SkySearchHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-search';\n\n #getInput = this.locatorFor('input.sky-search-input');\n\n #getClearButton = this.locatorFor('button.sky-search-btn-clear');\n #getDismissButton = this.locatorForOptional('button.sky-search-btn-dismiss');\n #getSubmitButton = this.locatorFor('button.sky-search-btn-apply');\n #getOpenButton = this.locatorFor('button.sky-search-btn-open');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySearchHarness` that meets certain criteria.\n */\n public static with(\n filters: SkySearchHarnessFilters,\n ): HarnessPredicate<SkySearchHarness> {\n return this.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the search input.\n */\n public async blur(): Promise<void> {\n await this.#assertIsExpanded('Failed to blur the search input.');\n\n await (await this.#getInput()).blur();\n }\n\n /**\n * Clears the search input.\n */\n public async clear(): Promise<void> {\n await this.#assertIsExpanded('Failed to clear the search input.');\n\n const input = await this.#getInput();\n await input.focus();\n await input.clear();\n await this.clickSubmitButton();\n }\n\n /**\n * Clicks the search input clear button.\n */\n public async clickClearButton(): Promise<void> {\n await this.#assertIsExpanded('Failed to click clear button.');\n await (await this.#getClearButton()).click();\n }\n\n /**\n * Clicks search dismiss button to collapse search back to a button.\n */\n public async clickDismissSearchButton(): Promise<void> {\n const button = await this.#getDismissButton();\n\n if (!button) {\n throw new Error(\n 'Cannot find dismiss search button. Is a collapsed search open?',\n );\n }\n\n await button.click();\n }\n\n /**\n * Clicks the search icon button that opens search input when it is collapsed.\n */\n public async clickOpenSearchButton(): Promise<void> {\n const button = await this.#getOpenButton();\n\n if (!(await this.isCollapsed())) {\n throw new Error(\n 'Cannot click search open button as search is not collapsed',\n );\n }\n\n await button.click();\n }\n\n /**\n * Clicks the search submit button.\n */\n public async clickSubmitButton(): Promise<void> {\n await this.#assertIsExpanded('Failed to click the submit button.');\n await (await this.#getSubmitButton()).click();\n }\n\n /**\n * Enters text into the search input and performs a search.\n */\n public async enterText(value: string): Promise<void> {\n await this.#assertIsExpanded('Failed to enter text into the search input.');\n\n const input = await this.#getInput();\n await input.clear();\n await input.focus();\n await input.sendKeys(value);\n await this.clickSubmitButton();\n }\n\n /**\n * Focuses the search input.\n */\n public async focus(): Promise<void> {\n await this.#assertIsExpanded('Failed to focus the search input.');\n\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the search input's `aria-label`.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the search's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the value of the input's placeholder attribute.\n */\n public async getPlaceholderText(): Promise<string | null> {\n await this.#assertIsExpanded('Failed to get the placeholder text.');\n\n return await (await this.#getInput()).getAttribute('placeholder');\n }\n\n /**\n * Gets the value of the search input.\n */\n public async getValue(): Promise<string> {\n await this.#assertIsExpanded(\n 'Failed to get the value of the search input.',\n );\n\n return await (await this.#getInput()).getProperty('value');\n }\n\n /**\n * Whether the search input is collapsed.\n */\n public async isCollapsed(): Promise<boolean> {\n return (\n (await (await this.#getOpenButton()).getAttribute('hidden')) === null\n );\n }\n\n /**\n * Whether the search input is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the search input is focused.\n */\n public async isFocused(): Promise<boolean> {\n await this.#assertIsExpanded(\n 'Failed to get the search input focus status.',\n );\n\n return await (await this.#getInput()).isFocused();\n }\n\n async #assertIsExpanded(errorMessage: string): Promise<void> {\n if (await this.isCollapsed()) {\n throw new Error(`${errorMessage} Search is collapsed.`);\n }\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\nimport { SkyCheckboxHarness } from '@skyux/forms/testing';\nimport {\n SkyInfiniteScrollHarness,\n SkyRepeaterItemHarness,\n} from '@skyux/lists/testing';\n\nimport { SkySearchHarness } from '../search/search-harness';\n\nimport { SkySelectionModalSearchResultHarness } from './selection-modal-search-result-harness';\nimport { SkySelectionModalSearchResultHarnessFilters } from './selection-modal-search-result-harness-filters';\n\n/**\n * Harness for interacting with a selection modal in tests.\n */\nexport class SkySelectionModalHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-lookup-show-more-modal';\n\n #getCancelButton = this.locatorFor('button.sky-lookup-show-more-modal-close');\n\n #getClearAllButton = this.locatorForOptional(\n 'button.sky-lookup-show-more-modal-clear-all-btn',\n );\n\n #getCheckboxHarness = this.locatorFor(SkyCheckboxHarness);\n\n #getHeading = this.locatorFor('.sky-modal-heading');\n\n #getInfiniteScroll = this.locatorFor(SkyInfiniteScrollHarness);\n\n #getSaveButton = this.locatorFor('button.sky-lookup-show-more-modal-save');\n\n #getSearchHarness = this.locatorFor(SkySearchHarness);\n\n #getSelectAllButton = this.locatorForOptional(\n 'button.sky-lookup-show-more-modal-select-all-btn',\n );\n\n #getAddButton = this.locatorForOptional(\n 'button.sky-lookup-show-more-modal-add',\n );\n\n /**\n * Clears the text of the search input.\n */\n public async clearSearchText(): Promise<void> {\n await (await this.#getSearchHarness()).clear();\n }\n\n /**\n * Enters text into the search input and performs a search.\n */\n public async enterSearchText(value: string): Promise<void> {\n await (await this.#getSearchHarness()).enterText(value);\n }\n\n /**\n * Gets the search input's aria-label.\n */\n public async getSearchAriaLabel(): Promise<string | null> {\n return await (await this.#getSearchHarness()).getAriaLabel();\n }\n\n /**\n * Gets the selection modal's heading text.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return await (await this.#getHeading()).text();\n }\n\n /**\n * Selects multiple search results based on a set of criteria.\n */\n public async selectSearchResult(\n filters?: SkySelectionModalSearchResultHarnessFilters,\n ): Promise<void> {\n const harnesses = await this.getSearchResults(filters);\n\n if (await this.isMultiselect()) {\n for (const harness of harnesses) {\n await harness.select();\n }\n } else {\n // Click on the item directly because we've added a custom click event in the picker's template.\n await (await harnesses[0].host()).click();\n }\n }\n\n /**\n * Saves any selections made and closes the modal.\n */\n public async saveAndClose(): Promise<void> {\n await (await this.#getSaveButton()).click();\n }\n\n /**\n *\n * Gets the save button's aria-label.\n */\n public async getSaveButtonAriaLabel(): Promise<string | null> {\n return await (await this.#getSaveButton()).getAttribute('aria-label');\n }\n\n /**\n * Closes the picker without saving any selections made.\n */\n public async cancel(): Promise<void> {\n await (await this.#getCancelButton()).click();\n }\n\n /**\n * Gets a specific search result based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getSearchResult(\n filter: SkySelectionModalSearchResultHarnessFilters,\n ): Promise<SkySelectionModalSearchResultHarness> {\n const pickerId = (await (await this.host()).getAttribute('id')) as string;\n\n return await this.locatorFor(\n SkyRepeaterItemHarness.with({\n ...filter,\n ancestor: `#${pickerId}`,\n }),\n )();\n }\n\n /**\n * Gets an array of search results based on the filter criteria.\n * If no filter is provided, returns all search results.\n * @param filters The optional filter criteria.\n */\n public async getSearchResults(\n filters?: SkySelectionModalSearchResultHarnessFilters,\n ): Promise<SkySelectionModalSearchResultHarness[]> {\n const pickerId = (await (await this.host()).getAttribute('id')) as string;\n\n return await this.locatorForAll(\n SkyRepeaterItemHarness.with({\n ...(filters || {}),\n ancestor: `#${pickerId}`,\n }),\n )();\n }\n\n /**\n * Clears all selections made.\n */\n public async clearAll(): Promise<void> {\n const button = await this.#getClearAllButton();\n if (!button) {\n throw new Error(\n 'Could not clear all selections because the \"Clear all\" button could not be found.',\n );\n }\n\n await button.click();\n }\n\n /**\n *\n * Gets the clear all button's aria-label.\n */\n public async getClearAllButtonAriaLabel(): Promise<string | null> {\n const button = await this.#getClearAllButton();\n\n if (!button) {\n throw new Error(\n 'Could not get the aria-label for the clear all button because the \"Clear all\" button could not be found.',\n );\n }\n\n return await button.getAttribute('aria-label');\n }\n\n /**\n * Whether the selection modal is configured to allow multiple selections.\n */\n public async isMultiselect(): Promise<boolean> {\n return !(await (\n await this.host()\n ).hasClass('sky-lookup-show-more-modal-single'));\n }\n\n /**\n * Selects all search results.\n */\n public async selectAll(): Promise<void> {\n const button = await this.#getSelectAllButton();\n if (!button) {\n throw new Error(\n 'Could not select all selections because the \"Select all\" button could not be found.',\n );\n }\n\n await button.click();\n }\n\n /**\n *\n * Gets the select all button's aria-label.\n */\n public async getSelectAllButtonAriaLabel(): Promise<string | null> {\n const button = await this.#getSelectAllButton();\n\n if (!button) {\n throw new Error(\n 'Could not get the aria-label for the select all button because the \"Select all\" button could not be found.',\n );\n }\n\n return await button.getAttribute('aria-label');\n }\n\n /**\n * Loads more results in the picker.\n */\n public async loadMore(): Promise<void> {\n await (await this.#getInfiniteScroll()).loadMore();\n }\n\n /**\n * Whether the selection modal is configured to show the add button.\n */\n public async hasAddButton(): Promise<boolean> {\n const button = await this.#getAddButton();\n return !!button;\n }\n\n /**\n * Clicks the add button.\n */\n public async clickAddButton(): Promise<void> {\n const button = await this.#getAddButton();\n if (!button) {\n throw new Error(\n 'Could not click the add button because the button could not be found.',\n );\n }\n\n await button.click();\n }\n\n /**\n * Gets the \"Only show selected\" checkbox's aria-label\n */\n public async getOnlyShowSelectedAriaLabel(): Promise<string | null> {\n try {\n const label = await (await this.#getCheckboxHarness()).getAriaLabel();\n\n return label;\n } catch {\n throw new Error(\n 'Could not get the \"Show only selected items\" checkbox because it could not be found.',\n );\n }\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkySelectionModalHarness } from '../selection-modal/selection-modal-harness';\n\nimport { SkyLookupShowMorePickerHarnessFilters } from './lookup-show-more-picker-harness-filters';\nimport { SkyLookupShowMorePickerSearchResultHarness } from './lookup-show-more-picker-search-result-harness';\nimport { SkyLookupShowMorePickerSearchResultHarnessFilters } from './lookup-show-more-picker-search-result-harness-filters';\n\n/**\n * Harness for interacting with a lookup's \"Show more\" picker in tests.\n */\nexport class SkyLookupShowMorePickerHarness extends SkySelectionModalHarness {\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyLookupShowMorePickerHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyLookupShowMorePickerHarnessFilters,\n ): HarnessPredicate<SkyLookupShowMorePickerHarness> {\n return new HarnessPredicate(SkyLookupShowMorePickerHarness, filters);\n }\n\n /**\n * Selects multiple search results based on a set of criteria.\n */\n public override async selectSearchResult(\n filters?: SkyLookupShowMorePickerSearchResultHarnessFilters,\n ): Promise<void> {\n await super.selectSearchResult(filters);\n }\n\n /**\n * Gets a list of search results.\n */\n public override async getSearchResults(\n filters?: SkyLookupShowMorePickerSearchResultHarnessFilters,\n ): Promise<SkyLookupShowMorePickerSearchResultHarness[]> {\n return await super.getSearchResults(filters);\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarness } from '../autocomplete/autocomplete-harness';\nimport { SkyAutocompleteInputHarness } from '../autocomplete/autocomplete-input-harness';\n\nimport { SkyLookupHarnessFilters } from './lookup-harness-filters';\nimport { SkyLookupSearchResultHarness } from './lookup-search-result-harness';\nimport { SkyLookupSearchResultHarnessFilters } from './lookup-search-result-harness-filters';\nimport { SkyLookupSelectionHarness } from './lookup-selection-harness';\nimport { SkyLookupSelectionsListHarness } from './lookup-selections-list-harness';\nimport { SkyLookupShowMorePickerHarness } from './lookup-show-more-picker-harness';\n\n/**\n * Harness for interacting with a lookup component in tests.\n */\nexport class SkyLookupHarness extends SkyAutocompleteHarness {\n /**\n * Finds a standard lookup component, or a lookup component that is wrapped by an input box component.\n * For input box implementations, we need to use the `.sky-input-box` selector since the `sky-lookup`\n * element is removed from the DOM.\n * @internal\n */\n public static override hostSelector = 'sky-lookup,.sky-input-box';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getAutocompleteHarness = this.locatorFor(SkyAutocompleteHarness);\n\n #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n #getSelectionsListHarness = this.locatorFor(SkyLookupSelectionsListHarness);\n\n #getWrapper = this.locatorFor('.sky-lookup');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyLookupHarness` that meets certain criteria.\n *\n * These filters only work for standalone lookups. For lookups\n * wrapped inside `sky-input-box`, place filters on the input box\n * instead and query the datepicker using a `SkyInputBoxHarness`.\n * For the input box implementation, see the code example.\n */\n public static override with(\n filters: SkyLookupHarnessFilters,\n ): HarnessPredicate<SkyLookupHarness> {\n return SkyLookupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the lookup input.\n * @deprecated Call `await (await lookup.getControl()).blur()` instead.\n */\n public override async blur(): Promise<void> {\n await (await super.getControl()).blur();\n }\n\n /**\n * Clears the lookup input value.\n * @deprecated Call `await (await lookup.getControl()).clear()` instead.\n */\n public override async clear(): Promise<void> {\n await (await super.getControl()).clear();\n }\n\n /**\n * Clicks the \"Add\" button on the search results panel.\n */\n public override async clickAddButton(): Promise<void> {\n await (await super.getControl()).focus();\n await super.clickAddButton();\n }\n\n /**\n * Clicks the \"Show more\" button on the search results panel.\n */\n public override async clickShowMoreButton(): Promise<void> {\n await (await super.getControl()).focus();\n await super.clickShowMoreButton();\n }\n\n /**\n * Dismisses the selections made with a multiselect lookup.\n */\n public async dismissSelections(): Promise<void> {\n await (await this.#getSelectionsListHarness()).dismissSelections();\n }\n\n /**\n * Enters text into the lookup input.\n * @deprecated Call `await (await lookup.getControl()).setValue()` instead.\n */\n public override async enterText(value: string): Promise<void> {\n await (await super.getControl()).setValue(value);\n }\n\n /**\n * Focuses the lookup input.\n * @deprecated Call `await (await lookup.getControl()).focus()` instead.\n */\n public override async focus(): Promise<void> {\n await (await super.getControl()).focus();\n }\n\n /**\n * Gets the lookup `aria-labelledby` value.\n * @deprecated Don't use this property. It returns a value from a deprecated input that lookup no longer uses.\n */\n public override async getAriaLabelledby(): Promise<string | null> {\n return await super.getAriaLabelledby();\n }\n\n /**\n * Gets a specific lookup search result based on the filter criteria.\n * @param filters The filter criteria.\n */\n public override async getSearchResult(\n filters: SkyLookupSearchResultHarnessFilters,\n ): Promise<SkyLookupSearchResultHarness> {\n const overlay = await this.#getOverlay();\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search result. The lookup is closed.',\n );\n }\n return await overlay.queryHarness(\n SkyLookupSearchResultHarness.with(filters),\n );\n }\n\n /**\n * Gets an array of lookup search results based on the filter criteria.\n * If no filter is provided, returns all lookup search results.\n * @param filters The optional filter criteria.\n */\n public override async getSearchResults(\n filters?: SkyLookupSearchResultHarnessFilters,\n ): Promise<SkyLookupSearchResultHarness[]> {\n const overlay = await this.#getOverlay();\n\n if (!overlay) {\n throw new Error(\n 'Unable to retrieve search results. The lookup is closed.',\n );\n }\n\n return await overlay.queryHarnesses(\n SkyLookupSearchResultHarness.with(filters || {}),\n );\n }\n\n /**\n * Returns the text content for each lookup search result.\n */\n public override async getSearchResultsText(\n filters?: SkyLookupSearchResultHarnessFilters,\n ): Promise<string[]> {\n const harnesses = await this.getSearchResults(filters);\n\n const text: string[] = [];\n for (const harness of harnesses) {\n text.push(await harness.getText());\n }\n\n return text;\n }\n\n /**\n * Gets the \"Show more\" picker harness.\n */\n public async getShowMorePicker(): Promise<SkyLookupShowMorePickerHarness> {\n const pickerId = await (\n await (await this.#getAutocompleteHarness()).host()\n ).getAttribute('data-sky-lookup-show-more-picker-id');\n\n const defaultPicker = await this.#documentRootLocator.locatorForOptional(\n SkyLookupShowMorePickerHarness.with({ selector: `#${pickerId}` }),\n )();\n\n if (!defaultPicker) {\n throw new Error(\n 'Cannot get the \"Show more\" picker because it is not open.',\n );\n }\n\n return defaultPicker;\n }\n\n /**\n * Gets a list of selections made with a multiselect lookup.\n */\n public async getSelections(): Promise<SkyLookupSelectionHarness[]> {\n return await (await this.#getSelectionsListHarness()).getSelections();\n }\n\n /**\n * Gets the text content of all selections made with a multiselect lookup.\n */\n public async getSelectionsText(): Promise<string[]> {\n return await (await this.#getSelectionsListHarness()).getSelectionsText();\n }\n\n /**\n * Gets the value of the lookup input.\n * @deprecated Call `await (await lookup.getControl()).getValue()` instead.\n */\n public override async getValue(): Promise<string> {\n return await (await super.getControl()).getValue();\n }\n\n /**\n * Whether the lookup input is disabled.\n * @deprecated Call `await (await lookup.getControl()).isDisabled()` instead.\n */\n public override async isDisabled(): Promise<boolean> {\n return await (await super.getControl()).isDisabled();\n }\n\n /**\n * Whether the lookup input is focused.\n * @deprecated Call `await (await lookup.getControl()).isFocused()` instead.\n */\n public override async isFocused(): Promise<boolean> {\n return await (await super.getControl()).isFocused();\n }\n\n /**\n * Whether the lookup allows for multiple selections.\n */\n public async isMultiselect(): Promise<boolean> {\n return !(await (await this.#getWrapper()).hasClass('sky-lookup-single'));\n }\n\n /**\n * Whether the lookup is open.\n */\n public override async isOpen(): Promise<boolean> {\n return await super.isOpen();\n }\n\n /**\n * Selects a search result.\n */\n public override async selectSearchResult(\n filters: SkyLookupSearchResultHarnessFilters,\n ): Promise<void> {\n await super.selectSearchResult(filters);\n }\n\n async #getOverlay(): Promise<SkyOverlayHarness | null> {\n const overlayId = await (await this.#getInput()).getAriaControls();\n\n return overlayId\n ? await this.#documentRootLocator.locatorForOptional(\n SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n )()\n : null;\n }\n}\n","import { SkyTokenHarness } from '@skyux/indicators/testing';\n\n/**\n * Harness for interacting with a multiselect lookup selection in tests.\n */\nexport class SkyLookupSelectionHarness extends SkyTokenHarness {}\n","import { SkyRepeaterItemHarness } from '@skyux/lists/testing';\n\n/**\n * Harness for interacting with a selection modal's search results in tests.\n */\nexport class SkySelectionModalSearchResultHarness extends SkyRepeaterItemHarness {}\n","import { SkySelectionModalSearchResultHarness } from '../selection-modal/selection-modal-search-result-harness';\n\n/**\n * Harness for interacting with a lookup's \"Show more\" picker search results in tests.\n */\nexport class SkyLookupShowMorePickerSearchResultHarness extends SkySelectionModalSearchResultHarness {}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX search component.\n * @deprecated Use `SkySearchHarness` instead.\n * @internal\n */\nexport class SkySearchFixture {\n /**\n * Gets the search's current text.\n */\n public get searchText(): string {\n return this.#getInputEl().nativeElement.value;\n }\n\n /**\n * Gets the search's current placeholder text.\n */\n public get placeholderText(): string {\n return this.#getInputEl().nativeElement.placeholder;\n }\n\n #debugEl: DebugElement;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-search',\n );\n }\n\n /**\n * Applies the specified search text, invoking the search.\n * @param searchText The search text to apply. If none is specified, the search's\n * current search text will be applied.\n */\n public apply(searchText?: string): void {\n if (searchText) {\n SkyAppTestUtility.setInputValue(\n this.#getInputEl().nativeElement,\n searchText,\n );\n }\n\n const btnEl = this.#getApplyBtnEl();\n\n btnEl.triggerEventHandler('click', {});\n }\n\n /**\n * Clears the current search text. If there is no search text or the search text is\n * not currently applied, an error is thrown.\n */\n public clear(): void {\n const clearEl = this.#debugEl.query(By.css('.sky-input-group-clear'));\n\n if (!SkyAppTestUtility.isVisible(clearEl)) {\n throw new Error(\n 'There currently is no search text or the current search text has not been applied, ' +\n 'so the clear button is not visible.',\n );\n }\n\n const btnEl = this.#getClearBtnEl();\n\n btnEl.triggerEventHandler('click', {});\n }\n\n #getApplyBtnEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-search-btn-apply'));\n }\n\n #getClearBtnEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-search-btn-clear'));\n }\n\n #getInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-search-input'));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { provideNoopSkyAnimations } from '@skyux/core';\nimport { SkySearchModule } from '@skyux/lookup';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkySearchModule],\n providers: [provideNoopSkyAnimations()],\n})\nexport class SkySearchTestingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAEA;;AAEG;AACG,MAAO,2BAA4B,SAAQ,eAAe,CAAA;AAC9D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,mBAAmB,CAAC;AAEjD;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;AAC1B,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,eAAe,CAAC;IAChE;;;ACXF;;AAEG;AACG,MAAO,kCAAmC,SAAQ,4BAA4B,CAAA;AAClF;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,0BAA0B,CAAC;AAExD;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAkD,EAAA;AAElD,QAAA,OAAO,IAAI,gBAAgB,CACzB,kCAAkC,EAClC,OAAO,CACR,CAAC,SAAS,CACT,aAAa,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,OAAO,EAAE,IAAI,KAClB,MAAM,gBAAgB,CAAC,aAAa,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CACtE;IACH;AAEA;;;AAGG;AACI,IAAA,MAAM,kBAAkB,GAAA;AAC7B,QAAA,QAAQ,MAAM,CACZ,MAAM,IAAI,CAAC,IAAI,EAAE,EACjB,YAAY,CAAC,uBAAuB,CAAC;IACzC;AAEA;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;QACjB,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE;IACnC;AAEA;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;QAClB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;IACzC;;;AC9CF;;AAEG;AACG,MAAO,sBAAuB,SAAQ,mBAAmB,CAAA;AAC7D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,kBAAkB,CAAC;AAEhD,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACxD,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;AACvD,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;AAExD;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAsC,EAAA;AAEtC,QAAA,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC9D;AAEA;;;AAGG;AACI,IAAA,MAAM,IAAI,GAAA;QACf,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE;IACvC;AAEA;;;AAGG;AACI,IAAA,MAAM,KAAK,GAAA;QAChB,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;IACxC;AAEA;;;AAGG;IACI,MAAM,SAAS,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;IAChD;AAEA;;;AAGG;AACI,IAAA,MAAM,KAAK,GAAA;QAChB,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;IACxC;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAC7B,YAAY,CAAC,iBAAiB,CAAC;IACnC;AAEA;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,OAAO,MAAM,IAAI,CAAC,SAAS,EAAE;IAC/B;AAEA;;;AAGG;IACI,MAAM,eAAe,CAC1B,MAAiD,EAAA;AAEjD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,YAAY,CAC/B,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAChD;IACH;AAEA;;;;AAIG;IACI,MAAM,gBAAgB,CAC3B,OAAmD,EAAA;AAEnD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,cAAc,CACjC,kCAAkC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CACvD;IACH;AAEA;;AAEG;IACI,MAAM,oBAAoB,CAC/B,OAAmD,EAAA;QAEnD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEtD,MAAM,IAAI,GAAa,EAAE;AACzB,QAAA,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACI,IAAA,MAAM,QAAQ,GAAA;QACnB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE;IAClD;AAEA;;AAEG;AACI,IAAA,MAAM,qBAAqB,GAAA;AAChC,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;QACH;AAEA,QAAA,IAAI;YACF,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,aAAa,CACnD,8BAA8B,CAC/B;YACD,OAAO,CAAC,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;QAChD;AAAE,QAAA,MAAM;AACN,YAAA,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE;QACH;IACF;AAEA;;;AAGG;AACI,IAAA,MAAM,UAAU,GAAA;QACrB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE;IACpD;AAEA;;;AAGG;AACI,IAAA,MAAM,SAAS,GAAA;QACpB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE;IACnD;AAEA;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QACxC,OAAO,CAAC,CAAC,OAAO;IAClB;AAEA;;AAEG;IACI,MAAM,kBAAkB,CAC7B,OAAkD,EAAA;QAElD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACpD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QAC3B;IACF;AAEA;;;;;;;;AAQG;AACO,IAAA,MAAM,cAAc,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QACxC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D;QACH;QAEA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAC9C,oCAAoC,CACrC;QAED,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;;;;;;;AAQG;AACO,IAAA,MAAM,mBAAmB,GAAA;AACjC,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CACb,yCAAyC;AACvC,gBAAA,6BAA6B,CAChC;QACH;QAEA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAC9C,qCAAqC,CACtC;QAED,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE;AAElE,QAAA,OAAO;cACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAChD,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,CAAC,CACtD;cACD,IAAI;IACV;;;AC5QF;;AAEG;AACG,MAAO,kCAAmC,SAAQ,kCAAkC,CAAA;AACxF;;;AAGG;IACI,OAAgB,IAAI,CACzB,OAAkD,EAAA;QAElD,OAAO,IAAI,gBAAgB,CACzB,kCAAkC,EAClC,OAAO,CACR,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,OAAO,EAAE,IAAI,KAAI;AAC/D,YAAA,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;YAChD,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACrE,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;AAKG;AACa,IAAA,MAAM,kBAAkB,GAAA;AACtC,QAAA,OAAO,MAAM,KAAK,CAAC,kBAAkB,EAAE;IACzC;AACD;;ACzBD;;AAEG;AACG,MAAO,sBAAuB,SAAQ,sBAAsB,CAAA;AAChE;;;;;AAKG;aACoB,IAAA,CAAA,YAAY,GACjC,gDAAgD,CAAC;AAEnD,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAExD,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;AAExD;;;;;;;AAOG;IACI,OAAgB,IAAI,CACzB,OAAsC,EAAA;AAEtC,QAAA,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC9D;AAEA;;;AAGG;AACa,IAAA,MAAM,IAAI,GAAA;QACxB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;IAChD;AAEA;;;AAGG;AACa,IAAA,MAAM,KAAK,GAAA;QACzB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IACjD;AAEA;;;AAGG;IACa,MAAM,SAAS,CAAC,KAAa,EAAA;AAC3C,QAAA,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;IACzD;AAEA;;;AAGG;AACa,IAAA,MAAM,KAAK,GAAA;QACzB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IACjD;AAEA;;;;;AAKG;;AAEa,IAAA,MAAM,iBAAiB,GAAA;AACrC,QAAA,OAAO,MAAM,KAAK,CAAC,iBAAiB,EAAE;IACxC;AAEA;;;AAGG;IACa,MAAM,eAAe,CACnC,MAAiD,EAAA;AAEjD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,YAAY,CAC/B,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAChD;IACH;AAEA;;;;AAIG;IACa,MAAM,gBAAgB,CACpC,OAAmD,EAAA;AAEnD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,cAAc,CACjC,kCAAkC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CACvD;IACH;AAEA;;AAEG;IACa,MAAM,oBAAoB,CACxC,OAAmD,EAAA;QAEnD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEtD,MAAM,IAAI,GAAa,EAAE;AACzB,QAAA,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACa,IAAA,MAAM,QAAQ,GAAA;QAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE;IACpD;AAEA;;;;;AAKG;;AAEa,IAAA,MAAM,qBAAqB,GAAA;AACzC,QAAA,OAAO,MAAM,KAAK,CAAC,qBAAqB,EAAE;IAC5C;AAEA;;;AAGG;AACa,IAAA,MAAM,UAAU,GAAA;QAC9B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE;IACtD;AAEA;;;AAGG;AACa,IAAA,MAAM,SAAS,GAAA;QAC7B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE;IACrD;AAEA;;AAEG;AACa,IAAA,MAAM,MAAM,GAAA;AAC1B,QAAA,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE;IAC7B;AAEA;;AAEG;IACa,MAAM,kBAAkB,CACtC,OAAkD,EAAA;AAElD,QAAA,OAAO,MAAM,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;IAChD;AAEA,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE;AAElE,QAAA,OAAO;cACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAChD,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,CAAC,CACtD;cACD,IAAI;IACV;;;AClMF;;AAEG;AACG,MAAO,4BAA6B,SAAQ,kCAAkC,CAAA;AAClF;;;AAGG;IACI,OAAgB,IAAI,CACzB,OAA4C,EAAA;QAE5C,OAAO,IAAI,gBAAgB,CACzB,4BAA4B,EAC5B,OAAO,CACR,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,OAAO,EAAE,IAAI,KAAI;AAC/D,YAAA,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;YAChD,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACrE,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;AACa,IAAA,MAAM,kBAAkB,GAAA;AACtC,QAAA,OAAO,MAAM,KAAK,CAAC,kBAAkB,EAAE;IACzC;AACD;;AC5BD;;;AAGG;AACG,MAAO,8BAA+B,SAAQ,gBAAgB,CAAA;AAClE;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,OAAO,MAAM,KAAK,CAAC,SAAS,EAAE;IAChC;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,MAAM,KAAK,CAAC,aAAa,EAAE;IAC7B;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,OAAO,MAAM,KAAK,CAAC,aAAa,EAAE;IACpC;AACD;;ACxBD;;AAEG;AACG,MAAO,gBAAiB,SAAQ,mBAAmB,CAAA;AACvD;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC;AAE1C,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAErD,IAAA,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;AAChE,IAAA,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,+BAA+B,CAAC;AAC5E,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;AACjE,IAAA,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC;AAE9D;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC5C;AAEA;;AAEG;AACI,IAAA,MAAM,IAAI,GAAA;AACf,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,kCAAkC,CAAC;QAEhE,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE;IACvC;AAEA;;AAEG;AACI,IAAA,MAAM,KAAK,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;AAEjE,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACpC,QAAA,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE;IAChC;AAEA;;AAEG;AACI,IAAA,MAAM,gBAAgB,GAAA;AAC3B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,CAAC;QAC7D,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE;IAC9C;AAEA;;AAEG;AACI,IAAA,MAAM,wBAAwB,GAAA;AACnC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;QAE7C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;AAEG;AACI,IAAA,MAAM,qBAAqB,GAAA;AAChC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;QAE1C,IAAI,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,oCAAoC,CAAC;QAClE,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE;IAC/C;AAEA;;AAEG;IACI,MAAM,SAAS,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,6CAA6C,CAAC;AAE3E,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACpC,QAAA,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,KAAK,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3B,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE;IAChC;AAEA;;AAEG;AACI,IAAA,MAAM,KAAK,GAAA;AAChB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;QAEjE,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;IACxC;AAEA;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;IAClE;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,iBAAiB,CAAC;IACvE;AAEA;;AAEG;AACI,IAAA,MAAM,kBAAkB,GAAA;AAC7B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,qCAAqC,CAAC;AAEnE,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,aAAa,CAAC;IACnE;AAEA;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAC1B,8CAA8C,CAC/C;AAED,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5D;AAEA;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,QACE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,IAAI;IAEzE;AAEA;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC;QACxE,OAAO,QAAQ,KAAK,IAAI;IAC1B;AAEA;;AAEG;AACI,IAAA,MAAM,SAAS,GAAA;AACpB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAC1B,8CAA8C,CAC/C;QAED,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE;IACnD;IAEA,MAAM,iBAAiB,CAAC,YAAoB,EAAA;AAC1C,QAAA,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAA,qBAAA,CAAuB,CAAC;QACzD;IACF;;;AC9KF;;AAEG;AACG,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;AAC5D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,6BAA6B,CAAC;AAE3D,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,yCAAyC,CAAC;AAE7E,IAAA,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAC1C,iDAAiD,CAClD;AAED,IAAA,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAEzD,IAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAEnD,IAAA,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAE9D,IAAA,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,wCAAwC,CAAC;AAE1E,IAAA,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;AAErD,IAAA,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAC3C,kDAAkD,CACnD;AAED,IAAA,aAAa,GAAG,IAAI,CAAC,kBAAkB,CACrC,uCAAuC,CACxC;AAED;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;QAC1B,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE;IAChD;AAEA;;AAEG;IACI,MAAM,eAAe,CAAC,KAAa,EAAA;AACxC,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC;IACzD;AAEA;;AAEG;AACI,IAAA,MAAM,kBAAkB,GAAA;QAC7B,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE;IAC9D;AAEA;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;QACzB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE;IAChD;AAEA;;AAEG;IACI,MAAM,kBAAkB,CAC7B,OAAqD,EAAA;QAErD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAEtD,QAAA,IAAI,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE;AAC9B,YAAA,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;AAC/B,gBAAA,MAAM,OAAO,CAAC,MAAM,EAAE;YACxB;QACF;aAAO;;AAEL,YAAA,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE;QAC3C;IACF;AAEA;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;QACvB,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;IAC7C;AAEA;;;AAGG;AACI,IAAA,MAAM,sBAAsB,GAAA;AACjC,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;IACvE;AAEA;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;QACjB,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE;IAC/C;AAEA;;;AAGG;IACI,MAAM,eAAe,CAC1B,MAAmD,EAAA;AAEnD,QAAA,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAW;QAEzE,OAAO,MAAM,IAAI,CAAC,UAAU,CAC1B,sBAAsB,CAAC,IAAI,CAAC;AAC1B,YAAA,GAAG,MAAM;YACT,QAAQ,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;SACzB,CAAC,CACH,EAAE;IACL;AAEA;;;;AAIG;IACI,MAAM,gBAAgB,CAC3B,OAAqD,EAAA;AAErD,QAAA,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAW;QAEzE,OAAO,MAAM,IAAI,CAAC,aAAa,CAC7B,sBAAsB,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,OAAO,IAAI,EAAE,CAAC;YAClB,QAAQ,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;SACzB,CAAC,CACH,EAAE;IACL;AAEA;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;QAC9C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;;AAGG;AACI,IAAA,MAAM,0BAA0B,GAAA;AACrC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;QAE9C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,0GAA0G,CAC3G;QACH;AAEA,QAAA,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;IAChD;AAEA;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,OAAO,EAAE,MAAM,CACb,MAAM,IAAI,CAAC,IAAI,EAAE,EACjB,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IAClD;AAEA;;AAEG;AACI,IAAA,MAAM,SAAS,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE;QAC/C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;;AAGG;AACI,IAAA,MAAM,2BAA2B,GAAA;AACtC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE;QAE/C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G;QACH;AAEA,QAAA,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;IAChD;AAEA;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;QACnB,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE;IACpD;AAEA;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QACzC,OAAO,CAAC,CAAC,MAAM;IACjB;AAEA;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QACzC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE;QACH;AAEA,QAAA,MAAM,MAAM,CAAC,KAAK,EAAE;IACtB;AAEA;;AAEG;AACI,IAAA,MAAM,4BAA4B,GAAA;AACvC,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE;AAErE,YAAA,OAAO,KAAK;QACd;AAAE,QAAA,MAAM;AACN,YAAA,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF;QACH;IACF;;;AC3PF;;AAEG;AACG,MAAO,8BAA+B,SAAQ,wBAAwB,CAAA;AAC1E;;;AAGG;IACI,OAAO,IAAI,CAChB,OAA8C,EAAA;AAE9C,QAAA,OAAO,IAAI,gBAAgB,CAAC,8BAA8B,EAAE,OAAO,CAAC;IACtE;AAEA;;AAEG;IACa,MAAM,kBAAkB,CACtC,OAA2D,EAAA;AAE3D,QAAA,MAAM,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;IACzC;AAEA;;AAEG;IACa,MAAM,gBAAgB,CACpC,OAA2D,EAAA;AAE3D,QAAA,OAAO,MAAM,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC9C;AACD;;AC1BD;;AAEG;AACG,MAAO,gBAAiB,SAAQ,sBAAsB,CAAA;AAC1D;;;;;AAKG;aACoB,IAAA,CAAA,YAAY,GAAG,2BAA2B,CAAC;AAElE,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAExD,IAAA,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;AAEjE,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;AAExD,IAAA,yBAAyB,GAAG,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC;AAE3E,IAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAE5C;;;;;;;;AAQG;IACI,OAAgB,IAAI,CACzB,OAAgC,EAAA;AAEhC,QAAA,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,CAAC;IACxD;AAEA;;;AAGG;AACa,IAAA,MAAM,IAAI,GAAA;QACxB,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;IACzC;AAEA;;;AAGG;AACa,IAAA,MAAM,KAAK,GAAA;QACzB,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IAC1C;AAEA;;AAEG;AACa,IAAA,MAAM,cAAc,GAAA;QAClC,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACxC,QAAA,MAAM,KAAK,CAAC,cAAc,EAAE;IAC9B;AAEA;;AAEG;AACa,IAAA,MAAM,mBAAmB,GAAA;QACvC,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACxC,QAAA,MAAM,KAAK,CAAC,mBAAmB,EAAE;IACnC;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;QAC5B,MAAM,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,iBAAiB,EAAE;IACpE;AAEA;;;AAGG;IACa,MAAM,SAAS,CAAC,KAAa,EAAA;AAC3C,QAAA,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;IAClD;AAEA;;;AAGG;AACa,IAAA,MAAM,KAAK,GAAA;QACzB,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;IAC1C;AAEA;;;AAGG;AACa,IAAA,MAAM,iBAAiB,GAAA;AACrC,QAAA,OAAO,MAAM,KAAK,CAAC,iBAAiB,EAAE;IACxC;AAEA;;;AAGG;IACa,MAAM,eAAe,CACnC,OAA4C,EAAA;AAE5C,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QACxC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D;QACH;AACA,QAAA,OAAO,MAAM,OAAO,CAAC,YAAY,CAC/B,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAC3C;IACH;AAEA;;;;AAIG;IACa,MAAM,gBAAgB,CACpC,OAA6C,EAAA;AAE7C,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAExC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D;QACH;AAEA,QAAA,OAAO,MAAM,OAAO,CAAC,cAAc,CACjC,4BAA4B,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CACjD;IACH;AAEA;;AAEG;IACa,MAAM,oBAAoB,CACxC,OAA6C,EAAA;QAE7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEtD,MAAM,IAAI,GAAa,EAAE;AACzB,QAAA,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;QAC5B,MAAM,QAAQ,GAAG,MAAM,CACrB,MAAM,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,EACnD,YAAY,CAAC,qCAAqC,CAAC;QAErD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CACtE,8BAA8B,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,EAAE,CAAC,CAClE,EAAE;QAEH,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D;QACH;AAEA,QAAA,OAAO,aAAa;IACtB;AAEA;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;QACxB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,aAAa,EAAE;IACvE;AAEA;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;QAC5B,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,iBAAiB,EAAE;IAC3E;AAEA;;;AAGG;AACa,IAAA,MAAM,QAAQ,GAAA;QAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE;IACpD;AAEA;;;AAGG;AACa,IAAA,MAAM,UAAU,GAAA;QAC9B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE;IACtD;AAEA;;;AAGG;AACa,IAAA,MAAM,SAAS,GAAA;QAC7B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE;IACrD;AAEA;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC1E;AAEA;;AAEG;AACa,IAAA,MAAM,MAAM,GAAA;AAC1B,QAAA,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE;IAC7B;AAEA;;AAEG;IACa,MAAM,kBAAkB,CACtC,OAA4C,EAAA;AAE5C,QAAA,MAAM,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;IACzC;AAEA,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE;AAElE,QAAA,OAAO;cACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAChD,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAE,CAAC,CACtD;cACD,IAAI;IACV;;;AChQF;;AAEG;AACG,MAAO,yBAA0B,SAAQ,eAAe,CAAA;AAAG;;ACHjE;;AAEG;AACG,MAAO,oCAAqC,SAAQ,sBAAsB,CAAA;AAAG;;ACHnF;;AAEG;AACG,MAAO,0CAA2C,SAAQ,oCAAoC,CAAA;AAAG;;ACAvG;;;;AAIG;MACU,gBAAgB,CAAA;AAC3B;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,KAAK;IAC/C;AAEA;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,WAAW;IACrD;AAEA,IAAA,QAAQ;;IAGR,WAAA,CAAY,OAA8B,EAAE,SAAiB,EAAA;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,uBAAuB,CACvD,OAAO,EACP,SAAS,EACT,YAAY,CACb;IACH;AAEA;;;;AAIG;AACI,IAAA,KAAK,CAAC,UAAmB,EAAA;QAC9B,IAAI,UAAU,EAAE;AACd,YAAA,iBAAiB,CAAC,aAAa,CAC7B,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAChC,UAAU,CACX;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AAEnC,QAAA,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;IACxC;AAEA;;;AAGG;IACI,KAAK,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAErE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACzC,MAAM,IAAI,KAAK,CACb,qFAAqF;AACnF,gBAAA,qCAAqC,CACxC;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AAEnC,QAAA,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;IACxC;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC7D;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC7D;IAEA,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACzD;AACD;;AChFD;;AAEG;MAKU,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAHvB,eAAe,CAAA,EAAA,CAAA,CAAA;AAGd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,aAFtB,CAAC,wBAAwB,EAAE,CAAC,YAD7B,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAGd,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,oBAAA,SAAS,EAAE,CAAC,wBAAwB,EAAE,CAAC;AACxC,iBAAA;;;ACVD;;AAEG;;;;"}
|
|
@@ -794,7 +794,10 @@ class SkyAutocompleteComponent {
|
|
|
794
794
|
/**
|
|
795
795
|
* When using `searchAsync`, allows the user to specify arbitrary
|
|
796
796
|
* values not in the search results. This only works in combination
|
|
797
|
-
* with `searchAsync`.
|
|
797
|
+
* with `searchAsync`. On blur, the typed text is kept as the value
|
|
798
|
+
* rather than reverted, using a matching search result if one is
|
|
799
|
+
* available. Consumers should guard against values set before a
|
|
800
|
+
* `searchAsync` call resolves.
|
|
798
801
|
* @default false
|
|
799
802
|
*/
|
|
800
803
|
this.allowAnyValue = input(false, { ...(ngDevMode ? { debugName: "allowAnyValue" } : {}), transform: booleanAttribute });
|
|
@@ -1078,8 +1081,24 @@ class SkyAutocompleteComponent {
|
|
|
1078
1081
|
inputDirective.value = undefined;
|
|
1079
1082
|
this.selectionChange.emit({ selectedItem: undefined });
|
|
1080
1083
|
}
|
|
1081
|
-
else if (hasInputText) {
|
|
1082
|
-
|
|
1084
|
+
else if (hasInputText && inputDirective) {
|
|
1085
|
+
if (this.allowAnyValue()) {
|
|
1086
|
+
// While a search is still in flight, `searchResults` may only
|
|
1087
|
+
// contain the provisional placeholder for the current search text
|
|
1088
|
+
// (see `#combineSearchTextWithResult`), not a confirmed match.
|
|
1089
|
+
const matchedResult = this.isSearchingAsync
|
|
1090
|
+
? undefined
|
|
1091
|
+
: this.searchResults.find((result) => result.data[this.descriptorProperty] ===
|
|
1092
|
+
inputDirective.inputTextValue);
|
|
1093
|
+
const selectedItem = matchedResult
|
|
1094
|
+
? matchedResult.data
|
|
1095
|
+
: { [this.descriptorProperty]: inputDirective.inputTextValue };
|
|
1096
|
+
inputDirective.value = selectedItem;
|
|
1097
|
+
this.selectionChange.emit({ selectedItem });
|
|
1098
|
+
}
|
|
1099
|
+
else {
|
|
1100
|
+
inputDirective.restoreInputTextValueToPreviousState();
|
|
1101
|
+
}
|
|
1083
1102
|
}
|
|
1084
1103
|
}
|
|
1085
1104
|
#performSearchAndUpdateResults() {
|