@skyux/forms 13.11.5 → 14.0.0-alpha.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-forms-testing.mjs","sources":["../tmp-esm2022/testing/modules/character-counter/character-counter-indicator-harness.js","../tmp-esm2022/testing/modules/form-error/form-error-harness.js","../tmp-esm2022/testing/modules/form-error/form-errors-harness.js","../tmp-esm2022/testing/modules/input-box/input-box-harness.js","../tmp-esm2022/testing/legacy/checkbox-fixture.js","../tmp-esm2022/testing/modules/checkbox/checkbox-label-harness.js","../tmp-esm2022/testing/modules/checkbox/checkbox-label-text-label.harness.js","../tmp-esm2022/testing/modules/checkbox/checkbox-harness.js","../tmp-esm2022/testing/modules/checkbox/checkbox-group-harness.js","../tmp-esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness.js","../tmp-esm2022/testing/modules/file-attachment/file-drop/file-drop-link-upload-input-harness.js","../tmp-esm2022/testing/modules/file-attachment/file-drop/file-drop-link-upload-harness.js","../tmp-esm2022/testing/modules/file-attachment/file-drop/file-drop-harness.js","../tmp-esm2022/testing/modules/file-attachment/shared/provide-file-attachment-testing.js","../tmp-esm2022/testing/modules/file-attachment/file-drop/file-item-harness.js","../tmp-esm2022/testing/modules/field-group/field-group-harness.js","../tmp-esm2022/testing/legacy/radio-fixture.js","../tmp-esm2022/testing/modules/radio/radio-label-harness.js","../tmp-esm2022/testing/modules/radio/radio-harness.js","../tmp-esm2022/testing/modules/radio/radio-group-harness.js","../tmp-esm2022/testing/modules/selection-box/selection-box-description-harness.js","../tmp-esm2022/testing/modules/selection-box/selection-box-header-harness.js","../tmp-esm2022/testing/modules/selection-box/selection-box-harness.js","../tmp-esm2022/testing/modules/selection-box/selection-box-grid-harness.js","../tmp-esm2022/testing/modules/toggle-switch/toggle-switch-label-harness.js","../tmp-esm2022/testing/modules/toggle-switch/toggle-switch-harness.js","../tmp-esm2022/testing/skyux-forms-testing.js"],"sourcesContent":["import { SkyComponentHarness } from '@skyux/core/testing';\n/**\n * Harness for interacting with a character counter indicator component in tests.\n */\nexport class SkyCharacterCounterIndicatorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-character-counter-indicator'; }\n #getLabel = this.locatorFor('.sky-character-count-label');\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCharacterCounterIndicatorHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyCharacterCounterIndicatorHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Gets the current character count.\n */\n async getCharacterCount() {\n return (await this.#getLabelParts()).count;\n }\n /**\n * Gets the character counter limit.\n */\n async getCharacterCountLimit() {\n return (await this.#getLabelParts()).limit;\n }\n /**\n * Indicates whether the character counter is in an error state because the current character\n * count is greater than the limit.\n */\n async isOverLimit() {\n return await (await this.#getLabel()).hasClass('sky-error-label');\n }\n async #getLabelParts() {\n const label = await this.#getLabel();\n const textParts = (await label.text()).split('/');\n let labelParts;\n if (textParts.length === 2) {\n labelParts = {\n count: +textParts[0].trim(),\n limit: +textParts[1].trim(),\n };\n }\n if (labelParts && !isNaN(labelParts.count) && !isNaN(labelParts.limit)) {\n return labelParts;\n }\n throw new Error('The character counter indicator does not contain text in the expected format.');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9jaGFyYWN0ZXItY291bnRlci9jaGFyYWN0ZXItY291bnRlci1pbmRpY2F0b3ItaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVMxRDs7R0FFRztBQUNILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxtQkFBbUI7SUFDMUU7O09BRUc7YUFDVyxpQkFBWSxHQUFHLGlDQUFpQyxDQUFDO0lBRS9ELFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFFMUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBbUQ7UUFFbkQsT0FBTyxtQ0FBbUMsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsaUJBQWlCO1FBQzVCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsc0JBQXNCO1FBQ2pDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFdBQVc7UUFDdEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVsRCxJQUFJLFVBQWtDLENBQUM7UUFFdkMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLFVBQVUsR0FBRztnQkFDWCxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUMzQixLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2FBQzVCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLCtFQUErRSxDQUNoRixDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3JIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yLWhhcm5lc3MtZmlsdGVycyc7XG5cbnR5cGUgTGFiZWxQYXJ0cyA9IHtcbiAgY291bnQ6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbn07XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIGNoYXJhY3RlciBjb3VudGVyIGluZGljYXRvciBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9ySGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yJztcblxuICAjZ2V0TGFiZWwgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktY2hhcmFjdGVyLWNvdW50LWxhYmVsJyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3JIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5Q2hhcmFjdGVyQ291bnRlckluZGljYXRvckhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3JIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3JIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBjb3VudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDaGFyYWN0ZXJDb3VudCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0TGFiZWxQYXJ0cygpKS5jb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjaGFyYWN0ZXIgY291bnRlciBsaW1pdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDaGFyYWN0ZXJDb3VudExpbWl0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRMYWJlbFBhcnRzKCkpLmxpbWl0O1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY291bnRlciBpcyBpbiBhbiBlcnJvciBzdGF0ZSBiZWNhdXNlIHRoZSBjdXJyZW50IGNoYXJhY3RlclxuICAgKiBjb3VudCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzT3ZlckxpbWl0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0TGFiZWwoKSkuaGFzQ2xhc3MoJ3NreS1lcnJvci1sYWJlbCcpO1xuICB9XG5cbiAgYXN5bmMgI2dldExhYmVsUGFydHMoKTogUHJvbWlzZTxMYWJlbFBhcnRzPiB7XG4gICAgY29uc3QgbGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRMYWJlbCgpO1xuICAgIGNvbnN0IHRleHRQYXJ0cyA9IChhd2FpdCBsYWJlbC50ZXh0KCkpLnNwbGl0KCcvJyk7XG5cbiAgICBsZXQgbGFiZWxQYXJ0czogTGFiZWxQYXJ0cyB8IHVuZGVmaW5lZDtcblxuICAgIGlmICh0ZXh0UGFydHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBsYWJlbFBhcnRzID0ge1xuICAgICAgICBjb3VudDogK3RleHRQYXJ0c1swXS50cmltKCksXG4gICAgICAgIGxpbWl0OiArdGV4dFBhcnRzWzFdLnRyaW0oKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsUGFydHMgJiYgIWlzTmFOKGxhYmVsUGFydHMuY291bnQpICYmICFpc05hTihsYWJlbFBhcnRzLmxpbWl0KSkge1xuICAgICAgcmV0dXJuIGxhYmVsUGFydHM7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1RoZSBjaGFyYWN0ZXIgY291bnRlciBpbmRpY2F0b3IgZG9lcyBub3QgY29udGFpbiB0ZXh0IGluIHRoZSBleHBlY3RlZCBmb3JtYXQuJyxcbiAgICApO1xuICB9XG59XG4iXX0=","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\nexport class SkyFormErrorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-form-error'; }\n async #getStatusIndicator() {\n return await this.locatorFor(SkyStatusIndicatorHarness)();\n }\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorHarness` that meets certain criteria\n */\n static with(filters) {\n return SkyFormErrorHarness.getDataSkyIdPredicate(filters).addOption('errorName', filters.errorName, async (harness, errorName) => {\n const harnessErrorName = await harness.getErrorName();\n return await HarnessPredicate.stringMatches(harnessErrorName, errorName);\n });\n }\n /**\n * Gets the error name.\n */\n async getErrorName() {\n return await (await this.host()).getAttribute('data-error-name');\n }\n /**\n * Gets the error text.\n */\n async getErrorText() {\n return await (await this.#getStatusIndicator()).getText();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvZm9ybS1lcnJvci9mb3JtLWVycm9yLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJdEUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUFtQjtJQUMxRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsZ0JBQWdCLENBQUM7SUFFOUMsS0FBSyxDQUFDLG1CQUFtQjtRQUN2QixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQW1DO1FBRW5DLE9BQU8sbUJBQW1CLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUNqRSxXQUFXLEVBQ1gsT0FBTyxDQUFDLFNBQVMsRUFDakIsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUMzQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RELE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQyxhQUFhLENBQ3pDLGdCQUFnQixFQUNoQixTQUFTLENBQ1YsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsWUFBWTtRQUN2QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lTdGF0dXNJbmRpY2F0b3JIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvckhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9mb3JtLWVycm9yLWhhcm5lc3MuZmlsdGVycyc7XG5cbmV4cG9ydCBjbGFzcyBTa3lGb3JtRXJyb3JIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1mb3JtLWVycm9yJztcblxuICBhc3luYyAjZ2V0U3RhdHVzSW5kaWNhdG9yKCk6IFByb21pc2U8U2t5U3RhdHVzSW5kaWNhdG9ySGFybmVzcz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoU2t5U3RhdHVzSW5kaWNhdG9ySGFybmVzcykoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lGb3JtRXJyb3JIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lGb3JtRXJyb3JIYXJuZXNzRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lGb3JtRXJyb3JIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUZvcm1FcnJvckhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpLmFkZE9wdGlvbihcbiAgICAgICdlcnJvck5hbWUnLFxuICAgICAgZmlsdGVycy5lcnJvck5hbWUsXG4gICAgICBhc3luYyAoaGFybmVzcywgZXJyb3JOYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhcm5lc3NFcnJvck5hbWUgPSBhd2FpdCBoYXJuZXNzLmdldEVycm9yTmFtZSgpO1xuICAgICAgICByZXR1cm4gYXdhaXQgSGFybmVzc1ByZWRpY2F0ZS5zdHJpbmdNYXRjaGVzKFxuICAgICAgICAgIGhhcm5lc3NFcnJvck5hbWUsXG4gICAgICAgICAgZXJyb3JOYW1lLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVycm9yIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RXJyb3JOYW1lKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5ob3N0KCkpLmdldEF0dHJpYnV0ZSgnZGF0YS1lcnJvci1uYW1lJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZXJyb3IgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRFcnJvclRleHQoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRTdGF0dXNJbmRpY2F0b3IoKSkuZ2V0VGV4dCgpO1xuICB9XG59XG4iXX0=","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyFormErrorHarness } from './form-error-harness';\nexport class SkyFormErrorsHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-form-errors'; }\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorsHarness` that meets certain criteria\n */\n static with(filters) {\n return SkyFormErrorsHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Gets a list of all errors fired.\n */\n async getFormErrors() {\n const formErrorHarnesses = await this.locatorForAll(SkyFormErrorHarness.with({}))();\n return await Promise.all(formErrorHarnesses.map(async (formError) => {\n return { errorName: await formError.getErrorName() };\n }));\n }\n /**\n * Whether an error with the given name has fired.\n */\n async hasError(errorName) {\n const formErrors = await this.getFormErrors();\n return formErrors.some((error) => {\n return error.errorName === errorName;\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUczRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBQzNEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxpQkFBaUIsQ0FBQztJQUUvQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFvQztRQUVwQyxPQUFPLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxhQUFhO1FBQ3hCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUNqRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQzdCLEVBQUUsQ0FBQztRQUVKLE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN0QixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFpQjtRQUNyQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMvQixPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvckhhcm5lc3MgfSBmcm9tICcuL2Zvcm0tZXJyb3ItaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2Zvcm0tZXJyb3JzLWhhcm5lc3MuZmlsdGVycyc7XG5cbmV4cG9ydCBjbGFzcyBTa3lGb3JtRXJyb3JzSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZm9ybS1lcnJvcnMnO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lGb3JtRXJyb3JzSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5Rm9ybUVycm9yc0hhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUZvcm1FcnJvcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUZvcm1FcnJvcnNIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgbGlzdCBvZiBhbGwgZXJyb3JzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEZvcm1FcnJvcnMoKTogUHJvbWlzZTx7IGVycm9yTmFtZTogc3RyaW5nIHwgbnVsbCB9W10+IHtcbiAgICBjb25zdCBmb3JtRXJyb3JIYXJuZXNzZXMgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JBbGwoXG4gICAgICBTa3lGb3JtRXJyb3JIYXJuZXNzLndpdGgoe30pLFxuICAgICkoKTtcblxuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZvcm1FcnJvckhhcm5lc3Nlcy5tYXAoYXN5bmMgKGZvcm1FcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4geyBlcnJvck5hbWU6IGF3YWl0IGZvcm1FcnJvci5nZXRFcnJvck5hbWUoKSB9O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFuIGVycm9yIHdpdGggdGhlIGdpdmVuIG5hbWUgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0Vycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZm9ybUVycm9ycyA9IGF3YWl0IHRoaXMuZ2V0Rm9ybUVycm9ycygpO1xuICAgIHJldHVybiBmb3JtRXJyb3JzLnNvbWUoKGVycm9yKSA9PiB7XG4gICAgICByZXR1cm4gZXJyb3IuZXJyb3JOYW1lID09PSBlcnJvck5hbWU7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\nimport { SkyPopoverHarness } from '@skyux/popovers/testing';\nimport { SkyCharacterCounterIndicatorHarness } from '../character-counter/character-counter-indicator-harness';\nimport { SkyFormErrorHarness } from '../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n/**\n * Harness for interacting with an input box component in tests.\n */\nexport class SkyInputBoxHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-input-box'; }\n #getHintText = this.locatorForOptional('.sky-input-box-hint-text');\n #getLabel = this.locatorForOptional('.sky-control-label');\n #getWrapper = this.locatorFor('.sky-input-box');\n async #getFormError() {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInputBoxHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyInputBoxHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n await (await this.#getHelpInline()).click();\n }\n /**\n * Gets the character counter indicator for the input box or throws an error if\n * a character limit is not specified.\n */\n async getCharacterCounter() {\n const characterCounter = await this.locatorForOptional(new HarnessPredicate(SkyCharacterCounterIndicatorHarness, {\n ancestor: '.sky-input-box-label-wrapper',\n }))();\n if (!characterCounter) {\n throw new Error('The input box does not have a character limit specified.');\n }\n return characterCounter;\n }\n /**\n * Gets a list of status indicator harnesses for errors not automatically\n * handled by input box.\n */\n async getCustomErrors() {\n const errors = await this.locatorForAll(new HarnessPredicate(SkyStatusIndicatorHarness, {\n selector: 'sky-status-indicator:not(sky-form-error sky-status-indicator)',\n }))();\n return errors;\n }\n /**\n * Gets the custom form error.\n */\n async getCustomFormError(errorName) {\n return await this.locatorFor(SkyFormErrorHarness.with({ errorName: errorName }))();\n }\n /**\n * Whether the custom form error is triggered.\n */\n async hasCustomFormError(errorName) {\n return await (await this.#getFormError()).hasError(errorName);\n }\n /**\n * Whether the required field is empty.\n */\n async hasRequiredError() {\n return await (await this.#getFormError()).hasError('required');\n }\n /**\n * Whether the field has more characters than allowed.\n */\n async hasMaxLengthError() {\n return await (await this.#getFormError()).hasError('maxlength');\n }\n /**\n * Whether the field has fewer characters than allowed.\n */\n async hasMinLengthError() {\n return await (await this.#getFormError()).hasError('minlength');\n }\n /**\n * Whether the field is set to an invalid email address.\n */\n async hasEmailError() {\n return await (await this.#getFormError()).hasError('email');\n }\n /**\n * Whether the field is set to an invalid URL.\n */\n async hasUrlError() {\n return await (await this.#getFormError()).hasError('url');\n }\n /**\n * Whether the field is set to an invalid date.\n */\n async hasInvalidDateError() {\n return await (await this.#getFormError()).hasError('invalidDate');\n }\n /**\n * Whether the field is set to an invalid minimum date.\n */\n async hasMinDateError() {\n return await (await this.#getFormError()).hasError('minDate');\n }\n /**\n * Whether the field is set to an invalid maximum date.\n */\n async hasMaxDateError() {\n return await (await this.#getFormError()).hasError('maxDate');\n }\n /**\n * Whether the field is set to an invalid phone number.\n */\n async hasPhoneFieldError() {\n return await (await this.#getFormError()).hasError('phone');\n }\n /**\n * Whether the field is set to an invalid time.\n */\n async hasTimeError() {\n return await (await this.#getFormError()).hasError('time');\n }\n /**\n * Indicates whether the input box has disabled styles applied.\n */\n async getDisabled() {\n const wrapper = await this.#getWrapper();\n return await wrapper.hasClass('sky-input-box-disabled');\n }\n /**\n * Gets the text for the input box label.\n */\n async getLabelText() {\n const label = await this.#getLabel();\n return await this.#getElementTextOrDefault(label);\n }\n /**\n * Gets the help popover for the input box or throws an error if\n * the help popover is not configured.\n */\n async getHelpPopover() {\n const helpPopover = await this.locatorForOptional(new HarnessPredicate(SkyPopoverHarness, {\n ancestor: '.sky-control-help',\n }))();\n if (!helpPopover) {\n throw new Error('The input box does not have a help popover configured.');\n }\n return helpPopover;\n }\n /**2\n * Gets the help popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n /**\n * Gets the hint text for the input box.\n */\n async getHintText() {\n const hintText = await this.#getHintText();\n return await this.#getElementTextOrDefault(hintText);\n }\n /**\n * Indicates whether the input box has stacked styles applied.\n */\n async getStacked() {\n const host = await this.host();\n return await host.hasClass('sky-form-field-stacked');\n }\n async #getElementTextOrDefault(el) {\n return (await el?.text())?.trim() ?? '';\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9pbnB1dC1ib3gvaW5wdXQtYm94LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsNEJBQTRCO0lBQ2xFOztPQUVHO2FBQ1csaUJBQVksR0FBRyxlQUFlLENBQUM7SUFFN0MsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ25FLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMxRCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWhELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdH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QztJQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSwgVGVzdEVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lRdWVyeWFibGVDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreVN0YXR1c0luZGljYXRvckhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycy90ZXN0aW5nJztcbmltcG9ydCB7IFNreVBvcG92ZXJIYXJuZXNzIH0gZnJvbSAnQHNreXV4L3BvcG92ZXJzL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9ySGFybmVzcyB9IGZyb20gJy4uL2NoYXJhY3Rlci1jb3VudGVyL2NoYXJhY3Rlci1jb3VudGVyLWluZGljYXRvci1oYXJuZXNzJztcbmltcG9ydCB7IFNreUZvcm1FcnJvckhhcm5lc3MgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3ItaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzSGFybmVzcyB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtaGFybmVzcyc7XG5cbmltcG9ydCB7IFNreUlucHV0Qm94SGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2lucHV0LWJveC1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYW4gaW5wdXQgYm94IGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUlucHV0Qm94SGFybmVzcyBleHRlbmRzIFNreVF1ZXJ5YWJsZUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktaW5wdXQtYm94JztcblxuICAjZ2V0SGludFRleHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLnNreS1pbnB1dC1ib3gtaGludC10ZXh0Jyk7XG4gICNnZXRMYWJlbCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LWNvbnRyb2wtbGFiZWwnKTtcbiAgI2dldFdyYXBwZXIgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktaW5wdXQtYm94Jyk7XG5cbiAgYXN5bmMgI2dldEZvcm1FcnJvcigpOiBQcm9taXNlPFNreUZvcm1FcnJvcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihTa3lGb3JtRXJyb3JzSGFybmVzcykoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lJbnB1dEJveEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lJbnB1dEJveEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUlucHV0Qm94SGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lJbnB1dEJveEhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgaGVscCBpbmxpbmUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrSGVscElubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNoYXJhY3RlciBjb3VudGVyIGluZGljYXRvciBmb3IgdGhlIGlucHV0IGJveCBvciB0aHJvd3MgYW4gZXJyb3IgaWZcbiAgICogYSBjaGFyYWN0ZXIgbGltaXQgaXMgbm90IHNwZWNpZmllZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDaGFyYWN0ZXJDb3VudGVyKCk6IFByb21pc2U8U2t5Q2hhcmFjdGVyQ291bnRlckluZGljYXRvckhhcm5lc3M+IHtcbiAgICBjb25zdCBjaGFyYWN0ZXJDb3VudGVyID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBuZXcgSGFybmVzc1ByZWRpY2F0ZShTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9ySGFybmVzcywge1xuICAgICAgICBhbmNlc3RvcjogJy5za3ktaW5wdXQtYm94LWxhYmVsLXdyYXBwZXInLFxuICAgICAgfSksXG4gICAgKSgpO1xuXG4gICAgaWYgKCFjaGFyYWN0ZXJDb3VudGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgaW5wdXQgYm94IGRvZXMgbm90IGhhdmUgYSBjaGFyYWN0ZXIgbGltaXQgc3BlY2lmaWVkLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBsaXN0IG9mIHN0YXR1cyBpbmRpY2F0b3IgaGFybmVzc2VzIGZvciBlcnJvcnMgbm90IGF1dG9tYXRpY2FsbHlcbiAgICogaGFuZGxlZCBieSBpbnB1dCBib3guXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tRXJyb3JzKCk6IFByb21pc2U8U2t5U3RhdHVzSW5kaWNhdG9ySGFybmVzc1tdPiB7XG4gICAgY29uc3QgZXJyb3JzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yQWxsKFxuICAgICAgbmV3IEhhcm5lc3NQcmVkaWNhdGUoU2t5U3RhdHVzSW5kaWNhdG9ySGFybmVzcywge1xuICAgICAgICBzZWxlY3RvcjpcbiAgICAgICAgICAnc2t5LXN0YXR1cy1pbmRpY2F0b3I6bm90KHNreS1mb3JtLWVycm9yIHNreS1zdGF0dXMtaW5kaWNhdG9yKScsXG4gICAgICB9KSxcbiAgICApKCk7XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1c3RvbSBmb3JtIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbUZvcm1FcnJvcihcbiAgICBlcnJvck5hbWU6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxTa3lGb3JtRXJyb3JIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihcbiAgICAgIFNreUZvcm1FcnJvckhhcm5lc3Mud2l0aCh7IGVycm9yTmFtZTogZXJyb3JOYW1lIH0pLFxuICAgICkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXN0b20gZm9ybSBlcnJvciBpcyB0cmlnZ2VyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzQ3VzdG9tRm9ybUVycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3IoKSkuaGFzRXJyb3IoZXJyb3JOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXF1aXJlZCBmaWVsZCBpcyBlbXB0eS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNSZXF1aXJlZEVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9yKCkpLmhhc0Vycm9yKCdyZXF1aXJlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIGhhcyBtb3JlIGNoYXJhY3RlcnMgdGhhbiBhbGxvd2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc01heExlbmd0aEVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9yKCkpLmhhc0Vycm9yKCdtYXhsZW5ndGgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBoYXMgZmV3ZXIgY2hhcmFjdGVycyB0aGFuIGFsbG93ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzTWluTGVuZ3RoRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3IoKSkuaGFzRXJyb3IoJ21pbmxlbmd0aCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIGlzIHNldCB0byBhbiBpbnZhbGlkIGVtYWlsIGFkZHJlc3MuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzRW1haWxFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcigpKS5oYXNFcnJvcignZW1haWwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBpcyBzZXQgdG8gYW4gaW52YWxpZCBVUkwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzVXJsRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3IoKSkuaGFzRXJyb3IoJ3VybCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIGlzIHNldCB0byBhbiBpbnZhbGlkIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzSW52YWxpZERhdGVFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcigpKS5oYXNFcnJvcignaW52YWxpZERhdGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBpcyBzZXQgdG8gYW4gaW52YWxpZCBtaW5pbXVtIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzTWluRGF0ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9yKCkpLmhhc0Vycm9yKCdtaW5EYXRlJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmllbGQgaXMgc2V0IHRvIGFuIGludmFsaWQgbWF4aW11bSBkYXRlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc01heERhdGVFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcigpKS5oYXNFcnJvcignbWF4RGF0ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIGlzIHNldCB0byBhbiBpbnZhbGlkIHBob25lIG51bWJlci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNQaG9uZUZpZWxkRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3IoKSkuaGFzRXJyb3IoJ3Bob25lJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmllbGQgaXMgc2V0IHRvIGFuIGludmFsaWQgdGltZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNUaW1lRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3IoKSkuaGFzRXJyb3IoJ3RpbWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5wdXQgYm94IGhhcyBkaXNhYmxlZCBzdHlsZXMgYXBwbGllZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXREaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gYXdhaXQgdGhpcy4jZ2V0V3JhcHBlcigpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHdyYXBwZXIuaGFzQ2xhc3MoJ3NreS1pbnB1dC1ib3gtZGlzYWJsZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZXh0IGZvciB0aGUgaW5wdXQgYm94IGxhYmVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldExhYmVsVGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGxhYmVsID0gYXdhaXQgdGhpcy4jZ2V0TGFiZWwoKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLiNnZXRFbGVtZW50VGV4dE9yRGVmYXVsdChsYWJlbCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIGZvciB0aGUgaW5wdXQgYm94IG9yIHRocm93cyBhbiBlcnJvciBpZlxuICAgKiB0aGUgaGVscCBwb3BvdmVyIGlzIG5vdCBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyKCk6IFByb21pc2U8U2t5UG9wb3Zlckhhcm5lc3M+IHtcbiAgICBjb25zdCBoZWxwUG9wb3ZlciA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICAgbmV3IEhhcm5lc3NQcmVkaWNhdGUoU2t5UG9wb3Zlckhhcm5lc3MsIHtcbiAgICAgICAgYW5jZXN0b3I6ICcuc2t5LWNvbnRyb2wtaGVscCcsXG4gICAgICB9KSxcbiAgICApKCk7XG5cbiAgICBpZiAoIWhlbHBQb3BvdmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBpbnB1dCBib3ggZG9lcyBub3QgaGF2ZSBhIGhlbHAgcG9wb3ZlciBjb25maWd1cmVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBoZWxwUG9wb3ZlcjtcbiAgfVxuXG4gIC8qKjJcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJDb250ZW50KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJDb250ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIHRpdGxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyVGl0bGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlclRpdGxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGludCB0ZXh0IGZvciB0aGUgaW5wdXQgYm94LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhpbnRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgaGludFRleHQgPSBhd2FpdCB0aGlzLiNnZXRIaW50VGV4dCgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2dldEVsZW1lbnRUZXh0T3JEZWZhdWx0KGhpbnRUZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5wdXQgYm94IGhhcyBzdGFja2VkIHN0eWxlcyBhcHBsaWVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFN0YWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaG9zdCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGhvc3QuaGFzQ2xhc3MoJ3NreS1mb3JtLWZpZWxkLXN0YWNrZWQnKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRFbGVtZW50VGV4dE9yRGVmYXVsdChlbDogVGVzdEVsZW1lbnQgfCBudWxsKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IGVsPy50ZXh0KCkpPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICBhc3luYyAjZ2V0SGVscElubGluZSgpOiBQcm9taXNlPFNreUhlbHBJbmxpbmVIYXJuZXNzPiB7XG4gICAgY29uc3QgaGFybmVzcyA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFNreUhlbHBJbmxpbmVIYXJuZXNzKSgpO1xuXG4gICAgaWYgKGhhcm5lc3MpIHtcbiAgICAgIHJldHVybiBoYXJuZXNzO1xuICAgIH1cblxuICAgIHRocm93IEVycm9yKCdObyBoZWxwIGlubGluZSBmb3VuZC4nKTtcbiAgfVxufVxuIl19","import { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n/**\n * Allows interaction with a SKY UX checkbox component.\n * @internal\n * @deprecated Use `SkyCheckboxHarness` instead.\n */\nexport class SkyCheckboxFixture {\n #debugEl;\n constructor(fixture, skyTestId) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-checkbox');\n }\n /**\n * A flag indicating whether the checkbox is currently selected.\n */\n get selected() {\n return this.#getCheckboxInputEl().nativeElement.checked;\n }\n /**\n * The checkbox's label\n */\n get labelText() {\n return SkyAppTestUtility.getText(this.#debugEl.query(By.css('label.sky-checkbox-wrapper')));\n }\n /**\n * The checkbox's icon type\n */\n get iconType() {\n const svgElement = this.#debugEl.query(By.css('sky-icon svg'));\n if (svgElement) {\n return svgElement.nativeElement.getAttribute('data-sky-icon');\n }\n return undefined;\n }\n /**\n * The checkbox's type.\n */\n get checkboxType() {\n const classList = this.#getCheckboxBoxEl().nativeElement.classList;\n if (classList.contains('sky-switch-control-danger')) {\n return 'danger';\n }\n if (classList.contains('sky-switch-control-info')) {\n return 'info';\n }\n if (classList.contains('sky-switch-control-success')) {\n return 'success';\n }\n if (classList.contains('sky-switch-control-warning')) {\n return 'warning';\n }\n return undefined;\n }\n /**\n * A flag indicating whether the checkbox is currently disabled.\n */\n get disabled() {\n return this.#getCheckboxInputEl().nativeElement.disabled;\n }\n /**\n * Selects the checkbox.\n */\n select() {\n if (!this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n /**\n * Deselects the checkbox.\n */\n deselect() {\n if (this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n #clickCheckboxLabelEl() {\n this.#debugEl\n .query(By.css('label.sky-checkbox-wrapper'))\n .nativeElement.click();\n }\n #getCheckboxInputEl() {\n return this.#debugEl.query(By.css('.sky-checkbox-wrapper input'));\n }\n #getCheckboxBoxEl() {\n return this.#debugEl.query(By.css('label.sky-checkbox-wrapper span'));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9sZWdhY3kvY2hlY2tib3gtZml4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsUUFBUSxDQUFlO0lBRXZCLFlBQVksT0FBOEIsRUFBRSxTQUFpQjtRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLHVCQUF1QixDQUN2RCxPQUFPLEVBQ1AsU0FBUyxFQUNULGNBQWMsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUMxRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUUvRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxZQUFZO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFFbkUsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQztZQUNwRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxRQUFRO2FBQ1YsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQzthQUMzQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBCeSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU2t5QXBwVGVzdFV0aWxpdHkgfSBmcm9tICdAc2t5dXgtc2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEFsbG93cyBpbnRlcmFjdGlvbiB3aXRoIGEgU0tZIFVYIGNoZWNrYm94IGNvbXBvbmVudC5cbiAqIEBpbnRlcm5hbFxuICogQGRlcHJlY2F0ZWQgVXNlIGBTa3lDaGVja2JveEhhcm5lc3NgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lDaGVja2JveEZpeHR1cmUge1xuICAjZGVidWdFbDogRGVidWdFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Piwgc2t5VGVzdElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLiNkZWJ1Z0VsID0gU2t5QXBwVGVzdFV0aWxpdHkuZ2V0RGVidWdFbGVtZW50QnlUZXN0SWQoXG4gICAgICBmaXh0dXJlLFxuICAgICAgc2t5VGVzdElkLFxuICAgICAgJ3NreS1jaGVja2JveCcsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjaGVja2JveCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNnZXRDaGVja2JveElucHV0RWwoKS5uYXRpdmVFbGVtZW50LmNoZWNrZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNoZWNrYm94J3MgbGFiZWxcbiAgICovXG4gIHB1YmxpYyBnZXQgbGFiZWxUZXh0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIFNreUFwcFRlc3RVdGlsaXR5LmdldFRleHQoXG4gICAgICB0aGlzLiNkZWJ1Z0VsLnF1ZXJ5KEJ5LmNzcygnbGFiZWwuc2t5LWNoZWNrYm94LXdyYXBwZXInKSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY2hlY2tib3gncyBpY29uIHR5cGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaWNvblR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdmdFbGVtZW50ID0gdGhpcy4jZGVidWdFbC5xdWVyeShCeS5jc3MoJ3NreS1pY29uIHN2ZycpKTtcblxuICAgIGlmIChzdmdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gc3ZnRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1za3ktaWNvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNoZWNrYm94J3MgdHlwZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2hlY2tib3hUeXBlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gdGhpcy4jZ2V0Q2hlY2tib3hCb3hFbCgpLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O1xuXG4gICAgaWYgKGNsYXNzTGlzdC5jb250YWlucygnc2t5LXN3aXRjaC1jb250cm9sLWRhbmdlcicpKSB7XG4gICAgICByZXR1cm4gJ2Rhbmdlcic7XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTGlzdC5jb250YWlucygnc2t5LXN3aXRjaC1jb250cm9sLWluZm8nKSkge1xuICAgICAgcmV0dXJuICdpbmZvJztcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NMaXN0LmNvbnRhaW5zKCdza3ktc3dpdGNoLWNvbnRyb2wtc3VjY2VzcycpKSB7XG4gICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgIH1cblxuICAgIGlmIChjbGFzc0xpc3QuY29udGFpbnMoJ3NreS1zd2l0Y2gtY29udHJvbC13YXJuaW5nJykpIHtcbiAgICAgIHJldHVybiAnd2FybmluZyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjaGVja2JveCBpcyBjdXJyZW50bHkgZGlzYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNnZXRDaGVja2JveElucHV0RWwoKS5uYXRpdmVFbGVtZW50LmRpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIGNoZWNrYm94LlxuICAgKi9cbiAgcHVibGljIHNlbGVjdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuI2NsaWNrQ2hlY2tib3hMYWJlbEVsKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc2VsZWN0cyB0aGUgY2hlY2tib3guXG4gICAqL1xuICBwdWJsaWMgZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuI2NsaWNrQ2hlY2tib3hMYWJlbEVsKCk7XG4gICAgfVxuICB9XG5cbiAgI2NsaWNrQ2hlY2tib3hMYWJlbEVsKCk6IHZvaWQge1xuICAgIHRoaXMuI2RlYnVnRWxcbiAgICAgIC5xdWVyeShCeS5jc3MoJ2xhYmVsLnNreS1jaGVja2JveC13cmFwcGVyJykpXG4gICAgICAubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgI2dldENoZWNrYm94SW5wdXRFbCgpOiBEZWJ1Z0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLiNkZWJ1Z0VsLnF1ZXJ5KEJ5LmNzcygnLnNreS1jaGVja2JveC13cmFwcGVyIGlucHV0JykpO1xuICB9XG5cbiAgI2dldENoZWNrYm94Qm94RWwoKTogRGVidWdFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy4jZGVidWdFbC5xdWVyeShCeS5jc3MoJ2xhYmVsLnNreS1jaGVja2JveC13cmFwcGVyIHNwYW4nKSk7XG4gIH1cbn1cbiJdfQ==","import { ComponentHarness } from '@angular/cdk/testing';\n/**\n * Harness for interacting with a checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-checkbox-label'; }\n #getLabelContent = this.locatorFor('.sky-switch-label');\n /**\n * Gets the text content of the checkbox label.\n */\n async getText() {\n return await (await this.#getLabelContent()).text();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGFiZWwtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LWxhYmVsLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGdCQUFnQjtJQUMzRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsb0JBQW9CLENBQUM7SUFFbEQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXhEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBjaGVja2JveCBsYWJlbCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUNoZWNrYm94TGFiZWxIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1jaGVja2JveC1sYWJlbCc7XG5cbiAgI2dldExhYmVsQ29udGVudCA9IHRoaXMubG9jYXRvckZvcignLnNreS1zd2l0Y2gtbGFiZWwnKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBjaGVja2JveCBsYWJlbC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRMYWJlbENvbnRlbnQoKSkudGV4dCgpO1xuICB9XG59XG4iXX0=","import { ComponentHarness } from '@angular/cdk/testing';\n/**\n * Harness for interacting with a `labelText` checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelTextLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-checkbox-label-text-label'; }\n #getLabelContent = this.locatorForOptional('.sky-switch-label');\n /**\n * Gets the text content of the `labelText` checkbox label.\n */\n async getText() {\n return await (await this.#getLabelContent())?.text();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGFiZWwtdGV4dC1sYWJlbC5oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvY2hlY2tib3gvY2hlY2tib3gtbGFiZWwtdGV4dC1sYWJlbC5oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxnQkFBZ0I7SUFDcEU7O09BRUc7YUFDVyxpQkFBWSxHQUFHLCtCQUErQixDQUFDO0lBRTdELGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRWhFOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBgbGFiZWxUZXh0YCBjaGVja2JveCBsYWJlbCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUNoZWNrYm94TGFiZWxUZXh0TGFiZWxIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1jaGVja2JveC1sYWJlbC10ZXh0LWxhYmVsJztcblxuICAjZ2V0TGFiZWxDb250ZW50ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJy5za3ktc3dpdGNoLWxhYmVsJyk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgYGxhYmVsVGV4dGAgY2hlY2tib3ggbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VGV4dCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0TGFiZWxDb250ZW50KCkpPy50ZXh0KCk7XG4gIH1cbn1cbiJdfQ==","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\nimport { SkyCheckboxLabelHarness } from './checkbox-label-harness';\nimport { SkyCheckboxLabelTextLabelHarness } from './checkbox-label-text-label.harness';\n/**\n * Harness for interacting with a checkbox component in tests.\n */\nexport class SkyCheckboxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-checkbox'; }\n #getHintText = this.locatorForOptional('.sky-checkbox-hint-text');\n #getInput = this.locatorFor('input.sky-checkbox-input');\n #getLabel = this.locatorForOptional(SkyCheckboxLabelHarness);\n #getLabelTextLabel = this.locatorForOptional(SkyCheckboxLabelTextLabelHarness);\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyCheckboxHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Blurs the checkbox.\n */\n async blur() {\n await (await this.#getInput()).blur();\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n await (await this.#getHelpInline()).click();\n }\n /**\n * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing nothing if it is already checked.\n */\n async check() {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n /**\n * Focuses the checkbox.\n */\n async focus() {\n await (await this.#getInput()).focus();\n }\n /**\n * Gets the checkbox's aria-label.\n */\n async getAriaLabel() {\n return await (await this.#getInput()).getAttribute('aria-label');\n }\n /**\n * Gets the checkbox's aria-labelledby.\n */\n async getAriaLabelledby() {\n return await (await this.#getInput()).getAttribute('aria-labelledby');\n }\n /**\n * Gets the help popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n /**\n * Gets the checkbox's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n async getLabelText() {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n if (labelTextLabel) {\n const text = await labelTextLabel.getText();\n const ariaLabel = await this.getAriaLabel();\n // if labelText is set, ariaLabel will never return null\n return text || ariaLabel;\n }\n else {\n return await label?.getText();\n }\n }\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n async getLabelHidden() {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n if (label) {\n throw new Error('`labelHidden` is only supported when setting the checkbox label via the `labelText` input.');\n }\n else {\n return !(await labelTextLabel?.getText());\n }\n }\n /**\n * Gets the checkbox's hint text.\n */\n async getHintText() {\n const hintText = await this.#getHintText();\n return (await hintText?.text())?.trim() ?? '';\n }\n /**\n * Gets the checkbox's name.\n */\n async getName() {\n return await (await this.#getInput()).getAttribute('name');\n }\n /**\n * Gets the checkbox's value.\n */\n async getValue() {\n return await (await this.#getInput()).getProperty('value');\n }\n /**\n * Whether the checkbox displays custom error.\n */\n async hasCustomError(errorName) {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n /**\n * Whether the checkbox displays an error that it is required.\n */\n async hasRequiredError() {\n return await (await this.#getFormErrors()).hasError('required');\n }\n /**\n * Whether the checkbox is checked.\n */\n async isChecked() {\n return await (await this.#getInput()).getProperty('checked');\n }\n /**\n * Whether the checkbox is disabled.\n */\n async isDisabled() {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n /**\n * Whether the checkbox is focused.\n */\n async isFocused() {\n return await (await this.#getInput()).isFocused();\n }\n /**\n * Whether the checkbox is required.\n */\n async isRequired() {\n const value = await (await this.#getInput()).getAttribute('required');\n return value !== null;\n }\n /**\n * Whether the checkbox is stacked.\n */\n async isStacked() {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n /**\n * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing nothing if it is already unchecked.\n */\n async uncheck() {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n async #getFormErrors() {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n async #toggle() {\n if (await this.isDisabled()) {\n throw new Error('Could not toggle the checkbox because it is disabled.');\n }\n else {\n await (await this.#getInput()).click();\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdkY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsbUJBQW1CO0lBQ3pEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxjQUFjLENBQUM7SUFFNUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRWxFLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFFeEQsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRTdELGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUMsZ0NBQWdDLENBQ2pDLENBQUM7SUFFRjs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFrQztRQUVsQyxPQUFPLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFD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c3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yc0hhcm5lc3MgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lDaGVja2JveEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9jaGVja2JveC1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5Q2hlY2tib3hMYWJlbEhhcm5lc3MgfSBmcm9tICcuL2NoZWNrYm94LWxhYmVsLWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5Q2hlY2tib3hMYWJlbFRleHRMYWJlbEhhcm5lc3MgfSBmcm9tICcuL2NoZWNrYm94LWxhYmVsLXRleHQtbGFiZWwuaGFybmVzcyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIGNoZWNrYm94IGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUNoZWNrYm94SGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktY2hlY2tib3gnO1xuXG4gICNnZXRIaW50VGV4dCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LWNoZWNrYm94LWhpbnQtdGV4dCcpO1xuXG4gICNnZXRJbnB1dCA9IHRoaXMubG9jYXRvckZvcignaW5wdXQuc2t5LWNoZWNrYm94LWlucHV0Jyk7XG5cbiAgI2dldExhYmVsID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5Q2hlY2tib3hMYWJlbEhhcm5lc3MpO1xuXG4gICNnZXRMYWJlbFRleHRMYWJlbCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgIFNreUNoZWNrYm94TGFiZWxUZXh0TGFiZWxIYXJuZXNzLFxuICApO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lDaGVja2JveEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lDaGVja2JveEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUNoZWNrYm94SGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lDaGVja2JveEhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJsdXJzIHRoZSBjaGVja2JveC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBibHVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5ibHVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBoZWxwIGlubGluZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tIZWxwSW5saW5lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUHV0cyB0aGUgY2hlY2tib3ggaW4gYSBjaGVja2VkIHN0YXRlIGJ5IHRvZ2dsaW5nIGl0IGlmIGl0IGlzIGN1cnJlbnRseSB1bmNoZWNrZWQsIG9yIGRvaW5nIG5vdGhpbmcgaWYgaXQgaXMgYWxyZWFkeSBjaGVja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghKGF3YWl0IHRoaXMuaXNDaGVja2VkKCkpKSB7XG4gICAgICBhd2FpdCB0aGlzLiN0b2dnbGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgY2hlY2tib3guXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZm9jdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY2hlY2tib3gncyBhcmlhLWxhYmVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEFyaWFMYWJlbCgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNoZWNrYm94J3MgYXJpYS1sYWJlbGxlZGJ5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEFyaWFMYWJlbGxlZGJ5KCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlckNvbnRlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyVGl0bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjaGVja2JveCdzIGxhYmVsIHRleHQuIElmIHRoZSBsYWJlbCBpcyBzZXQgdmlhIGBsYWJlbFRleHRgIGFuZCBgbGFiZWxIaWRkZW5gIGlzIHRydWUsXG4gICAqIHRoZSB0ZXh0IHdpbGwgc3RpbGwgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TGFiZWxUZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgbGFiZWxUZXh0TGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRMYWJlbFRleHRMYWJlbCgpO1xuICAgIGNvbnN0IGxhYmVsID0gYXdhaXQgdGhpcy4jZ2V0TGFiZWwoKTtcblxuICAgIGlmIChsYWJlbFRleHRMYWJlbCkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGxhYmVsVGV4dExhYmVsLmdldFRleHQoKTtcbiAgICAgIGNvbnN0IGFyaWFMYWJlbCA9IGF3YWl0IHRoaXMuZ2V0QXJpYUxhYmVsKCk7XG5cbiAgICAgIC8vIGlmIGxhYmVsVGV4dCBpcyBzZXQsIGFyaWFMYWJlbCB3aWxsIG5ldmVyIHJldHVybiBudWxsXG4gICAgICByZXR1cm4gdGV4dCB8fCBhcmlhTGFiZWwhO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXdhaXQgbGFiZWw/LmdldFRleHQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbGFiZWwgaXMgaGlkZGVuLiBPbmx5IHN1cHBvcnRlZCB3aGVuIHVzaW5nIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCB0byBzZXQgdGhlIGxhYmVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldExhYmVsSGlkZGVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGxhYmVsVGV4dExhYmVsID0gYXdhaXQgdGhpcy4jZ2V0TGFiZWxUZXh0TGFiZWwoKTtcbiAgICBjb25zdCBsYWJlbCA9IGF3YWl0IHRoaXMuI2dldExhYmVsKCk7XG5cbiAgICBpZiAobGFiZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2BsYWJlbEhpZGRlbmAgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiBzZXR0aW5nIHRoZSBjaGVja2JveCBsYWJlbCB2aWEgdGhlIGBsYWJlbFRleHRgIGlucHV0LicsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gIShhd2FpdCBsYWJlbFRleHRMYWJlbD8uZ2V0VGV4dCgpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY2hlY2tib3gncyBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBoaW50VGV4dCA9IGF3YWl0IHRoaXMuI2dldEhpbnRUZXh0KCk7XG5cbiAgICByZXR1cm4gKGF3YWl0IGhpbnRUZXh0Py50ZXh0KCkpPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY2hlY2tib3gncyBuYW1lLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldE5hbWUoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjaGVja2JveCdzIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFZhbHVlKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0UHJvcGVydHk8c3RyaW5nIHwgbnVsbD4oJ3ZhbHVlJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggZGlzcGxheXMgY3VzdG9tIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0N1c3RvbUVycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpLmhhc0Vycm9yKGVycm9yTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggZGlzcGxheXMgYW4gZXJyb3IgdGhhdCBpdCBpcyByZXF1aXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNSZXF1aXJlZEVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKS5oYXNFcnJvcigncmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzQ2hlY2tlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldFByb3BlcnR5PGJvb2xlYW4+KCdjaGVja2VkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgZGlzYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNEaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBkaXNhYmxlZCA9IGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gICAgcmV0dXJuIGRpc2FibGVkICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGZvY3VzZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNGb2N1c2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuaXNGb2N1c2VkKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgcmVxdWlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNSZXF1aXJlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJyk7XG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIHN0YWNrZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNTdGFja2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5ob3N0KCkpLmhhc0NsYXNzKCdza3ktZm9ybS1maWVsZC1zdGFja2VkJyk7XG4gIH1cblxuICAvKipcbiAgICogUHV0cyB0aGUgY2hlY2tib3ggaW4gYW4gdW5jaGVja2VkIHN0YXRlIGJ5IHRvZ2dsaW5nIGl0IGlmIGl0IGlzIGN1cnJlbnRseSBjaGVja2VkLCBvciBkb2luZyBub3RoaW5nIGlmIGl0IGlzIGFscmVhZHkgdW5jaGVja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHVuY2hlY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGF3YWl0IHRoaXMuaXNDaGVja2VkKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuI3RvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jICNnZXRGb3JtRXJyb3JzKCk6IFByb21pc2U8U2t5Rm9ybUVycm9yc0hhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFNreUZvcm1FcnJvcnNIYXJuZXNzKSgpO1xuICB9XG5cbiAgYXN5bmMgI2dldEhlbHBJbmxpbmUoKTogUHJvbWlzZTxTa3lIZWxwSW5saW5lSGFybmVzcz4ge1xuICAgIGNvbnN0IGhhcm5lc3MgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lIZWxwSW5saW5lSGFybmVzcykoKTtcblxuICAgIGlmIChoYXJuZXNzKSB7XG4gICAgICByZXR1cm4gaGFybmVzcztcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcignTm8gaGVscCBpbmxpbmUgZm91bmQuJyk7XG4gIH1cblxuICBhc3luYyAjdG9nZ2xlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgdG9nZ2xlIHRoZSBjaGVja2JveCBiZWNhdXNlIGl0IGlzIGRpc2FibGVkLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuY2xpY2soKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\nimport { SkyCheckboxHarness } from './checkbox-harness';\n/**\n * Harness for interacting with a checkbox group component in tests.\n */\nexport class SkyCheckboxGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-checkbox-group'; }\n #getHeading = this.locatorFor('.sky-checkbox-group-heading');\n #getHeadingWrapper = this.locatorFor('.sky-checkbox-group-legend');\n #getHintText = this.locatorForOptional('.sky-checkbox-group-hint-text');\n #getLegendDefault = this.locatorForOptional('legend .sky-checkbox-group-heading-text');\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorFor('legend h3,h4,h5,.sky-checkbox-group-heading-text');\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxGroupHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyCheckboxGroupHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n await (await this.#getHelpInline()).click();\n }\n /**\n * Gets a specific checkbox based on the filter criteria.\n * @param filter The filter criteria.\n */\n async getCheckbox(filter) {\n return await this.locatorFor(SkyCheckboxHarness.with(filter))();\n }\n /**\n * Gets an array of checkboxes based on the filter criteria.\n * If no filter is provided, returns all checkboxes.\n * @param filter The optional filter criteria.\n */\n async getCheckboxes(filters) {\n return await this.locatorForAll(SkyCheckboxHarness.with(filters || {}))();\n }\n /**\n * Gets the help popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n /**\n * Gets the checkbox group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n async getHeadingText() {\n return await (await this.#getLegendHeading()).text();\n }\n /**\n * Gets the checkbox group's hint text.\n */\n async getHintText() {\n const hintText = await this.#getHintText();\n return (await hintText?.text())?.trim() ?? '';\n }\n /**\n * Whether the heading is hidden.\n */\n async getHeadingHidden() {\n return await (await this.#getHeadingWrapper()).hasClass('sky-screen-reader-only');\n }\n /**\n * The semantic heading level used for the checkbox group. Returns undefined if heading level is not set.\n */\n async getHeadingLevel() {\n const heading = await this.#getLegendHeading();\n const h3 = await heading.matchesSelector('h3');\n const h4 = await heading.matchesSelector('h4');\n const h5 = await heading.matchesSelector('h5');\n if (h3) {\n return 3;\n }\n else if (h4) {\n return 4;\n }\n else if (h5) {\n return 5;\n }\n else {\n return undefined;\n }\n }\n /**\n * The heading style used for the checkbox group.\n */\n async getHeadingStyle() {\n const heading = await this.#getLegendHeading();\n const isHeadingStyle3 = await heading.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await heading.hasClass('sky-font-heading-4');\n if (isHeadingStyle3) {\n return 3;\n }\n else if (isHeadingStyle4) {\n return 4;\n }\n else {\n return 5;\n }\n }\n /**\n * Whether the checkbox group is required.\n */\n async getRequired() {\n const heading = await this.#getHeading();\n return await heading.hasClass('sky-control-label-required');\n }\n /**\n * Whether the checkbox group is stacked.\n */\n async getStacked() {\n const host = await this.host();\n const heading = (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n return (((await host.hasClass('sky-form-field-stacked')) && !!label) ||\n ((await host.hasClass('sky-field-group-stacked')) && !!heading));\n }\n /**\n * Whether all the checkboxes in a required group are unchecked.\n */\n async hasRequiredError() {\n return await (await this.#getFormErrors()).hasError('required');\n }\n /**\n * Whether the checkbox group has errors.\n */\n async hasError(errorName) {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n async #getFormErrors() {\n return await this.locatorFor(SkyFormErrorsHarness.with({\n dataSkyId: 'checkbox-group-form-errors',\n }))();\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness.with({\n ancestor: '.sky-checkbox-group > .sky-checkbox-group-legend',\n }))();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LWdyb3VwLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBQzlEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxvQkFBb0IsQ0FBQztJQUVsRCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdELGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNuRSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDeEUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUN6Qyx5Q0FBeUMsQ0FDMUMsQ0FBQztJQUNGLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQ2pDLGtEQUFrRCxDQUNuRCxD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QWMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBaUI7UUFDckMsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUMxQixvQkFBb0IsQ0FBQyxJQUFJLENBQUM7WUFDeEIsU0FBUyxFQUFFLDRCQUE0QjtTQUN4QyxDQUFDLENBQ0gsRUFBRSxDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUMzQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7WUFDeEIsUUFBUSxFQUFFLGtEQUFrRDtTQUM3RCxDQUFDLENBQ0gsRUFBRSxDQUFDO1FBRUosSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHtcbiAgU2t5Q2hlY2tib3hHcm91cEhlYWRpbmdMZXZlbCxcbiAgU2t5Q2hlY2tib3hHcm91cEhlYWRpbmdTdHlsZSxcbn0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreUhlbHBJbmxpbmVIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzSGFybmVzcyB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtaGFybmVzcyc7XG5cbmltcG9ydCB7IFNreUNoZWNrYm94R3JvdXBIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vY2hlY2tib3gtZ3JvdXAtaGFybmVzcy1maWx0ZXJzJztcbmltcG9ydCB7IFNreUNoZWNrYm94SGFybmVzcyB9IGZyb20gJy4vY2hlY2tib3gtaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lDaGVja2JveEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9jaGVja2JveC1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBjaGVja2JveCBncm91cCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lDaGVja2JveEdyb3VwSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktY2hlY2tib3gtZ3JvdXAnO1xuXG4gICNnZXRIZWFkaW5nID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWNoZWNrYm94LWdyb3VwLWhlYWRpbmcnKTtcbiAgI2dldEhlYWRpbmdXcmFwcGVyID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWNoZWNrYm94LWdyb3VwLWxlZ2VuZCcpO1xuICAjZ2V0SGludFRleHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLnNreS1jaGVja2JveC1ncm91cC1oaW50LXRleHQnKTtcbiAgI2dldExlZ2VuZERlZmF1bHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAnbGVnZW5kIC5za3ktY2hlY2tib3gtZ3JvdXAtaGVhZGluZy10ZXh0JyxcbiAgKTtcbiAgI2dldExlZ2VuZEgzID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJ2xlZ2VuZCBoMycpO1xuICAjZ2V0TGVnZW5kSDQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnbGVnZW5kIGg0Jyk7XG4gICNnZXRMZWdlbmRINSA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdsZWdlbmQgaDUnKTtcbiAgI2dldExlZ2VuZEhlYWRpbmcgPSB0aGlzLmxvY2F0b3JGb3IoXG4gICAgJ2xlZ2VuZCBoMyxoNCxoNSwuc2t5LWNoZWNrYm94LWdyb3VwLWhlYWRpbmctdGV4dCcsXG4gICk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUNoZWNrYm94R3JvdXBIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5Q2hlY2tib3hHcm91cEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUNoZWNrYm94R3JvdXBIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUNoZWNrYm94R3JvdXBIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGhlbHAgaW5saW5lIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0hlbHBJbmxpbmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgc3BlY2lmaWMgY2hlY2tib3ggYmFzZWQgb24gdGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICogQHBhcmFtIGZpbHRlciBUaGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldENoZWNrYm94KFxuICAgIGZpbHRlcjogU2t5Q2hlY2tib3hIYXJuZXNzRmlsdGVycyxcbiAgKTogUHJvbWlzZTxTa3lDaGVja2JveEhhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFNreUNoZWNrYm94SGFybmVzcy53aXRoKGZpbHRlcikpKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBhcnJheSBvZiBjaGVja2JveGVzIGJhc2VkIG9uIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqIElmIG5vIGZpbHRlciBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgY2hlY2tib3hlcy5cbiAgICogQHBhcmFtIGZpbHRlciBUaGUgb3B0aW9uYWwgZmlsdGVyIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldENoZWNrYm94ZXMoXG4gICAgZmlsdGVycz86IFNreUNoZWNrYm94SGFybmVzc0ZpbHRlcnMsXG4gICk6IFByb21pc2U8U2t5Q2hlY2tib3hIYXJuZXNzW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yQWxsKFNreUNoZWNrYm94SGFybmVzcy53aXRoKGZpbHRlcnMgfHwge30pKSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyQ29udGVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyQ29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciB0aXRsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlclRpdGxlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJUaXRsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNoZWNrYm94IGdyb3VwJ3MgaGVhZGluZyB0ZXh0LiBJZiBgaGVhZGluZ0hpZGRlbmAgaXMgdHJ1ZSxcbiAgICogdGhlIHRleHQgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nVGV4dCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSGVhZGluZygpKS50ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY2hlY2tib3ggZ3JvdXAncyBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBoaW50VGV4dCA9IGF3YWl0IHRoaXMuI2dldEhpbnRUZXh0KCk7XG5cbiAgICByZXR1cm4gKGF3YWl0IGhpbnRUZXh0Py50ZXh0KCkpPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaGVhZGluZyBpcyBoaWRkZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ0hpZGRlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0SGVhZGluZ1dyYXBwZXIoKVxuICAgICkuaGFzQ2xhc3MoJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VtYW50aWMgaGVhZGluZyBsZXZlbCB1c2VkIGZvciB0aGUgY2hlY2tib3ggZ3JvdXAuIFJldHVybnMgdW5kZWZpbmVkIGlmIGhlYWRpbmcgbGV2ZWwgaXMgbm90IHNldC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nTGV2ZWwoKTogUHJvbWlzZTxcbiAgICBTa3lDaGVja2JveEdyb3VwSGVhZGluZ0xldmVsIHwgdW5kZWZpbmVkXG4gID4ge1xuICAgIGNvbnN0IGhlYWRpbmcgPSBhd2FpdCB0aGlzLiNnZXRMZWdlbmRIZWFkaW5nKCk7XG4gICAgY29uc3QgaDMgPSBhd2FpdCBoZWFkaW5nLm1hdGNoZXNTZWxlY3RvcignaDMnKTtcbiAgICBjb25zdCBoNCA9IGF3YWl0IGhlYWRpbmcubWF0Y2hlc1NlbGVjdG9yKCdoNCcpO1xuICAgIGNvbnN0IGg1ID0gYXdhaXQgaGVhZGluZy5tYXRjaGVzU2VsZWN0b3IoJ2g1Jyk7XG5cbiAgICBpZiAoaDMpIHtcbiAgICAgIHJldHVybiAzO1xuICAgIH0gZWxzZSBpZiAoaDQpIHtcbiAgICAgIHJldHVybiA0O1xuICAgIH0gZWxzZSBpZiAoaDUpIHtcbiAgICAgIHJldHVybiA1O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGluZyBzdHlsZSB1c2VkIGZvciB0aGUgY2hlY2tib3ggZ3JvdXAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ1N0eWxlKCk6IFByb21pc2U8U2t5Q2hlY2tib3hHcm91cEhlYWRpbmdTdHlsZT4ge1xuICAgIGNvbnN0IGhlYWRpbmcgPSBhd2FpdCB0aGlzLiNnZXRMZWdlbmRIZWFkaW5nKCk7XG5cbiAgICBjb25zdCBpc0hlYWRpbmdTdHlsZTMgPSBhd2FpdCBoZWFkaW5nLmhhc0NsYXNzKCdza3ktZm9udC1oZWFkaW5nLTMnKTtcbiAgICBjb25zdCBpc0hlYWRpbmdTdHlsZTQgPSBhd2FpdCBoZWFkaW5nLmhhc0NsYXNzKCdza3ktZm9udC1oZWFkaW5nLTQnKTtcblxuICAgIGlmIChpc0hlYWRpbmdTdHlsZTMpIHtcbiAgICAgIHJldHVybiAzO1xuICAgIH0gZWxzZSBpZiAoaXNIZWFkaW5nU3R5bGU0KSB7XG4gICAgICByZXR1cm4gNDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGdyb3VwIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFJlcXVpcmVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGhlYWRpbmcgPSBhd2FpdCB0aGlzLiNnZXRIZWFkaW5nKCk7XG5cbiAgICByZXR1cm4gYXdhaXQgaGVhZGluZy5oYXNDbGFzcygnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBncm91cCBpcyBzdGFja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFN0YWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaG9zdCA9IGF3YWl0IHRoaXMuaG9zdCgpO1xuICAgIGNvbnN0IGhlYWRpbmcgPVxuICAgICAgKGF3YWl0IHRoaXMuI2dldExlZ2VuZEgzKCkpIHx8XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDQoKSkgfHxcbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmRINSgpKTtcbiAgICBjb25zdCBsYWJlbCA9IGF3YWl0IHRoaXMuI2dldExlZ2VuZERlZmF1bHQoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAoKGF3YWl0IGhvc3QuaGFzQ2xhc3MoJ3NreS1mb3JtLWZpZWxkLXN0YWNrZWQnKSkgJiYgISFsYWJlbCkgfHxcbiAgICAgICgoYXdhaXQgaG9zdC5oYXNDbGFzcygnc2t5LWZpZWxkLWdyb3VwLXN0YWNrZWQnKSkgJiYgISFoZWFkaW5nKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBhbGwgdGhlIGNoZWNrYm94ZXMgaW4gYSByZXF1aXJlZCBncm91cCBhcmUgdW5jaGVja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc1JlcXVpcmVkRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpLmhhc0Vycm9yKCdyZXF1aXJlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGdyb3VwIGhhcyBlcnJvcnMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzRXJyb3IoZXJyb3JOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcnMoKSkuaGFzRXJyb3IoZXJyb3JOYW1lKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRGb3JtRXJyb3JzKCk6IFByb21pc2U8U2t5Rm9ybUVycm9yc0hhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFxuICAgICAgU2t5Rm9ybUVycm9yc0hhcm5lc3Mud2l0aCh7XG4gICAgICAgIGRhdGFTa3lJZDogJ2NoZWNrYm94LWdyb3VwLWZvcm0tZXJyb3JzJyxcbiAgICAgIH0pLFxuICAgICkoKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBTa3lIZWxwSW5saW5lSGFybmVzcy53aXRoKHtcbiAgICAgICAgYW5jZXN0b3I6ICcuc2t5LWNoZWNrYm94LWdyb3VwID4gLnNreS1jaGVja2JveC1ncm91cC1sZWdlbmQnLFxuICAgICAgfSksXG4gICAgKSgpO1xuXG4gICAgaWYgKGhhcm5lc3MpIHtcbiAgICAgIHJldHVybiBoYXJuZXNzO1xuICAgIH1cblxuICAgIHRocm93IEVycm9yKCdObyBoZWxwIGlubGluZSBmb3VuZC4nKTtcbiAgfVxufVxuIl19","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyFormErrorHarness } from '../../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../../form-error/form-errors-harness';\n/**\n * Harness for interacting with a file attachment component in tests.\n */\nexport class SkyFileAttachmentHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-file-attachment'; }\n #getButton = this.locatorFor('button.sky-file-attachment-btn');\n #getLabel = this.locatorFor('.sky-control-label');\n #input = this.locatorFor('input[type=\"file\"]');\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileAttachmentHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyFileAttachmentHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Clicks the attach file button if it is visible.\n */\n async clickAttachFileButton() {\n try {\n const button = await this.#getButton();\n if ((await button.text()).trim() === 'Replace file') {\n throw new Error();\n }\n return await button.click();\n }\n catch {\n throw new Error('Cannot click Attach file button, there is currently a file attached.');\n }\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n return await (await this.#getHelpInline()).click();\n }\n /**\n * Clicks the replace file button in default theme.\n */\n async clickReplaceFileButton() {\n try {\n const button = await this.#getButton();\n if ((await button.text()).trim() !== 'Replace file') {\n throw new Error();\n }\n return await button.click();\n }\n catch {\n throw new Error('Cannot click Replace file button, it is not visible.');\n }\n }\n /**\n * Clicks the attached file to download it.\n */\n async clickAttachedFile() {\n try {\n const file = await this.locatorFor('a')();\n return await file.click();\n }\n catch {\n throw new Error('Unable to find the attached file.');\n }\n }\n /**\n * Clicks the attached file's delete button.\n */\n async clickAttachedFileDeleteButton() {\n try {\n const deleteButton = await this.locatorFor('button.sky-file-attachment-delete')();\n return await deleteButton.click();\n }\n catch {\n throw new Error(\"Unable to find attached file's delete button. Check if a file is attached.\");\n }\n }\n /**\n * Gets the accepted file types.\n */\n async getAcceptedTypes() {\n return await (await this.#input()).getAttribute('accept');\n }\n /**\n * Gets the custom form error.\n */\n async getCustomError(errorName) {\n return await this.locatorFor(SkyFormErrorHarness.with({ errorName: errorName }))();\n }\n /**\n * Gets the help inline popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help inline popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n /**\n * Gets the hint text.\n */\n async getHintText() {\n return (await (await this.locatorFor('.sky-file-attachment-hint-text')()).text()).trim();\n }\n /**\n * Gets the file attachment label.\n */\n async getLabelText() {\n return (await (await this.#getLabel()).text()).trim();\n }\n /**\n * Whether a custom error has fired.\n */\n async hasCustomError(errorName) {\n return await (await this.#getFormErrors())?.hasError(errorName);\n }\n /**\n * Whether the wrong file type error has fired.\n */\n async hasFileTypeError() {\n return await (await this.#getFormErrors())?.hasError('fileType');\n }\n /**\n * Whether the max file size error has fired.\n */\n async hasMaxFileSizeError() {\n return await (await this.#getFormErrors())?.hasError('maxFileSize');\n }\n /**\n * Whether the min file size error has fired.\n */\n async hasMinFileSizeError() {\n return await (await this.#getFormErrors())?.hasError('minFileSize');\n }\n /**\n * Whether the required error has fired.\n */\n async hasRequiredError() {\n return await (await this.#getFormErrors())?.hasError('required');\n }\n /**\n * Whether file attachment is disabled.\n */\n async isDisabled() {\n return (await (await this.#getButton()).getAttribute('disabled')) !== null;\n }\n /**\n * Whether file attachment is required.\n */\n async isRequired() {\n return await (await this.#getLabel()).hasClass('sky-control-label-required');\n }\n /**\n * Whether file attachment has stacked enabled.\n */\n async isStacked() {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n /**\n * Attaches a file.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ```\n */\n async attachFile(file) {\n return await this.#dropFile(file);\n }\n async #dropFile(file) {\n const attachLocation = await this.locatorFor('.sky-file-attachment-upload')();\n const dataTransfer = new DataTransfer();\n dataTransfer.items.add(file);\n return await attachLocation.dispatchEvent('drop', {\n dataTransfer,\n });\n }\n async #getFormErrors() {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBTTVFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG1CQUFtQjtJQUMvRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcscUJBQXFCLENBQUM7SUFFbkQsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUMvRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFL0M7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBd0M7UUFFeEMsT0FBTyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUs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TyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RGF0YSwgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreUhlbHBJbmxpbmVIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JIYXJuZXNzIH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5Rm9ybUVycm9yc0hhcm5lc3MgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQtaGFybmVzcy1maWx0ZXJzJztcblxudHlwZSBUZXN0RGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyICYgeyBba2V5OiBzdHJpbmddOiBFdmVudERhdGEgfTtcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgZmlsZSBhdHRhY2htZW50IGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUZpbGVBdHRhY2htZW50SGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZmlsZS1hdHRhY2htZW50JztcblxuICAjZ2V0QnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCdidXR0b24uc2t5LWZpbGUtYXR0YWNobWVudC1idG4nKTtcbiAgI2dldExhYmVsID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWNvbnRyb2wtbGFiZWwnKTtcbiAgI2lucHV0ID0gdGhpcy5sb2NhdG9yRm9yKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUZpbGVBdHRhY2htZW50SGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lGaWxlQXR0YWNobWVudEhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgYXR0YWNoIGZpbGUgYnV0dG9uIGlmIGl0IGlzIHZpc2libGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hGaWxlQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRCdXR0b24oKTtcbiAgICAgIGlmICgoYXdhaXQgYnV0dG9uLnRleHQoKSkudHJpbSgpID09PSAnUmVwbGFjZSBmaWxlJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBjbGljayBBdHRhY2ggZmlsZSBidXR0b24sIHRoZXJlIGlzIGN1cnJlbnRseSBhIGZpbGUgYXR0YWNoZWQuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgaGVscCBpbmxpbmUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrSGVscElubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIHJlcGxhY2UgZmlsZSBidXR0b24gaW4gZGVmYXVsdCB0aGVtZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja1JlcGxhY2VGaWxlQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRCdXR0b24oKTtcbiAgICAgIGlmICgoYXdhaXQgYnV0dG9uLnRleHQoKSkudHJpbSgpICE9PSAnUmVwbGFjZSBmaWxlJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNsaWNrIFJlcGxhY2UgZmlsZSBidXR0b24sIGl0IGlzIG5vdCB2aXNpYmxlLicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGF0dGFjaGVkIGZpbGUgdG8gZG93bmxvYWQgaXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hlZEZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoJ2EnKSgpO1xuICAgICAgcmV0dXJuIGF3YWl0IGZpbGUuY2xpY2soKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdGhlIGF0dGFjaGVkIGZpbGUuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgYXR0YWNoZWQgZmlsZSdzIGRlbGV0ZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBdHRhY2hlZEZpbGVEZWxldGVCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlbGV0ZUJ1dHRvbiA9IGF3YWl0IHRoaXMubG9jYXRvckZvcihcbiAgICAgICAgJ2J1dHRvbi5za3ktZmlsZS1hdHRhY2htZW50LWRlbGV0ZScsXG4gICAgICApKCk7XG4gICAgICByZXR1cm4gYXdhaXQgZGVsZXRlQnV0dG9uLmNsaWNrKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgYXR0YWNoZWQgZmlsZSdzIGRlbGV0ZSBidXR0b24uIENoZWNrIGlmIGEgZmlsZSBpcyBhdHRhY2hlZC5cIixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFjY2VwdGVkIGZpbGUgdHlwZXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QWNjZXB0ZWRUeXBlcygpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2lucHV0KCkpLmdldEF0dHJpYnV0ZSgnYWNjZXB0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VzdG9tIGZvcm0gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tRXJyb3IoZXJyb3JOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFNreUZvcm1FcnJvckhhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFxuICAgICAgU2t5Rm9ybUVycm9ySGFybmVzcy53aXRoKHsgZXJyb3JOYW1lOiBlcnJvck5hbWUgfSksXG4gICAgKSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgaW5saW5lIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlckNvbnRlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIGlubGluZSBwb3BvdmVyIHRpdGxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyVGl0bGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlclRpdGxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGludCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhpbnRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IChhd2FpdCB0aGlzLmxvY2F0b3JGb3IoJy5za3ktZmlsZS1hdHRhY2htZW50LWhpbnQtdGV4dCcpKCkpLnRleHQoKVxuICAgICkudHJpbSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpbGUgYXR0YWNobWVudCBsYWJlbC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRMYWJlbFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IChhd2FpdCB0aGlzLiNnZXRMYWJlbCgpKS50ZXh0KCkpLnRyaW0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgY3VzdG9tIGVycm9yIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNDdXN0b21FcnJvcihlcnJvck5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKT8uaGFzRXJyb3IoZXJyb3JOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB3cm9uZyBmaWxlIHR5cGUgZXJyb3IgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0ZpbGVUeXBlRXJyb3IoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpPy5oYXNFcnJvcignZmlsZVR5cGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtYXggZmlsZSBzaXplIGVycm9yIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNNYXhGaWxlU2l6ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKT8uaGFzRXJyb3IoJ21heEZpbGVTaXplJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbWluIGZpbGUgc2l6ZSBlcnJvciBoYXMgZmlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzTWluRmlsZVNpemVFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcnMoKSk/Lmhhc0Vycm9yKCdtaW5GaWxlU2l6ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlcXVpcmVkIGVycm9yIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNSZXF1aXJlZEVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBmaWxlIGF0dGFjaG1lbnQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNEaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IChhd2FpdCB0aGlzLiNnZXRCdXR0b24oKSkuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpKSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGZpbGUgYXR0YWNobWVudCBpcyByZXF1aXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1JlcXVpcmVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLiNnZXRMYWJlbCgpXG4gICAgKS5oYXNDbGFzcygnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGZpbGUgYXR0YWNobWVudCBoYXMgc3RhY2tlZCBlbmFibGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzU3RhY2tlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuaG9zdCgpKS5oYXNDbGFzcygnc2t5LWZvcm0tZmllbGQtc3RhY2tlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGEgZmlsZS5cbiAgICogQmUgc3VyZSB0byBpbmNsdWRlIGBwcm92aWRlU2t5RmlsZVJlYWRlclRlc3RpbmdgIGFzIGEgcHJvdmlkZXIgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW4gdGVzdHMuXG4gICAqICBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAqICAgcHJvdmlkZXJzOiBbcHJvdmlkZVNreUZpbGVSZWFkZXJUZXN0aW5nKCldXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBhdHRhY2hGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jZHJvcEZpbGUoZmlsZSk7XG4gIH1cblxuICBhc3luYyAjZHJvcEZpbGUoZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGF0dGFjaExvY2F0aW9uID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFxuICAgICAgJy5za3ktZmlsZS1hdHRhY2htZW50LXVwbG9hZCcsXG4gICAgKSgpO1xuXG4gICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpIGFzIFRlc3REYXRhVHJhbnNmZXI7XG4gICAgZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChmaWxlKTtcblxuICAgIHJldHVybiBhd2FpdCBhdHRhY2hMb2NhdGlvbi5kaXNwYXRjaEV2ZW50KCdkcm9wJywge1xuICAgICAgZGF0YVRyYW5zZmVyLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgI2dldEZvcm1FcnJvcnMoKTogUHJvbWlzZTxTa3lGb3JtRXJyb3JzSGFybmVzcz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoU2t5Rm9ybUVycm9yc0hhcm5lc3MpKCk7XG4gIH1cblxuICBhc3luYyAjZ2V0SGVscElubGluZSgpOiBQcm9taXNlPFNreUhlbHBJbmxpbmVIYXJuZXNzPiB7XG4gICAgY29uc3QgaGFybmVzcyA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFNreUhlbHBJbmxpbmVIYXJuZXNzKSgpO1xuXG4gICAgaWYgKGhhcm5lc3MpIHtcbiAgICAgIHJldHVybiBoYXJuZXNzO1xuICAgIH1cblxuICAgIHRocm93IEVycm9yKCdObyBoZWxwIGlubGluZSBmb3VuZC4nKTtcbiAgfVxufVxuIl19","import { SkyInputHarness } from '@skyux/core/testing';\n/**\n * Harness to interact with the file drop link upload input harness.\n */\nexport class SkyFileDropLinkUploadInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'input.sky-form-control'; }\n /**\n * Gets the input aria-label\n */\n async getAriaLabel() {\n return await (await this.host()).getAttribute('aria-label');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLWxpbmstdXBsb2FkLWlucHV0LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1kcm9wL2ZpbGUtZHJvcC1saW5rLXVwbG9hZC1pbnB1dC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RDs7R0FFRztBQUNILE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxlQUFlO0lBQ3BFOztPQUVHO2FBQ1csaUJBQVksR0FBRyx3QkFBd0IsQ0FBQztJQUV0RDs7T0FFRztJQUNJLEtBQUssQ0FBQyxZQUFZO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lJbnB1dEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBIYXJuZXNzIHRvIGludGVyYWN0IHdpdGggdGhlIGZpbGUgZHJvcCBsaW5rIHVwbG9hZCBpbnB1dCBoYXJuZXNzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RmlsZURyb3BMaW5rVXBsb2FkSW5wdXRIYXJuZXNzIGV4dGVuZHMgU2t5SW5wdXRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnaW5wdXQuc2t5LWZvcm0tY29udHJvbCc7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGlucHV0IGFyaWEtbGFiZWxcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRBcmlhTGFiZWwoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLmhvc3QoKSkuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gIH1cbn1cbiJdfQ==","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyInputBoxHarness } from '../../input-box/input-box-harness';\nimport { SkyFileDropLinkUploadInputHarness } from './file-drop-link-upload-input-harness';\n/**\n * Harness for interacting with file drop component's link upload feature in tests.\n * @internal\n */\nexport class SkyFileDropLinkUploadHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = '.sky-file-drop-link'; }\n #input = this.locatorFor(SkyFileDropLinkUploadInputHarness);\n #inputBoxHarness = this.locatorFor(SkyInputBoxHarness);\n #button = this.locatorFor('button.sky-btn-primary');\n /**\n * Clicks the `Done` button\n */\n async clickDoneButton() {\n if (await this.#isDoneDisabled()) {\n throw new Error('Done button is disabled and cannot be clicked. Enter text to enable link upload.');\n }\n return await (await this.#button()).click();\n }\n /**\n * Enters text into the link upload input.\n */\n async enterText(link) {\n return await (await this.#input()).setValue(link);\n }\n /**\n * Gets the link upload aria-label.\n */\n async getAriaLabel() {\n return await (await this.#input()).getAriaLabel();\n }\n /**\n * Gets the hint text.\n */\n async getHintText() {\n return await (await this.#inputBoxHarness()).getHintText();\n }\n async #isDoneDisabled() {\n return (await (await this.#button()).getAttribute('disabled')) !== null;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLWxpbmstdXBsb2FkLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1kcm9wL2ZpbGUtZHJvcC1saW5rLXVwbG9hZC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTFGOzs7R0FHRztBQUNILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBbUI7SUFDbkU7O09BRUc7YUFDVyxpQkFBWSxHQUFHLHFCQUFxQixDQUFDO0lBRW5ELE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFcEQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZUFBZTtRQUMxQixJQUFJLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FDYixrRkFBa0YsQ0FDbkYsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBWTtRQUNqQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsWUFBWTtRQUN2QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWU7UUFDbkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUMxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lJbnB1dEJveEhhcm5lc3MgfSBmcm9tICcuLi8uLi9pbnB1dC1ib3gvaW5wdXQtYm94LWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lGaWxlRHJvcExpbmtVcGxvYWRJbnB1dEhhcm5lc3MgfSBmcm9tICcuL2ZpbGUtZHJvcC1saW5rLXVwbG9hZC1pbnB1dC1oYXJuZXNzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGZpbGUgZHJvcCBjb21wb25lbnQncyBsaW5rIHVwbG9hZCBmZWF0dXJlIGluIHRlc3RzLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lGaWxlRHJvcExpbmtVcGxvYWRIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJy5za3ktZmlsZS1kcm9wLWxpbmsnO1xuXG4gICNpbnB1dCA9IHRoaXMubG9jYXRvckZvcihTa3lGaWxlRHJvcExpbmtVcGxvYWRJbnB1dEhhcm5lc3MpO1xuICAjaW5wdXRCb3hIYXJuZXNzID0gdGhpcy5sb2NhdG9yRm9yKFNreUlucHV0Qm94SGFybmVzcyk7XG4gICNidXR0b24gPSB0aGlzLmxvY2F0b3JGb3IoJ2J1dHRvbi5za3ktYnRuLXByaW1hcnknKTtcblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBgRG9uZWAgYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tEb25lQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLiNpc0RvbmVEaXNhYmxlZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdEb25lIGJ1dHRvbiBpcyBkaXNhYmxlZCBhbmQgY2Fubm90IGJlIGNsaWNrZWQuIEVudGVyIHRleHQgdG8gZW5hYmxlIGxpbmsgdXBsb2FkLicsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2J1dHRvbigpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudGVycyB0ZXh0IGludG8gdGhlIGxpbmsgdXBsb2FkIGlucHV0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVudGVyVGV4dChsaW5rOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2lucHV0KCkpLnNldFZhbHVlKGxpbmspO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpbmsgdXBsb2FkIGFyaWEtbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QXJpYUxhYmVsKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jaW5wdXQoKSkuZ2V0QXJpYUxhYmVsKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGludCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhpbnRUZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNpbnB1dEJveEhhcm5lc3MoKSkuZ2V0SGludFRleHQoKTtcbiAgfVxuXG4gIGFzeW5jICNpc0RvbmVEaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IChhd2FpdCB0aGlzLiNidXR0b24oKSkuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpKSAhPT0gbnVsbDtcbiAgfVxufVxuIl19","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyFormErrorHarness } from '../../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../../form-error/form-errors-harness';\nimport { SkyFileDropLinkUploadHarness } from './file-drop-link-upload-harness';\n/**\n * Harness for interacting with a file drop component in tests.\n */\nexport class SkyFileDropHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-file-drop'; }\n #getDropTarget = this.locatorFor('.sky-file-drop-target');\n #input = this.locatorFor('input[type=\"file\"]');\n #fileUploadButton = this.locatorFor('button.sky-file-drop-target');\n #label = this.locatorFor('.sky-file-drop-label-text');\n #formErrors = this.locatorForAll(SkyFormErrorsHarness);\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileDropHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyFileDropHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Clicks the file drop target.\n */\n async clickFileDropTarget() {\n return await (await this.#fileUploadButton()).click();\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n return await (await this.#getHelpInline()).click();\n }\n /**\n * Clicks the link upload `Done` button'.\n */\n async clickLinkUploadDoneButton() {\n return await (await this.#getLinkUpload()).clickDoneButton();\n }\n /**\n * Enters text into the link upload input.\n */\n async enterLinkUploadText(link) {\n return await (await this.#getLinkUpload()).enterText(link);\n }\n /**\n * Gets the accepted file types.\n */\n async getAcceptedTypes() {\n return await (await this.#input()).getAttribute('accept');\n }\n /**\n * Gets the custom form error.\n */\n async getCustomError(errorName) {\n return await this.locatorFor(SkyFormErrorHarness.with({ errorName: errorName }))();\n }\n /**\n * Gets the aria-label for the file upload button.\n */\n async getFileUploadAriaLabel() {\n return await (await this.#fileUploadButton()).getAttribute('aria-label');\n }\n /**\n * Gets the help inline popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help inline popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n /**\n * Gets the hint text.\n */\n async getHintText() {\n return (await (await this.locatorFor('.sky-file-drop-hint-text')()).text()).trim();\n }\n /**\n * Gets the label text.\n */\n async getLabelText() {\n return (await (await this.#label()).text()).trim();\n }\n /**\n * Gets the link upload aria-label.\n */\n async getLinkUploadAriaLabel() {\n return await (await this.#getLinkUpload()).getAriaLabel();\n }\n /**\n * Gets the link upload hint text.\n */\n async getLinkUploadHintText() {\n return await (await this.#getLinkUpload()).getHintText();\n }\n /**\n * Whether a custom form error has fired.\n */\n async hasCustomError(errorName) {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n /**\n * Whether the file type error has fired.\n */\n async hasFileTypeError() {\n return await (await this.#getFormErrors()).hasError('fileType');\n }\n /**\n * Whether the max file size error has fired.\n */\n async hasMaxFileSizeError() {\n return await (await this.#getFormErrors()).hasError('maxFileSize');\n }\n /**\n * Whether the min file size error has fired.\n */\n async hasMinFileSizeError() {\n return await (await this.#getFormErrors()).hasError('minFileSize');\n }\n /**\n * Whether the required error has fired.\n */\n async hasRequiredError() {\n return await (await this.#getFormErrors()).hasError('required');\n }\n /**\n * Whether the validate error from the customer validation has fired.\n */\n async hasValidateFnError() {\n return await (await this.#getFormErrors()).hasError('validate');\n }\n /**\n * Whether label text is hidden.\n */\n async isLabelHidden() {\n return await (await this.locatorFor('legend.sky-control-label')()).hasClass('sky-screen-reader-only');\n }\n /**\n * Whether file drop is required.\n */\n async isRequired() {\n return await (await this.#label()).hasClass('sky-control-label-required');\n }\n /**\n * Whether file drop has stacked enabled.\n */\n async isStacked() {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n /**\n * Loads a single file.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ``\n */\n async loadFile(file) {\n await this.#dropFiles([file]);\n }\n /**\n * Loads multiple files.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ``\n */\n async loadFiles(files) {\n return await this.#dropFiles(files);\n }\n async #dropFiles(files) {\n const dropTarget = await this.#getDropTarget();\n const dataTransfer = new DataTransfer();\n files?.forEach((file) => {\n dataTransfer.items.add(file);\n });\n await dropTarget.dispatchEvent('drop', {\n dataTransfer,\n });\n }\n async #getFormErrors() {\n return (await this.#formErrors())[1];\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n async #getLinkUpload() {\n const linkUpload = await this.locatorForOptional(SkyFileDropLinkUploadHarness)();\n if (linkUpload) {\n return linkUpload;\n }\n throw new Error('Link upload cannot be found. Set `allowLinks` property to `true`.');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1kcm9wL2ZpbGUtZHJvcC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQUN6RDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsZUFBZSxDQUFDO0lBRTdDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUQsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMvQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDbkUsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUN0RCxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQWtDO1FBRWxDLE9BQU8sa0JBQWtCLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztP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QXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQzlDLDRCQUE0QixDQUM3QixFQUFFLENBQUM7UUFFSixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IsbUVBQW1FLENBQ3BFLENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnREYXRhLCBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZUhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaGVscC1pbmxpbmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvckhhcm5lc3MgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3ItaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzSGFybmVzcyB9IGZyb20gJy4uLy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtaGFybmVzcyc7XG5cbmltcG9ydCB7IFNreUZpbGVEcm9wSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2ZpbGUtZHJvcC1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5RmlsZURyb3BMaW5rVXBsb2FkSGFybmVzcyB9IGZyb20gJy4vZmlsZS1kcm9wLWxpbmstdXBsb2FkLWhhcm5lc3MnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBmaWxlIGRyb3AgY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RmlsZURyb3BIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1maWxlLWRyb3AnO1xuXG4gICNnZXREcm9wVGFyZ2V0ID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWZpbGUtZHJvcC10YXJnZXQnKTtcbiAgI2lucHV0ID0gdGhpcy5sb2NhdG9yRm9yKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpO1xuICAjZmlsZVVwbG9hZEJ1dHRvbiA9IHRoaXMubG9jYXRvckZvcignYnV0dG9uLnNreS1maWxlLWRyb3AtdGFyZ2V0Jyk7XG4gICNsYWJlbCA9IHRoaXMubG9jYXRvckZvcignLnNreS1maWxlLWRyb3AtbGFiZWwtdGV4dCcpO1xuICAjZm9ybUVycm9ycyA9IHRoaXMubG9jYXRvckZvckFsbChTa3lGb3JtRXJyb3JzSGFybmVzcyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUZpbGVEcm9wSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreUZpbGVEcm9wSGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5RmlsZURyb3BIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreUZpbGVEcm9wSGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBmaWxlIGRyb3AgdGFyZ2V0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrRmlsZURyb3BUYXJnZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNmaWxlVXBsb2FkQnV0dG9uKCkpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBoZWxwIGlubGluZSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tIZWxwSW5saW5lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgbGluayB1cGxvYWQgYERvbmVgIGJ1dHRvbicuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tMaW5rVXBsb2FkRG9uZUJ1dHRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldExpbmtVcGxvYWQoKSkuY2xpY2tEb25lQnV0dG9uKCk7XG4gIH1cblxuICAvKipcbiAgICogRW50ZXJzIHRleHQgaW50byB0aGUgbGluayB1cGxvYWQgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZW50ZXJMaW5rVXBsb2FkVGV4dChsaW5rOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldExpbmtVcGxvYWQoKSkuZW50ZXJUZXh0KGxpbmspO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFjY2VwdGVkIGZpbGUgdHlwZXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QWNjZXB0ZWRUeXBlcygpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2lucHV0KCkpLmdldEF0dHJpYnV0ZSgnYWNjZXB0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VzdG9tIGZvcm0gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tRXJyb3IoZXJyb3JOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFNreUZvcm1FcnJvckhhcm5lc3M+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKFxuICAgICAgU2t5Rm9ybUVycm9ySGFybmVzcy53aXRoKHsgZXJyb3JOYW1lOiBlcnJvck5hbWUgfSksXG4gICAgKSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFyaWEtbGFiZWwgZm9yIHRoZSBmaWxlIHVwbG9hZCBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmlsZVVwbG9hZEFyaWFMYWJlbCgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2ZpbGVVcGxvYWRCdXR0b24oKSkuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBpbmxpbmUgcG9wb3ZlciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyQ29udGVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyQ29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgaW5saW5lIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyVGl0bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgKGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1maWxlLWRyb3AtaGludC10ZXh0JykoKSkudGV4dCgpXG4gICAgKS50cmltKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbGFiZWwgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRMYWJlbFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IChhd2FpdCB0aGlzLiNsYWJlbCgpKS50ZXh0KCkpLnRyaW0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaW5rIHVwbG9hZCBhcmlhLWxhYmVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldExpbmtVcGxvYWRBcmlhTGFiZWwoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRMaW5rVXBsb2FkKCkpLmdldEFyaWFMYWJlbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpbmsgdXBsb2FkIGhpbnQgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRMaW5rVXBsb2FkSGludFRleHQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldExpbmtVcGxvYWQoKSkuZ2V0SGludFRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgY3VzdG9tIGZvcm0gZXJyb3IgaGFzIGZpcmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0N1c3RvbUVycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRGb3JtRXJyb3JzKCkpLmhhc0Vycm9yKGVycm9yTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmlsZSB0eXBlIGVycm9yIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNGaWxlVHlwZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKS5oYXNFcnJvcignZmlsZVR5cGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtYXggZmlsZSBzaXplIGVycm9yIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNNYXhGaWxlU2l6ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKS5oYXNFcnJvcignbWF4RmlsZVNpemUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtaW4gZmlsZSBzaXplIGVycm9yIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNNaW5GaWxlU2l6ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKS5oYXNFcnJvcignbWluRmlsZVNpemUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXF1aXJlZCBlcnJvciBoYXMgZmlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzUmVxdWlyZWRFcnJvcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEZvcm1FcnJvcnMoKSkuaGFzRXJyb3IoJ3JlcXVpcmVkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmFsaWRhdGUgZXJyb3IgZnJvbSB0aGUgY3VzdG9tZXIgdmFsaWRhdGlvbiBoYXMgZmlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzVmFsaWRhdGVGbkVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKS5oYXNFcnJvcigndmFsaWRhdGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGxhYmVsIHRleHQgaXMgaGlkZGVuLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzTGFiZWxIaWRkZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMubG9jYXRvckZvcignbGVnZW5kLnNreS1jb250cm9sLWxhYmVsJykoKVxuICAgICkuaGFzQ2xhc3MoJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGZpbGUgZHJvcCBpcyByZXF1aXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1JlcXVpcmVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jbGFiZWwoKSkuaGFzQ2xhc3MoJ3NreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBmaWxlIGRyb3AgaGFzIHN0YWNrZWQgZW5hYmxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1N0YWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLmhvc3QoKSkuaGFzQ2xhc3MoJ3NreS1mb3JtLWZpZWxkLXN0YWNrZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHNpbmdsZSBmaWxlLlxuICAgKiBCZSBzdXJlIHRvIGluY2x1ZGUgYHByb3ZpZGVTa3lGaWxlUmVhZGVyVGVzdGluZ2AgYXMgYSBwcm92aWRlciB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpbiB0ZXN0cy5cbiAgICogIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICogICBwcm92aWRlcnM6IFtwcm92aWRlU2t5RmlsZVJlYWRlclRlc3RpbmcoKV1cbiAgICogfSk7XG4gICAqIGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZEZpbGUoZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuI2Ryb3BGaWxlcyhbZmlsZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIG11bHRpcGxlIGZpbGVzLlxuICAgKiBCZSBzdXJlIHRvIGluY2x1ZGUgYHByb3ZpZGVTa3lGaWxlUmVhZGVyVGVzdGluZ2AgYXMgYSBwcm92aWRlciB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpbiB0ZXN0cy5cbiAgICogIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICogICBwcm92aWRlcnM6IFtwcm92aWRlU2t5RmlsZVJlYWRlclRlc3RpbmcoKV1cbiAgICogfSk7XG4gICAqIGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZEZpbGVzKGZpbGVzOiBGaWxlW10gfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2Ryb3BGaWxlcyhmaWxlcyk7XG4gIH1cblxuICBhc3luYyAjZHJvcEZpbGVzKGZpbGVzOiBGaWxlW10gfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZHJvcFRhcmdldCA9IGF3YWl0IHRoaXMuI2dldERyb3BUYXJnZXQoKTtcblxuICAgIHR5cGUgVGVzdERhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2ZlciAmIHsgW2tleTogc3RyaW5nXTogRXZlbnREYXRhIH07XG5cbiAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCkgYXMgVGVzdERhdGFUcmFuc2ZlcjtcblxuICAgIGZpbGVzPy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgZHJvcFRhcmdldC5kaXNwYXRjaEV2ZW50KCdkcm9wJywge1xuICAgICAgZGF0YVRyYW5zZmVyLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgI2dldEZvcm1FcnJvcnMoKTogUHJvbWlzZTxTa3lGb3JtRXJyb3JzSGFybmVzcz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZm9ybUVycm9ycygpKVsxXTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5SGVscElubGluZUhhcm5lc3MpKCk7XG5cbiAgICBpZiAoaGFybmVzcykge1xuICAgICAgcmV0dXJuIGhhcm5lc3M7XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoJ05vIGhlbHAgaW5saW5lIGZvdW5kLicpO1xuICB9XG5cbiAgYXN5bmMgI2dldExpbmtVcGxvYWQoKTogUHJvbWlzZTxTa3lGaWxlRHJvcExpbmtVcGxvYWRIYXJuZXNzPiB7XG4gICAgY29uc3QgbGlua1VwbG9hZCA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICAgU2t5RmlsZURyb3BMaW5rVXBsb2FkSGFybmVzcyxcbiAgICApKCk7XG5cbiAgICBpZiAobGlua1VwbG9hZCkge1xuICAgICAgcmV0dXJuIGxpbmtVcGxvYWQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0xpbmsgdXBsb2FkIGNhbm5vdCBiZSBmb3VuZC4gU2V0IGBhbGxvd0xpbmtzYCBwcm9wZXJ0eSB0byBgdHJ1ZWAuJyxcbiAgICApO1xuICB9XG59XG4iXX0=","import { provideSkyFileReaderTesting } from '@skyux/core/testing';\n/**\n * Provides mocks for file attachment testing.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileAttachmentTesting()]\n * });\n * ```\n */\nexport function provideSkyFileAttachmentTesting() {\n return [provideSkyFileReaderTesting()];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1maWxlLWF0dGFjaG1lbnQtdGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9zaGFyZWQvcHJvdmlkZS1maWxlLWF0dGFjaG1lbnQtdGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSwrQkFBK0I7SUFDN0MsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVTa3lGaWxlUmVhZGVyVGVzdGluZyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG4vKipcbiAqIFByb3ZpZGVzIG1vY2tzIGZvciBmaWxlIGF0dGFjaG1lbnQgdGVzdGluZy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICogICBwcm92aWRlcnM6IFtwcm92aWRlU2t5RmlsZUF0dGFjaG1lbnRUZXN0aW5nKCldXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVNreUZpbGVBdHRhY2htZW50VGVzdGluZygpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtwcm92aWRlU2t5RmlsZVJlYWRlclRlc3RpbmcoKV07XG59XG4iXX0=","import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n/**\n * Harness for interacting with a file item component in tests.\n */\nexport class SkyFileItemHarness extends ComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-file-item'; }\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileItemHarness` that meets certain criteria.\n */\n static with(filters) {\n return new HarnessPredicate(SkyFileItemHarness, filters).addOption('fileName', filters.fileName, async (harness, fileName) => {\n const harnessFileName = await harness.getFileName();\n return await HarnessPredicate.stringMatches(harnessFileName, fileName);\n });\n }\n /**\n * Clicks the delete button.\n */\n async clickDeleteButton() {\n return await (await this.locatorFor('.sky-file-item-btn-delete')()).click();\n }\n /**\n * Gets the file name.\n */\n async getFileName() {\n return await (await this.locatorFor('.sky-file-item-name')()).text();\n }\n /**\n * Gets the file size.\n */\n async getFileSize() {\n const size = await (await this.locatorFor('.sky-file-item-size')()).text();\n return size.substring(1, size.length - 1);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1kcm9wL2ZpbGUtaXRlbS1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTFFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGdCQUFnQjtJQUN0RDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsZUFBZSxDQUFDO0lBRTdDOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQWtDO1FBRWxDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ2hFLFVBQVUsRUFDVixPQUFPLENBQUMsUUFBUSxFQUNoQixLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzFCLE1BQU0sZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BELE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQVc7UUFDdEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRIYXJuZXNzLCBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lGaWxlSXRlbUhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9maWxlLWl0ZW0taGFybmVzcy1maWx0ZXJzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgZmlsZSBpdGVtIGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUZpbGVJdGVtSGFybmVzcyBleHRlbmRzIENvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZmlsZS1pdGVtJztcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYVxuICAgKiBgU2t5RmlsZUl0ZW1IYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5RmlsZUl0ZW1IYXJuZXNzRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lGaWxlSXRlbUhhcm5lc3M+IHtcbiAgICByZXR1cm4gbmV3IEhhcm5lc3NQcmVkaWNhdGUoU2t5RmlsZUl0ZW1IYXJuZXNzLCBmaWx0ZXJzKS5hZGRPcHRpb24oXG4gICAgICAnZmlsZU5hbWUnLFxuICAgICAgZmlsdGVycy5maWxlTmFtZSxcbiAgICAgIGFzeW5jIChoYXJuZXNzLCBmaWxlTmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBoYXJuZXNzRmlsZU5hbWUgPSBhd2FpdCBoYXJuZXNzLmdldEZpbGVOYW1lKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCBIYXJuZXNzUHJlZGljYXRlLnN0cmluZ01hdGNoZXMoaGFybmVzc0ZpbGVOYW1lLCBmaWxlTmFtZSk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBkZWxldGUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrRGVsZXRlQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWZpbGUtaXRlbS1idG4tZGVsZXRlJykoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWxlIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmlsZU5hbWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1maWxlLWl0ZW0tbmFtZScpKCkpLnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWxlIHNpemUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmlsZVNpemUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBzaXplID0gYXdhaXQgKGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1maWxlLWl0ZW0tc2l6ZScpKCkpLnRleHQoKTtcbiAgICByZXR1cm4gc2l6ZS5zdWJzdHJpbmcoMSwgc2l6ZS5sZW5ndGggLSAxKTtcbiAgfVxufVxuIl19","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n/**\n * Harness for interacting with a field group component in tests.\n */\nexport class SkyFieldGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-field-group'; }\n #getLegend = this.locatorFor('legend');\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendHeading = this.locatorFor('legend h3,h4');\n #getHintText = this.locatorForOptional('.sky-field-group-hint-text');\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFieldGroupHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyFieldGroupHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Gets the field group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n async getHeadingText() {\n return await (await this.#getLegendHeading()).text();\n }\n /**\n * Gets the field group's hint text.\n */\n async getHintText() {\n const hintText = await this.#getHintText();\n return (await hintText?.text())?.trim() ?? '';\n }\n /**\n * Whether the heading is hidden.\n */\n async getHeadingHidden() {\n return await (await this.#getLegend()).hasClass('sky-screen-reader-only');\n }\n /**\n * Whether the field group is stacked.\n */\n async getStacked() {\n const host = await this.host();\n return await host.hasClass('sky-field-group-stacked');\n }\n /**\n * The semantic heading level used for the field group.\n */\n async getHeadingLevel() {\n const h3 = await this.#getLegendH3();\n return h3 ? 3 : 4;\n }\n /**\n * The heading style used for the field group.\n */\n async getHeadingStyle() {\n const heading = (await this.#getLegendH3()) || (await this.#getLegendH4());\n return (await heading?.hasClass('sky-font-heading-3')) ? 3 : 4;\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n await (await this.#getHelpInline()).click();\n }\n /**\n * Gets the help popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness.with({\n ancestor: '.sky-field-group > .sky-field-group-legend',\n }))();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL2ZpZWxkLWdyb3VwL2ZpZWxkLWdyb3VwLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJbEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBQzNEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxpQkFBaUIsQ0FBQztJQUUvQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFFckU7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBb0M7UUFFcEMsT0FBTyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTNDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFL0IsT0FBTyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZUFBZTtRQUMxQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUUzRSxPQUFPLENBQUMsTUFBTSxPQUFPLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHFCQUFxQjtRQUNoQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0Msb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSw0Q0FBNEM7U0FDdkQsQ0FBQyxDQUNILEVBQUUsQ0FBQztRQUVKLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7XG4gIFNreUZpZWxkR3JvdXBIZWFkaW5nTGV2ZWwsXG4gIFNreUZpZWxkR3JvdXBIZWFkaW5nU3R5bGUsXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5RmllbGRHcm91cEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9maWVsZC1ncm91cC1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBmaWVsZCBncm91cCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lGaWVsZEdyb3VwSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktZmllbGQtZ3JvdXAnO1xuXG4gICNnZXRMZWdlbmQgPSB0aGlzLmxvY2F0b3JGb3IoJ2xlZ2VuZCcpO1xuICAjZ2V0TGVnZW5kSDMgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnbGVnZW5kIGgzJyk7XG4gICNnZXRMZWdlbmRINCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdsZWdlbmQgaDQnKTtcbiAgI2dldExlZ2VuZEhlYWRpbmcgPSB0aGlzLmxvY2F0b3JGb3IoJ2xlZ2VuZCBoMyxoNCcpO1xuICAjZ2V0SGludFRleHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLnNreS1maWVsZC1ncm91cC1oaW50LXRleHQnKTtcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYVxuICAgKiBgU2t5RmllbGRHcm91cEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lGaWVsZEdyb3VwSGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5RmllbGRHcm91cEhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5RmllbGRHcm91cEhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZpZWxkIGdyb3VwJ3MgaGVhZGluZyB0ZXh0LiBJZiBgaGVhZGluZ0hpZGRlbmAgaXMgdHJ1ZSxcbiAgICogdGhlIHRleHQgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nVGV4dCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSGVhZGluZygpKS50ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZmllbGQgZ3JvdXAncyBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBoaW50VGV4dCA9IGF3YWl0IHRoaXMuI2dldEhpbnRUZXh0KCk7XG5cbiAgICByZXR1cm4gKGF3YWl0IGhpbnRUZXh0Py50ZXh0KCkpPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaGVhZGluZyBpcyBoaWRkZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ0hpZGRlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldExlZ2VuZCgpKS5oYXNDbGFzcygnc2t5LXNjcmVlbi1yZWFkZXItb25seScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpZWxkIGdyb3VwIGlzIHN0YWNrZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U3RhY2tlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBob3N0ID0gYXdhaXQgdGhpcy5ob3N0KCk7XG5cbiAgICByZXR1cm4gYXdhaXQgaG9zdC5oYXNDbGFzcygnc2t5LWZpZWxkLWdyb3VwLXN0YWNrZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VtYW50aWMgaGVhZGluZyBsZXZlbCB1c2VkIGZvciB0aGUgZmllbGQgZ3JvdXAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ0xldmVsKCk6IFByb21pc2U8U2t5RmllbGRHcm91cEhlYWRpbmdMZXZlbD4ge1xuICAgIGNvbnN0IGgzID0gYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDMoKTtcblxuICAgIHJldHVybiBoMyA/IDMgOiA0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkaW5nIHN0eWxlIHVzZWQgZm9yIHRoZSBmaWVsZCBncm91cC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nU3R5bGUoKTogUHJvbWlzZTxTa3lGaWVsZEdyb3VwSGVhZGluZ1N0eWxlPiB7XG4gICAgY29uc3QgaGVhZGluZyA9IChhd2FpdCB0aGlzLiNnZXRMZWdlbmRIMygpKSB8fCAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDQoKSk7XG5cbiAgICByZXR1cm4gKGF3YWl0IGhlYWRpbmc/Lmhhc0NsYXNzKCdza3ktZm9udC1oZWFkaW5nLTMnKSkgPyAzIDogNDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGhlbHAgaW5saW5lIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0hlbHBJbmxpbmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlckNvbnRlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoZWxwIHBvcG92ZXIgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJUaXRsZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyVGl0bGUoKTtcbiAgfVxuXG4gIGFzeW5jICNnZXRIZWxwSW5saW5lKCk6IFByb21pc2U8U2t5SGVscElubGluZUhhcm5lc3M+IHtcbiAgICBjb25zdCBoYXJuZXNzID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBTa3lIZWxwSW5saW5lSGFybmVzcy53aXRoKHtcbiAgICAgICAgYW5jZXN0b3I6ICcuc2t5LWZpZWxkLWdyb3VwID4gLnNreS1maWVsZC1ncm91cC1sZWdlbmQnLFxuICAgICAgfSksXG4gICAgKSgpO1xuXG4gICAgaWYgKGhhcm5lc3MpIHtcbiAgICAgIHJldHVybiBoYXJuZXNzO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcignTm8gaGVscCBpbmxpbmUgZm91bmQuJyk7XG4gIH1cbn1cbiJdfQ==","import { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n/**\n * Allows interaction with a SKY UX radio buttons within a radio group.\n * @deprecated Use `SkyRadioHarness` instead.\n * @internal\n */\nexport class SkyRadioFixture {\n #debugEl;\n #fixture;\n constructor(fixture, skyTestId) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-radio-group');\n }\n /**\n * The selected radio button value.\n */\n get value() {\n const selectedRadio = this.#debugEl.query(By.css('sky-radio input:checked'));\n const selectedValue = selectedRadio && selectedRadio.nativeElement.value;\n return selectedValue;\n }\n /**\n * Set the selected radio button value.\n */\n set value(value) {\n const allRadioInputs = this.#getAllRadioInputEls();\n allRadioInputs.forEach((input, index) => {\n if (input.nativeElement.value === value) {\n input.nativeElement.checked = true;\n }\n else {\n input.nativeElement.checked = false;\n }\n });\n }\n /**\n * A flag indicating if every radio button in the radio group is disabled.\n */\n get disabled() {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n for (let i = 0; i < allRadioButtons.length; i++) {\n if (!this.#radioButtonDisabled(i)) {\n return false;\n }\n }\n return true;\n }\n /**\n * Set the disabled value for all radio buttons.\n */\n set disabled(value) {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n allRadioButtons.forEach((button, index) => {\n this.#setRadioButtonDisabled(index, value);\n });\n }\n #getAllSkyRadioButtonEls() {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio'));\n }\n #getAllRadioInputEls() {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio input'));\n }\n #getRadioButtonInputEl(index) {\n const allRadioInputs = this.#getAllRadioInputEls();\n if (allRadioInputs && allRadioInputs[index]) {\n return allRadioInputs[index];\n }\n /* istanbul ignore next */\n return;\n }\n #radioButtonDisabled(index) {\n const radioButton = this.#getRadioButtonInputEl(index);\n return radioButton && radioButton.nativeElement.disabled;\n }\n #setRadioButtonDisabled(index, value) {\n const radioButton = this.#getRadioButtonInputEl(index);\n /* istanbul ignore else */\n if (radioButton) {\n radioButton.nativeElement.disabled = value;\n this.#fixture.detectChanges();\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9sZWdhY3kvcmFkaW8tZml4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCLFFBQVEsQ0FBZTtJQUN2QixRQUFRLENBQXdCO0lBRWhDLFlBQVksT0FBOEIsRUFBRSxTQUFpQjtRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLHVCQUF1QixDQUN2RCxPQUFPLEVBQ1AsU0FBUyxFQUNULGlCQUFpQixDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxLQUFLO1FBQ2QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQ3ZDLEVBQUUsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FDbEMsQ0FBQztRQUNGLE1BQU0sYUFBYSxHQUFHLGFBQWEsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUV6RSxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLEtBQUssQ0FBQyxLQUFhO1FBQzVCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRW5ELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDeEMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3JDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRXhELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRXhELGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQWE7UUFDbEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFbkQsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELDBCQUEwQjtRQUMxQixPQUFPO0lBQ1QsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWE7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZELE9BQU8sV0FBVyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQzNELENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxLQUFhLEVBQUUsS0FBYztRQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkQsMEJBQTBCO1FBQzFCLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBRTNDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBCeSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU2t5QXBwVGVzdFV0aWxpdHkgfSBmcm9tICdAc2t5dXgtc2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEFsbG93cyBpbnRlcmFjdGlvbiB3aXRoIGEgU0tZIFVYIHJhZGlvIGJ1dHRvbnMgd2l0aGluIGEgcmFkaW8gZ3JvdXAuXG4gKiBAZGVwcmVjYXRlZCBVc2UgYFNreVJhZGlvSGFybmVzc2AgaW5zdGVhZC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5UmFkaW9GaXh0dXJlIHtcbiAgI2RlYnVnRWw6IERlYnVnRWxlbWVudDtcbiAgI2ZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4sIHNreVRlc3RJZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jZml4dHVyZSA9IGZpeHR1cmU7XG4gICAgdGhpcy4jZGVidWdFbCA9IFNreUFwcFRlc3RVdGlsaXR5LmdldERlYnVnRWxlbWVudEJ5VGVzdElkKFxuICAgICAgZml4dHVyZSxcbiAgICAgIHNreVRlc3RJZCxcbiAgICAgICdza3ktcmFkaW8tZ3JvdXAnLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlbGVjdGVkIHJhZGlvIGJ1dHRvbiB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWxlY3RlZFJhZGlvID0gdGhpcy4jZGVidWdFbC5xdWVyeShcbiAgICAgIEJ5LmNzcygnc2t5LXJhZGlvIGlucHV0OmNoZWNrZWQnKSxcbiAgICApO1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBzZWxlY3RlZFJhZGlvICYmIHNlbGVjdGVkUmFkaW8ubmF0aXZlRWxlbWVudC52YWx1ZTtcblxuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWxsUmFkaW9JbnB1dHMgPSB0aGlzLiNnZXRBbGxSYWRpb0lucHV0RWxzKCk7XG5cbiAgICBhbGxSYWRpb0lucHV0cy5mb3JFYWNoKChpbnB1dCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICBpbnB1dC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5wdXQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQSBmbGFnIGluZGljYXRpbmcgaWYgZXZlcnkgcmFkaW8gYnV0dG9uIGluIHRoZSByYWRpbyBncm91cCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWxsUmFkaW9CdXR0b25zID0gdGhpcy4jZ2V0QWxsU2t5UmFkaW9CdXR0b25FbHMoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsUmFkaW9CdXR0b25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuI3JhZGlvQnV0dG9uRGlzYWJsZWQoaSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRpc2FibGVkIHZhbHVlIGZvciBhbGwgcmFkaW8gYnV0dG9ucy5cbiAgICovXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBhbGxSYWRpb0J1dHRvbnMgPSB0aGlzLiNnZXRBbGxTa3lSYWRpb0J1dHRvbkVscygpO1xuXG4gICAgYWxsUmFkaW9CdXR0b25zLmZvckVhY2goKGJ1dHRvbiwgaW5kZXgpID0+IHtcbiAgICAgIHRoaXMuI3NldFJhZGlvQnV0dG9uRGlzYWJsZWQoaW5kZXgsIHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gICNnZXRBbGxTa3lSYWRpb0J1dHRvbkVscygpOiBEZWJ1Z0VsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuI2RlYnVnRWwucXVlcnlBbGwoQnkuY3NzKCcuc2t5LXJhZGlvLWdyb3VwIHNreS1yYWRpbycpKTtcbiAgfVxuXG4gICNnZXRBbGxSYWRpb0lucHV0RWxzKCk6IERlYnVnRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy4jZGVidWdFbC5xdWVyeUFsbChCeS5jc3MoJy5za3ktcmFkaW8tZ3JvdXAgc2t5LXJhZGlvIGlucHV0JykpO1xuICB9XG5cbiAgI2dldFJhZGlvQnV0dG9uSW5wdXRFbChpbmRleDogbnVtYmVyKTogRGVidWdFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBhbGxSYWRpb0lucHV0cyA9IHRoaXMuI2dldEFsbFJhZGlvSW5wdXRFbHMoKTtcblxuICAgIGlmIChhbGxSYWRpb0lucHV0cyAmJiBhbGxSYWRpb0lucHV0c1tpbmRleF0pIHtcbiAgICAgIHJldHVybiBhbGxSYWRpb0lucHV0c1tpbmRleF07XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgI3JhZGlvQnV0dG9uRGlzYWJsZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJhZGlvQnV0dG9uID0gdGhpcy4jZ2V0UmFkaW9CdXR0b25JbnB1dEVsKGluZGV4KTtcblxuICAgIHJldHVybiByYWRpb0J1dHRvbiAmJiByYWRpb0J1dHRvbi5uYXRpdmVFbGVtZW50LmRpc2FibGVkO1xuICB9XG5cbiAgI3NldFJhZGlvQnV0dG9uRGlzYWJsZWQoaW5kZXg6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCByYWRpb0J1dHRvbiA9IHRoaXMuI2dldFJhZGlvQnV0dG9uSW5wdXRFbChpbmRleCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChyYWRpb0J1dHRvbikge1xuICAgICAgcmFkaW9CdXR0b24ubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IHZhbHVlO1xuXG4gICAgICB0aGlzLiNmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { ComponentHarness } from '@angular/cdk/testing';\n/**\n * Harness for interacting with a radio label component in tests.\n * @internal\n */\nexport class SkyRadioLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-radio-label'; }\n #getLabelContent = this.locatorFor('.sky-switch-label');\n /**\n * Gets the text content of the radio label.\n */\n async getText() {\n return await (await this.#getLabelContent()).text();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGFiZWwtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL3JhZGlvL3JhZGlvLWxhYmVsLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUFnQjtJQUN4RDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsaUJBQWlCLENBQUM7SUFFL0MsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXhEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSByYWRpbyBsYWJlbCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreVJhZGlvTGFiZWxIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1yYWRpby1sYWJlbCc7XG5cbiAgI2dldExhYmVsQ29udGVudCA9IHRoaXMubG9jYXRvckZvcignLnNreS1zd2l0Y2gtbGFiZWwnKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSByYWRpbyBsYWJlbC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRMYWJlbENvbnRlbnQoKSkudGV4dCgpO1xuICB9XG59XG4iXX0=","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyRadioLabelHarness } from './radio-label-harness';\n/**\n * Harness for interacting with a radio button component in tests.\n */\nexport class SkyRadioHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-radio'; }\n #getHintText = this.locatorForOptional('.sky-radio-hint-text');\n #getInput = this.locatorFor('input.sky-radio-input');\n #getLabel = this.locatorForOptional(SkyRadioLabelHarness);\n #getLabelText = this.locatorForOptional('span.sky-switch-label.sky-radio-label-text');\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyRadioHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Blurs the radio button.\n */\n async blur() {\n await (await this.#getInput()).blur();\n }\n /**\n * Puts the radio button in a checked state if it is currently unchecked.\n */\n async check() {\n if (await this.isDisabled()) {\n throw new Error('Could not check the radio button because it is disabled.');\n }\n else if (!(await this.isChecked())) {\n await (await this.#getInput()).click();\n }\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n await (await this.#getHelpInline()).click();\n }\n /**\n * Focuses the radio button.\n */\n async focus() {\n await (await this.#getInput()).focus();\n }\n /**\n * Gets the radio button's aria-label.\n */\n async getAriaLabel() {\n return await (await this.#getInput()).getAttribute('aria-label');\n }\n /**\n * Gets the radio button's aria-labelledby.\n */\n async getAriaLabelledby() {\n return await (await this.#getInput()).getAttribute('aria-labelledby');\n }\n /**\n * Gets the help popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n /**\n * Gets the radio button's hint text.\n */\n async getHintText() {\n const hintText = await this.#getHintText();\n return (await hintText?.text())?.trim() ?? '';\n }\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n async getLabelHidden() {\n const labelText = await this.#getLabelText();\n const label = await this.#getLabel();\n if (label) {\n throw new Error('`labelHidden` is only supported when setting the radio label via the `labelText` input.');\n }\n else {\n return !!(await labelText?.hasClass('sky-screen-reader-only'));\n }\n }\n /**\n * Gets the radio button's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n async getLabelText() {\n const labelText = await this.#getLabelText();\n if (labelText) {\n return await labelText.text();\n }\n else {\n return await (await this.#getLabel())?.getText();\n }\n }\n /**\n * Gets the radio button's name.\n */\n async getName() {\n return await (await this.#getInput()).getAttribute('name');\n }\n /**\n * Whether the radio button is checked.\n */\n async isChecked() {\n return await (await this.#getInput()).getProperty('checked');\n }\n /**\n * Whether the radio button is disabled.\n */\n async isDisabled() {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n /**\n * Whether the radio button is focused.\n */\n async isFocused() {\n return await (await this.#getInput()).isFocused();\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL3JhZGlvL3JhZGlvLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxtQkFBbUI7SUFDdEQ7O09BRUc7YUFDVyxpQkFBWSxHQUFHLFdBQVcsQ0FBQztJQUV6QyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFL0QsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVyRCxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFMUQsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDckMsNENBQTRDLENBQzdDLENBQUM7SUFFRjs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUErQjtRQUUvQixPQUFPLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUNiLDBEQUEwRCxDQUMzRCxDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDMUIsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQUs7UUFDaEIsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxxQkFBcUI7UUFDaEMsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUI7UUFDOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUzQyxPQUFPLENBQUMsTUFBTSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFckMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLENBQzFGLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxTQUFTLEVBQUUsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxZQUFZO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTdDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPLE1BQU0sU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFNBQVM7UUFDcEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQVUsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sUUFBUSxLQUFLLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsU0FBUztRQUNwQixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFFdEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZUhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaGVscC1pbmxpbmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreVJhZGlvSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL3JhZGlvLWhhcm5lc3MtZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lSYWRpb0xhYmVsSGFybmVzcyB9IGZyb20gJy4vcmFkaW8tbGFiZWwtaGFybmVzcyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIHJhZGlvIGJ1dHRvbiBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lSYWRpb0hhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LXJhZGlvJztcblxuICAjZ2V0SGludFRleHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLnNreS1yYWRpby1oaW50LXRleHQnKTtcblxuICAjZ2V0SW5wdXQgPSB0aGlzLmxvY2F0b3JGb3IoJ2lucHV0LnNreS1yYWRpby1pbnB1dCcpO1xuXG4gICNnZXRMYWJlbCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFNreVJhZGlvTGFiZWxIYXJuZXNzKTtcblxuICAjZ2V0TGFiZWxUZXh0ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgJ3NwYW4uc2t5LXN3aXRjaC1sYWJlbC5za3ktcmFkaW8tbGFiZWwtdGV4dCcsXG4gICk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreVJhZGlvSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreVJhZGlvSGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5UmFkaW9IYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreVJhZGlvSGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQmx1cnMgdGhlIHJhZGlvIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBibHVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5ibHVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUHV0cyB0aGUgcmFkaW8gYnV0dG9uIGluIGEgY2hlY2tlZCBzdGF0ZSBpZiBpdCBpcyBjdXJyZW50bHkgdW5jaGVja2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ291bGQgbm90IGNoZWNrIHRoZSByYWRpbyBidXR0b24gYmVjYXVzZSBpdCBpcyBkaXNhYmxlZC4nLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCEoYXdhaXQgdGhpcy5pc0NoZWNrZWQoKSkpIHtcbiAgICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGhlbHAgaW5saW5lIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0hlbHBJbmxpbmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSByYWRpbyBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZm9jdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmFkaW8gYnV0dG9uJ3MgYXJpYS1sYWJlbC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRBcmlhTGFiZWwoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByYWRpbyBidXR0b24ncyBhcmlhLWxhYmVsbGVkYnkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QXJpYUxhYmVsbGVkYnkoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyQ29udGVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5nZXRQb3BvdmVyQ29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlbHAgcG9wb3ZlciB0aXRsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWxwUG9wb3ZlclRpdGxlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJUaXRsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJhZGlvIGJ1dHRvbidzIGhpbnQgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIaW50VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGhpbnRUZXh0ID0gYXdhaXQgdGhpcy4jZ2V0SGludFRleHQoKTtcblxuICAgIHJldHVybiAoYXdhaXQgaGludFRleHQ/LnRleHQoKSk/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsYWJlbCBpcyBoaWRkZW4uIE9ubHkgc3VwcG9ydGVkIHdoZW4gdXNpbmcgdGhlIGBsYWJlbFRleHRgIGlucHV0IHRvIHNldCB0aGUgbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TGFiZWxIaWRkZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbGFiZWxUZXh0ID0gYXdhaXQgdGhpcy4jZ2V0TGFiZWxUZXh0KCk7XG4gICAgY29uc3QgbGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRMYWJlbCgpO1xuXG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdgbGFiZWxIaWRkZW5gIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gc2V0dGluZyB0aGUgcmFkaW8gbGFiZWwgdmlhIHRoZSBgbGFiZWxUZXh0YCBpbnB1dC4nLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICEhKGF3YWl0IGxhYmVsVGV4dD8uaGFzQ2xhc3MoJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJhZGlvIGJ1dHRvbidzIGxhYmVsIHRleHQuIElmIHRoZSBsYWJlbCBpcyBzZXQgdmlhIGBsYWJlbFRleHRgIGFuZCBgbGFiZWxIaWRkZW5gIGlzIHRydWUsXG4gICAqIHRoZSB0ZXh0IHdpbGwgc3RpbGwgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TGFiZWxUZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgbGFiZWxUZXh0ID0gYXdhaXQgdGhpcy4jZ2V0TGFiZWxUZXh0KCk7XG5cbiAgICBpZiAobGFiZWxUZXh0KSB7XG4gICAgICByZXR1cm4gYXdhaXQgbGFiZWxUZXh0LnRleHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRMYWJlbCgpKT8uZ2V0VGV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByYWRpbyBidXR0b24ncyBuYW1lLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldE5hbWUoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBidXR0b24gaXMgY2hlY2tlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0NoZWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRQcm9wZXJ0eTxib29sZWFuPignY2hlY2tlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJhZGlvIGJ1dHRvbiBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0Rpc2FibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGRpc2FibGVkID0gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICByZXR1cm4gZGlzYWJsZWQgIT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGlzIGZvY3VzZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNGb2N1c2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuaXNGb2N1c2VkKCk7XG4gIH1cblxuICBhc3luYyAjZ2V0SGVscElubGluZSgpOiBQcm9taXNlPFNreUhlbHBJbmxpbmVIYXJuZXNzPiB7XG4gICAgY29uc3QgaGFybmVzcyA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFNreUhlbHBJbmxpbmVIYXJuZXNzKSgpO1xuXG4gICAgaWYgKGhhcm5lc3MpIHtcbiAgICAgIHJldHVybiBoYXJuZXNzO1xuICAgIH1cblxuICAgIHRocm93IEVycm9yKCdObyBoZWxwIGlubGluZSBmb3VuZC4nKTtcbiAgfVxufVxuIl19","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyFormErrorHarness } from '../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\nimport { SkyRadioHarness } from './radio-harness';\n/**\n * Harness for interacting with a radio group component in tests.\n */\nexport class SkyRadioGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-radio-group'; }\n #getHeading = this.locatorFor('.sky-radio-group-legend span');\n #getHeadingWrapper = this.locatorForOptional('.sky-radio-group-legend');\n #getHintText = this.locatorForOptional('.sky-radio-group-hint-text');\n #getLegendDefault = this.locatorForOptional('legend .sky-radio-group-heading-text');\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorForOptional('legend h3,h4,h5,.sky-radio-group-heading-text');\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioGroupHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyRadioGroupHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n await (await this.#getHelpInline()).click();\n }\n /**\n * Gets the custom form error.\n */\n async getCustomError(errorName) {\n return await this.locatorFor(SkyFormErrorHarness.with({ errorName: errorName }))();\n }\n /**\n * Whether the heading is hidden.\n */\n async getHeadingHidden() {\n return await ((await this.#getHeadingWrapper())?.hasClass('sky-screen-reader-only') ?? true);\n }\n /**\n * The semantic heading level used for the radio group. Returns undefined if heading level is not set.\n */\n async getHeadingLevel() {\n const h3 = await this.#getLegendH3();\n const h4 = await this.#getLegendH4();\n const h5 = await this.#getLegendH5();\n if (h3) {\n return 3;\n }\n else if (h4) {\n return 4;\n }\n else if (h5) {\n return 5;\n }\n else {\n return undefined;\n }\n }\n /**\n * The heading style used for the radio group.\n */\n async getHeadingStyle() {\n const headingOrLabel = (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5()) ||\n (await this.#getLegendDefault());\n const isHeadingStyle3 = await headingOrLabel?.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await headingOrLabel?.hasClass('sky-font-heading-4');\n if (isHeadingStyle3) {\n return 3;\n }\n else if (isHeadingStyle4) {\n return 4;\n }\n else {\n return 5;\n }\n }\n /**\n * Gets the radio group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n async getHeadingText() {\n return await ((await this.#getLegendHeading())?.text() ?? '');\n }\n /**\n * Gets the help popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n /**\n * Gets the radio group's hint text.\n */\n async getHintText() {\n const hintText = await this.#getHintText();\n return (await hintText?.text())?.trim() ?? '';\n }\n /**\n * Gets a specific radio button based on the filter criteria.\n * @param filter The filter criteria.\n */\n async getRadioButton(filter) {\n return await this.locatorFor(SkyRadioHarness.with(filter))();\n }\n /**\n * Gets an array of radio buttons based on the filter criteria.\n * If no filter is provided, returns all radio buttons.\n * @param filters The optional filter criteria.\n */\n async getRadioButtons(filters) {\n return await this.locatorForAll(SkyRadioHarness.with(filters || {}))();\n }\n /**\n * Whether the radio group is required.\n */\n async getRequired() {\n const headingWrapper = await this.#getHeading();\n return await headingWrapper.hasClass('sky-control-label-required');\n }\n /**\n * Whether the radio group is stacked.\n */\n async getStacked() {\n const host = await this.host();\n const heading = (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n return (((await host.hasClass('sky-form-field-stacked')) && !!label) ||\n ((await host.hasClass('sky-field-group-stacked')) && !!heading));\n }\n /**\n * Whether a form error with the specified name has fired.\n */\n async hasError(errorName) {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n async #getFormErrors() {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness.with({\n ancestor: '.sky-radio-group > .sky-radio-group-legend',\n }))();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL3JhZGlvL3JhZGlvLWdyb3VwLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2xEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQUMzRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsaUJBQWlCLENBQUM7SUFFL0MsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM5RCxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN4RSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDckUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUN6QyxzQ0FBc0MsQ0FDdkMsQ0FBQztJQUNGLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELGlCQUFpQixHQUFH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QkFBaUIsRUFBRSxDQUFDO1FBRTdDLE9BQU8sQ0FDTCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzVELENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBaUI7UUFDckMsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQzNDLG9CQUFvQixDQUFDLElBQUksQ0FBQztZQUN4QixRQUFRLEVBQUUsNENBQTRDO1NBQ3ZELENBQUMsQ0FDSCxFQUFFLENBQUM7UUFFSixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5pbXBvcnQge1xuICBTa3lSYWRpb0dyb3VwSGVhZGluZ0xldmVsLFxuICBTa3lSYWRpb0dyb3VwSGVhZGluZ1N0eWxlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZUhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaGVscC1pbmxpbmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvckhhcm5lc3MgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3ItaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzSGFybmVzcyB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtaGFybmVzcyc7XG5cbmltcG9ydCB7IFNreVJhZGlvR3JvdXBIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vcmFkaW8tZ3JvdXAtaGFybmVzcy1maWx0ZXJzJztcbmltcG9ydCB7IFNreVJhZGlvSGFybmVzcyB9IGZyb20gJy4vcmFkaW8taGFybmVzcyc7XG5pbXBvcnQgeyBTa3lSYWRpb0hhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9yYWRpby1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSByYWRpbyBncm91cCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lSYWRpb0dyb3VwSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktcmFkaW8tZ3JvdXAnO1xuXG4gICNnZXRIZWFkaW5nID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LXJhZGlvLWdyb3VwLWxlZ2VuZCBzcGFuJyk7XG4gICNnZXRIZWFkaW5nV3JhcHBlciA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCcuc2t5LXJhZGlvLWdyb3VwLWxlZ2VuZCcpO1xuICAjZ2V0SGludFRleHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLnNreS1yYWRpby1ncm91cC1oaW50LXRleHQnKTtcbiAgI2dldExlZ2VuZERlZmF1bHQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAnbGVnZW5kIC5za3ktcmFkaW8tZ3JvdXAtaGVhZGluZy10ZXh0JyxcbiAgKTtcbiAgI2dldExlZ2VuZEgzID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJ2xlZ2VuZCBoMycpO1xuICAjZ2V0TGVnZW5kSDQgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnbGVnZW5kIGg0Jyk7XG4gICNnZXRMZWdlbmRINSA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKCdsZWdlbmQgaDUnKTtcbiAgI2dldExlZ2VuZEhlYWRpbmcgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAnbGVnZW5kIGgzLGg0LGg1LC5za3ktcmFkaW8tZ3JvdXAtaGVhZGluZy10ZXh0JyxcbiAgKTtcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYVxuICAgKiBgU2t5UmFkaW9Hcm91cEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lSYWRpb0dyb3VwSGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5UmFkaW9Hcm91cEhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5UmFkaW9Hcm91cEhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgaGVscCBpbmxpbmUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrSGVscElubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1c3RvbSBmb3JtIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbUVycm9yKGVycm9yTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTa3lGb3JtRXJyb3JIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihcbiAgICAgIFNreUZvcm1FcnJvckhhcm5lc3Mud2l0aCh7IGVycm9yTmFtZTogZXJyb3JOYW1lIH0pLFxuICAgICkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBoZWFkaW5nIGlzIGhpZGRlbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nSGlkZGVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoKFxuICAgICAgYXdhaXQgdGhpcy4jZ2V0SGVhZGluZ1dyYXBwZXIoKVxuICAgICk/Lmhhc0NsYXNzKCdza3ktc2NyZWVuLXJlYWRlci1vbmx5JykgPz8gdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlbWFudGljIGhlYWRpbmcgbGV2ZWwgdXNlZCBmb3IgdGhlIHJhZGlvIGdyb3VwLiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBoZWFkaW5nIGxldmVsIGlzIG5vdCBzZXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVhZGluZ0xldmVsKCk6IFByb21pc2U8XG4gICAgU2t5UmFkaW9Hcm91cEhlYWRpbmdMZXZlbCB8IHVuZGVmaW5lZFxuICA+IHtcbiAgICBjb25zdCBoMyA9IGF3YWl0IHRoaXMuI2dldExlZ2VuZEgzKCk7XG4gICAgY29uc3QgaDQgPSBhd2FpdCB0aGlzLiNnZXRMZWdlbmRINCgpO1xuICAgIGNvbnN0IGg1ID0gYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDUoKTtcblxuICAgIGlmIChoMykge1xuICAgICAgcmV0dXJuIDM7XG4gICAgfSBlbHNlIGlmIChoNCkge1xuICAgICAgcmV0dXJuIDQ7XG4gICAgfSBlbHNlIGlmIChoNSkge1xuICAgICAgcmV0dXJuIDU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkaW5nIHN0eWxlIHVzZWQgZm9yIHRoZSByYWRpbyBncm91cC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nU3R5bGUoKTogUHJvbWlzZTxTa3lSYWRpb0dyb3VwSGVhZGluZ1N0eWxlPiB7XG4gICAgY29uc3QgaGVhZGluZ09yTGFiZWwgPVxuICAgICAgKGF3YWl0IHRoaXMuI2dldExlZ2VuZEgzKCkpIHx8XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDQoKSkgfHxcbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmRINSgpKSB8fFxuICAgICAgKGF3YWl0IHRoaXMuI2dldExlZ2VuZERlZmF1bHQoKSk7XG5cbiAgICBjb25zdCBpc0hlYWRpbmdTdHlsZTMgPVxuICAgICAgYXdhaXQgaGVhZGluZ09yTGFiZWw/Lmhhc0NsYXNzKCdza3ktZm9udC1oZWFkaW5nLTMnKTtcbiAgICBjb25zdCBpc0hlYWRpbmdTdHlsZTQgPVxuICAgICAgYXdhaXQgaGVhZGluZ09yTGFiZWw/Lmhhc0NsYXNzKCdza3ktZm9udC1oZWFkaW5nLTQnKTtcblxuICAgIGlmIChpc0hlYWRpbmdTdHlsZTMpIHtcbiAgICAgIHJldHVybiAzO1xuICAgIH0gZWxzZSBpZiAoaXNIZWFkaW5nU3R5bGU0KSB7XG4gICAgICByZXR1cm4gNDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJhZGlvIGdyb3VwJ3MgaGVhZGluZyB0ZXh0LiBJZiBgaGVhZGluZ0hpZGRlbmAgaXMgdHJ1ZSxcbiAgICogdGhlIHRleHQgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkaW5nVGV4dCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCAoKGF3YWl0IHRoaXMuI2dldExlZ2VuZEhlYWRpbmcoKSk/LnRleHQoKSA/PyAnJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJDb250ZW50KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJDb250ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIHRpdGxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyVGl0bGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlclRpdGxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmFkaW8gZ3JvdXAncyBoaW50IHRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGludFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBoaW50VGV4dCA9IGF3YWl0IHRoaXMuI2dldEhpbnRUZXh0KCk7XG5cbiAgICByZXR1cm4gKGF3YWl0IGhpbnRUZXh0Py50ZXh0KCkpPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIHNwZWNpZmljIHJhZGlvIGJ1dHRvbiBiYXNlZCBvbiB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UmFkaW9CdXR0b24oXG4gICAgZmlsdGVyOiBTa3lSYWRpb0hhcm5lc3NGaWx0ZXJzLFxuICApOiBQcm9taXNlPFNreVJhZGlvSGFybmVzcz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoU2t5UmFkaW9IYXJuZXNzLndpdGgoZmlsdGVyKSkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGFycmF5IG9mIHJhZGlvIGJ1dHRvbnMgYmFzZWQgb24gdGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICogSWYgbm8gZmlsdGVyIGlzIHByb3ZpZGVkLCByZXR1cm5zIGFsbCByYWRpbyBidXR0b25zLlxuICAgKiBAcGFyYW0gZmlsdGVycyBUaGUgb3B0aW9uYWwgZmlsdGVyIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFJhZGlvQnV0dG9ucyhcbiAgICBmaWx0ZXJzPzogU2t5UmFkaW9IYXJuZXNzRmlsdGVycyxcbiAgKTogUHJvbWlzZTxTa3lSYWRpb0hhcm5lc3NbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2F0b3JGb3JBbGwoU2t5UmFkaW9IYXJuZXNzLndpdGgoZmlsdGVycyB8fCB7fSkpKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gZ3JvdXAgaXMgcmVxdWlyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlyZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaGVhZGluZ1dyYXBwZXIgPSBhd2FpdCB0aGlzLiNnZXRIZWFkaW5nKCk7XG5cbiAgICByZXR1cm4gYXdhaXQgaGVhZGluZ1dyYXBwZXIuaGFzQ2xhc3MoJ3NreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gZ3JvdXAgaXMgc3RhY2tlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTdGFja2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGhvc3QgPSBhd2FpdCB0aGlzLmhvc3QoKTtcbiAgICBjb25zdCBoZWFkaW5nID1cbiAgICAgIChhd2FpdCB0aGlzLiNnZXRMZWdlbmRIMygpKSB8fFxuICAgICAgKGF3YWl0IHRoaXMuI2dldExlZ2VuZEg0KCkpIHx8XG4gICAgICAoYXdhaXQgdGhpcy4jZ2V0TGVnZW5kSDUoKSk7XG4gICAgY29uc3QgbGFiZWwgPSBhd2FpdCB0aGlzLiNnZXRMZWdlbmREZWZhdWx0KCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgKChhd2FpdCBob3N0Lmhhc0NsYXNzKCdza3ktZm9ybS1maWVsZC1zdGFja2VkJykpICYmICEhbGFiZWwpIHx8XG4gICAgICAoKGF3YWl0IGhvc3QuaGFzQ2xhc3MoJ3NreS1maWVsZC1ncm91cC1zdGFja2VkJykpICYmICEhaGVhZGluZylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBmb3JtIGVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGhhcyBmaXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNFcnJvcihlcnJvck5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0Rm9ybUVycm9ycygpKS5oYXNFcnJvcihlcnJvck5hbWUpO1xuICB9XG5cbiAgYXN5bmMgI2dldEZvcm1FcnJvcnMoKTogUHJvbWlzZTxTa3lGb3JtRXJyb3JzSGFybmVzcz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoU2t5Rm9ybUVycm9yc0hhcm5lc3MpKCk7XG4gIH1cblxuICBhc3luYyAjZ2V0SGVscElubGluZSgpOiBQcm9taXNlPFNreUhlbHBJbmxpbmVIYXJuZXNzPiB7XG4gICAgY29uc3QgaGFybmVzcyA9IGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICAgU2t5SGVscElubGluZUhhcm5lc3Mud2l0aCh7XG4gICAgICAgIGFuY2VzdG9yOiAnLnNreS1yYWRpby1ncm91cCA+IC5za3ktcmFkaW8tZ3JvdXAtbGVnZW5kJyxcbiAgICAgIH0pLFxuICAgICkoKTtcblxuICAgIGlmIChoYXJuZXNzKSB7XG4gICAgICByZXR1cm4gaGFybmVzcztcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcignTm8gaGVscCBpbmxpbmUgZm91bmQuJyk7XG4gIH1cbn1cbiJdfQ==","import { SkyComponentHarness } from '@skyux/core/testing';\n/**\n * Harness to interact with a selection box description component in tests.\n * @internal\n */\nexport class SkySelectionBoxDescriptionHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-selection-box-description'; }\n /**\n * Gets the description text.\n */\n async getText() {\n return (await (await this.host()).text()).trim();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC1kZXNjcmlwdGlvbi1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvc2VsZWN0aW9uLWJveC9zZWxlY3Rpb24tYm94LWRlc2NyaXB0aW9uLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLG1CQUFtQjtJQUN4RTs7T0FFRzthQUNXLGlCQUFZLEdBQUcsK0JBQStCLENBQUM7SUFFN0Q7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBTztRQUNsQixPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEhhcm5lc3MgdG8gaW50ZXJhY3Qgd2l0aCBhIHNlbGVjdGlvbiBib3ggZGVzY3JpcHRpb24gY29tcG9uZW50IGluIHRlc3RzLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Cb3hEZXNjcmlwdGlvbkhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LXNlbGVjdGlvbi1ib3gtZGVzY3JpcHRpb24nO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZXNjcmlwdGlvbiB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IChhd2FpdCB0aGlzLmhvc3QoKSkudGV4dCgpKS50cmltKCk7XG4gIH1cbn1cbiJdfQ==","import { SkyComponentHarness } from '@skyux/core/testing';\n/**\n * Harness to interact with a selection box header component in tests.\n * @internal\n */\nexport class SkySelectionBoxHeaderHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-selection-box-header'; }\n /**\n * Gets the header text.\n */\n async getText() {\n return (await (await this.host()).text()).trim();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC1oZWFkZXItaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9tb2R1bGVzL3NlbGVjdGlvbi1ib3gvc2VsZWN0aW9uLWJveC1oZWFkZXItaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsbUJBQW1CO0lBQ25FOztPQUVHO2FBQ1csaUJBQVksR0FBRywwQkFBMEIsQ0FBQztJQUV4RDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbi8qKlxuICogSGFybmVzcyB0byBpbnRlcmFjdCB3aXRoIGEgc2VsZWN0aW9uIGJveCBoZWFkZXIgY29tcG9uZW50IGluIHRlc3RzLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Cb3hIZWFkZXJIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1zZWxlY3Rpb24tYm94LWhlYWRlcic7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhlYWRlciB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IChhd2FpdCB0aGlzLmhvc3QoKSkudGV4dCgpKS50cmltKCk7XG4gIH1cbn1cbiJdfQ==","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyIconHarness } from '@skyux/icon/testing';\nimport { SkyCheckboxHarness } from '../checkbox/checkbox-harness';\nimport { SkyRadioHarness } from '../radio/radio-harness';\nimport { SkySelectionBoxDescriptionHarness } from './selection-box-description-harness';\nimport { SkySelectionBoxHeaderHarness } from './selection-box-header-harness';\n/**\n * Harness to interact with a selection box component in tests.\n */\nexport class SkySelectionBoxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-selection-box'; }\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySelectionBoxHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkySelectionBoxHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Gets the checkbox or radio harness for the selection box form control.\n */\n async getControl() {\n return await this.locatorFor(SkyCheckboxHarness, SkyRadioHarness)();\n }\n /**\n * Gets the selection box description text.\n */\n async getDescriptionText() {\n const text = await (await this.locatorForOptional(SkySelectionBoxDescriptionHarness)())?.getText();\n return text ?? '';\n }\n /**\n * Gets the selection box header text.\n */\n async getHeaderText() {\n const text = await (await this.locatorForOptional(SkySelectionBoxHeaderHarness)())?.getText();\n return text ?? '';\n }\n /**\n * Gets the selection box icon, if it exists.\n */\n async getIcon() {\n return await this.locatorForOptional(SkyIconHarness)();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvc2VsZWN0aW9uLWJveC9zZWxlY3Rpb24tYm94LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV4RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU5RTs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxtQkFBbUI7SUFDN0Q7O09BRUc7YUFDVyxpQkFBWSxHQUFHLG1CQUFtQixDQUFDO0lBRWpEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQXNDO1FBRXRDLE9BQU8sc0JBQXNCLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsa0JBQWtCO1FBQzdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FDakIsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUNBQWlDLENBQUMsRUFBRSxDQUNuRSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxhQUFhO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FDakIsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUM5RCxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE9BQU8sTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztJQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreUljb25IYXJuZXNzIH0gZnJvbSAnQHNreXV4L2ljb24vdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreUNoZWNrYm94SGFybmVzcyB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5UmFkaW9IYXJuZXNzIH0gZnJvbSAnLi4vcmFkaW8vcmFkaW8taGFybmVzcyc7XG5cbmltcG9ydCB7IFNreVNlbGVjdGlvbkJveERlc2NyaXB0aW9uSGFybmVzcyB9IGZyb20gJy4vc2VsZWN0aW9uLWJveC1kZXNjcmlwdGlvbi1oYXJuZXNzJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbkJveEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9zZWxlY3Rpb24tYm94LWhhcm5lc3MtZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Cb3hIZWFkZXJIYXJuZXNzIH0gZnJvbSAnLi9zZWxlY3Rpb24tYm94LWhlYWRlci1oYXJuZXNzJztcblxuLyoqXG4gKiBIYXJuZXNzIHRvIGludGVyYWN0IHdpdGggYSBzZWxlY3Rpb24gYm94IGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreVNlbGVjdGlvbkJveEhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LXNlbGVjdGlvbi1ib3gnO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lTZWxlY3Rpb25Cb3hIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5U2VsZWN0aW9uQm94SGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5U2VsZWN0aW9uQm94SGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lTZWxlY3Rpb25Cb3hIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjaGVja2JveCBvciByYWRpbyBoYXJuZXNzIGZvciB0aGUgc2VsZWN0aW9uIGJveCBmb3JtIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q29udHJvbCgpOiBQcm9taXNlPFNreUNoZWNrYm94SGFybmVzcyB8IFNreVJhZGlvSGFybmVzcz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2F0b3JGb3IoU2t5Q2hlY2tib3hIYXJuZXNzLCBTa3lSYWRpb0hhcm5lc3MpKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VsZWN0aW9uIGJveCBkZXNjcmlwdGlvbiB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldERlc2NyaXB0aW9uVGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHRleHQgPSBhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lTZWxlY3Rpb25Cb3hEZXNjcmlwdGlvbkhhcm5lc3MpKClcbiAgICApPy5nZXRUZXh0KCk7XG4gICAgcmV0dXJuIHRleHQgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VsZWN0aW9uIGJveCBoZWFkZXIgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRIZWFkZXJUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgdGV4dCA9IGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFNreVNlbGVjdGlvbkJveEhlYWRlckhhcm5lc3MpKClcbiAgICApPy5nZXRUZXh0KCk7XG4gICAgcmV0dXJuIHRleHQgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VsZWN0aW9uIGJveCBpY29uLCBpZiBpdCBleGlzdHMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SWNvbigpOiBQcm9taXNlPFNreUljb25IYXJuZXNzIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lJY29uSGFybmVzcykoKTtcbiAgfVxufVxuIl19","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkySelectionBoxHarness } from './selection-box-harness';\n/**\n * Harness for interacting with a selection box grid component in tests.\n */\nexport class SkySelectionBoxGridHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-selection-box-grid'; }\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySelectionBoxGridHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkySelectionBoxGridHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Gets a specific selection box based on the filter criteria.\n * @param filter The filter criteria.\n */\n async getSelectionBox(filter) {\n return await this.locatorFor(SkySelectionBoxHarness.with(filter))();\n }\n /**\n * Gets an array of selection boxes based on the filter criteria.\n * If no filter is provided, returns all selection boxes.\n * @param filters The optional filter criteria.\n */\n async getSelectionBoxes(filters) {\n return await this.locatorForAll(SkySelectionBoxHarness.with(filters || {}))();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC1ncmlkLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvdGVzdGluZy9zcmMvbW9kdWxlcy9zZWxlY3Rpb24tYm94L3NlbGVjdGlvbi1ib3gtZ3JpZC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG1CQUFtQjtJQUNqRTs7T0FFRzthQUNXLGlCQUFZLEdBQUcsd0JBQXdCLENBQUM7SUFFdEQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBMEM7UUFFMUMsT0FBTywwQkFBMEIsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGVBQWUsQ0FDMUIsTUFBcUM7UUFFckMsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FDNUIsT0FBdUM7UUFFdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQzNDLEVBQUUsQ0FBQztJQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Cb3hHcmlkSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL3NlbGVjdGlvbi1ib3gtZ3JpZC1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5U2VsZWN0aW9uQm94SGFybmVzcyB9IGZyb20gJy4vc2VsZWN0aW9uLWJveC1oYXJuZXNzJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbkJveEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9zZWxlY3Rpb24tYm94LWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIHNlbGVjdGlvbiBib3ggZ3JpZCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Cb3hHcmlkSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktc2VsZWN0aW9uLWJveC1ncmlkJztcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYVxuICAgKiBgU2t5U2VsZWN0aW9uQm94R3JpZEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lTZWxlY3Rpb25Cb3hHcmlkSGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5U2VsZWN0aW9uQm94R3JpZEhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5U2VsZWN0aW9uQm94R3JpZEhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBzcGVjaWZpYyBzZWxlY3Rpb24gYm94IGJhc2VkIG9uIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqIEBwYXJhbSBmaWx0ZXIgVGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTZWxlY3Rpb25Cb3goXG4gICAgZmlsdGVyOiBTa3lTZWxlY3Rpb25Cb3hIYXJuZXNzRmlsdGVycyxcbiAgKTogUHJvbWlzZTxTa3lTZWxlY3Rpb25Cb3hIYXJuZXNzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvcihTa3lTZWxlY3Rpb25Cb3hIYXJuZXNzLndpdGgoZmlsdGVyKSkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIGFycmF5IG9mIHNlbGVjdGlvbiBib3hlcyBiYXNlZCBvbiB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKiBJZiBubyBmaWx0ZXIgaXMgcHJvdmlkZWQsIHJldHVybnMgYWxsIHNlbGVjdGlvbiBib3hlcy5cbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIG9wdGlvbmFsIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTZWxlY3Rpb25Cb3hlcyhcbiAgICBmaWx0ZXJzPzogU2t5U2VsZWN0aW9uQm94SGFybmVzc0ZpbHRlcnMsXG4gICk6IFByb21pc2U8U2t5U2VsZWN0aW9uQm94SGFybmVzc1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYXRvckZvckFsbChcbiAgICAgIFNreVNlbGVjdGlvbkJveEhhcm5lc3Mud2l0aChmaWx0ZXJzIHx8IHt9KSxcbiAgICApKCk7XG4gIH1cbn1cbiJdfQ==","import { ComponentHarness } from '@angular/cdk/testing';\n/**\n * Harness for interacting with a toggle switch label component in tests.\n * @internal\n */\nexport class SkyToggleSwitchLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-toggle-switch-label'; }\n #getLabelContent = this.locatorFor('span[skyTrim]');\n /**\n * Gets the text content of the toggle switch label.\n */\n async getText() {\n return await (await this.#getLabelContent()).text();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLXN3aXRjaC1sYWJlbC1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvdG9nZ2xlLXN3aXRjaC90b2dnbGUtc3dpdGNoLWxhYmVsLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGdCQUFnQjtJQUMvRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcseUJBQXlCLENBQUM7SUFFdkQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVwRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgdG9nZ2xlIHN3aXRjaCBsYWJlbCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreVRvZ2dsZVN3aXRjaExhYmVsSGFybmVzcyBleHRlbmRzIENvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktdG9nZ2xlLXN3aXRjaC1sYWJlbCc7XG5cbiAgI2dldExhYmVsQ29udGVudCA9IHRoaXMubG9jYXRvckZvcignc3Bhbltza3lUcmltXScpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIHRvZ2dsZSBzd2l0Y2ggbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0TGFiZWxDb250ZW50KCkpLnRleHQoKTtcbiAgfVxufVxuIl19","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyToggleSwitchLabelHarness } from './toggle-switch-label-harness';\n/**\n * Harness for interacting with a toggle switch component in tests.\n */\nexport class SkyToggleSwitchHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n static { this.hostSelector = 'sky-toggle-switch'; }\n #getButton = this.locatorFor('button.sky-toggle-switch-button');\n #getLabel = this.locatorForOptional(SkyToggleSwitchLabelHarness);\n #getLabelText = this.locatorForOptional('span.sky-toggle-switch-label-text');\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyToggleSwitchHarness` that meets certain criteria.\n */\n static with(filters) {\n return SkyToggleSwitchHarness.getDataSkyIdPredicate(filters);\n }\n /**\n * Blurs the toggle switch.\n */\n async blur() {\n await (await this.#getButton()).blur();\n }\n /**\n * Clicks the help inline button.\n */\n async clickHelpInline() {\n await (await this.#getHelpInline()).click();\n }\n /**\n * Puts the toggle switch in a checked state.\n */\n async check() {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n /**\n * Focuses the toggle switch.\n */\n async focus() {\n await (await this.#getButton()).focus();\n }\n /**\n * Gets the help popover content.\n */\n async getHelpPopoverContent() {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n /**\n * Gets the help popover title.\n */\n async getHelpPopoverTitle() {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n async getLabelHidden() {\n const labelText = await this.#getLabelText();\n const labelComponent = await this.#getLabel();\n if (labelComponent) {\n throw new Error('`labelHidden` is only supported when setting the toggle switch label via the `labelText` input.');\n }\n else {\n return !(await labelText?.text());\n }\n }\n /**\n * Gets the toggle switch's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n async getLabelText() {\n const labelText = await (await this.#getLabelText())?.text();\n const ariaLabel = await this.#getAriaLabel();\n return (labelText || ariaLabel || (await (await this.#getLabel())?.getText()));\n }\n /**\n * Whether the toggle switch is checked.\n */\n async isChecked() {\n return await (await this.#getButton()).hasClass('sky-toggle-switch-checked');\n }\n /**\n * Whether the toggle switch is disabled.\n */\n async isDisabled() {\n const disabled = await (await this.#getButton()).getAttribute('disabled');\n return disabled !== null;\n }\n /**\n * Whether the toggle switch is focused.\n */\n async isFocused() {\n return await (await this.#getButton()).isFocused();\n }\n /**\n * Puts the toggle switch in an unchecked state.\n */\n async uncheck() {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n async #getAriaLabel() {\n return await (await this.#getButton()).getAttribute('aria-label');\n }\n async #getHelpInline() {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n async #toggle() {\n if (await this.isDisabled()) {\n throw new Error('Could not toggle the toggle switch because it is disabled.');\n }\n else {\n await (await this.#getButton()).click();\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLXN3aXRjaC1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3Rlc3Rpbmcvc3JjL21vZHVsZXMvdG9nZ2xlLXN3aXRjaC90b2dnbGUtc3dpdGNoLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHbEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsbUJBQW1CO0lBQzdEOztPQUVHO2FBQ1csaUJBQVksR0FBRyxtQkFBbUIsQ0FBQztJQUVqRCxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ2hFLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUNqRSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFFN0U7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBc0M7UUFFdEMsT0FBTyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lB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b0JBQW9CLENBQUMsRUFBRSxDQUFDO1FBRXRFLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZUhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaGVscC1pbmxpbmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreVRvZ2dsZVN3aXRjaEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi90b2dnbGUtc3dpdGNoLWhhcm5lc3MtZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lUb2dnbGVTd2l0Y2hMYWJlbEhhcm5lc3MgfSBmcm9tICcuL3RvZ2dsZS1zd2l0Y2gtbGFiZWwtaGFybmVzcyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIHRvZ2dsZSBzd2l0Y2ggY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5VG9nZ2xlU3dpdGNoSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktdG9nZ2xlLXN3aXRjaCc7XG5cbiAgI2dldEJ1dHRvbiA9IHRoaXMubG9jYXRvckZvcignYnV0dG9uLnNreS10b2dnbGUtc3dpdGNoLWJ1dHRvbicpO1xuICAjZ2V0TGFiZWwgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lUb2dnbGVTd2l0Y2hMYWJlbEhhcm5lc3MpO1xuICAjZ2V0TGFiZWxUZXh0ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoJ3NwYW4uc2t5LXRvZ2dsZS1zd2l0Y2gtbGFiZWwtdGV4dCcpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lUb2dnbGVTd2l0Y2hIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5VG9nZ2xlU3dpdGNoSGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5VG9nZ2xlU3dpdGNoSGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lUb2dnbGVTd2l0Y2hIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCbHVycyB0aGUgdG9nZ2xlIHN3aXRjaC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBibHVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRCdXR0b24oKSkuYmx1cigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgaGVscCBpbmxpbmUgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrSGVscElubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SGVscElubGluZSgpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1dHMgdGhlIHRvZ2dsZSBzd2l0Y2ggaW4gYSBjaGVja2VkIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghKGF3YWl0IHRoaXMuaXNDaGVja2VkKCkpKSB7XG4gICAgICBhd2FpdCB0aGlzLiN0b2dnbGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgdG9nZ2xlIHN3aXRjaC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBmb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0QnV0dG9uKCkpLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SGVscFBvcG92ZXJDb250ZW50KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRIZWxwSW5saW5lKCkpLmdldFBvcG92ZXJDb250ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVscCBwb3BvdmVyIHRpdGxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEhlbHBQb3BvdmVyVGl0bGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlbHBJbmxpbmUoKSkuZ2V0UG9wb3ZlclRpdGxlKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbGFiZWwgaXMgaGlkZGVuLiBPbmx5IHN1cHBvcnRlZCB3aGVuIHVzaW5nIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCB0byBzZXQgdGhlIGxhYmVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldExhYmVsSGlkZGVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGxhYmVsVGV4dCA9IGF3YWl0IHRoaXMuI2dldExhYmVsVGV4dCgpO1xuICAgIGNvbnN0IGxhYmVsQ29tcG9uZW50ID0gYXdhaXQgdGhpcy4jZ2V0TGFiZWwoKTtcblxuICAgIGlmIChsYWJlbENvbXBvbmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnYGxhYmVsSGlkZGVuYCBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHNldHRpbmcgdGhlIHRvZ2dsZSBzd2l0Y2ggbGFiZWwgdmlhIHRoZSBgbGFiZWxUZXh0YCBpbnB1dC4nLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICEoYXdhaXQgbGFiZWxUZXh0Py50ZXh0KCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0b2dnbGUgc3dpdGNoJ3MgbGFiZWwgdGV4dC4gSWYgdGhlIGxhYmVsIGlzIHNldCB2aWEgYGxhYmVsVGV4dGAgYW5kIGBsYWJlbEhpZGRlbmAgaXMgdHJ1ZSxcbiAgICogdGhlIHRleHQgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRMYWJlbFRleHQoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBsYWJlbFRleHQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0TGFiZWxUZXh0KCkpPy50ZXh0KCk7XG4gICAgY29uc3QgYXJpYUxhYmVsID0gYXdhaXQgdGhpcy4jZ2V0QXJpYUxhYmVsKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgbGFiZWxUZXh0IHx8IGFyaWFMYWJlbCB8fCAoYXdhaXQgKGF3YWl0IHRoaXMuI2dldExhYmVsKCkpPy5nZXRUZXh0KCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0b2dnbGUgc3dpdGNoIGlzIGNoZWNrZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNDaGVja2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCAoXG4gICAgICBhd2FpdCB0aGlzLiNnZXRCdXR0b24oKVxuICAgICkuaGFzQ2xhc3MoJ3NreS10b2dnbGUtc3dpdGNoLWNoZWNrZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0b2dnbGUgc3dpdGNoIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRGlzYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0QnV0dG9uKCkpLmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICByZXR1cm4gZGlzYWJsZWQgIT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdG9nZ2xlIHN3aXRjaCBpcyBmb2N1c2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRm9jdXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEJ1dHRvbigpKS5pc0ZvY3VzZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXRzIHRoZSB0b2dnbGUgc3dpdGNoIGluIGFuIHVuY2hlY2tlZCBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1bmNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmlzQ2hlY2tlZCgpKSB7XG4gICAgICBhd2FpdCB0aGlzLiN0b2dnbGUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyAjZ2V0QXJpYUxhYmVsKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0QnV0dG9uKCkpLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuICB9XG5cbiAgYXN5bmMgI2dldEhlbHBJbmxpbmUoKTogUHJvbWlzZTxTa3lIZWxwSW5saW5lSGFybmVzcz4ge1xuICAgIGNvbnN0IGhhcm5lc3MgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lIZWxwSW5saW5lSGFybmVzcykoKTtcblxuICAgIGlmIChoYXJuZXNzKSB7XG4gICAgICByZXR1cm4gaGFybmVzcztcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcignTm8gaGVscCBpbmxpbmUgZm91bmQuJyk7XG4gIH1cblxuICBhc3luYyAjdG9nZ2xlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ291bGQgbm90IHRvZ2dsZSB0aGUgdG9nZ2xlIHN3aXRjaCBiZWNhdXNlIGl0IGlzIGRpc2FibGVkLicsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0QnV0dG9uKCkpLmNsaWNrKCk7XG4gICAgfVxuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public-api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtZm9ybXMtdGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy90ZXN0aW5nL3NyYy9za3l1eC1mb3Jtcy10ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0="],"names":[],"mappings":";;;;;;;;;AACA;AACA;AACA;AACO,MAAM,mCAAmC,SAAS,mBAAmB,CAAC;AAC7E;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,iCAAiC,CAAC;AACnE,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC;AAC7D;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,mCAAmC,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACjF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK;AAClD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,sBAAsB,GAAG;AACnC,QAAQ,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK;AAClD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,iBAAiB,CAAC;AACzE,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AAC5C,QAAQ,MAAM,SAAS,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC;AACzD,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAY,UAAU,GAAG;AACzB,gBAAgB,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3C,gBAAgB,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3C,aAAa;AACb,QAAQ;AACR,QAAQ,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAChF,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,QAAQ,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC;AACxG,IAAI;AACJ;;AChDO,MAAM,mBAAmB,SAAS,mBAAmB,CAAC;AAC7D;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAClD,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE;AACjE,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,OAAO,EAAE,SAAS,KAAK;AAC1I,YAAY,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE;AACjE,YAAY,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,EAAE,SAAS,CAAC;AACpF,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,iBAAiB,CAAC;AACxE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE;AACjE,IAAI;AACJ;;AC/BO,MAAM,oBAAoB,SAAS,mBAAmB,CAAC;AAC9D;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC;AACnD;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAClE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE;AAC3F,QAAQ,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,SAAS,KAAK;AAC7E,YAAY,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC,YAAY,EAAE,EAAE;AAChE,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,SAAS,EAAE;AAC9B,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;AACrD,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;AAC1C,YAAY,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS;AAChD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;;ACxBA;AACA;AACA;AACO,MAAM,kBAAkB,SAAS,4BAA4B,CAAC;AACrE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;AACjD,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC;AACtE,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;AAC7D,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACnD,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;AAC5D,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,gBAAgB,CAAC,mCAAmC,EAAE;AACzH,YAAY,QAAQ,EAAE,8BAA8B;AACpD,SAAS,CAAC,CAAC,EAAE;AACb,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,YAAY,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;AACvF,QAAQ;AACR,QAAQ,OAAO,gBAAgB;AAC/B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,gBAAgB,CAAC,yBAAyB,EAAE;AAChG,YAAY,QAAQ,EAAE,+DAA+D;AACrF,SAAS,CAAC,CAAC,EAAE;AACb,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,SAAS,EAAE;AACxC,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;AAC1F,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,SAAS,EAAE;AACxC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;AACrE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC;AACjE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC;AACzE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;AACrE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;AACrE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC;AAClE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAChD,QAAQ,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC;AAC/D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AAC5C,QAAQ,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACzD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,gBAAgB,CAAC,iBAAiB,EAAE;AAClG,YAAY,QAAQ,EAAE,mBAAmB;AACzC,SAAS,CAAC,CAAC,EAAE;AACb,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;AACrF,QAAQ;AACR,QAAQ,OAAO,WAAW;AAC1B,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;AAC5D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AACtC,QAAQ,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;AAC5D,IAAI;AACJ,IAAI,MAAM,wBAAwB,CAAC,EAAE,EAAE;AACvC,QAAQ,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE;AAC/C,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE;AAC7E,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ;;AC/LA;AACA;AACA;AACA;AACA;AACO,MAAM,kBAAkB,CAAC;AAChC,IAAI,QAAQ;AACZ,IAAI,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;AACpC,QAAQ,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC;AACrG,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,aAAa,CAAC,OAAO;AAC/D,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;AACnG,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACtE,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,OAAO,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,CAAC;AACzE,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,SAAS;AAC1E,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE;AAC7D,YAAY,OAAO,QAAQ;AAC3B,QAAQ;AACR,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;AAC3D,YAAY,OAAO,MAAM;AACzB,QAAQ;AACR,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE;AAC9D,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE;AAC9D,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,aAAa,CAAC,QAAQ;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,IAAI,CAAC,qBAAqB,EAAE;AACxC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,IAAI,CAAC,qBAAqB,EAAE;AACxC,QAAQ;AACR,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,IAAI,CAAC;AACb,aAAa,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC;AACvD,aAAa,aAAa,CAAC,KAAK,EAAE;AAClC,IAAI;AACJ,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACzE,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAC7E,IAAI;AACJ;;ACrFA;AACA;AACA;AACA;AACO,MAAM,uBAAuB,SAAS,gBAAgB,CAAC;AAC9D;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC;AACtD,IAAI,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;AAC3D;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE;AAC3D,IAAI;AACJ;;AChBA;AACA;AACA;AACA;AACO,MAAM,gCAAgC,SAAS,gBAAgB,CAAC;AACvE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,+BAA+B,CAAC;AACjE,IAAI,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC;AACnE;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,EAAE;AAC5D,IAAI;AACJ;;ACZA;AACA;AACA;AACO,MAAM,kBAAkB,SAAS,mBAAmB,CAAC;AAC5D;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;AAChD,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC;AACrE,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;AAC3D,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;AAChE,IAAI,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,gCAAgC,CAAC;AAClF;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE;AAC7C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,IAAI,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACvC,YAAY,MAAM,IAAI,CAAC,OAAO,EAAE;AAChC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;AAC9C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;AACxE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,iBAAiB,CAAC;AAC7E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC9D,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AAC5C,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE;AACvD,YAAY,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AACvD;AACA,YAAY,OAAO,IAAI,IAAI,SAAS;AACpC,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,MAAM,KAAK,EAAE,OAAO,EAAE;AACzC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC9D,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AAC5C,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC;AACzH,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,EAAE,MAAM,cAAc,EAAE,OAAO,EAAE,CAAC;AACrD,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,OAAO,CAAC,MAAM,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE;AACrD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC;AAClE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC;AAClE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,SAAS,EAAE;AACpC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC;AAChF,QAAQ,OAAO,QAAQ,KAAK,IAAI;AAChC,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE;AACzD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC;AAC7E,QAAQ,OAAO,KAAK,KAAK,IAAI;AAC7B,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,wBAAwB,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE;AACpC,YAAY,MAAM,IAAI,CAAC,OAAO,EAAE;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;AAC5D,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE;AAC7E,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;AACpF,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;AAClD,QAAQ;AACR,IAAI;AACJ;;AC7LA;AACA;AACA;AACO,MAAM,uBAAuB,SAAS,mBAAmB,CAAC;AACjE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC;AACtD,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;AAChE,IAAI,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC;AACtE,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,+BAA+B,CAAC;AAC3E,IAAI,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,yCAAyC,CAAC;AAC1F,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvD,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvD,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvD,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,kDAAkD,CAAC;AAC3F;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,uBAAuB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACrE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,MAAM,EAAE;AAC9B,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AACvE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE;AACjC,QAAQ,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE;AACjF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE;AAC5D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,OAAO,CAAC,MAAM,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE;AACrD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,wBAAwB,CAAC;AACzF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AACtD,QAAQ,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;AACtD,QAAQ,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;AACtD,QAAQ,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;AACtD,QAAQ,IAAI,EAAE,EAAE;AAChB,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa,IAAI,EAAE,EAAE;AACrB,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa,IAAI,EAAE,EAAE;AACrB,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AACtD,QAAQ,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;AAC5E,QAAQ,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;AAC5E,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa,IAAI,eAAe,EAAE;AAClC,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAChD,QAAQ,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AACtC,QAAQ,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;AAClD,aAAa,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACvC,aAAa,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACvC,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AACpD,QAAQ,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,KAAK;AAC3E,aAAa,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,SAAS,EAAE;AAC9B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;AACtE,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC/D,YAAY,SAAS,EAAE,4BAA4B;AACnD,SAAS,CAAC,CAAC,EAAE;AACb,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAChF,YAAY,QAAQ,EAAE,kDAAkD;AACxE,SAAS,CAAC,CAAC,EAAE;AACb,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ;;AC/JA;AACA;AACA;AACO,MAAM,wBAAwB,SAAS,mBAAmB,CAAC;AAClE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC;AACvD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC;AAClE,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;AACrD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAClD;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,wBAAwB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAClD,YAAY,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,cAAc,EAAE;AACjE,gBAAgB,MAAM,IAAI,KAAK,EAAE;AACjC,YAAY;AACZ,YAAY,OAAO,MAAM,MAAM,CAAC,KAAK,EAAE;AACvC,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;AACnG,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,sBAAsB,GAAG;AACnC,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAClD,YAAY,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,cAAc,EAAE;AACjE,gBAAgB,MAAM,IAAI,KAAK,EAAE;AACjC,YAAY;AACZ,YAAY,OAAO,MAAM,MAAM,CAAC,KAAK,EAAE;AACvC,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AACnF,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrD,YAAY,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE;AACrC,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;AAChE,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,6BAA6B,GAAG;AAC1C,QAAQ,IAAI;AACZ,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,mCAAmC,CAAC,EAAE;AAC7F,YAAY,OAAO,MAAM,YAAY,CAAC,KAAK,EAAE;AAC7C,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC;AACzG,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC;AACjE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,SAAS,EAAE;AACpC,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;AAC1F,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AAChG,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AAC7D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,SAAS,EAAE;AACpC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;AACxE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;AACxE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,IAAI;AAClF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,4BAA4B,CAAC;AACpF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,wBAAwB,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE;AAC3B,QAAQ,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACzC,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE;AAC1B,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE;AACrF,QAAQ,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE;AAC/C,QAAQ,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,QAAQ,OAAO,MAAM,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE;AAC1D,YAAY,YAAY;AACxB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;AAC5D,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE;AAC7E,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ;;ACpMA;AACA;AACA;AACO,MAAM,iCAAiC,SAAS,eAAe,CAAC;AACvE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC;AAC1D;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;AACnE,IAAI;AACJ;;ACZA;AACA;AACA;AACA;AACO,MAAM,4BAA4B,SAAS,mBAAmB,CAAC;AACtE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC;AACvD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,iCAAiC,CAAC;AAC/D,IAAI,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;AACvD;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,IAAI,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1C,YAAY,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC;AAC/G,QAAQ;AACR,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE;AAC1B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC;AACzD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE;AACzD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE;AAClE,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,IAAI;AAC/E,IAAI;AACJ;;ACxCA;AACA;AACA;AACO,MAAM,kBAAkB,SAAS,mBAAmB,CAAC;AAC5D;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;AACjD,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;AAC7D,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAClD,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;AACtE,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;AACzD,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;AAC1D;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE;AAC7D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,yBAAyB,GAAG;AACtC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,CAAC,IAAI,EAAE;AACpC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC;AAClE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC;AACjE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,SAAS,EAAE;AACpC,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;AAC1F,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,sBAAsB,GAAG;AACnC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;AAChF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AAC1F,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,sBAAsB,GAAG;AACnC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE;AACjE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,SAAS,EAAE;AACpC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC;AAC1E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC;AAC1E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,wBAAwB,CAAC;AAC7G,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,4BAA4B,CAAC;AACjF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,wBAAwB,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,KAAK,EAAE;AAC3B,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC3C,IAAI;AACJ,IAAI,MAAM,UAAU,CAAC,KAAK,EAAE;AAC5B,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;AACtD,QAAQ,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE;AAC/C,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK;AACjC,YAAY,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE;AAC/C,YAAY,YAAY;AACxB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC5C,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE;AAC7E,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,EAAE;AACxF,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,QAAQ,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC;AAC5F,IAAI;AACJ;;ACjNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,+BAA+B,GAAG;AAClD,IAAI,OAAO,CAAC,2BAA2B,EAAE,CAAC;AAC1C;;ACXA;AACA;AACA;AACO,MAAM,kBAAkB,SAAS,gBAAgB,CAAC;AACzD;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;AACjD;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,OAAO,EAAE,QAAQ,KAAK;AACtI,YAAY,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE;AAC/D,YAAY,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC;AAClF,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,EAAE,KAAK,EAAE;AACnF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,EAAE;AAClF,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,IAAI;AACJ;;ACpCA;AACA;AACA;AACO,MAAM,oBAAoB,SAAS,mBAAmB,CAAC;AAC9D;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC;AACnD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC1C,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvD,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvD,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;AACvD,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC;AACxE;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAClE,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE;AAC5D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,OAAO,CAAC,MAAM,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE;AACrD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,wBAAwB,CAAC;AACjF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AACtC,QAAQ,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC;AAC7D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAC5C,QAAQ,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC;AACzB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,MAAM,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAClF,QAAQ,OAAO,CAAC,MAAM,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAChF,YAAY,QAAQ,EAAE,4CAA4C;AAClE,SAAS,CAAC,CAAC,EAAE;AACb,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ;;ACxFA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,CAAC;AAC7B,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;AACpC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC;AACxG,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACpF,QAAQ,MAAM,aAAa,GAAG,aAAa,IAAI,aAAa,CAAC,aAAa,CAAC,KAAK;AAChF,QAAQ,OAAO,aAAa;AAC5B,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC1D,QAAQ,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACjD,YAAY,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,KAAK,KAAK,EAAE;AACrD,gBAAgB,KAAK,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI;AAClD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,KAAK,CAAC,aAAa,CAAC,OAAO,GAAG,KAAK;AACnD,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAC/D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,YAAY,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;AAC/C,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAC/D,QAAQ,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;AACnD,YAAY,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC;AACtD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC3E,IAAI;AACJ,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AACjF,IAAI;AACJ,IAAI,sBAAsB,CAAC,KAAK,EAAE;AAClC,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC1D,QAAQ,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;AACrD,YAAY,OAAO,cAAc,CAAC,KAAK,CAAC;AACxC,QAAQ;AACR;AACA,QAAQ;AACR,IAAI;AACJ,IAAI,oBAAoB,CAAC,KAAK,EAAE;AAChC,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAC9D,QAAQ,OAAO,WAAW,IAAI,WAAW,CAAC,aAAa,CAAC,QAAQ;AAChE,IAAI;AACJ,IAAI,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE;AAC1C,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAC9D;AACA,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK;AACtD,YAAY,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AACzC,QAAQ;AACR,IAAI;AACJ;;AClFA;AACA;AACA;AACA;AACO,MAAM,oBAAoB,SAAS,gBAAgB,CAAC;AAC3D;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC;AACnD,IAAI,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;AAC3D;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE;AAC3D,IAAI;AACJ;;ACdA;AACA;AACA;AACO,MAAM,eAAe,SAAS,mBAAmB,CAAC;AACzD;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAC7C,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC;AAClE,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;AACxD,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;AAC7D,IAAI,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,4CAA4C,CAAC;AACzF;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAC7D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE;AAC7C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;AACvF,QAAQ;AACR,aAAa,IAAI,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AAC5C,YAAY,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;AAClD,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;AAC9C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;AACxE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,iBAAiB,CAAC;AAC7E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,OAAO,CAAC,MAAM,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE;AACrD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;AACpD,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AAC5C,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC;AACtH,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,CAAC,EAAE,MAAM,SAAS,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAC1E,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;AACpD,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,MAAM,SAAS,CAAC,IAAI,EAAE;AACzC,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE;AAC5D,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC;AAClE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC;AAChF,QAAQ,OAAO,QAAQ,KAAK,IAAI;AAChC,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE;AACzD,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE;AAC7E,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ;;ACvIA;AACA;AACA;AACO,MAAM,oBAAoB,SAAS,mBAAmB,CAAC;AAC9D;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC;AACnD,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC;AACjE,IAAI,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC;AAC3E,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC;AACxE,IAAI,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,sCAAsC,CAAC;AACvF,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvD,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvD,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvD,IAAI,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,+CAA+C,CAAC;AAChG;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAClE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,SAAS,EAAE;AACpC,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;AAC1F,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,GAAG,QAAQ,CAAC,wBAAwB,CAAC,IAAI,IAAI,CAAC;AACpG,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAC5C,QAAQ,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAC5C,QAAQ,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAC5C,QAAQ,IAAI,EAAE,EAAE;AAChB,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa,IAAI,EAAE,EAAE;AACrB,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa,IAAI,EAAE,EAAE;AACrB,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;AACzD,aAAa,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACvC,aAAa,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACvC,aAAa,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5C,QAAQ,MAAM,eAAe,GAAG,MAAM,cAAc,EAAE,QAAQ,CAAC,oBAAoB,CAAC;AACpF,QAAQ,MAAM,eAAe,GAAG,MAAM,cAAc,EAAE,QAAQ,CAAC,oBAAoB,CAAC;AACpF,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa,IAAI,eAAe,EAAE;AAClC,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;AACrE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,OAAO,CAAC,MAAM,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,MAAM,EAAE;AACjC,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;AACnC,QAAQ,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE;AAC9E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AACvD,QAAQ,OAAO,MAAM,cAAc,CAAC,QAAQ,CAAC,4BAA4B,CAAC;AAC1E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AACtC,QAAQ,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;AAClD,aAAa,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACvC,aAAa,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACvC,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AACpD,QAAQ,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,KAAK;AAC3E,aAAa,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,SAAS,EAAE;AAC9B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;AACtE,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;AAC5D,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAChF,YAAY,QAAQ,EAAE,4CAA4C;AAClE,SAAS,CAAC,CAAC,EAAE;AACb,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ;;ACnKA;AACA;AACA;AACA;AACO,MAAM,iCAAiC,SAAS,mBAAmB,CAAC;AAC3E;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,+BAA+B,CAAC;AACjE;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AACxD,IAAI;AACJ;;ACfA;AACA;AACA;AACA;AACO,MAAM,4BAA4B,SAAS,mBAAmB,CAAC;AACtE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,0BAA0B,CAAC;AAC5D;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AACxD,IAAI;AACJ;;ACVA;AACA;AACA;AACO,MAAM,sBAAsB,SAAS,mBAAmB,CAAC;AAChE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;AACrD;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,eAAe,CAAC,EAAE;AAC3E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,EAAE,GAAG,OAAO,EAAE;AAC1G,QAAQ,OAAO,IAAI,IAAI,EAAE;AACzB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,EAAE,GAAG,OAAO,EAAE;AACrG,QAAQ,OAAO,IAAI,IAAI,EAAE;AACzB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE;AAC9D,IAAI;AACJ;;AC7CA;AACA;AACA;AACO,MAAM,0BAA0B,SAAS,mBAAmB,CAAC;AACpE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC;AAC1D;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,0BAA0B,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACxE,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,MAAM,EAAE;AAClC,QAAQ,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3E,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,OAAO,EAAE;AACrC,QAAQ,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE;AACrF,IAAI;AACJ;;AC/BA;AACA;AACA;AACA;AACO,MAAM,2BAA2B,SAAS,gBAAgB,CAAC;AAClE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC;AAC3D,IAAI,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;AACvD;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE;AAC3D,IAAI;AACJ;;ACdA;AACA;AACA;AACO,MAAM,sBAAsB,SAAS,mBAAmB,CAAC;AAChE;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;AACrD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,iCAAiC,CAAC;AACnE,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC;AACpE,IAAI,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,mCAAmC,CAAC;AAChF;AACA;AACA;AACA;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;AAC9C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,IAAI,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACvC,YAAY,MAAM,IAAI,CAAC,OAAO,EAAE;AAChC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AAC/C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;AACtE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;AACpE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;AACpD,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACrD,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,MAAM,IAAI,KAAK,CAAC,iGAAiG,CAAC;AAC9H,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,EAAE,MAAM,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7C,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,EAAE;AACpE,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;AACpD,QAAQ,QAAQ,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;AACrF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,2BAA2B,CAAC;AACpF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC;AACjF,QAAQ,OAAO,QAAQ,KAAK,IAAI;AAChC,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE;AACpC,YAAY,MAAM,IAAI,CAAC,OAAO,EAAE;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;AACzE,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE;AAC7E,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,uBAAuB,CAAC;AAC5C,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;AACzF,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;AACnD,QAAQ;AACR,IAAI;AACJ;;AC9HA;AACA;AACA;;;;"}
|
|
1
|
+
{"version":3,"file":"skyux-forms-testing.mjs","sources":["../../../../../libs/components/forms/testing/src/modules/character-counter/character-counter-indicator-harness.ts","../../../../../libs/components/forms/testing/src/modules/form-error/form-error-harness.ts","../../../../../libs/components/forms/testing/src/modules/form-error/form-errors-harness.ts","../../../../../libs/components/forms/testing/src/modules/input-box/input-box-harness.ts","../../../../../libs/components/forms/testing/src/legacy/checkbox-fixture.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-label-text-label.harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-group-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-attachment/file-attachment-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-link-upload-input-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-link-upload-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/shared/provide-file-attachment-testing.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-item-harness.ts","../../../../../libs/components/forms/testing/src/modules/field-group/field-group-harness.ts","../../../../../libs/components/forms/testing/src/legacy/radio-fixture.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-harness.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-group-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-description-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-header-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-grid-harness.ts","../../../../../libs/components/forms/testing/src/modules/toggle-switch/toggle-switch-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/toggle-switch/toggle-switch-harness.ts","../../../../../libs/components/forms/testing/src/skyux-forms-testing.ts"],"sourcesContent":["import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyCharacterCounterIndicatorHarnessFilters } from './character-counter-indicator-harness-filters';\n\ntype LabelParts = {\n count: number;\n limit: number;\n};\n\n/**\n * Harness for interacting with a character counter indicator component in tests.\n */\nexport class SkyCharacterCounterIndicatorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-character-counter-indicator';\n\n #getLabel = this.locatorFor('.sky-character-count-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCharacterCounterIndicatorHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCharacterCounterIndicatorHarnessFilters,\n ): HarnessPredicate<SkyCharacterCounterIndicatorHarness> {\n return SkyCharacterCounterIndicatorHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the current character count.\n */\n public async getCharacterCount(): Promise<number> {\n return (await this.#getLabelParts()).count;\n }\n\n /**\n * Gets the character counter limit.\n */\n public async getCharacterCountLimit(): Promise<number> {\n return (await this.#getLabelParts()).limit;\n }\n\n /**\n * Indicates whether the character counter is in an error state because the current character\n * count is greater than the limit.\n */\n public async isOverLimit(): Promise<boolean> {\n return await (await this.#getLabel()).hasClass('sky-error-label');\n }\n\n async #getLabelParts(): Promise<LabelParts> {\n const label = await this.#getLabel();\n const textParts = (await label.text()).split('/');\n\n let labelParts: LabelParts | undefined;\n\n if (textParts.length === 2) {\n labelParts = {\n count: +textParts[0].trim(),\n limit: +textParts[1].trim(),\n };\n }\n\n if (labelParts && !isNaN(labelParts.count) && !isNaN(labelParts.limit)) {\n return labelParts;\n }\n\n throw new Error(\n 'The character counter indicator does not contain text in the expected format.',\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\n\nimport { SkyFormErrorHarnessFilters } from './form-error-harness.filters';\n\nexport class SkyFormErrorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-error';\n\n async #getStatusIndicator(): Promise<SkyStatusIndicatorHarness> {\n return await this.locatorFor(SkyStatusIndicatorHarness)();\n }\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorHarnessFilters,\n ): HarnessPredicate<SkyFormErrorHarness> {\n return SkyFormErrorHarness.getDataSkyIdPredicate(filters).addOption(\n 'errorName',\n filters.errorName,\n async (harness, errorName) => {\n const harnessErrorName = await harness.getErrorName();\n return await HarnessPredicate.stringMatches(\n harnessErrorName,\n errorName,\n );\n },\n );\n }\n\n /**\n * Gets the error name.\n */\n public async getErrorName(): Promise<string | null> {\n return await (await this.host()).getAttribute('data-error-name');\n }\n\n /**\n * Gets the error text.\n */\n public async getErrorText(): Promise<string | null> {\n return await (await this.#getStatusIndicator()).getText();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFormErrorHarness } from './form-error-harness';\nimport { SkyFormErrorsHarnessFilters } from './form-errors-harness.filters';\n\nexport class SkyFormErrorsHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-errors';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorsHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorsHarnessFilters,\n ): HarnessPredicate<SkyFormErrorsHarness> {\n return SkyFormErrorsHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a list of all errors fired.\n */\n public async getFormErrors(): Promise<{ errorName: string | null }[]> {\n const formErrorHarnesses = await this.locatorForAll(\n SkyFormErrorHarness.with({}),\n )();\n\n return await Promise.all(\n formErrorHarnesses.map(async (formError) => {\n return { errorName: await formError.getErrorName() };\n }),\n );\n }\n\n /**\n * Whether an error with the given name has fired.\n */\n public async hasError(errorName: string): Promise<boolean> {\n const formErrors = await this.getFormErrors();\n return formErrors.some((error) => {\n return error.errorName === errorName;\n });\n }\n}\n","import { HarnessPredicate, TestElement } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\nimport { SkyPopoverHarness } from '@skyux/popovers/testing';\n\nimport { SkyCharacterCounterIndicatorHarness } from '../character-counter/character-counter-indicator-harness';\nimport { SkyFormErrorHarness } from '../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyInputBoxHarnessFilters } from './input-box-harness-filters';\n\n/**\n * Harness for interacting with an input box component in tests.\n */\nexport class SkyInputBoxHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-input-box';\n\n #getHintText = this.locatorForOptional('.sky-input-box-hint-text');\n #getLabel = this.locatorForOptional('.sky-control-label');\n #getWrapper = this.locatorFor('.sky-input-box');\n\n async #getFormError(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInputBoxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyInputBoxHarnessFilters,\n ): HarnessPredicate<SkyInputBoxHarness> {\n return SkyInputBoxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the character counter indicator for the input box or throws an error if\n * a character limit is not specified.\n */\n public async getCharacterCounter(): Promise<SkyCharacterCounterIndicatorHarness> {\n const characterCounter = await this.locatorForOptional(\n new HarnessPredicate(SkyCharacterCounterIndicatorHarness, {\n ancestor: '.sky-input-box-label-wrapper',\n }),\n )();\n\n if (!characterCounter) {\n throw new Error(\n 'The input box does not have a character limit specified.',\n );\n }\n\n return characterCounter;\n }\n\n /**\n * Gets a list of status indicator harnesses for errors not automatically\n * handled by input box.\n */\n public async getCustomErrors(): Promise<SkyStatusIndicatorHarness[]> {\n const errors = await this.locatorForAll(\n new HarnessPredicate(SkyStatusIndicatorHarness, {\n selector:\n 'sky-status-indicator:not(sky-form-error sky-status-indicator)',\n }),\n )();\n\n return errors;\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomFormError(\n errorName: string,\n ): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Whether the custom form error is triggered.\n */\n public async hasCustomFormError(errorName: string): Promise<boolean> {\n return await (await this.#getFormError()).hasError(errorName);\n }\n\n /**\n * Whether the required field is empty.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('required');\n }\n\n /**\n * Whether the field has more characters than allowed.\n */\n public async hasMaxLengthError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('maxlength');\n }\n\n /**\n * Whether the field has fewer characters than allowed.\n */\n public async hasMinLengthError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('minlength');\n }\n\n /**\n * Whether the field is set to an invalid email address.\n */\n public async hasEmailError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('email');\n }\n\n /**\n * Whether the field is set to an invalid URL.\n */\n public async hasUrlError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('url');\n }\n\n /**\n * Whether the field is set to an invalid date.\n */\n public async hasInvalidDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('invalidDate');\n }\n\n /**\n * Whether the field is set to an invalid minimum date.\n */\n public async hasMinDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('minDate');\n }\n\n /**\n * Whether the field is set to an invalid maximum date.\n */\n public async hasMaxDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('maxDate');\n }\n\n /**\n * Whether the field is set to an invalid phone number.\n */\n public async hasPhoneFieldError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('phone');\n }\n\n /**\n * Whether the field is set to an invalid time.\n */\n public async hasTimeError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('time');\n }\n\n /**\n * Indicates whether the input box has disabled styles applied.\n */\n public async getDisabled(): Promise<boolean> {\n const wrapper = await this.#getWrapper();\n\n return await wrapper.hasClass('sky-input-box-disabled');\n }\n\n /**\n * Gets the text for the input box label.\n */\n public async getLabelText(): Promise<string> {\n const label = await this.#getLabel();\n\n return await this.#getElementTextOrDefault(label);\n }\n\n /**\n * Gets the help popover for the input box or throws an error if\n * the help popover is not configured.\n */\n public async getHelpPopover(): Promise<SkyPopoverHarness> {\n const helpPopover = await this.locatorForOptional(\n new HarnessPredicate(SkyPopoverHarness, {\n ancestor: '.sky-control-help',\n }),\n )();\n\n if (!helpPopover) {\n throw new Error('The input box does not have a help popover configured.');\n }\n\n return helpPopover;\n }\n\n /**2\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text for the input box.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return await this.#getElementTextOrDefault(hintText);\n }\n\n /**\n * Indicates whether the input box has stacked styles applied.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n\n return await host.hasClass('sky-form-field-stacked');\n }\n\n async #getElementTextOrDefault(el: TestElement | null): Promise<string> {\n return (await el?.text())?.trim() ?? '';\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\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 checkbox component.\n * @internal\n * @deprecated Use `SkyCheckboxHarness` instead.\n */\nexport class SkyCheckboxFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-checkbox',\n );\n }\n\n /**\n * A flag indicating whether the checkbox is currently selected.\n */\n public get selected(): boolean {\n return this.#getCheckboxInputEl().nativeElement.checked;\n }\n\n /**\n * The checkbox's label\n */\n public get labelText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('label.sky-checkbox-wrapper')),\n );\n }\n\n /**\n * The checkbox's icon type\n */\n public get iconType(): string | undefined {\n const svgElement = this.#debugEl.query(By.css('sky-icon svg'));\n\n if (svgElement) {\n return svgElement.nativeElement.getAttribute('data-sky-icon');\n }\n\n return undefined;\n }\n\n /**\n * The checkbox's type.\n */\n public get checkboxType(): string | undefined {\n const classList = this.#getCheckboxBoxEl().nativeElement.classList;\n\n if (classList.contains('sky-switch-control-danger')) {\n return 'danger';\n }\n\n if (classList.contains('sky-switch-control-info')) {\n return 'info';\n }\n\n if (classList.contains('sky-switch-control-success')) {\n return 'success';\n }\n\n if (classList.contains('sky-switch-control-warning')) {\n return 'warning';\n }\n\n return undefined;\n }\n\n /**\n * A flag indicating whether the checkbox is currently disabled.\n */\n public get disabled(): boolean {\n return this.#getCheckboxInputEl().nativeElement.disabled;\n }\n\n /**\n * Selects the checkbox.\n */\n public select(): void {\n if (!this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n /**\n * Deselects the checkbox.\n */\n public deselect(): void {\n if (this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n #clickCheckboxLabelEl(): void {\n this.#debugEl\n .query(By.css('label.sky-checkbox-wrapper'))\n .nativeElement.click();\n }\n\n #getCheckboxInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-checkbox-wrapper input'));\n }\n\n #getCheckboxBoxEl(): DebugElement {\n return this.#debugEl.query(By.css('label.sky-checkbox-wrapper span'));\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the checkbox label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a `labelText` checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelTextLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label-text-label';\n\n #getLabelContent = this.locatorForOptional('.sky-switch-label');\n\n /**\n * Gets the text content of the `labelText` checkbox label.\n */\n public async getText(): Promise<string | undefined> {\n return await (await this.#getLabelContent())?.text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxHarnessFilters } from './checkbox-harness-filters';\nimport { SkyCheckboxLabelHarness } from './checkbox-label-harness';\nimport { SkyCheckboxLabelTextLabelHarness } from './checkbox-label-text-label.harness';\n\n/**\n * Harness for interacting with a checkbox component in tests.\n */\nexport class SkyCheckboxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox';\n\n #getHintText = this.locatorForOptional('.sky-checkbox-hint-text');\n\n #getInput = this.locatorFor('input.sky-checkbox-input');\n\n #getLabel = this.locatorForOptional(SkyCheckboxLabelHarness);\n\n #getLabelTextLabel = this.locatorForOptional(\n SkyCheckboxLabelTextLabelHarness,\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxHarnessFilters,\n ): HarnessPredicate<SkyCheckboxHarness> {\n return SkyCheckboxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the checkbox.\n */\n public async blur(): Promise<void> {\n await (await this.#getInput()).blur();\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing nothing if it is already checked.\n */\n public async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n\n /**\n * Focuses the checkbox.\n */\n public async focus(): Promise<void> {\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the checkbox'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 checkbox'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 help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the checkbox's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (labelTextLabel) {\n const text = await labelTextLabel.getText();\n const ariaLabel = await this.getAriaLabel();\n\n // if labelText is set, ariaLabel will never return null\n return text || ariaLabel!;\n } else {\n return await label?.getText();\n }\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelHidden` is only supported when setting the checkbox label via the `labelText` input.',\n );\n } else {\n return !(await labelTextLabel?.getText());\n }\n }\n\n /**\n * Gets the checkbox's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets the checkbox's name.\n */\n public async getName(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Gets the checkbox's value.\n */\n public async getValue(): Promise<string | null> {\n return await (await this.#getInput()).getProperty<string | null>('value');\n }\n\n /**\n * Whether the checkbox displays custom error.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n /**\n * Whether the checkbox displays an error that it is required.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the checkbox 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 checkbox is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getInput()).isFocused();\n }\n\n /**\n * Whether the checkbox is required.\n */\n public async isRequired(): Promise<boolean> {\n const value = await (await this.#getInput()).getAttribute('required');\n return value !== null;\n }\n\n /**\n * Whether the checkbox is stacked.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing nothing if it is already unchecked.\n */\n public async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n\n async #toggle(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('Could not toggle the checkbox because it is disabled.');\n } else {\n await (await this.#getInput()).click();\n }\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyCheckboxGroupHeadingLevel,\n SkyCheckboxGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxGroupHarnessFilters } from './checkbox-group-harness-filters';\nimport { SkyCheckboxHarness } from './checkbox-harness';\nimport { SkyCheckboxHarnessFilters } from './checkbox-harness-filters';\n\n/**\n * Harness for interacting with a checkbox group component in tests.\n */\nexport class SkyCheckboxGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-group';\n\n #getHeading = this.locatorFor('.sky-checkbox-group-heading');\n #getHeadingWrapper = this.locatorFor('.sky-checkbox-group-legend');\n #getHintText = this.locatorForOptional('.sky-checkbox-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-checkbox-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorFor(\n 'legend h3,h4,h5,.sky-checkbox-group-heading-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxGroupHarnessFilters,\n ): HarnessPredicate<SkyCheckboxGroupHarness> {\n return SkyCheckboxGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets a specific checkbox based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getCheckbox(\n filter: SkyCheckboxHarnessFilters,\n ): Promise<SkyCheckboxHarness> {\n return await this.locatorFor(SkyCheckboxHarness.with(filter))();\n }\n\n /**\n * Gets an array of checkboxes based on the filter criteria.\n * If no filter is provided, returns all checkboxes.\n * @param filter The optional filter criteria.\n */\n public async getCheckboxes(\n filters?: SkyCheckboxHarnessFilters,\n ): Promise<SkyCheckboxHarness[]> {\n return await this.locatorForAll(SkyCheckboxHarness.with(filters || {}))();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the checkbox group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return await (await this.#getLegendHeading()).text();\n }\n\n /**\n * Gets the checkbox group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await (\n await this.#getHeadingWrapper()\n ).hasClass('sky-screen-reader-only');\n }\n\n /**\n * The semantic heading level used for the checkbox group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<\n SkyCheckboxGroupHeadingLevel | undefined\n > {\n const heading = await this.#getLegendHeading();\n const h3 = await heading.matchesSelector('h3');\n const h4 = await heading.matchesSelector('h4');\n const h5 = await heading.matchesSelector('h5');\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the checkbox group.\n */\n public async getHeadingStyle(): Promise<SkyCheckboxGroupHeadingStyle> {\n const heading = await this.#getLegendHeading();\n\n const isHeadingStyle3 = await heading.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await heading.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Whether the checkbox group is required.\n */\n public async getRequired(): Promise<boolean> {\n const heading = await this.#getHeading();\n\n return await heading.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the checkbox group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-form-field-stacked')) && !!label) ||\n ((await host.hasClass('sky-field-group-stacked')) && !!heading)\n );\n }\n\n /**\n * Whether all the checkboxes in a required group are unchecked.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox group has errors.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(\n SkyFormErrorsHarness.with({\n dataSkyId: 'checkbox-group-form-errors',\n }),\n )();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-checkbox-group > .sky-checkbox-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { EventData, HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../../form-error/form-errors-harness';\n\nimport { SkyFileAttachmentHarnessFilters } from './file-attachment-harness-filters';\n\ntype TestDataTransfer = DataTransfer & { [key: string]: EventData };\n\n/**\n * Harness for interacting with a file attachment component in tests.\n */\nexport class SkyFileAttachmentHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-attachment';\n\n #getButton = this.locatorFor('button.sky-file-attachment-btn');\n #getLabel = this.locatorFor('.sky-control-label');\n #input = this.locatorFor('input[type=\"file\"]');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileAttachmentHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileAttachmentHarnessFilters,\n ): HarnessPredicate<SkyFileAttachmentHarness> {\n return SkyFileAttachmentHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the attach file button if it is visible.\n */\n public async clickAttachFileButton(): Promise<void> {\n try {\n const button = await this.#getButton();\n if ((await button.text()).trim() === 'Replace file') {\n throw new Error();\n }\n return await button.click();\n } catch {\n throw new Error(\n 'Cannot click Attach file button, there is currently a file attached.',\n );\n }\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return await (await this.#getHelpInline()).click();\n }\n\n /**\n * Clicks the replace file button in default theme.\n */\n public async clickReplaceFileButton(): Promise<void> {\n try {\n const button = await this.#getButton();\n if ((await button.text()).trim() !== 'Replace file') {\n throw new Error();\n }\n return await button.click();\n } catch {\n throw new Error('Cannot click Replace file button, it is not visible.');\n }\n }\n\n /**\n * Clicks the attached file to download it.\n */\n public async clickAttachedFile(): Promise<void> {\n try {\n const file = await this.locatorFor('a')();\n return await file.click();\n } catch {\n throw new Error('Unable to find the attached file.');\n }\n }\n\n /**\n * Clicks the attached file's delete button.\n */\n public async clickAttachedFileDeleteButton(): Promise<void> {\n try {\n const deleteButton = await this.locatorFor(\n 'button.sky-file-attachment-delete',\n )();\n return await deleteButton.click();\n } catch {\n throw new Error(\n \"Unable to find attached file's delete button. Check if a file is attached.\",\n );\n }\n }\n\n /**\n * Gets the accepted file types.\n */\n public async getAcceptedTypes(): Promise<string | null> {\n return await (await this.#input()).getAttribute('accept');\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Gets the help inline popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return (\n await (await this.locatorFor('.sky-file-attachment-hint-text')()).text()\n ).trim();\n }\n\n /**\n * Gets the file attachment label.\n */\n public async getLabelText(): Promise<string> {\n return (await (await this.#getLabel()).text()).trim();\n }\n\n /**\n * Whether a custom error has fired.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError(errorName);\n }\n\n /**\n * Whether the wrong file type error has fired.\n */\n public async hasFileTypeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('fileType');\n }\n\n /**\n * Whether the max file size error has fired.\n */\n public async hasMaxFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('maxFileSize');\n }\n\n /**\n * Whether the min file size error has fired.\n */\n public async hasMinFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('minFileSize');\n }\n\n /**\n * Whether the required error has fired.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('required');\n }\n\n /**\n * Whether file attachment is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return (await (await this.#getButton()).getAttribute('disabled')) !== null;\n }\n\n /**\n * Whether file attachment is required.\n */\n public async isRequired(): Promise<boolean> {\n return await (\n await this.#getLabel()\n ).hasClass('sky-control-label-required');\n }\n\n /**\n * Whether file attachment has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Attaches a file.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ```\n */\n public async attachFile(file: File): Promise<void> {\n return await this.#dropFile(file);\n }\n\n async #dropFile(file: File): Promise<void> {\n const attachLocation = await this.locatorFor(\n '.sky-file-attachment-upload',\n )();\n\n const dataTransfer = new DataTransfer() as TestDataTransfer;\n dataTransfer.items.add(file);\n\n return await attachLocation.dispatchEvent('drop', {\n dataTransfer,\n });\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the file drop link upload input harness.\n */\nexport class SkyFileDropLinkUploadInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = 'input.sky-form-control';\n\n /**\n * Gets the input aria-label\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.host()).getAttribute('aria-label');\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyInputBoxHarness } from '../../input-box/input-box-harness';\n\nimport { SkyFileDropLinkUploadInputHarness } from './file-drop-link-upload-input-harness';\n\n/**\n * Harness for interacting with file drop component's link upload feature in tests.\n * @internal\n */\nexport class SkyFileDropLinkUploadHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-file-drop-link';\n\n #input = this.locatorFor(SkyFileDropLinkUploadInputHarness);\n #inputBoxHarness = this.locatorFor(SkyInputBoxHarness);\n #button = this.locatorFor('button.sky-btn-primary');\n\n /**\n * Clicks the `Done` button\n */\n public async clickDoneButton(): Promise<void> {\n if (await this.#isDoneDisabled()) {\n throw new Error(\n 'Done button is disabled and cannot be clicked. Enter text to enable link upload.',\n );\n }\n return await (await this.#button()).click();\n }\n\n /**\n * Enters text into the link upload input.\n */\n public async enterText(link: string): Promise<void> {\n return await (await this.#input()).setValue(link);\n }\n\n /**\n * Gets the link upload aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#input()).getAriaLabel();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string | undefined> {\n return await (await this.#inputBoxHarness()).getHintText();\n }\n\n async #isDoneDisabled(): Promise<boolean> {\n return (await (await this.#button()).getAttribute('disabled')) !== null;\n }\n}\n","import { EventData, HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../../form-error/form-errors-harness';\n\nimport { SkyFileDropHarnessFilters } from './file-drop-harness-filters';\nimport { SkyFileDropLinkUploadHarness } from './file-drop-link-upload-harness';\n\n/**\n * Harness for interacting with a file drop component in tests.\n */\nexport class SkyFileDropHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-drop';\n\n #getDropTarget = this.locatorFor('.sky-file-drop-target');\n #input = this.locatorFor('input[type=\"file\"]');\n #fileUploadButton = this.locatorFor('button.sky-file-drop-target');\n #label = this.locatorFor('.sky-file-drop-label-text');\n #formErrors = this.locatorForAll(SkyFormErrorsHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileDropHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileDropHarnessFilters,\n ): HarnessPredicate<SkyFileDropHarness> {\n return SkyFileDropHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the file drop target.\n */\n public async clickFileDropTarget(): Promise<void> {\n return await (await this.#fileUploadButton()).click();\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return await (await this.#getHelpInline()).click();\n }\n\n /**\n * Clicks the link upload `Done` button'.\n */\n public async clickLinkUploadDoneButton(): Promise<void> {\n return await (await this.#getLinkUpload()).clickDoneButton();\n }\n\n /**\n * Enters text into the link upload input.\n */\n public async enterLinkUploadText(link: string): Promise<void> {\n return await (await this.#getLinkUpload()).enterText(link);\n }\n\n /**\n * Gets the accepted file types.\n */\n public async getAcceptedTypes(): Promise<string | null> {\n return await (await this.#input()).getAttribute('accept');\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Gets the aria-label for the file upload button.\n */\n public async getFileUploadAriaLabel(): Promise<string | null> {\n return await (await this.#fileUploadButton()).getAttribute('aria-label');\n }\n\n /**\n * Gets the help inline popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return (\n await (await this.locatorFor('.sky-file-drop-hint-text')()).text()\n ).trim();\n }\n\n /**\n * Gets the label text.\n */\n public async getLabelText(): Promise<string> {\n return (await (await this.#label()).text()).trim();\n }\n\n /**\n * Gets the link upload aria-label.\n */\n public async getLinkUploadAriaLabel(): Promise<string | null> {\n return await (await this.#getLinkUpload()).getAriaLabel();\n }\n\n /**\n * Gets the link upload hint text.\n */\n public async getLinkUploadHintText(): Promise<string | undefined> {\n return await (await this.#getLinkUpload()).getHintText();\n }\n\n /**\n * Whether a custom form error has fired.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n /**\n * Whether the file type error has fired.\n */\n public async hasFileTypeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('fileType');\n }\n\n /**\n * Whether the max file size error has fired.\n */\n public async hasMaxFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('maxFileSize');\n }\n\n /**\n * Whether the min file size error has fired.\n */\n public async hasMinFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('minFileSize');\n }\n\n /**\n * Whether the required error has fired.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the validate error from the customer validation has fired.\n */\n public async hasValidateFnError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('validate');\n }\n\n /**\n * Whether label text is hidden.\n */\n public async isLabelHidden(): Promise<boolean> {\n return await (\n await this.locatorFor('legend.sky-control-label')()\n ).hasClass('sky-screen-reader-only');\n }\n\n /**\n * Whether file drop is required.\n */\n public async isRequired(): Promise<boolean> {\n return await (await this.#label()).hasClass('sky-control-label-required');\n }\n\n /**\n * Whether file drop has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Loads a single file.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ``\n */\n public async loadFile(file: File): Promise<void> {\n await this.#dropFiles([file]);\n }\n\n /**\n * Loads multiple files.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ``\n */\n public async loadFiles(files: File[] | null): Promise<void> {\n return await this.#dropFiles(files);\n }\n\n async #dropFiles(files: File[] | null): Promise<void> {\n const dropTarget = await this.#getDropTarget();\n\n type TestDataTransfer = DataTransfer & { [key: string]: EventData };\n\n const dataTransfer = new DataTransfer() as TestDataTransfer;\n\n files?.forEach((file) => {\n dataTransfer.items.add(file);\n });\n\n await dropTarget.dispatchEvent('drop', {\n dataTransfer,\n });\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return (await this.#formErrors())[1];\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n\n async #getLinkUpload(): Promise<SkyFileDropLinkUploadHarness> {\n const linkUpload = await this.locatorForOptional(\n SkyFileDropLinkUploadHarness,\n )();\n\n if (linkUpload) {\n return linkUpload;\n }\n\n throw new Error(\n 'Link upload cannot be found. Set `allowLinks` property to `true`.',\n );\n }\n}\n","import { Provider } from '@angular/core';\nimport { provideSkyFileReaderTesting } from '@skyux/core/testing';\n\n/**\n * Provides mocks for file attachment testing.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileAttachmentTesting()]\n * });\n * ```\n */\nexport function provideSkyFileAttachmentTesting(): Provider[] {\n return [provideSkyFileReaderTesting()];\n}\n","import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyFileItemHarnessFilters } from './file-item-harness-filters';\n\n/**\n * Harness for interacting with a file item component in tests.\n */\nexport class SkyFileItemHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-item';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileItemHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileItemHarnessFilters,\n ): HarnessPredicate<SkyFileItemHarness> {\n return new HarnessPredicate(SkyFileItemHarness, filters).addOption(\n 'fileName',\n filters.fileName,\n async (harness, fileName) => {\n const harnessFileName = await harness.getFileName();\n return await HarnessPredicate.stringMatches(harnessFileName, fileName);\n },\n );\n }\n\n /**\n * Clicks the delete button.\n */\n public async clickDeleteButton(): Promise<void> {\n return await (await this.locatorFor('.sky-file-item-btn-delete')()).click();\n }\n\n /**\n * Gets the file name.\n */\n public async getFileName(): Promise<string> {\n return await (await this.locatorFor('.sky-file-item-name')()).text();\n }\n\n /**\n * Gets the file size.\n */\n public async getFileSize(): Promise<string> {\n const size = await (await this.locatorFor('.sky-file-item-size')()).text();\n return size.substring(1, size.length - 1);\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyFieldGroupHeadingLevel,\n SkyFieldGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFieldGroupHarnessFilters } from './field-group-harness-filters';\n\n/**\n * Harness for interacting with a field group component in tests.\n */\nexport class SkyFieldGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-field-group';\n\n #getLegend = this.locatorFor('legend');\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendHeading = this.locatorFor('legend h3,h4');\n #getHintText = this.locatorForOptional('.sky-field-group-hint-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFieldGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFieldGroupHarnessFilters,\n ): HarnessPredicate<SkyFieldGroupHarness> {\n return SkyFieldGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the field group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return await (await this.#getLegendHeading()).text();\n }\n\n /**\n * Gets the field group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await (await this.#getLegend()).hasClass('sky-screen-reader-only');\n }\n\n /**\n * Whether the field group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n\n return await host.hasClass('sky-field-group-stacked');\n }\n\n /**\n * The semantic heading level used for the field group.\n */\n public async getHeadingLevel(): Promise<SkyFieldGroupHeadingLevel> {\n const h3 = await this.#getLegendH3();\n\n return h3 ? 3 : 4;\n }\n\n /**\n * The heading style used for the field group.\n */\n public async getHeadingStyle(): Promise<SkyFieldGroupHeadingStyle> {\n const heading = (await this.#getLegendH3()) || (await this.#getLegendH4());\n\n return (await heading?.hasClass('sky-font-heading-3')) ? 3 : 4;\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-field-group > .sky-field-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\n }\n}\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 radio buttons within a radio group.\n * @deprecated Use `SkyRadioHarness` instead.\n * @internal\n */\nexport class SkyRadioFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-radio-group',\n );\n }\n\n /**\n * The selected radio button value.\n */\n public get value(): string {\n const selectedRadio = this.#debugEl.query(\n By.css('sky-radio input:checked'),\n );\n const selectedValue = selectedRadio && selectedRadio.nativeElement.value;\n\n return selectedValue;\n }\n\n /**\n * Set the selected radio button value.\n */\n public set value(value: string) {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n allRadioInputs.forEach((input, index) => {\n if (input.nativeElement.value === value) {\n input.nativeElement.checked = true;\n } else {\n input.nativeElement.checked = false;\n }\n });\n }\n\n /**\n * A flag indicating if every radio button in the radio group is disabled.\n */\n public get disabled(): boolean {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n for (let i = 0; i < allRadioButtons.length; i++) {\n if (!this.#radioButtonDisabled(i)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Set the disabled value for all radio buttons.\n */\n public set disabled(value: boolean) {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n allRadioButtons.forEach((button, index) => {\n this.#setRadioButtonDisabled(index, value);\n });\n }\n\n #getAllSkyRadioButtonEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio'));\n }\n\n #getAllRadioInputEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio input'));\n }\n\n #getRadioButtonInputEl(index: number): DebugElement | undefined {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n if (allRadioInputs && allRadioInputs[index]) {\n return allRadioInputs[index];\n }\n /* istanbul ignore next */\n return;\n }\n\n #radioButtonDisabled(index: number): boolean {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n return radioButton && radioButton.nativeElement.disabled;\n }\n\n #setRadioButtonDisabled(index: number, value: boolean): void {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n /* istanbul ignore else */\n if (radioButton) {\n radioButton.nativeElement.disabled = value;\n\n this.#fixture.detectChanges();\n }\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a radio label component in tests.\n * @internal\n */\nexport class SkyRadioLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the radio label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyRadioHarnessFilters } from './radio-harness-filters';\nimport { SkyRadioLabelHarness } from './radio-label-harness';\n\n/**\n * Harness for interacting with a radio button component in tests.\n */\nexport class SkyRadioHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio';\n\n #getHintText = this.locatorForOptional('.sky-radio-hint-text');\n\n #getInput = this.locatorFor('input.sky-radio-input');\n\n #getLabel = this.locatorForOptional(SkyRadioLabelHarness);\n\n #getLabelText = this.locatorForOptional(\n 'span.sky-switch-label.sky-radio-label-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioHarnessFilters,\n ): HarnessPredicate<SkyRadioHarness> {\n return SkyRadioHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the radio button.\n */\n public async blur(): Promise<void> {\n await (await this.#getInput()).blur();\n }\n\n /**\n * Puts the radio button in a checked state if it is currently unchecked.\n */\n public async check(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error(\n 'Could not check the radio button because it is disabled.',\n );\n } else if (!(await this.isChecked())) {\n await (await this.#getInput()).click();\n }\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Focuses the radio button.\n */\n public async focus(): Promise<void> {\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the radio button'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 radio button'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 help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the radio button's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelText = await this.#getLabelText();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelHidden` is only supported when setting the radio label via the `labelText` input.',\n );\n } else {\n return !!(await labelText?.hasClass('sky-screen-reader-only'));\n }\n }\n\n /**\n * Gets the radio button's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelText = await this.#getLabelText();\n\n if (labelText) {\n return await labelText.text();\n } else {\n return await (await this.#getLabel())?.getText();\n }\n }\n\n /**\n * Gets the radio button's name.\n */\n public async getName(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Whether the radio button is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the radio button 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 radio button is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getInput()).isFocused();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyRadioGroupHeadingLevel,\n SkyRadioGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyRadioGroupHarnessFilters } from './radio-group-harness-filters';\nimport { SkyRadioHarness } from './radio-harness';\nimport { SkyRadioHarnessFilters } from './radio-harness-filters';\n\n/**\n * Harness for interacting with a radio group component in tests.\n */\nexport class SkyRadioGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-group';\n\n #getHeading = this.locatorFor('.sky-radio-group-legend span');\n #getHeadingWrapper = this.locatorForOptional('.sky-radio-group-legend');\n #getHintText = this.locatorForOptional('.sky-radio-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-radio-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorForOptional(\n 'legend h3,h4,h5,.sky-radio-group-heading-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioGroupHarnessFilters,\n ): HarnessPredicate<SkyRadioGroupHarness> {\n return SkyRadioGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await ((\n await this.#getHeadingWrapper()\n )?.hasClass('sky-screen-reader-only') ?? true);\n }\n\n /**\n * The semantic heading level used for the radio group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<\n SkyRadioGroupHeadingLevel | undefined\n > {\n const h3 = await this.#getLegendH3();\n const h4 = await this.#getLegendH4();\n const h5 = await this.#getLegendH5();\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the radio group.\n */\n public async getHeadingStyle(): Promise<SkyRadioGroupHeadingStyle> {\n const headingOrLabel =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5()) ||\n (await this.#getLegendDefault());\n\n const isHeadingStyle3 =\n await headingOrLabel?.hasClass('sky-font-heading-3');\n const isHeadingStyle4 =\n await headingOrLabel?.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Gets the radio group's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return await ((await this.#getLegendHeading())?.text() ?? '');\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the radio group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets a specific radio button based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getRadioButton(\n filter: SkyRadioHarnessFilters,\n ): Promise<SkyRadioHarness> {\n return await this.locatorFor(SkyRadioHarness.with(filter))();\n }\n\n /**\n * Gets an array of radio buttons based on the filter criteria.\n * If no filter is provided, returns all radio buttons.\n * @param filters The optional filter criteria.\n */\n public async getRadioButtons(\n filters?: SkyRadioHarnessFilters,\n ): Promise<SkyRadioHarness[]> {\n return await this.locatorForAll(SkyRadioHarness.with(filters || {}))();\n }\n\n /**\n * Whether the radio group is required.\n */\n public async getRequired(): Promise<boolean> {\n const headingWrapper = await this.#getHeading();\n\n return await headingWrapper.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the radio group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-form-field-stacked')) && !!label) ||\n ((await host.hasClass('sky-field-group-stacked')) && !!heading)\n );\n }\n\n /**\n * Whether a form error with the specified name has fired.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-radio-group > .sky-radio-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with a selection box description component in tests.\n * @internal\n */\nexport class SkySelectionBoxDescriptionHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-description';\n\n /**\n * Gets the description text.\n */\n public async getText(): Promise<string> {\n return (await (await this.host()).text()).trim();\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with a selection box header component in tests.\n * @internal\n */\nexport class SkySelectionBoxHeaderHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-header';\n\n /**\n * Gets the header text.\n */\n public async getText(): Promise<string> {\n return (await (await this.host()).text()).trim();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyIconHarness } from '@skyux/icon/testing';\n\nimport { SkyCheckboxHarness } from '../checkbox/checkbox-harness';\nimport { SkyRadioHarness } from '../radio/radio-harness';\n\nimport { SkySelectionBoxDescriptionHarness } from './selection-box-description-harness';\nimport { SkySelectionBoxHarnessFilters } from './selection-box-harness-filters';\nimport { SkySelectionBoxHeaderHarness } from './selection-box-header-harness';\n\n/**\n * Harness to interact with a selection box component in tests.\n */\nexport class SkySelectionBoxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySelectionBoxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkySelectionBoxHarnessFilters,\n ): HarnessPredicate<SkySelectionBoxHarness> {\n return SkySelectionBoxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the checkbox or radio harness for the selection box form control.\n */\n public async getControl(): Promise<SkyCheckboxHarness | SkyRadioHarness> {\n return await this.locatorFor(SkyCheckboxHarness, SkyRadioHarness)();\n }\n\n /**\n * Gets the selection box description text.\n */\n public async getDescriptionText(): Promise<string> {\n const text = await (\n await this.locatorForOptional(SkySelectionBoxDescriptionHarness)()\n )?.getText();\n return text ?? '';\n }\n\n /**\n * Gets the selection box header text.\n */\n public async getHeaderText(): Promise<string> {\n const text = await (\n await this.locatorForOptional(SkySelectionBoxHeaderHarness)()\n )?.getText();\n return text ?? '';\n }\n\n /**\n * Gets the selection box icon, if it exists.\n */\n public async getIcon(): Promise<SkyIconHarness | null> {\n return await this.locatorForOptional(SkyIconHarness)();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkySelectionBoxGridHarnessFilters } from './selection-box-grid-harness-filters';\nimport { SkySelectionBoxHarness } from './selection-box-harness';\nimport { SkySelectionBoxHarnessFilters } from './selection-box-harness-filters';\n\n/**\n * Harness for interacting with a selection box grid component in tests.\n */\nexport class SkySelectionBoxGridHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-grid';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySelectionBoxGridHarness` that meets certain criteria.\n */\n public static with(\n filters: SkySelectionBoxGridHarnessFilters,\n ): HarnessPredicate<SkySelectionBoxGridHarness> {\n return SkySelectionBoxGridHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a specific selection box based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getSelectionBox(\n filter: SkySelectionBoxHarnessFilters,\n ): Promise<SkySelectionBoxHarness> {\n return await this.locatorFor(SkySelectionBoxHarness.with(filter))();\n }\n\n /**\n * Gets an array of selection boxes based on the filter criteria.\n * If no filter is provided, returns all selection boxes.\n * @param filters The optional filter criteria.\n */\n public async getSelectionBoxes(\n filters?: SkySelectionBoxHarnessFilters,\n ): Promise<SkySelectionBoxHarness[]> {\n return await this.locatorForAll(\n SkySelectionBoxHarness.with(filters || {}),\n )();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a toggle switch label component in tests.\n * @internal\n */\nexport class SkyToggleSwitchLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toggle-switch-label';\n\n #getLabelContent = this.locatorFor('span[skyTrim]');\n\n /**\n * Gets the text content of the toggle switch label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyToggleSwitchHarnessFilters } from './toggle-switch-harness-filters';\nimport { SkyToggleSwitchLabelHarness } from './toggle-switch-label-harness';\n\n/**\n * Harness for interacting with a toggle switch component in tests.\n */\nexport class SkyToggleSwitchHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toggle-switch';\n\n #getButton = this.locatorFor('button.sky-toggle-switch-button');\n #getLabel = this.locatorForOptional(SkyToggleSwitchLabelHarness);\n #getLabelText = this.locatorForOptional('span.sky-toggle-switch-label-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyToggleSwitchHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyToggleSwitchHarnessFilters,\n ): HarnessPredicate<SkyToggleSwitchHarness> {\n return SkyToggleSwitchHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the toggle switch.\n */\n public async blur(): Promise<void> {\n await (await this.#getButton()).blur();\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Puts the toggle switch in a checked state.\n */\n public async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n\n /**\n * Focuses the toggle switch.\n */\n public async focus(): Promise<void> {\n await (await this.#getButton()).focus();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelText = await this.#getLabelText();\n const labelComponent = await this.#getLabel();\n\n if (labelComponent) {\n throw new Error(\n '`labelHidden` is only supported when setting the toggle switch label via the `labelText` input.',\n );\n } else {\n return !(await labelText?.text());\n }\n }\n\n /**\n * Gets the toggle switch's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelText = await (await this.#getLabelText())?.text();\n const ariaLabel = await this.#getAriaLabel();\n\n return (\n labelText || ariaLabel || (await (await this.#getLabel())?.getText())\n );\n }\n\n /**\n * Whether the toggle switch is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (\n await this.#getButton()\n ).hasClass('sky-toggle-switch-checked');\n }\n\n /**\n * Whether the toggle switch is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getButton()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the toggle switch is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getButton()).isFocused();\n }\n\n /**\n * Puts the toggle switch in an unchecked state.\n */\n public async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n\n async #getAriaLabel(): Promise<string | null> {\n return await (await this.#getButton()).getAttribute('aria-label');\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n\n async #toggle(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error(\n 'Could not toggle the toggle switch because it is disabled.',\n );\n } else {\n await (await this.#getButton()).click();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|