@skyux/tabs 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-tabs.mjs","sources":["../tmp-esm2022/lib/modules/shared/sky-tabs-resources.module.js","../tmp-esm2022/lib/modules/vertical-tabset/vertical-tabset-group.service.js","../tmp-esm2022/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js","../tmp-esm2022/lib/modules/vertical-tabset/vertical-tabset.service.js","../tmp-esm2022/lib/modules/shared/tab-id.service.js","../tmp-esm2022/lib/modules/vertical-tabset/vertical-tab.component.js","../tmp-esm2022/lib/modules/vertical-tabset/vertical-tabset-group.component.js","../tmp-esm2022/lib/modules/vertical-tabset/vertical-tabset.component.js","../tmp-esm2022/lib/modules/vertical-tabset/vertical-tabset.module.js","../tmp-esm2022/lib/modules/sectioned-form/sectioned-form.service.js","../tmp-esm2022/lib/modules/sectioned-form/sectioned-form-section.component.js","../tmp-esm2022/lib/modules/sectioned-form/types/sectioned-form-message-type.js","../tmp-esm2022/lib/modules/sectioned-form/sectioned-form.component.js","../tmp-esm2022/lib/modules/sectioned-form/sectioned-form.module.js","../tmp-esm2022/lib/modules/tabs/tab-button-adapter.service.js","../tmp-esm2022/lib/modules/tabs/tabset.service.js","../tmp-esm2022/lib/modules/tabs/tab-button.component.js","../tmp-esm2022/lib/modules/tabs/tabset-permalink.service.js","../tmp-esm2022/lib/modules/tabs/tab.component.js","../tmp-esm2022/lib/modules/tabs/tabset-nav-button-disabled.pipe.js","../tmp-esm2022/lib/modules/tabs/tabset-nav-button.component.js","../tmp-esm2022/lib/modules/tabs/tabset-adapter.service.js","../tmp-esm2022/lib/modules/tabs/tabset.component.js","../tmp-esm2022/lib/modules/tabs/tabs.module.js","../tmp-esm2022/skyux-tabs.js"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-tabs' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';\nimport * as i0 from \"@angular/core\";\nconst RESOURCES = {\n 'EN-US': {\n skyux_tab_add: { message: 'Add tab' },\n skyux_tab_close: { message: 'Close {0} tab' },\n skyux_tabs_navigator_finish: { message: 'Finish' },\n skyux_tabs_navigator_next: { message: 'Next' },\n skyux_tabs_navigator_previous: { message: 'Previous' },\n skyux_tab_open: { message: 'Open tab' },\n skyux_vertical_tabs_show_tabs_text: { message: 'Tab list' },\n skyux_wizard_sr_step_current: { message: 'Step {0} of {1}, current: {2}' },\n skyux_wizard_sr_step_completed: {\n message: 'Step {0} of {1}, completed: {2}',\n },\n skyux_wizard_sr_step_unavailable: {\n message: 'Step {0} of {1}, unavailable: {2}',\n },\n },\n 'FR-CA': {\n skyux_tab_add: { message: 'Ajouter un onglet' },\n skyux_tab_close: { message: 'Fermer l’onglet {0}' },\n skyux_tabs_navigator_finish: { message: 'Terminer' },\n skyux_tabs_navigator_next: { message: 'Suivant' },\n skyux_tabs_navigator_previous: { message: 'Précédent' },\n skyux_tab_open: { message: 'Ouvrir l’onglet' },\n skyux_vertical_tabs_show_tabs_text: { message: 'Liste des onglets' },\n skyux_wizard_sr_step_current: {\n message: 'Étape {0} de {1}, en cours : {2}',\n },\n skyux_wizard_sr_step_completed: {\n message: 'Étape {0} de {1}, terminée : {2}',\n },\n skyux_wizard_sr_step_unavailable: {\n message: 'Étape {0} de {1}, non disponible : {2}',\n },\n },\n};\nSkyLibResourcesService.addResources(RESOURCES);\n/**\n * Import into any component library module that needs to use resource strings.\n */\nexport class SkyTabsResourcesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsResourcesModule, exports: [SkyI18nModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsResourcesModule, imports: [SkyI18nModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsResourcesModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyI18nModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LXRhYnMtcmVzb3VyY2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2t5LXRhYnMtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1AsYUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtRQUNyQyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFO1FBQzdDLDJCQUEyQixFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtRQUNsRCx5QkFBeUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7UUFDOUMsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO1FBQ3RELGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUU7UUFDdkMsa0NBQWtDLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO1FBQzNELDRCQUE0QixFQUFFLEVBQUUsT0FBTyxFQUFFLCtCQUErQixFQUFFO1FBQzFFLDhCQUE4QixFQUFFO1lBQzlCLE9BQU8sRUFBRSxpQ0FBaUM7U0FDM0M7UUFDRCxnQ0FBZ0MsRUFBRTtZQUNoQyxPQUFPLEVBQUUsbUNBQW1DO1NBQzdDO0tBQ0Y7SUFDRCxPQUFPLEVBQUU7UUFDUCxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7UUFDL0MsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFO1FBQ25ELDJCQUEyQixFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRTtRQUNwRCx5QkFBeUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7UUFDakQsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO1FBQ3ZELGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRTtRQUM5QyxrQ0FBa0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRTtRQUNwRSw0QkFBNEIsRUFBRTtZQUM1QixPQUFPLEVBQUUsa0NBQWtDO1NBQzVDO1FBQ0QsOEJBQThCLEVBQUU7WUFDOUIsT0FBTyxFQUFFLGtDQUFrQztTQUM1QztRQUNELGdDQUFnQyxFQUFFO1lBQ2hDLE9BQU8sRUFBRSx3Q0FBd0M7U0FDbEQ7S0FDRjtDQUNGLENBQUM7QUFFRixzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCOytHQUF0QixzQkFBc0I7Z0hBQXRCLHNCQUFzQixZQUZ2QixhQUFhO2dIQUVaLHNCQUFzQixZQUZ2QixhQUFhOzs0RkFFWixzQkFBc0I7a0JBSGxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG4vKipcbiAqIE5PVElDRTogRE8gTk9UIE1PRElGWSBUSElTIEZJTEUhXG4gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnlcbiAqIHRoZSAnbmcgZ2VuZXJhdGUgQHNreXV4L2kxOG46bGliLXJlc291cmNlcy1tb2R1bGUgbGliL21vZHVsZXMvc2hhcmVkL3NreS10YWJzJyBzY2hlbWF0aWMuXG4gKiBUbyB1cGRhdGUgdGhpcyBmaWxlLCBzaW1wbHkgcmVydW4gdGhlIGNvbW1hbmQuXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lJMThuTW9kdWxlLFxuICBTa3lMaWJSZXNvdXJjZXMsXG4gIFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9pMThuJztcblxuY29uc3QgUkVTT1VSQ0VTOiBSZWNvcmQ8c3RyaW5nLCBTa3lMaWJSZXNvdXJjZXM+ID0ge1xuICAnRU4tVVMnOiB7XG4gICAgc2t5dXhfdGFiX2FkZDogeyBtZXNzYWdlOiAnQWRkIHRhYicgfSxcbiAgICBza3l1eF90YWJfY2xvc2U6IHsgbWVzc2FnZTogJ0Nsb3NlIHswfSB0YWInIH0sXG4gICAgc2t5dXhfdGFic19uYXZpZ2F0b3JfZmluaXNoOiB7IG1lc3NhZ2U6ICdGaW5pc2gnIH0sXG4gICAgc2t5dXhfdGFic19uYXZpZ2F0b3JfbmV4dDogeyBtZXNzYWdlOiAnTmV4dCcgfSxcbiAgICBza3l1eF90YWJzX25hdmlnYXRvcl9wcmV2aW91czogeyBtZXNzYWdlOiAnUHJldmlvdXMnIH0sXG4gICAgc2t5dXhfdGFiX29wZW46IHsgbWVzc2FnZTogJ09wZW4gdGFiJyB9LFxuICAgIHNreXV4X3ZlcnRpY2FsX3RhYnNfc2hvd190YWJzX3RleHQ6IHsgbWVzc2FnZTogJ1RhYiBsaXN0JyB9LFxuICAgIHNreXV4X3dpemFyZF9zcl9zdGVwX2N1cnJlbnQ6IHsgbWVzc2FnZTogJ1N0ZXAgezB9IG9mIHsxfSwgY3VycmVudDogezJ9JyB9LFxuICAgIHNreXV4X3dpemFyZF9zcl9zdGVwX2NvbXBsZXRlZDoge1xuICAgICAgbWVzc2FnZTogJ1N0ZXAgezB9IG9mIHsxfSwgY29tcGxldGVkOiB7Mn0nLFxuICAgIH0sXG4gICAgc2t5dXhfd2l6YXJkX3NyX3N0ZXBfdW5hdmFpbGFibGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdTdGVwIHswfSBvZiB7MX0sIHVuYXZhaWxhYmxlOiB7Mn0nLFxuICAgIH0sXG4gIH0sXG4gICdGUi1DQSc6IHtcbiAgICBza3l1eF90YWJfYWRkOiB7IG1lc3NhZ2U6ICdBam91dGVyIHVuIG9uZ2xldCcgfSxcbiAgICBza3l1eF90YWJfY2xvc2U6IHsgbWVzc2FnZTogJ0Zlcm1lciBs4oCZb25nbGV0IHswfScgfSxcbiAgICBza3l1eF90YWJzX25hdmlnYXRvcl9maW5pc2g6IHsgbWVzc2FnZTogJ1Rlcm1pbmVyJyB9LFxuICAgIHNreXV4X3RhYnNfbmF2aWdhdG9yX25leHQ6IHsgbWVzc2FnZTogJ1N1aXZhbnQnIH0sXG4gICAgc2t5dXhfdGFic19uYXZpZ2F0b3JfcHJldmlvdXM6IHsgbWVzc2FnZTogJ1Byw6ljw6lkZW50JyB9LFxuICAgIHNreXV4X3RhYl9vcGVuOiB7IG1lc3NhZ2U6ICdPdXZyaXIgbOKAmW9uZ2xldCcgfSxcbiAgICBza3l1eF92ZXJ0aWNhbF90YWJzX3Nob3dfdGFic190ZXh0OiB7IG1lc3NhZ2U6ICdMaXN0ZSBkZXMgb25nbGV0cycgfSxcbiAgICBza3l1eF93aXphcmRfc3Jfc3RlcF9jdXJyZW50OiB7XG4gICAgICBtZXNzYWdlOiAnw4l0YXBlIHswfSBkZSB7MX0sIGVuIGNvdXJzwqA6IHsyfScsXG4gICAgfSxcbiAgICBza3l1eF93aXphcmRfc3Jfc3RlcF9jb21wbGV0ZWQ6IHtcbiAgICAgIG1lc3NhZ2U6ICfDiXRhcGUgezB9IGRlIHsxfSwgdGVybWluw6llwqA6IHsyfScsXG4gICAgfSxcbiAgICBza3l1eF93aXphcmRfc3Jfc3RlcF91bmF2YWlsYWJsZToge1xuICAgICAgbWVzc2FnZTogJ8OJdGFwZSB7MH0gZGUgezF9LCBub24gZGlzcG9uaWJsZcKgOiB7Mn0nLFxuICAgIH0sXG4gIH0sXG59O1xuXG5Ta3lMaWJSZXNvdXJjZXNTZXJ2aWNlLmFkZFJlc291cmNlcyhSRVNPVVJDRVMpO1xuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUYWJzUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyVerticalTabsetGroupService {\n constructor() {\n this.messageStream = new Subject();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetGroupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetGroupService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetGroupService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWdyb3VwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC1ncm91cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJL0I7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNkJBQTZCO0lBRDFDO1FBRVMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBaUMsQ0FBQztLQUNyRTsrR0FGWSw2QkFBNkI7bUhBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwTWVzc2FnZSB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LWdyb3VwLW1lc3NhZ2UnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRHcm91cFNlcnZpY2Uge1xuICBwdWJsaWMgbWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreVZlcnRpY2FsVGFic2V0R3JvdXBNZXNzYWdlPigpO1xufVxuIl19","import { DOCUMENT, Injectable, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nconst VERTICAL_TABSET_BUTTON_SELECTOR = '.sky-vertical-tabset-button';\nconst VERTICAL_TABSET_BUTTON_DISABLED_SELECTOR = `${VERTICAL_TABSET_BUTTON_SELECTOR}-disabled`;\nexport class SkyVerticalTabsetAdapterService {\n #document = inject(DOCUMENT);\n scrollToContentTop(element) {\n element.nativeElement.scrollTop = 0;\n }\n focusButton(elRef) {\n return this.#focusButtonEl(elRef?.nativeElement);\n }\n focusFirstButton(tabGroups) {\n const tabGroupsEl = tabGroups?.nativeElement;\n if (tabGroupsEl) {\n const firstButtonEl = tabGroupsEl.querySelector(VERTICAL_TABSET_BUTTON_SELECTOR);\n if (firstButtonEl) {\n firstButtonEl.focus();\n }\n }\n }\n focusNextButton(tabGroups) {\n this.#focusSiblingButton(tabGroups);\n }\n focusPreviousButton(tabGroups) {\n this.#focusSiblingButton(tabGroups, true);\n }\n #focusSiblingButton(tabGroups, previous) {\n if (tabGroups) {\n const focusedEl = this.#document.activeElement;\n if (focusedEl?.matches(VERTICAL_TABSET_BUTTON_SELECTOR)) {\n const tabGroupsEl = tabGroups.nativeElement;\n const buttonEls = Array.from(tabGroupsEl.querySelectorAll(VERTICAL_TABSET_BUTTON_SELECTOR));\n if (previous) {\n buttonEls.reverse();\n }\n const focusedIndex = buttonEls.indexOf(focusedEl);\n for (let i = 1, n = buttonEls.length; i < n; i++) {\n // Offset the index of the next button from the index of the\n // currently focused button, circling back to the first button\n // when the end of the list is reached.\n const offset = (i + focusedIndex) % n;\n if (this.#focusButtonEl(buttonEls[offset])) {\n break;\n }\n }\n }\n }\n }\n #focusButtonEl(el) {\n if (el && !el.matches(VERTICAL_TABSET_BUTTON_DISABLED_SELECTOR)) {\n el.focus();\n return this.#elHasFocus(el);\n }\n return false;\n }\n #elHasFocus(el) {\n return !!el && el === this.#document.activeElement;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetAdapterService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFjLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXpFLE1BQU0sK0JBQStCLEdBQUcsNkJBQTZCLENBQUM7QUFDdEUsTUFBTSx3Q0FBd0MsR0FBRyxHQUFHLCtCQUErQixXQUFXLENBQUM7QUFHL0YsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRCLGtCQUFrQixDQUFDLE9BQW1CO1FBQzNDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQTBDO1FBQzNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLGdCQUFnQixDQUNyQixTQUE4QztRQUU5QyxNQUFNLFdBQVcsR0FBRyxTQUFTLEVBQUUsYUFBYSxDQUFDO1FBRTdDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FDN0MsK0JBQStCLENBQ1YsQ0FBQztZQUV4QixJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU0sZUFBZSxDQUFDLFNBQWlDO1FBQ3RELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsU0FBaUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsbUJBQW1CLENBQ2pCLFNBQThDLEVBQzlDLFFBQWtCO1FBRWxCLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQW1DLENBQUM7WUFFckUsSUFBSSxTQUFTLEVBQUUsT0FBTyxDQUFDLCtCQUErQixDQUFDLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQztnQkFFNUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDMUIsV0FBVyxDQUFDLGdCQUFnQixDQUFDLCtCQUErQixDQUFDLENBQzdDLENBQUM7Z0JBRW5CLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixDQUFDO2dCQUVELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRWxELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDakQsNERBQTREO29CQUM1RCw4REFBOEQ7b0JBQzlELHVDQUF1QztvQkFDdkMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUV0QyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDM0MsTUFBTTtvQkFDUixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsRUFBa0M7UUFDL0MsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFrQztRQUM1QyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO0lBQ3JELENBQUM7K0dBaEZVLCtCQUErQjttSEFBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBWRVJUSUNBTF9UQUJTRVRfQlVUVE9OX1NFTEVDVE9SID0gJy5za3ktdmVydGljYWwtdGFic2V0LWJ1dHRvbic7XG5jb25zdCBWRVJUSUNBTF9UQUJTRVRfQlVUVE9OX0RJU0FCTEVEX1NFTEVDVE9SID0gYCR7VkVSVElDQUxfVEFCU0VUX0JVVFRPTl9TRUxFQ1RPUn0tZGlzYWJsZWRgO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRBZGFwdGVyU2VydmljZSB7XG4gICNkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgcHVibGljIHNjcm9sbFRvQ29udGVudFRvcChlbGVtZW50OiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gIH1cblxuICBwdWJsaWMgZm9jdXNCdXR0b24oZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2ZvY3VzQnV0dG9uRWwoZWxSZWY/Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzRmlyc3RCdXR0b24oXG4gICAgdGFiR3JvdXBzOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgdGFiR3JvdXBzRWwgPSB0YWJHcm91cHM/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAodGFiR3JvdXBzRWwpIHtcbiAgICAgIGNvbnN0IGZpcnN0QnV0dG9uRWwgPSB0YWJHcm91cHNFbC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBWRVJUSUNBTF9UQUJTRVRfQlVUVE9OX1NFTEVDVE9SLFxuICAgICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICAgIGlmIChmaXJzdEJ1dHRvbkVsKSB7XG4gICAgICAgIGZpcnN0QnV0dG9uRWwuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNOZXh0QnV0dG9uKHRhYkdyb3VwczogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI2ZvY3VzU2libGluZ0J1dHRvbih0YWJHcm91cHMpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzUHJldmlvdXNCdXR0b24odGFiR3JvdXBzOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy4jZm9jdXNTaWJsaW5nQnV0dG9uKHRhYkdyb3VwcywgdHJ1ZSk7XG4gIH1cblxuICAjZm9jdXNTaWJsaW5nQnV0dG9uKFxuICAgIHRhYkdyb3VwczogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQsXG4gICAgcHJldmlvdXM/OiBib29sZWFuLFxuICApOiB2b2lkIHtcbiAgICBpZiAodGFiR3JvdXBzKSB7XG4gICAgICBjb25zdCBmb2N1c2VkRWwgPSB0aGlzLiNkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgICAgaWYgKGZvY3VzZWRFbD8ubWF0Y2hlcyhWRVJUSUNBTF9UQUJTRVRfQlVUVE9OX1NFTEVDVE9SKSkge1xuICAgICAgICBjb25zdCB0YWJHcm91cHNFbCA9IHRhYkdyb3Vwcy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IGJ1dHRvbkVscyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgdGFiR3JvdXBzRWwucXVlcnlTZWxlY3RvckFsbChWRVJUSUNBTF9UQUJTRVRfQlVUVE9OX1NFTEVDVE9SKSxcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICAgIGJ1dHRvbkVscy5yZXZlcnNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb2N1c2VkSW5kZXggPSBidXR0b25FbHMuaW5kZXhPZihmb2N1c2VkRWwpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAxLCBuID0gYnV0dG9uRWxzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIC8vIE9mZnNldCB0aGUgaW5kZXggb2YgdGhlIG5leHQgYnV0dG9uIGZyb20gdGhlIGluZGV4IG9mIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnRseSBmb2N1c2VkIGJ1dHRvbiwgY2lyY2xpbmcgYmFjayB0byB0aGUgZmlyc3QgYnV0dG9uXG4gICAgICAgICAgLy8gd2hlbiB0aGUgZW5kIG9mIHRoZSBsaXN0IGlzIHJlYWNoZWQuXG4gICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gKGkgKyBmb2N1c2VkSW5kZXgpICUgbjtcblxuICAgICAgICAgIGlmICh0aGlzLiNmb2N1c0J1dHRvbkVsKGJ1dHRvbkVsc1tvZmZzZXRdKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2ZvY3VzQnV0dG9uRWwoZWw6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmIChlbCAmJiAhZWwubWF0Y2hlcyhWRVJUSUNBTF9UQUJTRVRfQlVUVE9OX0RJU0FCTEVEX1NFTEVDVE9SKSkge1xuICAgICAgZWwuZm9jdXMoKTtcbiAgICAgIHJldHVybiB0aGlzLiNlbEhhc0ZvY3VzKGVsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAjZWxIYXNGb2N1cyhlbDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZWwgJiYgZWwgPT09IHRoaXMuI2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SkyMediaQueryService } from '@skyux/core';\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport * as i0 from \"@angular/core\";\nexport const VISIBLE_STATE = 'shown';\nexport const HIDDEN_STATE = 'void';\n/**\n * @internal\n */\nexport class SkyVerticalTabsetService {\n #groups;\n #contentAdded;\n #tabsVisible;\n #isMobile;\n #adapterSvc;\n constructor() {\n this.activeIndex = undefined;\n this.hidingTabs = new BehaviorSubject(false);\n this.indexChanged = new ReplaySubject(1);\n this.maintainTabContent = false;\n this.showingTabs = new BehaviorSubject(false);\n this.switchingMobile = new Subject();\n this.tabs = [];\n this.tabAdded = new Subject();\n this.tabClicked = new ReplaySubject(1);\n this.#groups = [];\n this.#contentAdded = false;\n this.#tabsVisible = false;\n this.#isMobile = false;\n this.#adapterSvc = inject(SkyVerticalTabsetAdapterService);\n inject(SkyMediaQueryService)\n .breakpointChange.pipe(takeUntilDestroyed())\n .subscribe((breakpoint) => {\n const nowMobile = breakpoint === 'xs';\n if (nowMobile && !this.#isMobile) {\n // switching to mobile\n this.switchingMobile.next(true);\n if (!this.#tabsVisible) {\n this.hidingTabs.next(true);\n }\n }\n else if (!nowMobile && this.#isMobile) {\n // switching to widescreen\n this.switchingMobile.next(false);\n if (!this.#tabsVisible) {\n this.showingTabs.next(true);\n }\n }\n this.#isMobile = nowMobile;\n });\n }\n addTab(tab) {\n const index = this.tabs.length;\n tab.index = index;\n this.tabs.push(tab);\n if (tab.active) {\n this.activateTab(tab);\n }\n this.tabAdded.next(tab);\n }\n destroyTab(tab) {\n const tabIndex = this.tabs.indexOf(tab);\n if (tabIndex === -1) {\n return;\n }\n if (this.maintainTabContent &&\n tab.contentRendered &&\n /* istanbul ignore next */\n this.content?.nativeElement.contains(tab.tabContent?.nativeElement)) {\n this.content?.nativeElement.removeChild(tab.tabContent?.nativeElement);\n }\n this.tabs.splice(tabIndex, 1);\n // update tab indices\n this.tabs.forEach((tabItem, index) => (tabItem.index = index));\n if (tab.active) {\n if (!this.maintainTabContent) {\n this.#destroyContent();\n }\n // Try selecting the next tab first, and if there's no next tab then\n // try selecting the previous one.\n const newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];\n /*istanbul ignore else */\n if (newActiveTab) {\n newActiveTab.activateTab();\n }\n }\n }\n addGroup(group) {\n this.#groups.push(group);\n }\n destroyGroup(group) {\n const groupIndex = this.#groups.indexOf(group);\n if (groupIndex >= 0) {\n this.#groups.splice(groupIndex, 1);\n }\n }\n activateTab(tab) {\n // deactivate active tab\n const activeTab = this.tabs.find((t) => t.index === this.activeIndex);\n if (activeTab && activeTab.index !== tab.index) {\n activeTab.active = false;\n activeTab.tabDeactivated();\n }\n this.activeIndex = tab.index;\n this.tabClicked.next(true);\n this.#updateTabClicked();\n }\n activeTab() {\n return this.tabs.find((t) => t.index === this.activeIndex);\n }\n isMobile() {\n return this.#isMobile;\n }\n updateContent() {\n if (!this.maintainTabContent) {\n if (!this.#contentAdded && this.contentVisible()) {\n // content needs to be moved\n this.#moveContent();\n }\n else if (this.#contentAdded && !this.contentVisible()) {\n // content hidden\n this.#contentAdded = false;\n }\n }\n else {\n this.tabs.forEach((tab) => {\n if (!tab.contentRendered) {\n this.content?.nativeElement.appendChild(tab.tabContent?.nativeElement);\n tab.contentRendered = true;\n }\n });\n }\n }\n tabsVisible() {\n return !this.isMobile() || this.#tabsVisible;\n }\n contentVisible() {\n return !this.isMobile() || !this.#tabsVisible;\n }\n showTabs() {\n this.#tabsVisible = true;\n this.#contentAdded = false;\n this.animationTabsVisibleState = VISIBLE_STATE;\n this.animationContentVisibleState = HIDDEN_STATE;\n this.showingTabs.next(true);\n }\n focusActiveTab(tabGroups) {\n let focused = false;\n const activeTab = this.tabs.find((tab) => tab.active);\n if (activeTab) {\n const parentGroup = this.#findParentGroup(activeTab);\n const buttonToFocus = parentGroup && !parentGroup.open\n ? parentGroup.groupHeadingButton\n : activeTab.tabButton;\n focused = this.#adapterSvc.focusButton(buttonToFocus);\n }\n if (!focused) {\n this.#adapterSvc.focusFirstButton(tabGroups);\n }\n }\n #findParentGroup(tab) {\n return this.#groups.find((group) => group.tabs?.some((groupTab) => tab === groupTab));\n }\n #destroyContent() {\n if (this.content) {\n this.content.nativeElement.innerHTML = '';\n }\n this.content = undefined;\n }\n #moveContent() {\n /* istanbul ignore else */\n if (this.content && !this.#contentAdded) {\n const activeTab = this.activeTab();\n const activeContent = activeTab ? activeTab.tabContent : undefined;\n if (activeContent && activeTab && activeContent.nativeElement) {\n this.content.nativeElement.appendChild(activeContent.nativeElement);\n activeTab.contentRendered = true;\n this.#contentAdded = true;\n }\n }\n }\n #updateTabClicked() {\n this.#contentAdded = false;\n if (this.isMobile()) {\n this.#tabsVisible = false;\n this.animationContentVisibleState = VISIBLE_STATE;\n this.animationTabsVisibleState = HIDDEN_STATE;\n this.hidingTabs.next(true);\n }\n this.indexChanged.next(this.activeIndex);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBR3BGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUVuQzs7R0FFRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUF5Qm5DLE9BQU8sQ0FBeUM7SUFFaEQsYUFBYSxDQUFTO0lBRXRCLFlBQVksQ0FBUztJQUVyQixTQUFTLENBQVM7SUFFbEIsV0FBVyxDQUEyQztJQUV0RDtRQWxDTyxnQkFBVyxHQUF1QixTQUFTLENBQUM7UUFRNUMsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhDLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQXFCLENBQUMsQ0FBQyxDQUFDO1FBRXhELHVCQUFrQixHQUF3QixLQUFLLENBQUM7UUFFaEQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFekMsU0FB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Q0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLGFBQWEsQ0FBQztZQUNsRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsWUFBWSxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0E5T1Usd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFNreU1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJDb21wb25lbnQgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQtZ3JvdXAuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IFZJU0lCTEVfU1RBVEUgPSAnc2hvd24nO1xuZXhwb3J0IGNvbnN0IEhJRERFTl9TVEFURSA9ICd2b2lkJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFic2V0U2VydmljZSB7XG4gIHB1YmxpYyBhY3RpdmVJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhbmltYXRpb25Db250ZW50VmlzaWJsZVN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFuaW1hdGlvblRhYnNWaXNpYmxlU3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgY29udGVudDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaGlkaW5nVGFicyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBpbmRleENoYW5nZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KDEpO1xuXG4gIHB1YmxpYyBtYWludGFpblRhYkNvbnRlbnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd2luZ1RhYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgc3dpdGNoaW5nTW9iaWxlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgdGFiczogU2t5VmVydGljYWxUYWJDb21wb25lbnRbXSA9IFtdO1xuXG4gIHB1YmxpYyB0YWJBZGRlZCA9IG5ldyBTdWJqZWN0PFNreVZlcnRpY2FsVGFiQ29tcG9uZW50PigpO1xuXG4gIHB1YmxpYyB0YWJDbGlja2VkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG5cbiAgI2dyb3VwczogU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudFtdID0gW107XG5cbiAgI2NvbnRlbnRBZGRlZCA9IGZhbHNlO1xuXG4gICN0YWJzVmlzaWJsZSA9IGZhbHNlO1xuXG4gICNpc01vYmlsZSA9IGZhbHNlO1xuXG4gICNhZGFwdGVyU3ZjID0gaW5qZWN0KFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGluamVjdChTa3lNZWRpYVF1ZXJ5U2VydmljZSlcbiAgICAgIC5icmVha3BvaW50Q2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChicmVha3BvaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5vd01vYmlsZSA9IGJyZWFrcG9pbnQgPT09ICd4cyc7XG5cbiAgICAgICAgaWYgKG5vd01vYmlsZSAmJiAhdGhpcy4jaXNNb2JpbGUpIHtcbiAgICAgICAgICAvLyBzd2l0Y2hpbmcgdG8gbW9iaWxlXG4gICAgICAgICAgdGhpcy5zd2l0Y2hpbmdNb2JpbGUubmV4dCh0cnVlKTtcblxuICAgICAgICAgIGlmICghdGhpcy4jdGFic1Zpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkaW5nVGFicy5uZXh0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghbm93TW9iaWxlICYmIHRoaXMuI2lzTW9iaWxlKSB7XG4gICAgICAgICAgLy8gc3dpdGNoaW5nIHRvIHdpZGVzY3JlZW5cbiAgICAgICAgICB0aGlzLnN3aXRjaGluZ01vYmlsZS5uZXh0KGZhbHNlKTtcblxuICAgICAgICAgIGlmICghdGhpcy4jdGFic1Zpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd2luZ1RhYnMubmV4dCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNpc01vYmlsZSA9IG5vd01vYmlsZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoO1xuICAgIHRhYi5pbmRleCA9IGluZGV4O1xuXG4gICAgdGhpcy50YWJzLnB1c2godGFiKTtcblxuICAgIGlmICh0YWIuYWN0aXZlKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlVGFiKHRhYik7XG4gICAgfVxuXG4gICAgdGhpcy50YWJBZGRlZC5uZXh0KHRhYik7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveVRhYih0YWI6IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLnRhYnMuaW5kZXhPZih0YWIpO1xuICAgIGlmICh0YWJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm1haW50YWluVGFiQ29udGVudCAmJlxuICAgICAgdGFiLmNvbnRlbnRSZW5kZXJlZCAmJlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5jb250YWlucyh0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5yZW1vdmVDaGlsZCh0YWIudGFiQ29udGVudD8ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy50YWJzLnNwbGljZSh0YWJJbmRleCwgMSk7XG4gICAgLy8gdXBkYXRlIHRhYiBpbmRpY2VzXG4gICAgdGhpcy50YWJzLmZvckVhY2goKHRhYkl0ZW0sIGluZGV4KSA9PiAodGFiSXRlbS5pbmRleCA9IGluZGV4KSk7XG5cbiAgICBpZiAodGFiLmFjdGl2ZSkge1xuICAgICAgaWYgKCF0aGlzLm1haW50YWluVGFiQ29udGVudCkge1xuICAgICAgICB0aGlzLiNkZXN0cm95Q29udGVudCgpO1xuICAgICAgfVxuICAgICAgLy8gVHJ5IHNlbGVjdGluZyB0aGUgbmV4dCB0YWIgZmlyc3QsIGFuZCBpZiB0aGVyZSdzIG5vIG5leHQgdGFiIHRoZW5cbiAgICAgIC8vIHRyeSBzZWxlY3RpbmcgdGhlIHByZXZpb3VzIG9uZS5cbiAgICAgIGNvbnN0IG5ld0FjdGl2ZVRhYiA9IHRoaXMudGFic1t0YWJJbmRleF0gfHwgdGhpcy50YWJzW3RhYkluZGV4IC0gMV07XG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3QWN0aXZlVGFiKSB7XG4gICAgICAgIG5ld0FjdGl2ZVRhYi5hY3RpdmF0ZVRhYigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRHcm91cChncm91cDogU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCk6IHZvaWQge1xuICAgIHRoaXMuI2dyb3Vwcy5wdXNoKGdyb3VwKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95R3JvdXAoZ3JvdXA6IFNreVZlcnRpY2FsVGFic2V0R3JvdXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy4jZ3JvdXBzLmluZGV4T2YoZ3JvdXApO1xuXG4gICAgaWYgKGdyb3VwSW5kZXggPj0gMCkge1xuICAgICAgdGhpcy4jZ3JvdXBzLnNwbGljZShncm91cEluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGVUYWIodGFiOiBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgIC8vIGRlYWN0aXZhdGUgYWN0aXZlIHRhYlxuICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMudGFicy5maW5kKCh0KSA9PiB0LmluZGV4ID09PSB0aGlzLmFjdGl2ZUluZGV4KTtcbiAgICBpZiAoYWN0aXZlVGFiICYmIGFjdGl2ZVRhYi5pbmRleCAhPT0gdGFiLmluZGV4KSB7XG4gICAgICBhY3RpdmVUYWIuYWN0aXZlID0gZmFsc2U7XG4gICAgICBhY3RpdmVUYWIudGFiRGVhY3RpdmF0ZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gdGFiLmluZGV4O1xuICAgIHRoaXMudGFiQ2xpY2tlZC5uZXh0KHRydWUpO1xuICAgIHRoaXMuI3VwZGF0ZVRhYkNsaWNrZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmVUYWIoKTogU2t5VmVydGljYWxUYWJDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYnMuZmluZCgodCkgPT4gdC5pbmRleCA9PT0gdGhpcy5hY3RpdmVJbmRleCk7XG4gIH1cblxuICBwdWJsaWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2lzTW9iaWxlO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1haW50YWluVGFiQ29udGVudCkge1xuICAgICAgaWYgKCF0aGlzLiNjb250ZW50QWRkZWQgJiYgdGhpcy5jb250ZW50VmlzaWJsZSgpKSB7XG4gICAgICAgIC8vIGNvbnRlbnQgbmVlZHMgdG8gYmUgbW92ZWRcbiAgICAgICAgdGhpcy4jbW92ZUNvbnRlbnQoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4jY29udGVudEFkZGVkICYmICF0aGlzLmNvbnRlbnRWaXNpYmxlKCkpIHtcbiAgICAgICAgLy8gY29udGVudCBoaWRkZW5cbiAgICAgICAgdGhpcy4jY29udGVudEFkZGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgaWYgKCF0YWIuY29udGVudFJlbmRlcmVkKSB7XG4gICAgICAgICAgdGhpcy5jb250ZW50Py5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKFxuICAgICAgICAgICAgdGFiLnRhYkNvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0YWIuY29udGVudFJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRhYnNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc01vYmlsZSgpIHx8IHRoaXMuI3RhYnNWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGNvbnRlbnRWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc01vYmlsZSgpIHx8ICF0aGlzLiN0YWJzVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93VGFicygpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzVmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy4jY29udGVudEFkZGVkID0gZmFsc2U7XG4gICAgdGhpcy5hbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlID0gVklTSUJMRV9TVEFURTtcbiAgICB0aGlzLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGUgPSBISURERU5fU1RBVEU7XG4gICAgdGhpcy5zaG93aW5nVGFicy5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzQWN0aXZlVGFiKHRhYkdyb3VwczogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGxldCBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLnRhYnMuZmluZCgodGFiKSA9PiB0YWIuYWN0aXZlKTtcblxuICAgIGlmIChhY3RpdmVUYWIpIHtcbiAgICAgIGNvbnN0IHBhcmVudEdyb3VwID0gdGhpcy4jZmluZFBhcmVudEdyb3VwKGFjdGl2ZVRhYik7XG5cbiAgICAgIGNvbnN0IGJ1dHRvblRvRm9jdXMgPVxuICAgICAgICBwYXJlbnRHcm91cCAmJiAhcGFyZW50R3JvdXAub3BlblxuICAgICAgICAgID8gcGFyZW50R3JvdXAuZ3JvdXBIZWFkaW5nQnV0dG9uXG4gICAgICAgICAgOiBhY3RpdmVUYWIudGFiQnV0dG9uO1xuXG4gICAgICBmb2N1c2VkID0gdGhpcy4jYWRhcHRlclN2Yy5mb2N1c0J1dHRvbihidXR0b25Ub0ZvY3VzKTtcbiAgICB9XG5cbiAgICBpZiAoIWZvY3VzZWQpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTdmMuZm9jdXNGaXJzdEJ1dHRvbih0YWJHcm91cHMpO1xuICAgIH1cbiAgfVxuXG4gICNmaW5kUGFyZW50R3JvdXAoXG4gICAgdGFiOiBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCxcbiAgKTogU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI2dyb3Vwcy5maW5kKChncm91cCkgPT5cbiAgICAgIGdyb3VwLnRhYnM/LnNvbWUoKGdyb3VwVGFiKSA9PiB0YWIgPT09IGdyb3VwVGFiKSxcbiAgICApO1xuICB9XG5cbiAgI2Rlc3Ryb3lDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmNvbnRlbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAjbW92ZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5jb250ZW50ICYmICF0aGlzLiNjb250ZW50QWRkZWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMuYWN0aXZlVGFiKCk7XG4gICAgICBjb25zdCBhY3RpdmVDb250ZW50ID0gYWN0aXZlVGFiID8gYWN0aXZlVGFiLnRhYkNvbnRlbnQgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChhY3RpdmVDb250ZW50ICYmIGFjdGl2ZVRhYiAmJiBhY3RpdmVDb250ZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYWN0aXZlQ29udGVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgYWN0aXZlVGFiLmNvbnRlbnRSZW5kZXJlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuI2NvbnRlbnRBZGRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVRhYkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy4jY29udGVudEFkZGVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc01vYmlsZSgpKSB7XG4gICAgICB0aGlzLiN0YWJzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5hbmltYXRpb25Db250ZW50VmlzaWJsZVN0YXRlID0gVklTSUJMRV9TVEFURTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZSA9IEhJRERFTl9TVEFURTtcbiAgICAgIHRoaXMuaGlkaW5nVGFicy5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHRoaXMuaW5kZXhDaGFuZ2VkLm5leHQodGhpcy5hY3RpdmVJbmRleCk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Tracks the element IDs for all tabs within a tablist.\n * @internal\n */\nexport class SkyTabIdService {\n get ids() {\n return this.#idsObs;\n }\n #ids;\n #ids$;\n #idsObs;\n constructor() {\n this.#ids = new Map();\n this.#ids$ = new BehaviorSubject([]);\n this.#idsObs = this.#ids$.asObservable();\n }\n /**\n * Associates a tab's ID with its parent tablist.\n * @param {string} id A unique ID for the tab's registration.\n * @param {string} elementId The ID applied to the tab's element.\n */\n register(id, elementId) {\n if (!this.#ids.has(id) || this.#ids.get(id) !== elementId) {\n this.#ids.set(id, elementId);\n this.#emitIds();\n }\n }\n /**\n * Disassociates a tab's ID with its parent tablist.\n * @param {string} id The ID used to register the tab.\n */\n unregister(id) {\n if (this.#ids.has(id)) {\n this.#ids.delete(id);\n this.#emitIds();\n }\n }\n #emitIds() {\n this.#ids$.next(Array.from(this.#ids.values()));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabIdService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabIdService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWlkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3RhYi1pZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7QUFFbkQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFDMUIsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLENBQXNCO0lBQzFCLEtBQUssQ0FBNEI7SUFDakMsT0FBTyxDQUF1QjtJQUU5QjtRQUNFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxFQUFVLEVBQUUsU0FBaUI7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVLENBQUMsRUFBVTtRQUMxQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzsrR0F4Q1UsZUFBZTttSEFBZixlQUFlOzs0RkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUcmFja3MgdGhlIGVsZW1lbnQgSURzIGZvciBhbGwgdGFicyB3aXRoaW4gYSB0YWJsaXN0LlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUYWJJZFNlcnZpY2Uge1xuICBwdWJsaWMgZ2V0IGlkcygpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuI2lkc09icztcbiAgfVxuXG4gICNpZHM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICNpZHMkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+O1xuICAjaWRzT2JzOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNpZHMgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy4jaWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcbiAgICB0aGlzLiNpZHNPYnMgPSB0aGlzLiNpZHMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZXMgYSB0YWIncyBJRCB3aXRoIGl0cyBwYXJlbnQgdGFibGlzdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIEEgdW5pcXVlIElEIGZvciB0aGUgdGFiJ3MgcmVnaXN0cmF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZWxlbWVudElkIFRoZSBJRCBhcHBsaWVkIHRvIHRoZSB0YWIncyBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyKGlkOiBzdHJpbmcsIGVsZW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNpZHMuaGFzKGlkKSB8fCB0aGlzLiNpZHMuZ2V0KGlkKSAhPT0gZWxlbWVudElkKSB7XG4gICAgICB0aGlzLiNpZHMuc2V0KGlkLCBlbGVtZW50SWQpO1xuICAgICAgdGhpcy4jZW1pdElkcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhc3NvY2lhdGVzIGEgdGFiJ3MgSUQgd2l0aCBpdHMgcGFyZW50IHRhYmxpc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgSUQgdXNlZCB0byByZWdpc3RlciB0aGUgdGFiLlxuICAgKi9cbiAgcHVibGljIHVucmVnaXN0ZXIoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNpZHMuaGFzKGlkKSkge1xuICAgICAgdGhpcy4jaWRzLmRlbGV0ZShpZCk7XG4gICAgICB0aGlzLiNlbWl0SWRzKCk7XG4gICAgfVxuICB9XG5cbiAgI2VtaXRJZHMoKTogdm9pZCB7XG4gICAgdGhpcy4jaWRzJC5uZXh0KEFycmF5LmZyb20odGhpcy4jaWRzLnZhbHVlcygpKSk7XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, Component, Input, Optional, ViewChild, inject, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { SkyVerticalTabsetGroupService } from './vertical-tabset-group.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./vertical-tabset-adapter.service\";\nimport * as i2 from \"./vertical-tabset.service\";\nimport * as i3 from \"../shared/tab-id.service\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@skyux/icon\";\nimport * as i6 from \"@skyux/core\";\nimport * as i7 from \"@skyux/indicators\";\nlet nextId = 0;\nexport class SkyVerticalTabComponent {\n /**\n * Whether the tab is active when the tabset loads.\n * @default false\n */\n set active(value) {\n if (value !== this.#_active) {\n this.#_active = value ?? false;\n if (this.#_active) {\n this.#tabsetService.activateTab(this);\n }\n }\n }\n get active() {\n return this.#_active;\n }\n #_active;\n /**\n * The ARIA role for the vertical tab\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tab functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/#roles).\n * @default \"tab\"\n * @deprecated Any other value than `tab` could lead to a poor user experience for users with assistive technology.\n * In the next major version, this property will be automatically set to `tab`.\n */\n get ariaRole() {\n return this.#_ariaRole;\n }\n set ariaRole(value) {\n this.#_ariaRole = value ?? 'tab';\n }\n /**\n * The ID for the tab.\n * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n */\n set tabId(value) {\n this.#tabIdOrDefault = value || this.#defaultTabId;\n this.#tabIdSvc?.register(this.#defaultTabId, this.#tabIdOrDefault);\n }\n get tabId() {\n return this.#tabIdOrDefault;\n }\n set contentRendered(value) {\n this.#_contentRendered = value;\n /* istanbul ignore else */\n if (this.#_contentRendered) {\n // NOTE: Trigger another change detection cycle when the service marks\n // this tab as \"rendered\".\n setTimeout(() => {\n if (this.tabContent) {\n this.#changeRef.markForCheck();\n }\n });\n }\n }\n get contentRendered() {\n return this.#_contentRendered;\n }\n #_ariaRole;\n #_contentRendered;\n #tabIdOrDefault;\n #defaultTabId;\n #mobileSubscription;\n #ngUnsubscribe;\n #adapterService;\n #changeRef;\n #tabsetService;\n #tabIdSvc;\n constructor(adapterService, changeRef, tabsetService, tabIdSvc) {\n this.#_active = false;\n /**\n * Whether to disable the tab.\n */\n this.disabled = false;\n /**\n * Whether to indicate that the tab has an error.\n * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n */\n this.errorIndicator = false;\n /**\n * Whether to indicate that the tab has required content.\n * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n */\n this.requiredIndicator = false;\n this.isMobile = false;\n this.groupService = inject(SkyVerticalTabsetGroupService, {\n optional: true,\n });\n this.#_ariaRole = 'tab';\n this.#_contentRendered = false;\n this.#mobileSubscription = new Subject();\n this.#ngUnsubscribe = new Subject();\n this.#adapterService = adapterService;\n this.#changeRef = changeRef;\n this.#tabsetService = tabsetService;\n this.#tabIdSvc = tabIdSvc;\n this.#tabIdOrDefault = this.#defaultTabId = `sky-vertical-tab-${++nextId}`;\n this.tabId = this.#defaultTabId;\n }\n ngOnInit() {\n this.isMobile = this.#tabsetService.isMobile();\n this.#changeRef.markForCheck();\n this.#tabsetService.switchingMobile.subscribe((mobile) => {\n this.isMobile = mobile;\n this.#changeRef.markForCheck();\n });\n this.#tabsetService.addTab(this);\n }\n ngOnDestroy() {\n this.#tabIdSvc?.unregister(this.#defaultTabId);\n this.#mobileSubscription.unsubscribe();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#tabsetService.destroyTab(this);\n }\n activateTab() {\n if (!this.disabled) {\n this.active = true;\n this.#tabsetService.activateTab(this);\n this.#changeRef.markForCheck();\n }\n }\n focusButton() {\n this.#adapterService.focusButton(this.tabButton);\n }\n tabButtonActivate(event) {\n this.activateTab();\n event.stopPropagation();\n }\n tabButtonArrowLeft(event) {\n if (this.groupService) {\n this.groupService.messageStream.next({\n messageType: 'focus',\n });\n event.preventDefault();\n }\n }\n tabDeactivated() {\n this.#changeRef.markForCheck();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabComponent, deps: [{ token: i1.SkyVerticalTabsetAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyVerticalTabsetService }, { token: i3.SkyTabIdService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyVerticalTabComponent, isStandalone: false, selector: \"sky-vertical-tab\", inputs: { active: \"active\", ariaControls: \"ariaControls\", ariaRole: \"ariaRole\", disabled: \"disabled\", errorIndicator: \"errorIndicator\", requiredIndicator: \"requiredIndicator\", tabHeaderCount: \"tabHeaderCount\", tabHeading: \"tabHeading\", showTabRightArrow: \"showTabRightArrow\", tabId: \"tabId\" }, viewQueries: [{ propertyName: \"tabButton\", first: true, predicate: [\"tabButton\"], descendants: true }, { propertyName: \"tabContent\", first: true, predicate: [\"tabContentWrapper\"], descendants: true }], ngImport: i0, template: \"<a\\n #tabButton\\n class=\\\"sky-vertical-tab sky-vertical-tabset-button\\\"\\n [attr.aria-controls]=\\\"\\n isMobile ? undefined : ariaControls || tabContentPane.id\\n \\\"\\n [attr.aria-disabled]=\\\"isMobile ? undefined : disabled || undefined\\\"\\n [attr.aria-selected]=\\\"isMobile ? undefined : active\\\"\\n [attr.id]=\\\"tabId\\\"\\n [attr.role]=\\\"isMobile ? undefined : ariaRole\\\"\\n [ngClass]=\\\"{\\n 'sky-vertical-tab-active': active,\\n 'sky-vertical-tabset-button-disabled': disabled,\\n 'sky-font-deemphasized': disabled\\n }\\\"\\n [tabIndex]=\\\"-1\\\"\\n (click)=\\\"activateTab()\\\"\\n (keyup.arrowleft)=\\\"tabButtonArrowLeft($event)\\\"\\n (keyup.enter)=\\\"tabButtonActivate($event)\\\"\\n (keyup.space)=\\\"tabButtonActivate($event)\\\"\\n>\\n <div class=\\\"sky-vertical-tab-display\\\">\\n <div\\n class=\\\"sky-vertical-tab-heading\\\"\\n [ngClass]=\\\"{ 'sky-control-label-required': requiredIndicator }\\\"\\n >\\n <span class=\\\"sky-vertical-tab-heading-value\\\">{{ tabHeading }}</span>\\n @if (tabHeaderCount || tabHeaderCount === 0) {\\n <span class=\\\"sky-vertical-tab-count\\\"> ({{ tabHeaderCount }}) </span>\\n }\\n </div>\\n @if (errorIndicator) {\\n <sky-status-indicator\\n class=\\\"sky-vertical-tab-heading-error\\\"\\n descriptionType=\\\"error\\\"\\n indicatorType=\\\"danger\\\"\\n />\\n }\\n @if (isMobile && showTabRightArrow) {\\n <sky-icon class=\\\"sky-vertical-tab-right-arrow\\\" iconName=\\\"chevron-right\\\" />\\n }\\n </div>\\n</a>\\n\\n<div #tabContentWrapper skyResponsiveHost>\\n <div\\n #tabContentPane\\n class=\\\"sky-vertical-tab-content-pane\\\"\\n role=\\\"tabpanel\\\"\\n tabindex=\\\"0\\\"\\n skyId\\n [attr.aria-labelledby]=\\\"tabId\\\"\\n [ngClass]=\\\"{ 'sky-vertical-tab-hidden': !active }\\\"\\n >\\n <ng-content />\\n </div>\\n</div>\\n\", styles: [\".sky-vertical-tab:not(.sky-theme-modern *){--sky-override-vertical-tab-background-color-selected: #eeeeef;--sky-override-vertical-tab-border-left-selected: 4px solid #00b4f1;--sky-override-vertical-tab-count-margin-left: 5px;--sky-override-vertical-tab-display-align-items: normal;--sky-override-vertical-tab-heading-error-line-height: normal;--sky-override-vertical-tab-heading-error-padding-left: 5px;--sky-override-vertical-tab-margin: 5px 0 5px 5px;--sky-override-vertical-tab-padding: 7px 0 7px 10px;--sky-override-vertical-tab-padding-left-selected: 6px;--sky-override-vertical-tab-right-arrow-color: #686c73;--sky-override-vertical-tab-right-arrow-color-selected: #686c73;--sky-override-vertical-tab-right-arrow-padding: 3px 10px 0 0}.sky-vertical-tab{padding:var(--sky-override-vertical-tab-padding, var(--sky-comp-tab-vertical-space-inset-top) var(--sky-comp-tab-vertical-space-inset-right) var(--sky-comp-tab-vertical-space-inset-bottom) var(--sky-comp-tab-vertical-space-inset-left));margin:var(--sky-override-vertical-tab-margin, 0 0 var(--sky-space-gap-action_group-m))}.sky-vertical-tabset-button.sky-vertical-tab-active{color:var(--sky-color-text-selected);font-weight:var(--sky-font-style-emphasized)}.sky-vertical-tabset-button.sky-vertical-tab-active:not(:focus-visible){background-color:var(--sky-override-vertical-tab-background-color-selected, var(--sky-color-background-selected-soft));border-bottom-left-radius:var(--sky-border-radius-xs);border-top-left-radius:var(--sky-border-radius-xs);padding-left:var(--sky-override-vertical-tab-padding-left-selected, calc(var(--sky-comp-tab-vertical-space-inset-left) - var(--sky-border-width-selected-m)));border-left:var(--sky-override-vertical-tab-border-left-selected, var(--sky-border-width-selected-m) solid var(--sky-color-border-selected))}.sky-vertical-tabset-button.sky-vertical-tab-active:not(:active):focus-visible{background-color:var(--sky-override-vertical-tab-background-color-selected, var(--sky-color-background-nav-focus));padding-left:var(--sky-override-vertical-tab-padding-left-selected, var(--sky-comp-tab-vertical-space-inset-left));border-left:var(--sky-override-vertical-tab-border-left-selected, none)}.sky-vertical-tabset-button.sky-vertical-tab-active .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-selected, var(--sky-color-icon-default))}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;justify-content:space-between;flex-grow:1;align-items:var(--sky-override-vertical-tab-display-align-items, center)}.sky-vertical-tab-heading-error{padding-left:var(--sky-override-vertical-tab-heading-error-padding-left, var(--sky-space-gap-text_action-s));line-height:var(--sky-override-vertical-tab-heading-error-line-height, 1)}.sky-vertical-tab-count{margin-left:var(--sky-override-vertical-tab-count-margin-left, var(--sky-space-gap-label-s))}.sky-vertical-tab-right-arrow{padding:var(--sky-override-vertical-tab-right-arrow-padding, 0);color:var(--sky-override-vertical-tab-right-arrow-color, var(--sky-color-icon-deemphasized))}.sky-vertical-tab-content-pane{margin-bottom:0}.sky-vertical-tab-content-pane:focus-visible{outline:none;border:none}.sky-responsive-container-xs .sky-vertical-tab-content-pane{margin-bottom:var(--sky-override-vertical-tab-content-pane-margin-bottom, var(--sky-space-stacked-s))}:host-context(.sky-sectioned-form-tabs-only) .sky-vertical-tab{margin-left:0}.sky-vertical-tabset-button:not(.sky-theme-modern *){--sky-override-vertical-tab-background-color: transparent;--sky-override-vertical-tab-background-color-active: #eeeeef;--sky-override-vertical-tab-background-color-focus: transparent;--sky-override-vertical-tab-background-color-hover: #eeeeef;--sky-override-vertical-tab-font-color: #212327;--sky-override-vertical-tab-font-color-disabled: var( --sky-text-color-deemphasized );--sky-override-vertical-tab-hover-font-color: #212327;--sky-override-vertical-tab-outline-focus: auto;--sky-override-vertical-tab-right-arrow-color-active: #686c73;--sky-override-vertical-tab-right-arrow-color-hover: color.adjust( #686c73, $lightness: -20% )}:host:has(.sky-vertical-tabset-button-disabled){cursor:not-allowed}.sky-vertical-tabset-button{background-color:var(--sky-override-vertical-tab-background-color, var(--sky-color-background-nav-base));border-bottom-left-radius:var(--sky-border-radius-s);border-top-left-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-0);border-top-right-radius:var(--sky-border-radius-0);color:var(--sky-override-vertical-tab-font-color, var(--sky-color-text-deemphasized));cursor:pointer;display:flex;text-decoration:none}.sky-vertical-tabset-button:hover:not(.sky-vertical-tab-active){color:var(--sky-override-vertical-tab-hover-font-color, var(--sky-color-text-default));background-color:var(--sky-override-vertical-tab-background-color-hover, var(--sky-color-background-nav-hover));box-shadow:inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-nav-hover)}.sky-vertical-tabset-button:hover:not(.sky-vertical-tab-active) .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-hover, var(--sky-color-icon-default))}.sky-vertical-tabset-button:active:not(.sky-vertical-tab-active){background-color:var(--sky-override-vertical-tab-background-color-active, var(--sky-color-background-nav-active));color:var(--sky-color-text-default);box-shadow:inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-nav-active)}.sky-vertical-tabset-button:active:not(.sky-vertical-tab-active) .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-active, var(--sky-color-icon-default))}.sky-vertical-tabset-button:not(:active):focus-visible{background-color:var(--sky-override-vertical-tab-background-color-focus, var(--sky-color-background-nav-focus));outline:var(--sky-override-vertical-tab-outline-focus, none);box-shadow:inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-nav-focus)}.sky-vertical-tabset-button.sky-vertical-tabset-button-disabled{background-color:var(--sky-color-background-nav-disabled);color:var(--sky-override-vertical-tab-font-color-disabled, var(--sky-color-text-deemphasized));pointer-events:none}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: i5.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i6.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"directive\", type: i6.SkyResponsiveHostDirective, selector: \"[skyResponsiveHost]\", exportAs: [\"skyResponsiveHost\"] }, { kind: \"component\", type: i7.λ10, selector: \"sky-status-indicator\", inputs: [\"indicatorType\", \"descriptionType\", \"customDescription\", \"helpPopoverContent\", \"helpPopoverTitle\", \"helpKey\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-vertical-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<a\\n #tabButton\\n class=\\\"sky-vertical-tab sky-vertical-tabset-button\\\"\\n [attr.aria-controls]=\\\"\\n isMobile ? undefined : ariaControls || tabContentPane.id\\n \\\"\\n [attr.aria-disabled]=\\\"isMobile ? undefined : disabled || undefined\\\"\\n [attr.aria-selected]=\\\"isMobile ? undefined : active\\\"\\n [attr.id]=\\\"tabId\\\"\\n [attr.role]=\\\"isMobile ? undefined : ariaRole\\\"\\n [ngClass]=\\\"{\\n 'sky-vertical-tab-active': active,\\n 'sky-vertical-tabset-button-disabled': disabled,\\n 'sky-font-deemphasized': disabled\\n }\\\"\\n [tabIndex]=\\\"-1\\\"\\n (click)=\\\"activateTab()\\\"\\n (keyup.arrowleft)=\\\"tabButtonArrowLeft($event)\\\"\\n (keyup.enter)=\\\"tabButtonActivate($event)\\\"\\n (keyup.space)=\\\"tabButtonActivate($event)\\\"\\n>\\n <div class=\\\"sky-vertical-tab-display\\\">\\n <div\\n class=\\\"sky-vertical-tab-heading\\\"\\n [ngClass]=\\\"{ 'sky-control-label-required': requiredIndicator }\\\"\\n >\\n <span class=\\\"sky-vertical-tab-heading-value\\\">{{ tabHeading }}</span>\\n @if (tabHeaderCount || tabHeaderCount === 0) {\\n <span class=\\\"sky-vertical-tab-count\\\"> ({{ tabHeaderCount }}) </span>\\n }\\n </div>\\n @if (errorIndicator) {\\n <sky-status-indicator\\n class=\\\"sky-vertical-tab-heading-error\\\"\\n descriptionType=\\\"error\\\"\\n indicatorType=\\\"danger\\\"\\n />\\n }\\n @if (isMobile && showTabRightArrow) {\\n <sky-icon class=\\\"sky-vertical-tab-right-arrow\\\" iconName=\\\"chevron-right\\\" />\\n }\\n </div>\\n</a>\\n\\n<div #tabContentWrapper skyResponsiveHost>\\n <div\\n #tabContentPane\\n class=\\\"sky-vertical-tab-content-pane\\\"\\n role=\\\"tabpanel\\\"\\n tabindex=\\\"0\\\"\\n skyId\\n [attr.aria-labelledby]=\\\"tabId\\\"\\n [ngClass]=\\\"{ 'sky-vertical-tab-hidden': !active }\\\"\\n >\\n <ng-content />\\n </div>\\n</div>\\n\", styles: [\".sky-vertical-tab:not(.sky-theme-modern *){--sky-override-vertical-tab-background-color-selected: #eeeeef;--sky-override-vertical-tab-border-left-selected: 4px solid #00b4f1;--sky-override-vertical-tab-count-margin-left: 5px;--sky-override-vertical-tab-display-align-items: normal;--sky-override-vertical-tab-heading-error-line-height: normal;--sky-override-vertical-tab-heading-error-padding-left: 5px;--sky-override-vertical-tab-margin: 5px 0 5px 5px;--sky-override-vertical-tab-padding: 7px 0 7px 10px;--sky-override-vertical-tab-padding-left-selected: 6px;--sky-override-vertical-tab-right-arrow-color: #686c73;--sky-override-vertical-tab-right-arrow-color-selected: #686c73;--sky-override-vertical-tab-right-arrow-padding: 3px 10px 0 0}.sky-vertical-tab{padding:var(--sky-override-vertical-tab-padding, var(--sky-comp-tab-vertical-space-inset-top) var(--sky-comp-tab-vertical-space-inset-right) var(--sky-comp-tab-vertical-space-inset-bottom) var(--sky-comp-tab-vertical-space-inset-left));margin:var(--sky-override-vertical-tab-margin, 0 0 var(--sky-space-gap-action_group-m))}.sky-vertical-tabset-button.sky-vertical-tab-active{color:var(--sky-color-text-selected);font-weight:var(--sky-font-style-emphasized)}.sky-vertical-tabset-button.sky-vertical-tab-active:not(:focus-visible){background-color:var(--sky-override-vertical-tab-background-color-selected, var(--sky-color-background-selected-soft));border-bottom-left-radius:var(--sky-border-radius-xs);border-top-left-radius:var(--sky-border-radius-xs);padding-left:var(--sky-override-vertical-tab-padding-left-selected, calc(var(--sky-comp-tab-vertical-space-inset-left) - var(--sky-border-width-selected-m)));border-left:var(--sky-override-vertical-tab-border-left-selected, var(--sky-border-width-selected-m) solid var(--sky-color-border-selected))}.sky-vertical-tabset-button.sky-vertical-tab-active:not(:active):focus-visible{background-color:var(--sky-override-vertical-tab-background-color-selected, var(--sky-color-background-nav-focus));padding-left:var(--sky-override-vertical-tab-padding-left-selected, var(--sky-comp-tab-vertical-space-inset-left));border-left:var(--sky-override-vertical-tab-border-left-selected, none)}.sky-vertical-tabset-button.sky-vertical-tab-active .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-selected, var(--sky-color-icon-default))}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;justify-content:space-between;flex-grow:1;align-items:var(--sky-override-vertical-tab-display-align-items, center)}.sky-vertical-tab-heading-error{padding-left:var(--sky-override-vertical-tab-heading-error-padding-left, var(--sky-space-gap-text_action-s));line-height:var(--sky-override-vertical-tab-heading-error-line-height, 1)}.sky-vertical-tab-count{margin-left:var(--sky-override-vertical-tab-count-margin-left, var(--sky-space-gap-label-s))}.sky-vertical-tab-right-arrow{padding:var(--sky-override-vertical-tab-right-arrow-padding, 0);color:var(--sky-override-vertical-tab-right-arrow-color, var(--sky-color-icon-deemphasized))}.sky-vertical-tab-content-pane{margin-bottom:0}.sky-vertical-tab-content-pane:focus-visible{outline:none;border:none}.sky-responsive-container-xs .sky-vertical-tab-content-pane{margin-bottom:var(--sky-override-vertical-tab-content-pane-margin-bottom, var(--sky-space-stacked-s))}:host-context(.sky-sectioned-form-tabs-only) .sky-vertical-tab{margin-left:0}.sky-vertical-tabset-button:not(.sky-theme-modern *){--sky-override-vertical-tab-background-color: transparent;--sky-override-vertical-tab-background-color-active: #eeeeef;--sky-override-vertical-tab-background-color-focus: transparent;--sky-override-vertical-tab-background-color-hover: #eeeeef;--sky-override-vertical-tab-font-color: #212327;--sky-override-vertical-tab-font-color-disabled: var( --sky-text-color-deemphasized );--sky-override-vertical-tab-hover-font-color: #212327;--sky-override-vertical-tab-outline-focus: auto;--sky-override-vertical-tab-right-arrow-color-active: #686c73;--sky-override-vertical-tab-right-arrow-color-hover: color.adjust( #686c73, $lightness: -20% )}:host:has(.sky-vertical-tabset-button-disabled){cursor:not-allowed}.sky-vertical-tabset-button{background-color:var(--sky-override-vertical-tab-background-color, var(--sky-color-background-nav-base));border-bottom-left-radius:var(--sky-border-radius-s);border-top-left-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-0);border-top-right-radius:var(--sky-border-radius-0);color:var(--sky-override-vertical-tab-font-color, var(--sky-color-text-deemphasized));cursor:pointer;display:flex;text-decoration:none}.sky-vertical-tabset-button:hover:not(.sky-vertical-tab-active){color:var(--sky-override-vertical-tab-hover-font-color, var(--sky-color-text-default));background-color:var(--sky-override-vertical-tab-background-color-hover, var(--sky-color-background-nav-hover));box-shadow:inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-nav-hover)}.sky-vertical-tabset-button:hover:not(.sky-vertical-tab-active) .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-hover, var(--sky-color-icon-default))}.sky-vertical-tabset-button:active:not(.sky-vertical-tab-active){background-color:var(--sky-override-vertical-tab-background-color-active, var(--sky-color-background-nav-active));color:var(--sky-color-text-default);box-shadow:inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-nav-active)}.sky-vertical-tabset-button:active:not(.sky-vertical-tab-active) .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-active, var(--sky-color-icon-default))}.sky-vertical-tabset-button:not(:active):focus-visible{background-color:var(--sky-override-vertical-tab-background-color-focus, var(--sky-color-background-nav-focus));outline:var(--sky-override-vertical-tab-outline-focus, none);box-shadow:inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-nav-focus)}.sky-vertical-tabset-button.sky-vertical-tabset-button-disabled{background-color:var(--sky-color-background-nav-disabled);color:var(--sky-override-vertical-tab-font-color-disabled, var(--sky-color-text-deemphasized));pointer-events:none}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyTabIdService, decorators: [{\n type: Optional\n }] }], propDecorators: { active: [{\n type: Input\n }], ariaControls: [{\n type: Input\n }], ariaRole: [{\n type: Input\n }], disabled: [{\n type: Input\n }], errorIndicator: [{\n type: Input\n }], requiredIndicator: [{\n type: Input\n }], tabHeaderCount: [{\n type: Input\n }], tabHeading: [{\n type: Input\n }], showTabRightArrow: [{\n type: Input\n }], tabId: [{\n type: Input\n }], tabButton: [{\n type: ViewChild,\n args: ['tabButton']\n }], tabContent: [{\n type: ViewChild,\n args: ['tabContentWrapper']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSy9CLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7QUFHaEYsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBU2YsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQzs7O09BR0c7SUFDSCxJQUNXLE1BQU0sQ0FBQyxLQUEwQjtRQUMxQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDO1lBRS9CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBUztJQVlqQjs7Ozs7Ozs7O09BU0c7SUFDSCxJQUNX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YUFDckIsQ0FBQyxDQUFDO1lBRUgsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pDLENBQUM7K0dBM05VLHVCQUF1QjttR0FBdkIsdUJBQXVCLDZqQkM5QnBDLHd3REF5REE7OzRGRDNCYSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs7MEJBZ0tkLFFBQVE7O3NCQXpKVixLQUFLOztzQkF3QkwsS0FBSzs7c0JBYUwsS0FBSzs7c0JBV0wsS0FBSzs7c0JBT0wsS0FBSzs7c0JBT0wsS0FBSzs7c0JBTUwsS0FBSzs7c0JBT0wsS0FBSzs7c0JBT0wsS0FBSzs7c0JBT0wsS0FBSzs7c0JBaUNMLFNBQVM7dUJBQUMsV0FBVzs7c0JBR3JCLFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lUYWJJZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvdGFiLWlkLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0R3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQtZ3JvdXAuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS12ZXJ0aWNhbC10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVydGljYWwtdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVydGljYWwtdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0YWIgaXMgYWN0aXZlIHdoZW4gdGhlIHRhYnNldCBsb2Fkcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWN0aXZlKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLiNfYWN0aXZlKSB7XG4gICAgICB0aGlzLiNfYWN0aXZlID0gdmFsdWUgPz8gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLiNfYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuYWN0aXZhdGVUYWIodGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19hY3RpdmU7XG4gIH1cblxuICAjX2FjdGl2ZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnNcbiAgICogdGhlIGNvbnRlbnQgdGhhdCB0aGUgdmVydGljYWwgdGFiIGRpc3BsYXlzLCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgYHRhYklkYC4gVGhpcyBwcm9wZXJ0eVxuICAgKiBbc3VwcG9ydHMgYWNjZXNzaWJpbGl0eSBydWxlcyBmb3IgZGlzY2xvc3VyZXNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMtMS4xLyNkaXNjbG9zdXJlKS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWNvbnRyb2xzYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1jb250cm9scykuXG4gICAqIEBkZXByZWNhdGVkIE5vdyB0aGF0IHRoZSB2ZXJ0aWNhbCB0YWJzIHByb3ZpZGUgYXJpYSBsYWJlbHMgYXV0b21hdGljYWxseSwgdGhpcyBpbnB1dCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFDb250cm9sczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSByb2xlIGZvciB0aGUgdmVydGljYWwgdGFiXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSlcbiAgICogYnkgaW5kaWNhdGluZyBob3cgdGhlIHRhYiBmdW5jdGlvbnMgYW5kIHdoYXQgaXQgY29udHJvbHMuIEZvciBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICogYW4gQVJJQSByb2xlIGluZGljYXRlcyB3aGF0IGFuIGl0ZW0gcmVwcmVzZW50cyBvbiBhIHdlYiBwYWdlLCBzZWUgdGhlXG4gICAqIFtXQUktQVJJQSByb2xlcyBtb2RlbF0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhLyNyb2xlcykuXG4gICAqIEBkZWZhdWx0IFwidGFiXCJcbiAgICogQGRlcHJlY2F0ZWQgQW55IG90aGVyIHZhbHVlIHRoYW4gYHRhYmAgY291bGQgbGVhZCB0byBhIHBvb3IgdXNlciBleHBlcmllbmNlIGZvciB1c2VycyB3aXRoIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LlxuICAgKiBJbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLCB0aGlzIHByb3BlcnR5IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgdG8gYHRhYmAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGFyaWFSb2xlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhUm9sZTtcbiAgfVxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfYXJpYVJvbGUgPSB2YWx1ZSA/PyAndGFiJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHRhYi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluZGljYXRlIHRoYXQgdGhlIHRhYiBoYXMgYW4gZXJyb3IuXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIHVzZWQgZm9yIHNlY3Rpb25lZCBmb3JtcyBhbmQgaXMgbm90IGN1cnJlbnRseSBhIHN1cHBvcnRlZCBkZXNpZ24gZm9yIHB1cmUgdmVydGljYWwgdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvckluZGljYXRvcjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluZGljYXRlIHRoYXQgdGhlIHRhYiBoYXMgcmVxdWlyZWQgY29udGVudC5cbiAgICogQGludGVybmFsIFRoaXMgaXMgdXNlZCBmb3Igc2VjdGlvbmVkIGZvcm1zIGFuZCBpcyBub3QgY3VycmVudGx5IGEgc3VwcG9ydGVkIGRlc2lnbiBmb3IgcHVyZSB2ZXJ0aWNhbCB0YWJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJlcXVpcmVkSW5kaWNhdG9yOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGFuIGl0ZW0gY291bnQgYWxvbmdzaWRlIHRoZSB0YWIgaGVhZGVyIHRvIGluZGljYXRlIGhvdyBtYW55IGxpc3QgaXRlbXMgdGhlIHRhYiBjb250YWlucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0YWJIZWFkZXJDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFiIGhlYWRlci5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGFiSGVhZGluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgYSBjaGV2cm9uLXJpZ2h0IGljb24gb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgdGFiLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93VGFiUmlnaHRBcnJvdzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIElEIGZvciB0aGUgdGFiLlxuICAgKiBAZGVwcmVjYXRlZCBOb3cgdGhhdCB0aGUgdmVydGljYWwgdGFicyBwcm92aWRlIGFyaWEgbGFiZWxzIGF1dG9tYXRpY2FsbHksIHRoaXMgaW5wdXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI3RhYklkT3JEZWZhdWx0ID0gdmFsdWUgfHwgdGhpcy4jZGVmYXVsdFRhYklkO1xuICAgIHRoaXMuI3RhYklkU3ZjPy5yZWdpc3Rlcih0aGlzLiNkZWZhdWx0VGFiSWQsIHRoaXMuI3RhYklkT3JEZWZhdWx0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jdGFiSWRPckRlZmF1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGNvbnRlbnRSZW5kZXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI19jb250ZW50UmVuZGVyZWQgPSB2YWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI19jb250ZW50UmVuZGVyZWQpIHtcbiAgICAgIC8vIE5PVEU6IFRyaWdnZXIgYW5vdGhlciBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIHdoZW4gdGhlIHNlcnZpY2UgbWFya3NcbiAgICAgIC8vIHRoaXMgdGFiIGFzIFwicmVuZGVyZWRcIi5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50YWJDb250ZW50KSB7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRlbnRSZW5kZXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2NvbnRlbnRSZW5kZXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkJ1dHRvbicpXG4gIHB1YmxpYyB0YWJCdXR0b246IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndGFiQ29udGVudFdyYXBwZXInKVxuICBwdWJsaWMgdGFiQ29udGVudDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZ3JvdXBTZXJ2aWNlID0gaW5qZWN0KFNreVZlcnRpY2FsVGFic2V0R3JvdXBTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gICNfYXJpYVJvbGUgPSAndGFiJztcblxuICAjX2NvbnRlbnRSZW5kZXJlZCA9IGZhbHNlO1xuXG4gICN0YWJJZE9yRGVmYXVsdDogc3RyaW5nO1xuXG4gICNkZWZhdWx0VGFiSWQ6IHN0cmluZztcblxuICAjbW9iaWxlU3Vic2NyaXB0aW9uID0gbmV3IFN1YmplY3QoKTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI2FkYXB0ZXJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlO1xuICAjY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3RhYnNldFNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0U2VydmljZTtcbiAgI3RhYklkU3ZjOiBTa3lUYWJJZFNlcnZpY2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWRhcHRlclNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICB0YWJzZXRTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgdGFiSWRTdmM/OiBTa3lUYWJJZFNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jY2hhbmdlUmVmID0gY2hhbmdlUmVmO1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UgPSB0YWJzZXRTZXJ2aWNlO1xuICAgIHRoaXMuI3RhYklkU3ZjID0gdGFiSWRTdmM7XG5cbiAgICB0aGlzLiN0YWJJZE9yRGVmYXVsdCA9IHRoaXMuI2RlZmF1bHRUYWJJZCA9IGBza3ktdmVydGljYWwtdGFiLSR7KytuZXh0SWR9YDtcbiAgICB0aGlzLnRhYklkID0gdGhpcy4jZGVmYXVsdFRhYklkO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb2JpbGUgPSB0aGlzLiN0YWJzZXRTZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5zd2l0Y2hpbmdNb2JpbGUuc3Vic2NyaWJlKChtb2JpbGU6IGJvb2xlYW4pID0+IHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSBtb2JpbGU7XG4gICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFkZFRhYih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJJZFN2Yz8udW5yZWdpc3Rlcih0aGlzLiNkZWZhdWx0VGFiSWQpO1xuICAgIHRoaXMuI21vYmlsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmRlc3Ryb3lUYWIodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGVUYWIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2YXRlVGFiKHRoaXMpO1xuXG4gICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvY3VzQnV0dG9uKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmZvY3VzQnV0dG9uKHRoaXMudGFiQnV0dG9uKTtcbiAgfVxuXG4gIHB1YmxpYyB0YWJCdXR0b25BY3RpdmF0ZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlVGFiKCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgdGFiQnV0dG9uQXJyb3dMZWZ0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdyb3VwU2VydmljZSkge1xuICAgICAgdGhpcy5ncm91cFNlcnZpY2UubWVzc2FnZVN0cmVhbS5uZXh0KHtcbiAgICAgICAgbWVzc2FnZVR5cGU6ICdmb2N1cycsXG4gICAgICB9KTtcblxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdGFiRGVhY3RpdmF0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8YVxuICAjdGFiQnV0dG9uXG4gIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYiBza3ktdmVydGljYWwtdGFic2V0LWJ1dHRvblwiXG4gIFthdHRyLmFyaWEtY29udHJvbHNdPVwiXG4gICAgaXNNb2JpbGUgPyB1bmRlZmluZWQgOiBhcmlhQ29udHJvbHMgfHwgdGFiQ29udGVudFBhbmUuaWRcbiAgXCJcbiAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc01vYmlsZSA/IHVuZGVmaW5lZCA6IGRpc2FibGVkIHx8IHVuZGVmaW5lZFwiXG4gIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNNb2JpbGUgPyB1bmRlZmluZWQgOiBhY3RpdmVcIlxuICBbYXR0ci5pZF09XCJ0YWJJZFwiXG4gIFthdHRyLnJvbGVdPVwiaXNNb2JpbGUgPyB1bmRlZmluZWQgOiBhcmlhUm9sZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnc2t5LXZlcnRpY2FsLXRhYi1hY3RpdmUnOiBhY3RpdmUsXG4gICAgJ3NreS12ZXJ0aWNhbC10YWJzZXQtYnV0dG9uLWRpc2FibGVkJzogZGlzYWJsZWQsXG4gICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6IGRpc2FibGVkXG4gIH1cIlxuICBbdGFiSW5kZXhdPVwiLTFcIlxuICAoY2xpY2spPVwiYWN0aXZhdGVUYWIoKVwiXG4gIChrZXl1cC5hcnJvd2xlZnQpPVwidGFiQnV0dG9uQXJyb3dMZWZ0KCRldmVudClcIlxuICAoa2V5dXAuZW50ZXIpPVwidGFiQnV0dG9uQWN0aXZhdGUoJGV2ZW50KVwiXG4gIChrZXl1cC5zcGFjZSk9XCJ0YWJCdXR0b25BY3RpdmF0ZSgkZXZlbnQpXCJcbj5cbiAgPGRpdiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItZGlzcGxheVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYi1oZWFkaW5nXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkJzogcmVxdWlyZWRJbmRpY2F0b3IgfVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktdmVydGljYWwtdGFiLWhlYWRpbmctdmFsdWVcIj57eyB0YWJIZWFkaW5nIH19PC9zcGFuPlxuICAgICAgQGlmICh0YWJIZWFkZXJDb3VudCB8fCB0YWJIZWFkZXJDb3VudCA9PT0gMCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItY291bnRcIj4gKHt7IHRhYkhlYWRlckNvdW50IH19KSA8L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChlcnJvckluZGljYXRvcikge1xuICAgICAgPHNreS1zdGF0dXMtaW5kaWNhdG9yXG4gICAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYi1oZWFkaW5nLWVycm9yXCJcbiAgICAgICAgZGVzY3JpcHRpb25UeXBlPVwiZXJyb3JcIlxuICAgICAgICBpbmRpY2F0b3JUeXBlPVwiZGFuZ2VyXCJcbiAgICAgIC8+XG4gICAgfVxuICAgIEBpZiAoaXNNb2JpbGUgJiYgc2hvd1RhYlJpZ2h0QXJyb3cpIHtcbiAgICAgIDxza3ktaWNvbiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItcmlnaHQtYXJyb3dcIiBpY29uTmFtZT1cImNoZXZyb24tcmlnaHRcIiAvPlxuICAgIH1cbiAgPC9kaXY+XG48L2E+XG5cbjxkaXYgI3RhYkNvbnRlbnRXcmFwcGVyIHNreVJlc3BvbnNpdmVIb3N0PlxuICA8ZGl2XG4gICAgI3RhYkNvbnRlbnRQYW5lXG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFiLWNvbnRlbnQtcGFuZVwiXG4gICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIHNreUlkXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRhYklkXCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktdmVydGljYWwtdGFiLWhpZGRlbic6ICFhY3RpdmUgfVwiXG4gID5cbiAgICA8bmctY29udGVudCAvPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19","import { animate, state, style, transition, trigger, } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, ContentChildren, Input, ViewChild, inject, } from '@angular/core';\nimport { skyAnimationSlide } from '@skyux/animations';\nimport { SkyIdService } from '@skyux/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyTabIdService } from '../shared/tab-id.service';\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupService } from './vertical-tabset-group.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./vertical-tabset.service\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@skyux/core\";\nimport * as i4 from \"@skyux/indicators\";\n// Due to how we leave the content element in the DOM - we need to ensure that the padding for the content area is animated away along with the height.\n// The timing here matches what the slide animation uses to ensure they happen together.\nconst skyVerticalTabsetPaddingAnimation = trigger('skyVerticalTabsetPaddingAnimation', [\n state('down', style({\n 'padding-top': 'var(--sky-comp-tab-vertical-subgroup-space-inset-top)',\n 'padding-bottom': 'var(--sky-comp-tab-vertical-subgroup-space-inset-bottom)',\n })),\n state('up', style({\n 'padding-top': '0',\n 'padding-bottom': '0',\n })),\n state('void', style({\n 'padding-top': '0',\n 'padding-bottom': '0',\n })),\n // Same timing as skyAnimationSlide to stay synchronized\n transition('up <=> down', animate('150ms ease-in')),\n]);\nexport class SkyVerticalTabsetGroupComponent {\n /**\n * Whether to disable the ability to expand and collapse the group.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value;\n this.#updateSlideDirection(false);\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * Whether the collapsible group is expanded.\n * @default false\n */\n set open(value) {\n this.#_open = value;\n this.#updateSlideDirection(false);\n }\n get open() {\n return this.#_open;\n }\n #ngUnsubscribe;\n #tabService;\n #changeRef;\n #adapterService;\n #idService;\n #tabIdService;\n #groupService;\n #_disabled;\n #_open;\n constructor(tabService, changeRef) {\n this.animationDisabled = false;\n this.slideDirection = 'up';\n this.#ngUnsubscribe = new Subject();\n this.#adapterService = inject(SkyVerticalTabsetAdapterService);\n this.#idService = inject(SkyIdService);\n this.#tabIdService = inject(SkyTabIdService);\n this.#groupService = inject(SkyVerticalTabsetGroupService);\n this.#_open = false;\n this.#tabService = tabService;\n this.#changeRef = changeRef;\n this.groupId = this.#idService.generateId();\n this.#groupService.messageStream.subscribe((message) => {\n switch (message.messageType) {\n case 'focus':\n this.#focusButton();\n }\n });\n }\n ngOnInit() {\n this.#tabIdService.register(this.groupId, this.groupId);\n this.#tabService.addGroup(this);\n this.#tabService.hidingTabs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#tabsHidden());\n this.#tabService.showingTabs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#tabsShown());\n this.#tabService.tabClicked\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#tabClicked());\n }\n ngOnDestroy() {\n this.#tabService.destroyGroup(this);\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#tabIdService.unregister(this.groupId);\n }\n toggleMenuOpen() {\n if (!this.disabled) {\n this.open = !this.open;\n }\n this.#updateSlideDirection(true);\n this.#changeRef.markForCheck();\n }\n groupButtonArrowLeft(event) {\n if (this.open) {\n this.toggleMenuOpen();\n }\n event.preventDefault();\n }\n groupButtonArrowRight(event) {\n if (this.open) {\n this.tabs?.get(0)?.focusButton();\n }\n else {\n this.toggleMenuOpen();\n }\n event.preventDefault();\n }\n isActive() {\n return !!this.tabs && this.tabs.find((t) => !!t.active) !== undefined;\n }\n #tabClicked() {\n this.#changeRef.markForCheck();\n }\n #tabsHidden() {\n // Angular will sometimes place the animation into the \"void\" state when tabs are hidden. Update our internal variable to reflect that.\n this.slideDirection = 'void';\n this.#changeRef.markForCheck();\n }\n #tabsShown() {\n // Set the animation back up so that the \"void\" state is returned to where it was prior to the tabs being hidden.\n // This will be instantaneous due to there not being a \"void -> *\" state on the slide animation.\n this.#updateSlideDirection(true);\n this.#changeRef.markForCheck();\n }\n #updateSlideDirection(animate) {\n this.animationDisabled = !animate;\n this.slideDirection = this.open && !this.disabled ? 'down' : 'up';\n }\n #focusButton() {\n this.#adapterService.focusButton(this.groupHeadingButton);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: i1.SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyVerticalTabsetGroupComponent, isStandalone: false, selector: \"sky-vertical-tabset-group\", inputs: { disabled: \"disabled\", groupHeading: \"groupHeading\", open: \"open\" }, providers: [SkyVerticalTabsetGroupService], queries: [{ propertyName: \"tabs\", predicate: SkyVerticalTabComponent }], viewQueries: [{ propertyName: \"groupHeadingButton\", first: true, predicate: [\"groupHeadingButton\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"sky-vertical-tabset-group\\\">\\n <!-- [ngClass] includes font classes for both modern and default styles -->\\n <div\\n class=\\\"sky-vertical-tabset-group-header\\\"\\n [ngClass]=\\\"{\\n 'sky-vertical-tabset-group-header-active': isActive(),\\n 'sky-vertical-tabset-group-header-sub-open': open,\\n 'sky-font-deemphasized': disabled\\n }\\\"\\n >\\n <button\\n #groupHeadingButton\\n class=\\\"sky-vertical-tabset-button\\\"\\n role=\\\"tab\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"groupContent.id\\\"\\n [attr.aria-disabled]=\\\"disabled || undefined\\\"\\n [attr.aria-expanded]=\\\"!disabled && open\\\"\\n [id]=\\\"groupId\\\"\\n [ngClass]=\\\"{\\n 'sky-vertical-tabset-button-disabled': disabled\\n }\\\"\\n [tabIndex]=\\\"-1\\\"\\n (click)=\\\"toggleMenuOpen()\\\"\\n (keyup.arrowleft)=\\\"groupButtonArrowLeft($event)\\\"\\n (keyup.arrowright)=\\\"groupButtonArrowRight($event)\\\"\\n >\\n {{ groupHeading }}\\n <sky-expansion-indicator\\n class=\\\"sky-vertical-tabset-group-expansion-indicator\\\"\\n [direction]=\\\"!disabled && open ? 'up' : 'down'\\\"\\n />\\n </button>\\n </div>\\n <div\\n #groupContent\\n class=\\\"sky-vertical-tabset-group-content\\\"\\n skyId\\n [attr.labelledby]=\\\"groupId\\\"\\n [@.disabled]=\\\"animationDisabled\\\"\\n [@skyAnimationSlide]=\\\"slideDirection\\\"\\n [@skyVerticalTabsetPaddingAnimation]=\\\"slideDirection\\\"\\n >\\n <ng-content />\\n </div>\\n</div>\\n\", styles: [\".sky-vertical-tabset-group:not(.sky-theme-modern *){--sky-override-vertical-tabset-group-border: 1px solid #e2e3e4;--sky-override-vertical-tabset-group-button-font-color: buttontext;--sky-override-vertical-tabset-group-button-background-color-hover: transparent;--sky-override-vertical-tabset-group-header-selected-font-color: buttontext;--sky-override-vertical-tabset-group-header-selected-font-weight: 600;--sky-override-vertical-tabset-group-button-padding: 10px;--sky-override-vertical-tabset-group-content-padding-left: 10px;--sky-override-vertical-tabset-group-content-padding-right: 0;--sky-override-vertical-tabset-group-gap: 5px;--sky-override-vertical-tabset-group-header-align-items: flex-start;--sky-override-vertical-tabset-group-margin: 5px 0 5px 5px}.sky-vertical-tabset-group{border-bottom:var(--sky-override-vertical-tabset-group-border, none);margin:var(--sky-override-vertical-tabset-group-margin)}:host:has(~sky-vertical-tabset-group) .sky-vertical-tabset-group{margin-bottom:var(--sky-override-vertical-tabset-group-gap, 0)}.sky-vertical-tabset-group-header button{--sky-comp-override-expansion-indicator-color: var( --sky-color-text-deemphasized );padding:var(--sky-override-vertical-tabset-group-button-padding, var(--sky-comp-tab-vertical-space-inset-top) var(--sky-comp-tab-vertical-space-inset-right) var(--sky-comp-tab-vertical-space-inset-bottom) var(--sky-comp-tab-vertical-space-inset-left));justify-content:space-between;border:none;width:100%;text-align:left;align-items:var(--sky-override-vertical-tabset-group-header-align-items, center);margin-bottom:var(--sky-space-gap-action_group-m);color:var(--sky-override-vertical-tabset-group-button-font-color, var(--sky-color-text-deemphasized))}.sky-vertical-tabset-group-header button:hover{background-color:var(--sky-override-vertical-tabset-group-button-background-color-hover, var(--sky-color-background-nav-hover))}.sky-vertical-tabset-group-header.sky-vertical-tabset-group-header-active button{--sky-comp-override-expansion-indicator-color: var( --sky-color-text-selected );color:var(--sky-override-vertical-tabset-group-header-selected-text-color, var(--sky-color-text-selected));font-weight:var(--sky-override-vertical-tabset-group-header-selected-font-weight, var(--sky-font-style-emphasized))}.sky-vertical-tabset-group-header .sky-vertical-tabset-group-expansion-indicator{margin-left:var(--sky-space-gap-text_action-s)}.sky-vertical-tabset-group-content{overflow:hidden;border-top:var(--sky-override-vertical-tabset-group-border, none);padding-left:var(--sky-override-vertical-tabset-group-content-padding-left, var(--sky-comp-tab-vertical-subgroup-space-inset-left));padding-right:var(--sky-override-vertical-tabset-group-content-padding-right, var(--sky-comp-tab-vertical-subgroup-space-inset-right))}.sky-vertical-tabset-button:not(.sky-theme-modern *){--sky-override-vertical-tab-background-color: transparent;--sky-override-vertical-tab-background-color-active: #eeeeef;--sky-override-vertical-tab-background-color-focus: transparent;--sky-override-vertical-tab-background-color-hover: #eeeeef;--sky-override-vertical-tab-font-color: #212327;--sky-override-vertical-tab-font-color-disabled: var( --sky-text-color-deemphasized );--sky-override-vertical-tab-hover-font-color: #212327;--sky-override-vertical-tab-outline-focus: auto;--sky-override-vertical-tab-right-arrow-color-active: #686c73;--sky-override-vertical-tab-right-arrow-color-hover: color.adjust( #686c73, $lightness: -20% )}:host:has(.sky-vertical-tabset-button-disabled){cursor:not-allowed}.sky-vertical-tabset-button{background-color:var(--sky-override-vertical-tab-background-color, var(--sky-color-background-nav-base));border-bottom-left-radius:var(--sky-border-radius-s);border-top-left-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-0);border-top-right-radius:var(--sky-border-radius-0);color:var(--sky-override-vertical-tab-font-color, var(--sky-color-text-deemphasized));cursor:pointer;display:flex;text-decoration:none}.sky-vertical-tabset-button:hover:not(.sky-vertical-tab-active){color:var(--sky-override-vertical-tab-hover-font-color, var(--sky-color-text-default));background-color:var(--sky-override-vertical-tab-background-color-hover, var(--sky-color-background-nav-hover));box-shadow:inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-nav-hover)}.sky-vertical-tabset-button:hover:not(.sky-vertical-tab-active) .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-hover, var(--sky-color-icon-default))}.sky-vertical-tabset-button:active:not(.sky-vertical-tab-active){background-color:var(--sky-override-vertical-tab-background-color-active, var(--sky-color-background-nav-active));color:var(--sky-color-text-default);box-shadow:inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-nav-active)}.sky-vertical-tabset-button:active:not(.sky-vertical-tab-active) .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-active, var(--sky-color-icon-default))}.sky-vertical-tabset-button:not(:active):focus-visible{background-color:var(--sky-override-vertical-tab-background-color-focus, var(--sky-color-background-nav-focus));outline:var(--sky-override-vertical-tab-outline-focus, none);box-shadow:inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-nav-focus)}.sky-vertical-tabset-button.sky-vertical-tabset-button-disabled{background-color:var(--sky-color-background-nav-disabled);color:var(--sky-override-vertical-tab-font-color-disabled, var(--sky-color-text-deemphasized));pointer-events:none}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i3.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"component\", type: i4.λ15, selector: \"sky-expansion-indicator\", inputs: [\"direction\"] }], animations: [skyAnimationSlide, skyVerticalTabsetPaddingAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-vertical-tabset-group', changeDetection: ChangeDetectionStrategy.OnPush, animations: [skyAnimationSlide, skyVerticalTabsetPaddingAnimation], providers: [SkyVerticalTabsetGroupService], standalone: false, template: \"<div class=\\\"sky-vertical-tabset-group\\\">\\n <!-- [ngClass] includes font classes for both modern and default styles -->\\n <div\\n class=\\\"sky-vertical-tabset-group-header\\\"\\n [ngClass]=\\\"{\\n 'sky-vertical-tabset-group-header-active': isActive(),\\n 'sky-vertical-tabset-group-header-sub-open': open,\\n 'sky-font-deemphasized': disabled\\n }\\\"\\n >\\n <button\\n #groupHeadingButton\\n class=\\\"sky-vertical-tabset-button\\\"\\n role=\\\"tab\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"groupContent.id\\\"\\n [attr.aria-disabled]=\\\"disabled || undefined\\\"\\n [attr.aria-expanded]=\\\"!disabled && open\\\"\\n [id]=\\\"groupId\\\"\\n [ngClass]=\\\"{\\n 'sky-vertical-tabset-button-disabled': disabled\\n }\\\"\\n [tabIndex]=\\\"-1\\\"\\n (click)=\\\"toggleMenuOpen()\\\"\\n (keyup.arrowleft)=\\\"groupButtonArrowLeft($event)\\\"\\n (keyup.arrowright)=\\\"groupButtonArrowRight($event)\\\"\\n >\\n {{ groupHeading }}\\n <sky-expansion-indicator\\n class=\\\"sky-vertical-tabset-group-expansion-indicator\\\"\\n [direction]=\\\"!disabled && open ? 'up' : 'down'\\\"\\n />\\n </button>\\n </div>\\n <div\\n #groupContent\\n class=\\\"sky-vertical-tabset-group-content\\\"\\n skyId\\n [attr.labelledby]=\\\"groupId\\\"\\n [@.disabled]=\\\"animationDisabled\\\"\\n [@skyAnimationSlide]=\\\"slideDirection\\\"\\n [@skyVerticalTabsetPaddingAnimation]=\\\"slideDirection\\\"\\n >\\n <ng-content />\\n </div>\\n</div>\\n\", styles: [\".sky-vertical-tabset-group:not(.sky-theme-modern *){--sky-override-vertical-tabset-group-border: 1px solid #e2e3e4;--sky-override-vertical-tabset-group-button-font-color: buttontext;--sky-override-vertical-tabset-group-button-background-color-hover: transparent;--sky-override-vertical-tabset-group-header-selected-font-color: buttontext;--sky-override-vertical-tabset-group-header-selected-font-weight: 600;--sky-override-vertical-tabset-group-button-padding: 10px;--sky-override-vertical-tabset-group-content-padding-left: 10px;--sky-override-vertical-tabset-group-content-padding-right: 0;--sky-override-vertical-tabset-group-gap: 5px;--sky-override-vertical-tabset-group-header-align-items: flex-start;--sky-override-vertical-tabset-group-margin: 5px 0 5px 5px}.sky-vertical-tabset-group{border-bottom:var(--sky-override-vertical-tabset-group-border, none);margin:var(--sky-override-vertical-tabset-group-margin)}:host:has(~sky-vertical-tabset-group) .sky-vertical-tabset-group{margin-bottom:var(--sky-override-vertical-tabset-group-gap, 0)}.sky-vertical-tabset-group-header button{--sky-comp-override-expansion-indicator-color: var( --sky-color-text-deemphasized );padding:var(--sky-override-vertical-tabset-group-button-padding, var(--sky-comp-tab-vertical-space-inset-top) var(--sky-comp-tab-vertical-space-inset-right) var(--sky-comp-tab-vertical-space-inset-bottom) var(--sky-comp-tab-vertical-space-inset-left));justify-content:space-between;border:none;width:100%;text-align:left;align-items:var(--sky-override-vertical-tabset-group-header-align-items, center);margin-bottom:var(--sky-space-gap-action_group-m);color:var(--sky-override-vertical-tabset-group-button-font-color, var(--sky-color-text-deemphasized))}.sky-vertical-tabset-group-header button:hover{background-color:var(--sky-override-vertical-tabset-group-button-background-color-hover, var(--sky-color-background-nav-hover))}.sky-vertical-tabset-group-header.sky-vertical-tabset-group-header-active button{--sky-comp-override-expansion-indicator-color: var( --sky-color-text-selected );color:var(--sky-override-vertical-tabset-group-header-selected-text-color, var(--sky-color-text-selected));font-weight:var(--sky-override-vertical-tabset-group-header-selected-font-weight, var(--sky-font-style-emphasized))}.sky-vertical-tabset-group-header .sky-vertical-tabset-group-expansion-indicator{margin-left:var(--sky-space-gap-text_action-s)}.sky-vertical-tabset-group-content{overflow:hidden;border-top:var(--sky-override-vertical-tabset-group-border, none);padding-left:var(--sky-override-vertical-tabset-group-content-padding-left, var(--sky-comp-tab-vertical-subgroup-space-inset-left));padding-right:var(--sky-override-vertical-tabset-group-content-padding-right, var(--sky-comp-tab-vertical-subgroup-space-inset-right))}.sky-vertical-tabset-button:not(.sky-theme-modern *){--sky-override-vertical-tab-background-color: transparent;--sky-override-vertical-tab-background-color-active: #eeeeef;--sky-override-vertical-tab-background-color-focus: transparent;--sky-override-vertical-tab-background-color-hover: #eeeeef;--sky-override-vertical-tab-font-color: #212327;--sky-override-vertical-tab-font-color-disabled: var( --sky-text-color-deemphasized );--sky-override-vertical-tab-hover-font-color: #212327;--sky-override-vertical-tab-outline-focus: auto;--sky-override-vertical-tab-right-arrow-color-active: #686c73;--sky-override-vertical-tab-right-arrow-color-hover: color.adjust( #686c73, $lightness: -20% )}:host:has(.sky-vertical-tabset-button-disabled){cursor:not-allowed}.sky-vertical-tabset-button{background-color:var(--sky-override-vertical-tab-background-color, var(--sky-color-background-nav-base));border-bottom-left-radius:var(--sky-border-radius-s);border-top-left-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-0);border-top-right-radius:var(--sky-border-radius-0);color:var(--sky-override-vertical-tab-font-color, var(--sky-color-text-deemphasized));cursor:pointer;display:flex;text-decoration:none}.sky-vertical-tabset-button:hover:not(.sky-vertical-tab-active){color:var(--sky-override-vertical-tab-hover-font-color, var(--sky-color-text-default));background-color:var(--sky-override-vertical-tab-background-color-hover, var(--sky-color-background-nav-hover));box-shadow:inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-nav-hover)}.sky-vertical-tabset-button:hover:not(.sky-vertical-tab-active) .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-hover, var(--sky-color-icon-default))}.sky-vertical-tabset-button:active:not(.sky-vertical-tab-active){background-color:var(--sky-override-vertical-tab-background-color-active, var(--sky-color-background-nav-active));color:var(--sky-color-text-default);box-shadow:inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-nav-active)}.sky-vertical-tabset-button:active:not(.sky-vertical-tab-active) .sky-vertical-tab-right-arrow{color:var(--sky-override-vertical-tab-right-arrow-color-active, var(--sky-color-icon-default))}.sky-vertical-tabset-button:not(:active):focus-visible{background-color:var(--sky-override-vertical-tab-background-color-focus, var(--sky-color-background-nav-focus));outline:var(--sky-override-vertical-tab-outline-focus, none);box-shadow:inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-nav-focus)}.sky-vertical-tabset-button.sky-vertical-tabset-button-disabled{background-color:var(--sky-color-background-nav-disabled);color:var(--sky-override-vertical-tab-font-color-disabled, var(--sky-color-text-deemphasized));pointer-events:none}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyVerticalTabsetService }, { type: i0.ChangeDetectorRef }], propDecorators: { disabled: [{\n type: Input\n }], groupHeading: [{\n type: Input\n }], open: [{\n type: Input\n }], tabs: [{\n type: ContentChildren,\n args: [SkyVerticalTabComponent]\n }], groupHeadingButton: [{\n type: ViewChild,\n args: ['groupHeadingButton']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLEtBQUssRUFJTCxTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFHaEYsdUpBQXVKO0FBQ3ZKLHdGQUF3RjtBQUN4RixNQUFNLGlDQUFpQyxHQUE2QixPQUFPLENBQ3pFLG1DQUFtQyxFQUNuQztJQUNFLEtBQUssQ0FDSCxNQUFNLEVBQ04sS0FBSyxDQUFDO1FBQ0osYUFBYSxFQUFFLHVEQUF1RDtRQUN0RSxnQkFBZ0IsRUFDZCwwREFBMEQ7S0FDN0QsQ0FBQyxDQUNIO0lBQ0QsS0FBSyxDQUNILElBQUksRUFDSixLQUFLLENBQUM7UUFDSixhQUFhLEVBQUUsR0FBRztRQUNsQixnQkFBZ0IsRUFBRSxHQUFHO0tBQ3RCLENBQUMsQ0FDSDtJQUNELEtBQUssQ0FDSCxNQUFNLEVBQ04sS0FBSyxDQUFDO1FBQ0osYUFBYSxFQUFFLEdBQUc7UUFDbEIsZ0JBQWdCLEVBQUUsR0FBRztLQUN0QixDQUFDLENBQ0g7SUFDRCx3REFBd0Q7SUFDeEQsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7Q0FDcEQsQ0FDRixDQUFDO0FBV0YsTUFBTSxPQUFPLCtCQUErQjtJQUMxQzs7O09BR0c7SUFDSCxJQUNXLFFBQVEsQ0FBQyxLQUEwQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQVFEOzs7T0FHRztJQUNILElBQ1csSUFBSSxDQUFDLEtBQTBCO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFhRCxjQUFjLENBQXVCO0lBRXJDLFdBQVcsQ0FBMkI7SUFDdEMsVUFBVSxDQUFvQjtJQUM5QixlQUFlLENBQTJDO0lBQzFELFVBQVUsQ0FBd0I7SUFDbEMsYUFBYSxDQUEyQjtJQUN4QyxhQUFhLENBQXlDO0lBRXRELFVBQVUsQ0FBc0I7SUFDaEMsTUFBTSxDQUE4QjtJQUVwQyxZQUNFLFVBQW9DLEVBQ3BDLFNBQTRCO1FBbkJ2QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBMkIsSUFBSSxDQUFDO1FBSXJELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUlyQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzFELGVBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUd0RCxXQUFNLEdBQXdCLEtBQUssQ0FBQztRQU1sQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUU1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckQsUUFBUSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzVCLEtBQUssT0FBTztvQkFDVixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7YUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVzthQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO2FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxLQUFZO1FBQ3pDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVTLHFCQUFxQixDQUFDLEtBQVk7UUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUM7SUFDeEUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXO1FBQ1QsdUlBQXVJO1FBQ3ZJLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVU7UUFDUixpSEFBaUg7UUFDakgsZ0dBQWdHO1FBQ2hHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxPQUFnQjtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEUsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1RCxDQUFDOytHQTdKVSwrQkFBK0I7bUdBQS9CLCtCQUErQix1SkFIL0IsQ0FBQyw2QkFBNkIsQ0FBQywrQ0FzQ3pCLHVCQUF1Qix1SkM5RzFDLHc4Q0E4Q0EsMnpMRHlCYyxDQUFDLGlCQUFpQixFQUFFLGlDQUFpQyxDQUFDOzs0RkFJdkQsK0JBQStCO2tCQVQzQyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxDQUFDLGlCQUFpQixFQUFFLGlDQUFpQyxDQUFDLGFBQ3ZELENBQUMsNkJBQTZCLENBQUMsY0FDOUIsS0FBSzs7c0JBT2hCLEtBQUs7O3NCQWFMLEtBQUs7O3NCQU9MLEtBQUs7O3NCQVVMLGVBQWU7dUJBQUMsdUJBQXVCOztzQkFHdkMsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbmltYXRpb25UcmlnZ2VyTWV0YWRhdGEsXG4gIGFuaW1hdGUsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2t5QW5pbWF0aW9uU2xpZGUgfSBmcm9tICdAc2t5dXgvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VGFiSWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3RhYi1pZC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJDb21wb25lbnQgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwU2VydmljZSB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LWdyb3VwLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQuc2VydmljZSc7XG5cbi8vIER1ZSB0byBob3cgd2UgbGVhdmUgdGhlIGNvbnRlbnQgZWxlbWVudCBpbiB0aGUgRE9NIC0gd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcGFkZGluZyBmb3IgdGhlIGNvbnRlbnQgYXJlYSBpcyBhbmltYXRlZCBhd2F5IGFsb25nIHdpdGggdGhlIGhlaWdodC5cbi8vIFRoZSB0aW1pbmcgaGVyZSBtYXRjaGVzIHdoYXQgdGhlIHNsaWRlIGFuaW1hdGlvbiB1c2VzIHRvIGVuc3VyZSB0aGV5IGhhcHBlbiB0b2dldGhlci5cbmNvbnN0IHNreVZlcnRpY2FsVGFic2V0UGFkZGluZ0FuaW1hdGlvbjogQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhID0gdHJpZ2dlcihcbiAgJ3NreVZlcnRpY2FsVGFic2V0UGFkZGluZ0FuaW1hdGlvbicsXG4gIFtcbiAgICBzdGF0ZShcbiAgICAgICdkb3duJyxcbiAgICAgIHN0eWxlKHtcbiAgICAgICAgJ3BhZGRpbmctdG9wJzogJ3ZhcigtLXNreS1jb21wLXRhYi12ZXJ0aWNhbC1zdWJncm91cC1zcGFjZS1pbnNldC10b3ApJyxcbiAgICAgICAgJ3BhZGRpbmctYm90dG9tJzpcbiAgICAgICAgICAndmFyKC0tc2t5LWNvbXAtdGFiLXZlcnRpY2FsLXN1Ymdyb3VwLXNwYWNlLWluc2V0LWJvdHRvbSknLFxuICAgICAgfSksXG4gICAgKSxcbiAgICBzdGF0ZShcbiAgICAgICd1cCcsXG4gICAgICBzdHlsZSh7XG4gICAgICAgICdwYWRkaW5nLXRvcCc6ICcwJyxcbiAgICAgICAgJ3BhZGRpbmctYm90dG9tJzogJzAnLFxuICAgICAgfSksXG4gICAgKSxcbiAgICBzdGF0ZShcbiAgICAgICd2b2lkJyxcbiAgICAgIHN0eWxlKHtcbiAgICAgICAgJ3BhZGRpbmctdG9wJzogJzAnLFxuICAgICAgICAncGFkZGluZy1ib3R0b20nOiAnMCcsXG4gICAgICB9KSxcbiAgICApLFxuICAgIC8vIFNhbWUgdGltaW5nIGFzIHNreUFuaW1hdGlvblNsaWRlIHRvIHN0YXkgc3luY2hyb25pemVkXG4gICAgdHJhbnNpdGlvbigndXAgPD0+IGRvd24nLCBhbmltYXRlKCcxNTBtcyBlYXNlLWluJykpLFxuICBdLFxuKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJ0aWNhbC10YWJzZXQtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJ0aWNhbC10YWJzZXQtZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtza3lBbmltYXRpb25TbGlkZSwgc2t5VmVydGljYWxUYWJzZXRQYWRkaW5nQW5pbWF0aW9uXSxcbiAgcHJvdmlkZXJzOiBbU2t5VmVydGljYWxUYWJzZXRHcm91cFNlcnZpY2VdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYWJpbGl0eSB0byBleHBhbmQgYW5kIGNvbGxhcHNlIHRoZSBncm91cC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVTbGlkZURpcmVjdGlvbihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYWRlciBmb3IgdGhlIGNvbGxhcHNpYmxlIGdyb3VwIG9mIHRhYnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ3JvdXBIZWFkaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbGxhcHNpYmxlIGdyb3VwIGlzIGV4cGFuZGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBvcGVuKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX29wZW4gPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVTbGlkZURpcmVjdGlvbihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZW4oKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19vcGVuO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudClcbiAgcHVibGljIHRhYnM6IFF1ZXJ5TGlzdDxTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnZ3JvdXBIZWFkaW5nQnV0dG9uJylcbiAgcHVibGljIGdyb3VwSGVhZGluZ0J1dHRvbjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYW5pbWF0aW9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHVibGljIHNsaWRlRGlyZWN0aW9uOiAnZG93bicgfCAndXAnIHwgJ3ZvaWQnID0gJ3VwJztcblxuICBwcm90ZWN0ZWQgZ3JvdXBJZDogc3RyaW5nO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjdGFiU2VydmljZTogU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlO1xuICAjY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UpO1xuICAjaWRTZXJ2aWNlID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG4gICN0YWJJZFNlcnZpY2UgPSBpbmplY3QoU2t5VGFiSWRTZXJ2aWNlKTtcbiAgI2dyb3VwU2VydmljZSA9IGluamVjdChTa3lWZXJ0aWNhbFRhYnNldEdyb3VwU2VydmljZSk7XG5cbiAgI19kaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgI19vcGVuOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGFiU2VydmljZTogU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlLFxuICAgIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuI3RhYlNlcnZpY2UgPSB0YWJTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZVJlZiA9IGNoYW5nZVJlZjtcblxuICAgIHRoaXMuZ3JvdXBJZCA9IHRoaXMuI2lkU2VydmljZS5nZW5lcmF0ZUlkKCk7XG5cbiAgICB0aGlzLiNncm91cFNlcnZpY2UubWVzc2FnZVN0cmVhbS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgIHN3aXRjaCAobWVzc2FnZS5tZXNzYWdlVHlwZSkge1xuICAgICAgICBjYXNlICdmb2N1cyc6XG4gICAgICAgICAgdGhpcy4jZm9jdXNCdXR0b24oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJJZFNlcnZpY2UucmVnaXN0ZXIodGhpcy5ncm91cElkLCB0aGlzLmdyb3VwSWQpO1xuXG4gICAgdGhpcy4jdGFiU2VydmljZS5hZGRHcm91cCh0aGlzKTtcblxuICAgIHRoaXMuI3RhYlNlcnZpY2UuaGlkaW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLiN0YWJzSGlkZGVuKCkpO1xuXG4gICAgdGhpcy4jdGFiU2VydmljZS5zaG93aW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLiN0YWJzU2hvd24oKSk7XG5cbiAgICB0aGlzLiN0YWJTZXJ2aWNlLnRhYkNsaWNrZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy4jdGFiQ2xpY2tlZCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJTZXJ2aWNlLmRlc3Ryb3lHcm91cCh0aGlzKTtcblxuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgIHRoaXMuI3RhYklkU2VydmljZS51bnJlZ2lzdGVyKHRoaXMuZ3JvdXBJZCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTWVudU9wZW4oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIH1cblxuICAgIHRoaXMuI3VwZGF0ZVNsaWRlRGlyZWN0aW9uKHRydWUpO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBncm91cEJ1dHRvbkFycm93TGVmdChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1lbnVPcGVuKCk7XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBncm91cEJ1dHRvbkFycm93UmlnaHQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgdGhpcy50YWJzPy5nZXQoMCk/LmZvY3VzQnV0dG9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9nZ2xlTWVudU9wZW4oKTtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFicyAmJiB0aGlzLnRhYnMuZmluZCgodCkgPT4gISF0LmFjdGl2ZSkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gICN0YWJDbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICN0YWJzSGlkZGVuKCk6IHZvaWQge1xuICAgIC8vIEFuZ3VsYXIgd2lsbCBzb21ldGltZXMgcGxhY2UgdGhlIGFuaW1hdGlvbiBpbnRvIHRoZSBcInZvaWRcIiBzdGF0ZSB3aGVuIHRhYnMgYXJlIGhpZGRlbi4gVXBkYXRlIG91ciBpbnRlcm5hbCB2YXJpYWJsZSB0byByZWZsZWN0IHRoYXQuXG4gICAgdGhpcy5zbGlkZURpcmVjdGlvbiA9ICd2b2lkJztcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjdGFic1Nob3duKCk6IHZvaWQge1xuICAgIC8vIFNldCB0aGUgYW5pbWF0aW9uIGJhY2sgdXAgc28gdGhhdCB0aGUgXCJ2b2lkXCIgc3RhdGUgaXMgcmV0dXJuZWQgdG8gd2hlcmUgaXQgd2FzIHByaW9yIHRvIHRoZSB0YWJzIGJlaW5nIGhpZGRlbi5cbiAgICAvLyBUaGlzIHdpbGwgYmUgaW5zdGFudGFuZW91cyBkdWUgdG8gdGhlcmUgbm90IGJlaW5nIGEgXCJ2b2lkIC0+ICpcIiBzdGF0ZSBvbiB0aGUgc2xpZGUgYW5pbWF0aW9uLlxuICAgIHRoaXMuI3VwZGF0ZVNsaWRlRGlyZWN0aW9uKHRydWUpO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICN1cGRhdGVTbGlkZURpcmVjdGlvbihhbmltYXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hbmltYXRpb25EaXNhYmxlZCA9ICFhbmltYXRlO1xuICAgIHRoaXMuc2xpZGVEaXJlY3Rpb24gPSB0aGlzLm9wZW4gJiYgIXRoaXMuZGlzYWJsZWQgPyAnZG93bicgOiAndXAnO1xuICB9XG5cbiAgI2ZvY3VzQnV0dG9uKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmZvY3VzQnV0dG9uKHRoaXMuZ3JvdXBIZWFkaW5nQnV0dG9uKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXBcIj5cbiAgPCEtLSBbbmdDbGFzc10gaW5jbHVkZXMgZm9udCBjbGFzc2VzIGZvciBib3RoIG1vZGVybiBhbmQgZGVmYXVsdCBzdHlsZXMgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtaGVhZGVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cC1oZWFkZXItYWN0aXZlJzogaXNBY3RpdmUoKSxcbiAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlci1zdWItb3Blbic6IG9wZW4sXG4gICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogZGlzYWJsZWRcbiAgICB9XCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgICNncm91cEhlYWRpbmdCdXR0b25cbiAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1idXR0b25cIlxuICAgICAgcm9sZT1cInRhYlwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZ3JvdXBDb250ZW50LmlkXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdW5kZWZpbmVkXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWRpc2FibGVkICYmIG9wZW5cIlxuICAgICAgW2lkXT1cImdyb3VwSWRcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LXZlcnRpY2FsLXRhYnNldC1idXR0b24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgfVwiXG4gICAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnVPcGVuKClcIlxuICAgICAgKGtleXVwLmFycm93bGVmdCk9XCJncm91cEJ1dHRvbkFycm93TGVmdCgkZXZlbnQpXCJcbiAgICAgIChrZXl1cC5hcnJvd3JpZ2h0KT1cImdyb3VwQnV0dG9uQXJyb3dSaWdodCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7eyBncm91cEhlYWRpbmcgfX1cbiAgICAgIDxza3ktZXhwYW5zaW9uLWluZGljYXRvclxuICAgICAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtZXhwYW5zaW9uLWluZGljYXRvclwiXG4gICAgICAgIFtkaXJlY3Rpb25dPVwiIWRpc2FibGVkICYmIG9wZW4gPyAndXAnIDogJ2Rvd24nXCJcbiAgICAgIC8+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgI2dyb3VwQ29udGVudFxuICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cC1jb250ZW50XCJcbiAgICBza3lJZFxuICAgIFthdHRyLmxhYmVsbGVkYnldPVwiZ3JvdXBJZFwiXG4gICAgW0AuZGlzYWJsZWRdPVwiYW5pbWF0aW9uRGlzYWJsZWRcIlxuICAgIFtAc2t5QW5pbWF0aW9uU2xpZGVdPVwic2xpZGVEaXJlY3Rpb25cIlxuICAgIFtAc2t5VmVydGljYWxUYWJzZXRQYWRkaW5nQW5pbWF0aW9uXT1cInNsaWRlRGlyZWN0aW9uXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { SkyTabIdService } from '../shared/tab-id.service';\nimport { HIDDEN_STATE, SkyVerticalTabsetService, VISIBLE_STATE, } from './vertical-tabset.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./vertical-tabset-adapter.service\";\nimport * as i2 from \"./vertical-tabset.service\";\nimport * as i3 from \"@skyux/i18n\";\nimport * as i4 from \"../shared/tab-id.service\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"@skyux/icon\";\nexport class SkyVerticalTabsetComponent {\n /**\n * The ARIA role for the vertical tabset\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tabset functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/#roles).\n * @default \"tablist\"\n * @deprecated Any other value than `tablist` could lead to a poor user experience for users with assistive technology.\n * In the next major version, this property will be automatically set to `tablist`.\n */\n get ariaRole() {\n return this.#_ariaRole;\n }\n set ariaRole(value) {\n this.#_ariaRole = value ?? 'tablist';\n }\n #ngUnsubscribe;\n #_ariaRole;\n #resources;\n #changeRef;\n constructor(adapterService, tabService, resources, changeRef, tabIdSvc) {\n this.adapterService = adapterService;\n this.tabService = tabService;\n this.tabIdSvc = tabIdSvc;\n /**\n * Whether the vertical tabset loads tab content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n this.maintainTabContent = false;\n /**\n * Fires when the active tab changes. Emits the index of the active tab. The\n * index is based on the tab's position when it loads.\n */\n this.activeChange = new EventEmitter();\n this.isMobile = false;\n this.tablistHasFocus = false;\n this.#ngUnsubscribe = new Subject();\n this.#_ariaRole = 'tablist';\n this.#resources = resources;\n this.#changeRef = changeRef;\n }\n ngOnInit() {\n this.tabService.maintainTabContent = this.maintainTabContent;\n this.tabService.indexChanged\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((index) => {\n this.activeChange.emit(index);\n if (this.contentWrapper) {\n this.adapterService.scrollToContentTop(this.contentWrapper);\n }\n this.#changeRef.markForCheck();\n });\n this.tabService.switchingMobile\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((mobile) => {\n this.isMobile = mobile;\n this.#changeRef.markForCheck();\n });\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.#changeRef.markForCheck();\n }\n if (!this.showTabsText) {\n this.#resources\n .getString('skyux_vertical_tabs_show_tabs_text')\n .pipe(take(1))\n .subscribe((resource) => {\n /* sanity check */\n /* istanbul ignore else */\n if (!this.showTabsText) {\n this.showTabsText = resource;\n }\n });\n }\n }\n ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n tabsetFocus() {\n this.tabService.focusActiveTab(this.tabGroups);\n }\n trapFocusInTablist() {\n // This will set the tab index of the the vertical tabset element to -1\n // while focus is inside the tab list, allowing Shift+Tab to move\n // to the next element above the tab list element. Otherwise focus would\n // be trapped on the currently focused tab.\n this.tablistHasFocus = true;\n }\n resetTabIndex() {\n this.tablistHasFocus = false;\n }\n tabGroupsArrowDown() {\n this.adapterService.focusNextButton(this.tabGroups);\n }\n tabGroupsArrowUp() {\n this.adapterService.focusPreviousButton(this.tabGroups);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetComponent, deps: [{ token: i1.SkyVerticalTabsetAdapterService }, { token: i2.SkyVerticalTabsetService }, { token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }, { token: i4.SkyTabIdService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyVerticalTabsetComponent, isStandalone: false, selector: \"sky-vertical-tabset\", inputs: { showTabsText: \"showTabsText\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", ariaRole: \"ariaRole\", maintainTabContent: \"maintainTabContent\" }, outputs: { activeChange: \"activeChange\" }, providers: [SkyTabIdService, SkyVerticalTabsetService], viewQueries: [{ propertyName: \"tabGroups\", first: true, predicate: [\"groupContainerWrapper\"], descendants: true }, { propertyName: \"content\", first: true, predicate: [\"skySideContent\"], descendants: true }, { propertyName: \"contentWrapper\", first: true, predicate: [\"contentContainerWrapper\"], descendants: true }], ngImport: i0, template: \"<div\\n class=\\\"sky-vertical-tabset\\\"\\n [tabIndex]=\\\"tablistHasFocus ? -1 : 0\\\"\\n (focus)=\\\"tabsetFocus()\\\"\\n>\\n <!--\\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\\n However, the markup for each sky-vertical-tab component includes both the tab button\\n and its panel, making the panel element a child of its tablist. Moreover, our\\n sky-vertical-tab components can be grouped within collapsible containers, which also\\n violates accessibility rules because only tab buttons can be children of a tablist.\\n To address this, we create an empty tablist element with an aria-owns attribute,\\n pointing to each tab element individually. That way, we don't have to worry about the\\n structure for each sky-vertical-tab component in order to satisfy accessibility\\n guidelines.\\n -->\\n <span\\n class=\\\"sky-vertical-tabset-tablist\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-orientation]=\\\"isMobile ? undefined : 'vertical'\\\"\\n [attr.aria-owns]=\\\"\\n isMobile ? undefined : (tabIdSvc.ids | async)?.join(' ') || undefined\\n \\\"\\n [attr.role]=\\\"isMobile ? undefined : ariaRole\\\"\\n ></span>\\n @if (maintainTabContent || tabService.tabsVisible()) {\\n <div\\n #groupContainerWrapper\\n class=\\\"sky-vertical-tabset-group-container\\\"\\n [@tabGroupEnter]=\\\"tabService.animationTabsVisibleState\\\"\\n [ngClass]=\\\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\\\"\\n [tabIndex]=\\\"tablistHasFocus ? -1 : 0\\\"\\n (@tabGroupEnter.done)=\\\"tabsetFocus()\\\"\\n (keydown.arrowDown)=\\\"tabGroupsArrowDown(); $event.preventDefault()\\\"\\n (keydown.arrowUp)=\\\"tabGroupsArrowUp(); $event.preventDefault()\\\"\\n (focusin)=\\\"trapFocusInTablist()\\\"\\n (focusout)=\\\"resetTabIndex()\\\"\\n >\\n <ng-content />\\n </div>\\n }\\n @if (maintainTabContent || tabService.contentVisible()) {\\n <div\\n #contentContainerWrapper\\n class=\\\"sky-vertical-tabset-content\\\"\\n [ngClass]=\\\"{\\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\\n }\\\"\\n [@contentEnter]=\\\"tabService.animationContentVisibleState\\\"\\n (focusin)=\\\"resetTabIndex()\\\"\\n >\\n <div #skySideContent></div>\\n @if (!tabService.tabsVisible()) {\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\\\"\\n type=\\\"button\\\"\\n (click)=\\\"tabService.showTabs()\\\"\\n >\\n <sky-icon iconName=\\\"chevron-left\\\" />\\n {{ showTabsText }}\\n </button>\\n }\\n </div>\\n }\\n</div>\\n\", styles: [\".sky-vertical-tabset:not(.sky-theme-modern *){--sky-override-vertical-tab-content-pane-margin-bottom: 0;--sky-override-vertical-tabset-content-margin-sm-lg: 10px 0 0 10px;--sky-override-vertical-tabset-content-margin-xs: 10px 0 0 10px;--sky-override-vertical-tabset-group-container-border-right: 1px solid #cdcfd2;--sky-override-vertical-tabset-group-container-padding: 0;--sky-override-vertical-tabset-modal-margin-adjustment: -15px;--sky-override-vertical-tabset-modal-margin-adjustment-with-group: -15px;--sky-override-vertical-tabset-show-tabs-margin-top: 10px}:host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:var(--sky-override-vertical-tabset-group-container-border-right, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider))}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:var(--sky-override-vertical-tabset-group-container-border-right, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider))}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:var(--sky-override-vertical-tabset-content-margin-xs, var(--sky-comp-tab-vertical-content-space-inset-xs-top) var(--sky-comp-tab-vertical-content-space-inset-xs-right) var(--sky-comp-tab-vertical-content-space-inset-xs-bottom) var(--sky-comp-tab-vertical-content-space-inset-xs-left));flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:var(--sky-override-vertical-tabset-show-tabs-margin-top, 0)}.sky-vertical-tabset-group-container{background-color:var(--sky-color-background-container-dimmed);flex-basis:25%;overflow-y:auto;padding:var(--sky-override-vertical-tabset-group-container-padding, var(--sky-comp-tab-vertical-group-space-inset-top) var(--sky-comp-tab-vertical-group-space-inset-right) var(--sky-comp-tab-vertical-group-space-inset-bottom) var(--sky-comp-tab-vertical-group-space-inset-left))}:host-context(sky-modal-content)>:host .sky-vertical-tabset{margin:var(--sky-override-vertical-tabset-modal-margin-adjustment, calc(var(--sky-comp-modal-content-space-inset-top) * -1) calc(var(--sky-comp-modal-content-space-inset-right) * -1) calc(var(--sky-comp-modal-content-space-inset-bottom) * -1) calc((var(--sky-comp-tab-vertical-space-inset-left) + var(--sky-space-inline-s)) * -1))}:host-context(sky-modal-content)>:host .sky-vertical-tabset:has(sky-vertical-tabset-group){margin-left:var(--sky-override-vertical-tabset-modal-margin-adjustment-with-group, calc(var(--sky-comp-tab-vertical-group-button-space-inset-left) * -1))}@media (min-width: 768px){:host .sky-vertical-tabset-content{margin:var(--sky-override-vertical-tabset-content-margin-sm-lg, var(--sky-comp-tab-vertical-content-space-inset-sm-top) var(--sky-comp-tab-vertical-content-space-inset-sm-right) var(--sky-comp-tab-vertical-content-space-inset-sm-bottom) var(--sky-comp-tab-vertical-content-space-inset-sm-left))}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:var(--sky-override-vertical-tabset-content-margin-sm-lg, var(--sky-comp-tab-vertical-content-space-inset-sm-top) var(--sky-comp-tab-vertical-content-space-inset-sm-right) var(--sky-comp-tab-vertical-content-space-inset-sm-bottom) var(--sky-comp-tab-vertical-content-space-inset-sm-left))}\\n\"], dependencies: [{ kind: \"directive\", type: i5.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: i6.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"pipe\", type: i5.AsyncPipe, name: \"async\" }], animations: [\n trigger('tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-vertical-tabset', providers: [SkyTabIdService, SkyVerticalTabsetService], changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ], standalone: false, template: \"<div\\n class=\\\"sky-vertical-tabset\\\"\\n [tabIndex]=\\\"tablistHasFocus ? -1 : 0\\\"\\n (focus)=\\\"tabsetFocus()\\\"\\n>\\n <!--\\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\\n However, the markup for each sky-vertical-tab component includes both the tab button\\n and its panel, making the panel element a child of its tablist. Moreover, our\\n sky-vertical-tab components can be grouped within collapsible containers, which also\\n violates accessibility rules because only tab buttons can be children of a tablist.\\n To address this, we create an empty tablist element with an aria-owns attribute,\\n pointing to each tab element individually. That way, we don't have to worry about the\\n structure for each sky-vertical-tab component in order to satisfy accessibility\\n guidelines.\\n -->\\n <span\\n class=\\\"sky-vertical-tabset-tablist\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-orientation]=\\\"isMobile ? undefined : 'vertical'\\\"\\n [attr.aria-owns]=\\\"\\n isMobile ? undefined : (tabIdSvc.ids | async)?.join(' ') || undefined\\n \\\"\\n [attr.role]=\\\"isMobile ? undefined : ariaRole\\\"\\n ></span>\\n @if (maintainTabContent || tabService.tabsVisible()) {\\n <div\\n #groupContainerWrapper\\n class=\\\"sky-vertical-tabset-group-container\\\"\\n [@tabGroupEnter]=\\\"tabService.animationTabsVisibleState\\\"\\n [ngClass]=\\\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\\\"\\n [tabIndex]=\\\"tablistHasFocus ? -1 : 0\\\"\\n (@tabGroupEnter.done)=\\\"tabsetFocus()\\\"\\n (keydown.arrowDown)=\\\"tabGroupsArrowDown(); $event.preventDefault()\\\"\\n (keydown.arrowUp)=\\\"tabGroupsArrowUp(); $event.preventDefault()\\\"\\n (focusin)=\\\"trapFocusInTablist()\\\"\\n (focusout)=\\\"resetTabIndex()\\\"\\n >\\n <ng-content />\\n </div>\\n }\\n @if (maintainTabContent || tabService.contentVisible()) {\\n <div\\n #contentContainerWrapper\\n class=\\\"sky-vertical-tabset-content\\\"\\n [ngClass]=\\\"{\\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\\n }\\\"\\n [@contentEnter]=\\\"tabService.animationContentVisibleState\\\"\\n (focusin)=\\\"resetTabIndex()\\\"\\n >\\n <div #skySideContent></div>\\n @if (!tabService.tabsVisible()) {\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\\\"\\n type=\\\"button\\\"\\n (click)=\\\"tabService.showTabs()\\\"\\n >\\n <sky-icon iconName=\\\"chevron-left\\\" />\\n {{ showTabsText }}\\n </button>\\n }\\n </div>\\n }\\n</div>\\n\", styles: [\".sky-vertical-tabset:not(.sky-theme-modern *){--sky-override-vertical-tab-content-pane-margin-bottom: 0;--sky-override-vertical-tabset-content-margin-sm-lg: 10px 0 0 10px;--sky-override-vertical-tabset-content-margin-xs: 10px 0 0 10px;--sky-override-vertical-tabset-group-container-border-right: 1px solid #cdcfd2;--sky-override-vertical-tabset-group-container-padding: 0;--sky-override-vertical-tabset-modal-margin-adjustment: -15px;--sky-override-vertical-tabset-modal-margin-adjustment-with-group: -15px;--sky-override-vertical-tabset-show-tabs-margin-top: 10px}:host .sky-vertical-tabset{display:block;height:auto}:host .sky-vertical-tabset-group-container{border-right:none}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:block;height:auto}:host-context(.sky-responsive-container-xs) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:none}@media (min-width: 768px){:host .sky-vertical-tabset{display:flex;height:100%}:host .sky-vertical-tabset-group-container{border-right:var(--sky-override-vertical-tabset-group-container-border-right, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider))}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset,:host-context(.sky-responsive-container-md) .sky-vertical-tabset,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset{display:flex;height:100%}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-group-container,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-group-container{border-right:var(--sky-override-vertical-tabset-group-container-border-right, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider))}.sky-vertical-tabset-hidden{display:none}.sky-vertical-tabset-content{margin:var(--sky-override-vertical-tabset-content-margin-xs, var(--sky-comp-tab-vertical-content-space-inset-xs-top) var(--sky-comp-tab-vertical-content-space-inset-xs-right) var(--sky-comp-tab-vertical-content-space-inset-xs-bottom) var(--sky-comp-tab-vertical-content-space-inset-xs-left));flex-basis:75%;overflow-y:auto}.sky-vertical-tabset-content-hidden{display:none}.sky-vertical-tabset-show-tabs-btn{margin-top:var(--sky-override-vertical-tabset-show-tabs-margin-top, 0)}.sky-vertical-tabset-group-container{background-color:var(--sky-color-background-container-dimmed);flex-basis:25%;overflow-y:auto;padding:var(--sky-override-vertical-tabset-group-container-padding, var(--sky-comp-tab-vertical-group-space-inset-top) var(--sky-comp-tab-vertical-group-space-inset-right) var(--sky-comp-tab-vertical-group-space-inset-bottom) var(--sky-comp-tab-vertical-group-space-inset-left))}:host-context(sky-modal-content)>:host .sky-vertical-tabset{margin:var(--sky-override-vertical-tabset-modal-margin-adjustment, calc(var(--sky-comp-modal-content-space-inset-top) * -1) calc(var(--sky-comp-modal-content-space-inset-right) * -1) calc(var(--sky-comp-modal-content-space-inset-bottom) * -1) calc((var(--sky-comp-tab-vertical-space-inset-left) + var(--sky-space-inline-s)) * -1))}:host-context(sky-modal-content)>:host .sky-vertical-tabset:has(sky-vertical-tabset-group){margin-left:var(--sky-override-vertical-tabset-modal-margin-adjustment-with-group, calc(var(--sky-comp-tab-vertical-group-button-space-inset-left) * -1))}@media (min-width: 768px){:host .sky-vertical-tabset-content{margin:var(--sky-override-vertical-tabset-content-margin-sm-lg, var(--sky-comp-tab-vertical-content-space-inset-sm-top) var(--sky-comp-tab-vertical-content-space-inset-sm-right) var(--sky-comp-tab-vertical-content-space-inset-sm-bottom) var(--sky-comp-tab-vertical-content-space-inset-sm-left))}}:host-context(.sky-responsive-container-sm) .sky-vertical-tabset-content,:host-context(.sky-responsive-container-md) .sky-vertical-tabset-content,:host-context(.sky-responsive-container-lg) .sky-vertical-tabset-content{margin:var(--sky-override-vertical-tabset-content-margin-sm-lg, var(--sky-comp-tab-vertical-content-space-inset-sm-top) var(--sky-comp-tab-vertical-content-space-inset-sm-right) var(--sky-comp-tab-vertical-content-space-inset-sm-bottom) var(--sky-comp-tab-vertical-content-space-inset-sm-left))}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }, { type: i4.SkyTabIdService }], propDecorators: { showTabsText: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaRole: [{\n type: Input\n }], maintainTabContent: [{\n type: Input\n }], activeChange: [{\n type: Output\n }], tabGroups: [{\n type: ViewChild,\n args: ['groupContainerWrapper']\n }], content: [{\n type: ViewChild,\n args: ['skySideContent']\n }], contentWrapper: [{\n type: ViewChild,\n args: ['contentContainerWrapper']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUczRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixhQUFhLEdBQ2QsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUF3Qm5DLE1BQU0sT0FBTywwQkFBMEI7SUE0QnJDOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsUUFBUSxDQUFDLEtBQXlCO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBZ0NELGNBQWMsQ0FBdUI7SUFD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R1UsMEJBQTBCO2tCQXRCdEMsU0FBUzsrQkFDRSxxQkFBcUIsYUFHcEIsQ0FBQyxlQUFlLEVBQUUsd0JBQXdCLENBQUMsbUJBQ3JDLHVCQUF1QixDQUFDLE1BQU0sY0FDbkM7d0JBQ1YsT0FBTyxDQUFDLGVBQWUsRUFBRTs0QkFDdkIsVUFBVSxDQUFDLEdBQUcsWUFBWSxPQUFPLGFBQWEsRUFBRSxFQUFFO2dDQUNoRCxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDeEMsT0FBTyxDQUFDLGVBQWUsQ0FBQzs2QkFDekIsQ0FBQzt5QkFDSCxDQUFDO3dCQUNGLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3RCLFVBQVUsQ0FBQyxHQUFHLFlBQVksT0FBTyxhQUFhLEVBQUUsRUFBRTtnQ0FDaEQsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUM7Z0NBQ3ZDLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSCxjQUNXLEtBQUs7O3NCQVFoQixLQUFLOztzQkFTTCxLQUFLOztzQkFVTCxLQUFLOztzQkFhTCxLQUFLOztzQkFjTCxLQUFLOztzQkFPTCxNQUFNOztzQkFHTixTQUFTO3VCQUFDLHVCQUF1Qjs7c0JBR2pDLFNBQVM7dUJBQUMsZ0JBQWdCOztzQkFHMUIsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRhYklkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC90YWItaWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgSElEREVOX1NUQVRFLFxuICBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gIFZJU0lCTEVfU1RBVEUsXG59IGZyb20gJy4vdmVydGljYWwtdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdmVydGljYWwtdGFic2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLXRhYnNldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLXRhYnNldC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lUYWJJZFNlcnZpY2UsIFNreVZlcnRpY2FsVGFic2V0U2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcigndGFiR3JvdXBFbnRlcicsIFtcbiAgICAgIHRyYW5zaXRpb24oYCR7SElEREVOX1NUQVRFfSA9PiAke1ZJU0lCTEVfU1RBVEV9YCwgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKCcxNTBtcyBlYXNlLWluJyksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdjb250ZW50RW50ZXInLCBbXG4gICAgICB0cmFuc2l0aW9uKGAke0hJRERFTl9TVEFURX0gPT4gJHtWSVNJQkxFX1NUQVRFfWAsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKCcxNTBtcyBlYXNlLWluJyksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFic2V0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgb24gdGhlIHNob3cgdGFicyBidXR0b24gb24gbW9iaWxlIGRldmljZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1RhYnNUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgdGFic2V0LiBUaGlzIHNldHMgdGhlIHRhYnNldCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHRhYnNldCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSB0YWJzZXQuIFRoaXMgc2V0cyB0aGUgdGFic2V0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSB0YWJzZXQgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsYCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWxsZWRieSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEFSSUEgcm9sZSBmb3IgdGhlIHZlcnRpY2FsIHRhYnNldFxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpXG4gICAqIGJ5IGluZGljYXRpbmcgaG93IHRoZSB0YWJzZXQgZnVuY3Rpb25zIGFuZCB3aGF0IGl0IGNvbnRyb2xzLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93XG4gICAqIGFuIEFSSUEgcm9sZSBpbmRpY2F0ZXMgd2hhdCBhbiBpdGVtIHJlcHJlc2VudHMgb24gYSB3ZWIgcGFnZSwgc2VlIHRoZVxuICAgKiBbV0FJLUFSSUEgcm9sZXMgbW9kZWxdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvUEYvYXJpYS8jcm9sZXMpLlxuICAgKiBAZGVmYXVsdCBcInRhYmxpc3RcIlxuICAgKiBAZGVwcmVjYXRlZCBBbnkgb3RoZXIgdmFsdWUgdGhhbiBgdGFibGlzdGAgY291bGQgbGVhZCB0byBhIHBvb3IgdXNlciBleHBlcmllbmNlIGZvciB1c2VycyB3aXRoIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LlxuICAgKiBJbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLCB0aGlzIHByb3BlcnR5IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgdG8gYHRhYmxpc3RgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBhcmlhUm9sZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfYXJpYVJvbGU7XG4gIH1cblxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfYXJpYVJvbGUgPSB2YWx1ZSA/PyAndGFibGlzdCc7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmVydGljYWwgdGFic2V0IGxvYWRzIHRhYiBjb250ZW50IGR1cmluZyBpbml0aWFsaXphdGlvbiBzbyB0aGF0IGl0XG4gICAqIGRpc3BsYXlzIGNvbnRlbnQgd2l0aG91dCBtb3ZpbmcgYXJvdW5kIGVsZW1lbnRzIGluIHRoZSBjb250ZW50IGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYWludGFpblRhYkNvbnRlbnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWN0aXZlIHRhYiBjaGFuZ2VzLiBFbWl0cyB0aGUgaW5kZXggb2YgdGhlIGFjdGl2ZSB0YWIuIFRoZVxuICAgKiBpbmRleCBpcyBiYXNlZCBvbiB0aGUgdGFiJ3MgcG9zaXRpb24gd2hlbiBpdCBsb2Fkcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZ3JvdXBDb250YWluZXJXcmFwcGVyJylcbiAgcHVibGljIHRhYkdyb3VwczogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdza3lTaWRlQ29udGVudCcpXG4gIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXJXcmFwcGVyJylcbiAgcHVibGljIGNvbnRlbnRXcmFwcGVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhcmlhT3duczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCB0YWJsaXN0SGFzRm9jdXMgPSBmYWxzZTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNfYXJpYVJvbGUgPSAndGFibGlzdCc7XG5cbiAgI3Jlc291cmNlczogU2t5TGliUmVzb3VyY2VzU2VydmljZTtcbiAgI2NoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFkYXB0ZXJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyB0YWJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gICAgcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHRhYklkU3ZjOiBTa3lUYWJJZFNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI3Jlc291cmNlcyA9IHJlc291cmNlcztcbiAgICB0aGlzLiNjaGFuZ2VSZWYgPSBjaGFuZ2VSZWY7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJTZXJ2aWNlLm1haW50YWluVGFiQ29udGVudCA9IHRoaXMubWFpbnRhaW5UYWJDb250ZW50O1xuXG4gICAgdGhpcy50YWJTZXJ2aWNlLmluZGV4Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5zY3JvbGxUb0NvbnRlbnRUb3AodGhpcy5jb250ZW50V3JhcHBlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2Uuc3dpdGNoaW5nTW9iaWxlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtb2JpbGU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IG1vYmlsZTtcbiAgICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy50YWJTZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xuICAgICAgdGhpcy50YWJTZXJ2aWNlLmFuaW1hdGlvbkNvbnRlbnRWaXNpYmxlU3RhdGUgPSBWSVNJQkxFX1NUQVRFO1xuICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2hvd1RhYnNUZXh0KSB7XG4gICAgICB0aGlzLiNyZXNvdXJjZXNcbiAgICAgICAgLmdldFN0cmluZygnc2t5dXhfdmVydGljYWxfdGFic19zaG93X3RhYnNfdGV4dCcpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlKSA9PiB7XG4gICAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RhYnNUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLnNob3dUYWJzVGV4dCA9IHJlc291cmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYlNlcnZpY2UuY29udGVudCA9IHRoaXMuY29udGVudDtcbiAgICB0aGlzLnRhYlNlcnZpY2UudXBkYXRlQ29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWJzZXRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYlNlcnZpY2UuZm9jdXNBY3RpdmVUYWIodGhpcy50YWJHcm91cHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYXBGb2N1c0luVGFibGlzdCgpOiB2b2lkIHtcbiAgICAvLyBUaGlzIHdpbGwgc2V0IHRoZSB0YWIgaW5kZXggb2YgdGhlIHRoZSB2ZXJ0aWNhbCB0YWJzZXQgZWxlbWVudCB0byAtMVxuICAgIC8vIHdoaWxlIGZvY3VzIGlzIGluc2lkZSB0aGUgdGFiIGxpc3QsIGFsbG93aW5nIFNoaWZ0K1RhYiB0byBtb3ZlXG4gICAgLy8gdG8gdGhlIG5leHQgZWxlbWVudCBhYm92ZSB0aGUgdGFiIGxpc3QgZWxlbWVudC4gT3RoZXJ3aXNlIGZvY3VzIHdvdWxkXG4gICAgLy8gYmUgdHJhcHBlZCBvbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgdGFiLlxuICAgIHRoaXMudGFibGlzdEhhc0ZvY3VzID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldFRhYkluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMudGFibGlzdEhhc0ZvY3VzID0gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGFiR3JvdXBzQXJyb3dEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZm9jdXNOZXh0QnV0dG9uKHRoaXMudGFiR3JvdXBzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWJHcm91cHNBcnJvd1VwKCk6IHZvaWQge1xuICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZm9jdXNQcmV2aW91c0J1dHRvbih0aGlzLnRhYkdyb3Vwcyk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0XCJcbiAgW3RhYkluZGV4XT1cInRhYmxpc3RIYXNGb2N1cyA/IC0xIDogMFwiXG4gIChmb2N1cyk9XCJ0YWJzZXRGb2N1cygpXCJcbj5cbiAgPCEtLVxuICAgIEFSSUEgcnVsZXMgZG8gbm90IGFsbG93IHRhYnBhbmVsIGVsZW1lbnRzIHRvIGJlIGNoaWxkcmVuIG9mIGEgdGFibGlzdCBlbGVtZW50LlxuICAgIEhvd2V2ZXIsIHRoZSBtYXJrdXAgZm9yIGVhY2ggc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnQgaW5jbHVkZXMgYm90aCB0aGUgdGFiIGJ1dHRvblxuICAgIGFuZCBpdHMgcGFuZWwsIG1ha2luZyB0aGUgcGFuZWwgZWxlbWVudCBhIGNoaWxkIG9mIGl0cyB0YWJsaXN0LiBNb3Jlb3Zlciwgb3VyXG4gICAgc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnRzIGNhbiBiZSBncm91cGVkIHdpdGhpbiBjb2xsYXBzaWJsZSBjb250YWluZXJzLCB3aGljaCBhbHNvXG4gICAgdmlvbGF0ZXMgYWNjZXNzaWJpbGl0eSBydWxlcyBiZWNhdXNlIG9ubHkgdGFiIGJ1dHRvbnMgY2FuIGJlIGNoaWxkcmVuIG9mIGEgdGFibGlzdC5cbiAgICBUbyBhZGRyZXNzIHRoaXMsIHdlIGNyZWF0ZSBhbiBlbXB0eSB0YWJsaXN0IGVsZW1lbnQgd2l0aCBhbiBhcmlhLW93bnMgYXR0cmlidXRlLFxuICAgIHBvaW50aW5nIHRvIGVhY2ggdGFiIGVsZW1lbnQgaW5kaXZpZHVhbGx5LiBUaGF0IHdheSwgd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGVcbiAgICBzdHJ1Y3R1cmUgZm9yIGVhY2ggc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnQgaW4gb3JkZXIgdG8gc2F0aXNmeSBhY2Nlc3NpYmlsaXR5XG4gICAgZ3VpZGVsaW5lcy5cbiAgLS0+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LXRhYmxpc3RcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgIFthdHRyLmFyaWEtb3JpZW50YXRpb25dPVwiaXNNb2JpbGUgPyB1bmRlZmluZWQgOiAndmVydGljYWwnXCJcbiAgICBbYXR0ci5hcmlhLW93bnNdPVwiXG4gICAgICBpc01vYmlsZSA/IHVuZGVmaW5lZCA6ICh0YWJJZFN2Yy5pZHMgfCBhc3luYyk/LmpvaW4oJyAnKSB8fCB1bmRlZmluZWRcbiAgICBcIlxuICAgIFthdHRyLnJvbGVdPVwiaXNNb2JpbGUgPyB1bmRlZmluZWQgOiBhcmlhUm9sZVwiXG4gID48L3NwYW4+XG4gIEBpZiAobWFpbnRhaW5UYWJDb250ZW50IHx8IHRhYlNlcnZpY2UudGFic1Zpc2libGUoKSkge1xuICAgIDxkaXZcbiAgICAgICNncm91cENvbnRhaW5lcldyYXBwZXJcbiAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cC1jb250YWluZXJcIlxuICAgICAgW0B0YWJHcm91cEVudGVyXT1cInRhYlNlcnZpY2UuYW5pbWF0aW9uVGFic1Zpc2libGVTdGF0ZVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdza3ktdmVydGljYWwtdGFic2V0LWhpZGRlbic6ICF0YWJTZXJ2aWNlLnRhYnNWaXNpYmxlKCkgfVwiXG4gICAgICBbdGFiSW5kZXhdPVwidGFibGlzdEhhc0ZvY3VzID8gLTEgOiAwXCJcbiAgICAgIChAdGFiR3JvdXBFbnRlci5kb25lKT1cInRhYnNldEZvY3VzKClcIlxuICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cInRhYkdyb3Vwc0Fycm93RG93bigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cInRhYkdyb3Vwc0Fycm93VXAoKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgKGZvY3VzaW4pPVwidHJhcEZvY3VzSW5UYWJsaXN0KClcIlxuICAgICAgKGZvY3Vzb3V0KT1cInJlc2V0VGFiSW5kZXgoKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKG1haW50YWluVGFiQ29udGVudCB8fCB0YWJTZXJ2aWNlLmNvbnRlbnRWaXNpYmxlKCkpIHtcbiAgICA8ZGl2XG4gICAgICAjY29udGVudENvbnRhaW5lcldyYXBwZXJcbiAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1jb250ZW50XCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS12ZXJ0aWNhbC10YWJzZXQtY29udGVudC1oaWRkZW4nOiAhdGFiU2VydmljZS5jb250ZW50VmlzaWJsZSgpXG4gICAgICB9XCJcbiAgICAgIFtAY29udGVudEVudGVyXT1cInRhYlNlcnZpY2UuYW5pbWF0aW9uQ29udGVudFZpc2libGVTdGF0ZVwiXG4gICAgICAoZm9jdXNpbik9XCJyZXNldFRhYkluZGV4KClcIlxuICAgID5cbiAgICAgIDxkaXYgI3NreVNpZGVDb250ZW50PjwvZGl2PlxuICAgICAgQGlmICghdGFiU2VydmljZS50YWJzVmlzaWJsZSgpKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1wcmltYXJ5IHNreS12ZXJ0aWNhbC10YWJzZXQtc2hvdy10YWJzLWJ0blwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInRhYlNlcnZpY2Uuc2hvd1RhYnMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gaWNvbk5hbWU9XCJjaGV2cm9uLWxlZnRcIiAvPlxuICAgICAgICAgIHt7IHNob3dUYWJzVGV4dCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyResponsiveHostDirective } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyExpansionIndicatorModule, SkyStatusIndicatorModule, } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';\nimport { SkyVerticalTabsetComponent } from './vertical-tabset.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyVerticalTabsetModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetModule, declarations: [SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent], imports: [CommonModule,\n SkyIconModule,\n SkyIdModule,\n SkyExpansionIndicatorModule,\n SkyResponsiveHostDirective,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule], exports: [SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetModule, providers: [SkyVerticalTabsetAdapterService], imports: [CommonModule,\n SkyIconModule,\n SkyIdModule,\n SkyExpansionIndicatorModule,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyVerticalTabsetModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent,\n ],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIdModule,\n SkyExpansionIndicatorModule,\n SkyResponsiveHostDirective,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule,\n ],\n providers: [SkyVerticalTabsetAdapterService],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUNMLDJCQUEyQixFQUMzQix3QkFBd0IsR0FDekIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQXlCekUsTUFBTSxPQUFPLHVCQUF1QjsrR0FBdkIsdUJBQXVCO2dIQUF2Qix1QkFBdUIsaUJBckJoQywwQkFBMEI7WUFDMUIsK0JBQStCO1lBQy9CLHVCQUF1QixhQUd2QixZQUFZO1lBQ1osYUFBYTtZQUNiLFdBQVc7WUFDWCwyQkFBMkI7WUFDM0IsMEJBQTBCO1lBQzFCLHdCQUF3QjtZQUN4QixzQkFBc0I7WUFDdEIsY0FBYyxhQUlkLDBCQUEwQjtZQUMxQiwrQkFBK0I7WUFDL0IsdUJBQXVCO2dIQUdkLHVCQUF1QixhQVB2QixDQUFDLCtCQUErQixDQUFDLFlBVDFDLFlBQVk7WUFDWixhQUFhO1lBQ2IsV0FBVztZQUNYLDJCQUEyQjtZQUUzQix3QkFBd0I7WUFDeEIsc0JBQXNCO1lBQ3RCLGNBQWM7OzRGQVNMLHVCQUF1QjtrQkF2Qm5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQjt3QkFDMUIsK0JBQStCO3dCQUMvQix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIsd0JBQXdCO3dCQUN4QixzQkFBc0I7d0JBQ3RCLGNBQWM7cUJBQ2Y7b0JBQ0QsU0FBUyxFQUFFLENBQUMsK0JBQStCLENBQUM7b0JBQzVDLE9BQU8sRUFBRTt3QkFDUCwwQkFBMEI7d0JBQzFCLCtCQUErQjt3QkFDL0IsdUJBQXVCO3FCQUN4QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUsIFNreVJlc3BvbnNpdmVIb3N0RGlyZWN0aXZlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pY29uJztcbmltcG9ydCB7XG4gIFNreUV4cGFuc2lvbkluZGljYXRvck1vZHVsZSxcbiAgU2t5U3RhdHVzSW5kaWNhdG9yTW9kdWxlLFxufSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreVRhYnNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LXRhYnMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldENvbXBvbmVudCB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreVZlcnRpY2FsVGFic2V0Q29tcG9uZW50LFxuICAgIFNreVZlcnRpY2FsVGFic2V0R3JvdXBDb21wb25lbnQsXG4gICAgU2t5VmVydGljYWxUYWJDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lJZE1vZHVsZSxcbiAgICBTa3lFeHBhbnNpb25JbmRpY2F0b3JNb2R1bGUsXG4gICAgU2t5UmVzcG9uc2l2ZUhvc3REaXJlY3RpdmUsXG4gICAgU2t5U3RhdHVzSW5kaWNhdG9yTW9kdWxlLFxuICAgIFNreVRhYnNSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5VGhlbWVNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1NreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2VdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5VmVydGljYWxUYWJzZXRDb21wb25lbnQsXG4gICAgU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCxcbiAgICBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRNb2R1bGUge31cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class SkySectionedFormService {\n constructor() {\n /**\n * @internal\n */\n this.invalidChange = new BehaviorSubject(undefined);\n /**\n * @internal\n */\n this.requiredChange = new BehaviorSubject(undefined);\n }\n /**\n * Sets the current section's invalid state based on the `isInvalid` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n invalidFieldChanged(isInvalid) {\n this.invalidChange.next(isInvalid);\n }\n /**\n * Sets the current section's required state based on the `isRequired` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n requiredFieldChanged(isRequired) {\n this.requiredChange.next(isRequired);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbmVkLWZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy9zZWN0aW9uZWQtZm9ybS9zZWN0aW9uZWQtZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHdkMsTUFBTSxPQUFPLHVCQUF1QjtJQURwQztRQUVFOztXQUVHO1FBQ0ksa0JBQWEsR0FDbEIsSUFBSSxlQUFlLENBQXNCLFNBQVMsQ0FBQyxDQUFDO1FBQ3REOztXQUVHO1FBQ0ksbUJBQWMsR0FDbkIsSUFBSSxlQUFlLENBQXNCLFNBQVMsQ0FBQyxDQUFDO0tBaUJ2RDtJQWZDOzs7T0FHRztJQUNJLG1CQUFtQixDQUFDLFNBQThCO1FBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBQyxVQUErQjtRQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDOytHQTFCVSx1QkFBdUI7bUhBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lTZWN0aW9uZWRGb3JtU2VydmljZSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBpbnZhbGlkQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IHVuZGVmaW5lZD4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHJlcXVpcmVkQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IHVuZGVmaW5lZD4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY3VycmVudCBzZWN0aW9uJ3MgaW52YWxpZCBzdGF0ZSBiYXNlZCBvbiB0aGUgYGlzSW52YWxpZGAgcGFyYW1ldGVyLlxuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHdpdGhpbiBhIGBza3ktc2VjdGlvbmVkLWZvcm0tc2VjdGlvbmAgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBpbnZhbGlkRmllbGRDaGFuZ2VkKGlzSW52YWxpZDogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuaW52YWxpZENoYW5nZS5uZXh0KGlzSW52YWxpZCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY3VycmVudCBzZWN0aW9uJ3MgcmVxdWlyZWQgc3RhdGUgYmFzZWQgb24gdGhlIGBpc1JlcXVpcmVkYCBwYXJhbWV0ZXIuXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgd2l0aGluIGEgYHNreS1zZWN0aW9uZWQtZm9ybS1zZWN0aW9uYCBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIHJlcXVpcmVkRmllbGRDaGFuZ2VkKGlzUmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLnJlcXVpcmVkQ2hhbmdlLm5leHQoaXNSZXF1aXJlZCk7XG4gIH1cbn1cbiJdfQ==","import { Component, Input, ViewChild, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyVerticalTabComponent } from './../vertical-tabset/vertical-tab.component';\nimport { SkySectionedFormService } from './sectioned-form.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./sectioned-form.service\";\nimport * as i2 from \"../vertical-tabset/vertical-tabset.service\";\nimport * as i3 from \"../vertical-tabset/vertical-tab.component\";\nlet nextId = 0;\n/**\n * Creates an individual form to display as a section within the sectioned form.\n */\nexport class SkySectionedFormSectionComponent {\n #ngUnsubscribe;\n #sectionedFormService;\n #tabsetService;\n #changeRef;\n constructor(sectionedFormService, tabsetService, changeRef) {\n this.sectionTabId = `sky-sectioned-form-tab-${++nextId}`;\n this.sectionContentId = `sky-sectioned-form-section-${++nextId}`;\n /**\n * Whether the section is active when the form loads.\n * @default false\n */\n this.active = false;\n this.#ngUnsubscribe = new Subject();\n this.#sectionedFormService = sectionedFormService;\n this.#tabsetService = tabsetService;\n this.#changeRef = changeRef;\n }\n ngOnInit() {\n this.#changeRef.detectChanges();\n this.#tabsetService.switchingMobile.subscribe((mobile) => {\n this.#changeRef.detectChanges();\n });\n this.#sectionedFormService.requiredChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((required) => (this.fieldRequired = required));\n this.#sectionedFormService.invalidChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((invalid) => (this.fieldInvalid = invalid));\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormSectionComponent, deps: [{ token: i1.SkySectionedFormService }, { token: i2.SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkySectionedFormSectionComponent, isStandalone: false, selector: \"sky-sectioned-form-section\", inputs: { heading: \"heading\", itemCount: \"itemCount\", active: \"active\" }, providers: [SkySectionedFormService], viewQueries: [{ propertyName: \"tab\", first: true, predicate: SkyVerticalTabComponent, descendants: true }], ngImport: i0, template: \"<sky-vertical-tab\\n [active]=\\\"active\\\"\\n [errorIndicator]=\\\"fieldInvalid\\\"\\n [requiredIndicator]=\\\"fieldRequired\\\"\\n [showTabRightArrow]=\\\"true\\\"\\n [tabHeaderCount]=\\\"itemCount\\\"\\n [tabHeading]=\\\"heading\\\"\\n [tabId]=\\\"sectionTabId\\\"\\n>\\n <ng-content />\\n</sky-vertical-tab>\\n\", dependencies: [{ kind: \"component\", type: i3.SkyVerticalTabComponent, selector: \"sky-vertical-tab\", inputs: [\"active\", \"ariaControls\", \"ariaRole\", \"disabled\", \"errorIndicator\", \"requiredIndicator\", \"tabHeaderCount\", \"tabHeading\", \"showTabRightArrow\", \"tabId\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormSectionComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-sectioned-form-section', providers: [SkySectionedFormService], standalone: false, template: \"<sky-vertical-tab\\n [active]=\\\"active\\\"\\n [errorIndicator]=\\\"fieldInvalid\\\"\\n [requiredIndicator]=\\\"fieldRequired\\\"\\n [showTabRightArrow]=\\\"true\\\"\\n [tabHeaderCount]=\\\"itemCount\\\"\\n [tabHeading]=\\\"heading\\\"\\n [tabId]=\\\"sectionTabId\\\"\\n>\\n <ng-content />\\n</sky-vertical-tab>\\n\" }]\n }], ctorParameters: () => [{ type: i1.SkySectionedFormService }, { type: i2.SkyVerticalTabsetService }, { type: i0.ChangeDetectorRef }], propDecorators: { heading: [{\n type: Input\n }], itemCount: [{\n type: Input\n }], active: [{\n type: Input\n }], tab: [{\n type: ViewChild,\n args: [SkyVerticalTabComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbmVkLWZvcm0tc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvc2VjdGlvbmVkLWZvcm0vc2VjdGlvbmVkLWZvcm0tc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvc2VjdGlvbmVkLWZvcm0vc2VjdGlvbmVkLWZvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBRW5FLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOztHQUVHO0FBT0gsTUFBTSxPQUFPLGdDQUFnQztJQThCM0MsY0FBYyxDQUF1QjtJQUVyQyxxQkFBcUIsQ0FBMEI7SUFDL0MsY0FBYyxDQUEyQjtJQUN6QyxVQUFVLENBQW9CO0lBRTlCLFlBQ0Usb0JBQTZDLEVBQzdDLGFBQXVDLEVBQ3ZDLFNBQTRCO1FBdEN2QixpQkFBWSxHQUFHLDBCQUEwQixFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3BELHFCQUFnQixHQUFHLDhCQUE4QixFQUFFLE1BQU0sRUFBRSxDQUFDO1FBZW5FOzs7V0FHRztRQUVJLFdBQU0sR0FBd0IsS0FBSyxDQUFDO1FBUTNDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVduQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsb0JBQW9CLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRWhDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYzthQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQ1IsQ0FBQyxRQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLENBQ25FLENBQUM7UUFFSixJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYTthQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQ1IsQ0FBQyxPQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLENBQ2hFLENBQUM7SUFDTixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzsrR0FyRVUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0Msb0pBSGhDLENBQUMsdUJBQXVCLENBQUMsK0RBOEJ6Qix1QkFBdUIsZ0RDdkRwQyw4UkFXQTs7NEZEaUJhLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSw0QkFBNEIsYUFFM0IsQ0FBQyx1QkFBdUIsQ0FBQyxjQUN4QixLQUFLOztzQkFVaEIsS0FBSzs7c0JBTUwsS0FBSzs7c0JBT0wsS0FBSzs7c0JBTUwsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJDb21wb25lbnQgfSBmcm9tICcuLy4uL3ZlcnRpY2FsLXRhYnNldC92ZXJ0aWNhbC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVNlY3Rpb25lZEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9zZWN0aW9uZWQtZm9ybS5zZXJ2aWNlJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbmRpdmlkdWFsIGZvcm0gdG8gZGlzcGxheSBhcyBhIHNlY3Rpb24gd2l0aGluIHRoZSBzZWN0aW9uZWQgZm9ybS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXNlY3Rpb25lZC1mb3JtLXNlY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VjdGlvbmVkLWZvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1NreVNlY3Rpb25lZEZvcm1TZXJ2aWNlXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVNlY3Rpb25lZEZvcm1TZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgc2VjdGlvblRhYklkID0gYHNreS1zZWN0aW9uZWQtZm9ybS10YWItJHsrK25leHRJZH1gO1xuICBwdWJsaWMgc2VjdGlvbkNvbnRlbnRJZCA9IGBza3ktc2VjdGlvbmVkLWZvcm0tc2VjdGlvbi0keysrbmV4dElkfWA7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIGhlYWRlci5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHdpdGhpbiB0aGUgc2VjdGlvbi4gQSBjb3VudGVyIGFwcGVhcnMgYmVzaWRlIHRoZSBzZWN0aW9uIGhlYWRlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpdGVtQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2VjdGlvbiBpcyBhY3RpdmUgd2hlbiB0aGUgZm9ybSBsb2Fkcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY3RpdmU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgZmllbGRSZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGZpZWxkSW52YWxpZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KVxuICBwdWJsaWMgdGFiOiBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3NlY3Rpb25lZEZvcm1TZXJ2aWNlOiBTa3lTZWN0aW9uZWRGb3JtU2VydmljZTtcbiAgI3RhYnNldFNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0U2VydmljZTtcbiAgI2NoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2VjdGlvbmVkRm9ybVNlcnZpY2U6IFNreVNlY3Rpb25lZEZvcm1TZXJ2aWNlLFxuICAgIHRhYnNldFNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSxcbiAgICBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLiNzZWN0aW9uZWRGb3JtU2VydmljZSA9IHNlY3Rpb25lZEZvcm1TZXJ2aWNlO1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UgPSB0YWJzZXRTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZVJlZiA9IGNoYW5nZVJlZjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNjaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5zd2l0Y2hpbmdNb2JpbGUuc3Vic2NyaWJlKChtb2JpbGU6IGJvb2xlYW4pID0+IHtcbiAgICAgIHRoaXMuI2NoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNzZWN0aW9uZWRGb3JtU2VydmljZS5yZXF1aXJlZENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkKSA9PiAodGhpcy5maWVsZFJlcXVpcmVkID0gcmVxdWlyZWQpLFxuICAgICAgKTtcblxuICAgIHRoaXMuI3NlY3Rpb25lZEZvcm1TZXJ2aWNlLmludmFsaWRDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChpbnZhbGlkOiBib29sZWFuIHwgdW5kZWZpbmVkKSA9PiAodGhpcy5maWVsZEludmFsaWQgPSBpbnZhbGlkKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8c2t5LXZlcnRpY2FsLXRhYlxuICBbYWN0aXZlXT1cImFjdGl2ZVwiXG4gIFtlcnJvckluZGljYXRvcl09XCJmaWVsZEludmFsaWRcIlxuICBbcmVxdWlyZWRJbmRpY2F0b3JdPVwiZmllbGRSZXF1aXJlZFwiXG4gIFtzaG93VGFiUmlnaHRBcnJvd109XCJ0cnVlXCJcbiAgW3RhYkhlYWRlckNvdW50XT1cIml0ZW1Db3VudFwiXG4gIFt0YWJIZWFkaW5nXT1cImhlYWRpbmdcIlxuICBbdGFiSWRdPVwic2VjdGlvblRhYklkXCJcbj5cbiAgPG5nLWNvbnRlbnQgLz5cbjwvc2t5LXZlcnRpY2FsLXRhYj5cbiJdfQ==","export var SkySectionedFormMessageType;\n(function (SkySectionedFormMessageType) {\n SkySectionedFormMessageType[SkySectionedFormMessageType[\"ShowTabs\"] = 1] = \"ShowTabs\";\n})(SkySectionedFormMessageType || (SkySectionedFormMessageType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbmVkLWZvcm0tbWVzc2FnZS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYnMvc3JjL2xpYi9tb2R1bGVzL3NlY3Rpb25lZC1mb3JtL3R5cGVzL3NlY3Rpb25lZC1mb3JtLW1lc3NhZ2UtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSwyQkFFWDtBQUZELFdBQVksMkJBQTJCO0lBQ3JDLHFGQUFZLENBQUE7QUFDZCxDQUFDLEVBRlcsMkJBQTJCLEtBQTNCLDJCQUEyQixRQUV0QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNreVNlY3Rpb25lZEZvcm1NZXNzYWdlVHlwZSB7XG4gIFNob3dUYWJzID0gMSxcbn1cbiJdfQ==","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { SkyTabIdService } from '../shared/tab-id.service';\nimport { HIDDEN_STATE, SkyVerticalTabsetService, VISIBLE_STATE, } from './../vertical-tabset/vertical-tabset.service';\nimport { SkySectionedFormMessageType } from './types/sectioned-form-message-type';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./../vertical-tabset/vertical-tabset.service\";\nimport * as i2 from \"../shared/tab-id.service\";\nimport * as i3 from \"@skyux/core\";\nimport * as i4 from \"@angular/common\";\n/**\n * Creates a container for the sectioned forms.\n */\nexport class SkySectionedFormComponent {\n set messageStream(value) {\n this.#_messageStream = value || new Subject();\n this.#initMessageStream();\n }\n get messageStream() {\n return this.#_messageStream;\n }\n #ngUnsubscribe;\n #messageStreamSub;\n #changeRef;\n #tabIdSvc;\n #logger;\n #_messageStream;\n constructor(tabService, changeRef, tabIdSvc, logger) {\n this.tabService = tabService;\n /**\n * Whether the sectioned form loads section content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n this.maintainSectionContent = false;\n /**\n * Fires when the active tab changes and emits the index of the active\n * section. The index is based on the section's position when the form loads.\n */\n this.indexChanged = new EventEmitter();\n /**\n * Fires when the sectioned form tabs are shown or hidden.\n */\n this.tabsVisibleChanged = new EventEmitter();\n this.ariaRole = 'tablist';\n this.#ngUnsubscribe = new Subject();\n this.#_messageStream = new Subject();\n this.#changeRef = changeRef;\n this.#tabIdSvc = tabIdSvc;\n this.#logger = logger;\n this.#initMessageStream();\n this.#tabIdSvc.ids.pipe(takeUntil(this.#ngUnsubscribe)).subscribe((ids) => {\n this.ariaOwns = ids.join(' ') || undefined;\n this.#changeRef.markForCheck();\n });\n }\n ngOnInit() {\n this.tabService.maintainTabContent = this.maintainSectionContent;\n this.tabService.indexChanged\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((index) => {\n this.indexChanged.emit(index);\n this.#changeRef.markForCheck();\n });\n this.tabService.switchingMobile\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((mobile) => {\n if (!mobile) {\n this.ariaRole = 'tablist';\n }\n else {\n this.ariaRole = undefined;\n }\n this.#changeRef.markForCheck();\n });\n this.tabService.hidingTabs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.tabsVisibleChanged.emit(false);\n });\n this.tabService.showingTabs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.tabsVisibleChanged.emit(true);\n });\n if (this.tabService.isMobile()) {\n this.ariaRole = undefined;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.#changeRef.markForCheck();\n }\n }\n ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * @deprecated Use the `tabsVisibleChanged` output to listen for tab visibility changes.\n */\n /* istanbul ignore next */\n tabsVisible() {\n this.#logger.deprecated('SectionedFormComponent.tabsVisible()', {\n deprecationMajorVersion: 8,\n moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/sectioned-form',\n replacementRecommendation: 'Use the `tabsVisibleChanged` output to listen for tab visibility changes.',\n });\n this.#changeRef.markForCheck();\n return this.tabService.tabsVisible();\n }\n /**\n * @deprecated Use the `messageStream` input and push a `ShowTabs` message to the message stream instead.\n */\n showTabs() {\n this.#logger.deprecated('SectionedFormComponent.showTabs()', {\n deprecationMajorVersion: 8,\n moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/sectioned-form',\n replacementRecommendation: 'Use the `messageStream` input and push a `ShowTabs` message to the message stream instead.',\n });\n this.#showTabs();\n }\n #showTabs() {\n this.tabService.showTabs();\n this.#changeRef.markForCheck();\n }\n #initMessageStream() {\n if (this.#messageStreamSub) {\n this.#messageStreamSub.unsubscribe();\n }\n this.#messageStreamSub = this.messageStream\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((message) => {\n switch (message.type) {\n case SkySectionedFormMessageType.ShowTabs:\n this.#showTabs();\n break;\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormComponent, deps: [{ token: i1.SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyTabIdService }, { token: i3.SkyLogService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkySectionedFormComponent, isStandalone: false, selector: \"sky-sectioned-form\", inputs: { maintainSectionContent: \"maintainSectionContent\", messageStream: \"messageStream\" }, outputs: { indexChanged: \"indexChanged\", tabsVisibleChanged: \"tabsVisibleChanged\" }, providers: [SkyTabIdService, SkyVerticalTabsetService], viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"skySectionSideContent\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"sky-sectioned-form\\\" (window:resize)=\\\"tabService.updateContent()\\\">\\n <!--\\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\\n However, the markup for each sky-vertical-tab component includes both the tab button\\n and its panel, making the panel element a child of its tablist. Moreover, our\\n sky-vertical-tab components can be grouped within collapsible containers, which also\\n violates accessibility rules because only tab buttons can be children of a tablist.\\n To address this, we create an empty tablist element with an aria-owns attribute,\\n pointing to each tab element individually. That way, we don't have to worry about the\\n structure for each sky-vertical-tab component in order to satisfy accessibility\\n guidelines.\\n -->\\n <span\\n [attr.aria-orientation]=\\\"ariaRole ? 'vertical' : undefined\\\"\\n [attr.aria-owns]=\\\"ariaRole ? ariaOwns : undefined\\\"\\n [attr.role]=\\\"ariaRole\\\"\\n ></span>\\n @if (maintainSectionContent || tabService.tabsVisible()) {\\n <div\\n class=\\\"sky-sectioned-form-tabs\\\"\\n [ngClass]=\\\"{\\n 'sky-sectioned-form-tabs-hidden': !tabService.tabsVisible(),\\n 'sky-sectioned-form-tabs-only': !tabService.contentVisible()\\n }\\\"\\n [@tabEnter]=\\\"tabService.animationTabsVisibleState\\\"\\n >\\n <ng-content />\\n </div>\\n }\\n @if (maintainSectionContent || tabService.contentVisible()) {\\n <div\\n #skySectionSideContent\\n class=\\\"sky-sectioned-form-content\\\"\\n [ngClass]=\\\"{\\n 'sky-sectioned-form-content-hidden': !tabService.contentVisible()\\n }\\\"\\n [@contentEnter]=\\\"tabService.animationContentVisibleState\\\"\\n ></div>\\n }\\n</div>\\n\", styles: [\".sky-sectioned-form:not(.sky-theme-modern *){--sky-override-sectioned-form-content-border-left: 1px solid var(--sky-border-color-neutral-medium);--sky-override-sectioned-form-content-padding: var(--sky-padding-even-md) var(--sky-padding-even-xl);--sky-override-sectioned-form-modal-margin-adjustment: -15px;--sky-override-sectioned-form-tabs-only-padding: var(--sky-padding-even-md);--sky-override-sectioned-form-tabs-padding: 0}:host .sky-sectioned-form{display:block;max-height:none}:host .sky-sectioned-form-content{flex-basis:auto;overflow-y:visible;padding:var(--sky-override-sectioned-form-content-padding, var(--sky-comp-modal-content-space-inset-top) var(--sky-comp-modal-content-space-inset-right) var(--sky-comp-modal-content-space-inset-bottom) var(--sky-comp-modal-content-space-inset-left))}:host .sky-sectioned-form-tabs{flex-basis:auto;overflow-y:visible;padding:var(--sky-override-sectioned-form-tabs-padding, var(--sky-comp-tab-vertical-group-space-inset-top) var(--sky-comp-tab-vertical-group-space-inset-right) var(--sky-comp-tab-vertical-group-space-inset-bottom) var(--sky-comp-tab-vertical-group-space-inset-left))}:host .sky-sectioned-form-tabs+.sky-sectioned-form-content{border-left:var(--sky-override-sectioned-form-content-border-left, var(--sky-border-width-divider) solid var(--sky-color-border-divider))}:host .sky-sectioned-form-tabs-only{padding:var(--sky-override-sectioned-form-tabs-only-padding, var(--sky-comp-modal-content-space-inset-top) var(--sky-comp-modal-content-space-inset-right) var(--sky-comp-modal-content-space-inset-bottom) var(--sky-comp-modal-content-space-inset-left))}:host-context(.sky-responsive-container-xs) .sky-sectioned-form,:host-context(.sky-responsive-container-sm) .sky-sectioned-form,:host-context(.sky-responsive-container-md) .sky-sectioned-form,:host-context(.sky-responsive-container-lg) .sky-sectioned-form{display:block;max-height:none}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-content,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{flex-basis:auto;overflow-y:visible;padding:var(--sky-override-sectioned-form-content-padding, var(--sky-comp-modal-content-space-inset-top) var(--sky-comp-modal-content-space-inset-right) var(--sky-comp-modal-content-space-inset-bottom) var(--sky-comp-modal-content-space-inset-left))}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs{flex-basis:auto;overflow-y:visible;padding:var(--sky-override-sectioned-form-tabs-padding, var(--sky-comp-tab-vertical-group-space-inset-top) var(--sky-comp-tab-vertical-group-space-inset-right) var(--sky-comp-tab-vertical-group-space-inset-bottom) var(--sky-comp-tab-vertical-group-space-inset-left))}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-tabs+.sky-sectioned-form-content,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs+.sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs+.sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs+.sky-sectioned-form-content{border-left:var(--sky-override-sectioned-form-content-border-left, var(--sky-border-width-divider) solid var(--sky-color-border-divider))}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-tabs-only,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs-only,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs-only,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs-only{padding:var(--sky-override-sectioned-form-tabs-only-padding, var(--sky-comp-modal-content-space-inset-top) var(--sky-comp-modal-content-space-inset-right) var(--sky-comp-modal-content-space-inset-bottom) var(--sky-comp-modal-content-space-inset-left))}@media (min-width: 768px){:host .sky-sectioned-form{display:flex;max-height:100%}:host .sky-sectioned-form-content{flex-basis:70%;overflow-y:auto}:host .sky-sectioned-form-tabs{flex-basis:30%;overflow-y:auto}}:host-context(.sky-responsive-container-sm) .sky-sectioned-form,:host-context(.sky-responsive-container-md) .sky-sectioned-form,:host-context(.sky-responsive-container-lg) .sky-sectioned-form{display:flex;max-height:100%}:host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{flex-basis:70%;overflow-y:auto}:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs{flex-basis:30%;overflow-y:auto}:host-context(sky-modal) .sky-sectioned-form{min-height:460px}:host-context(sky-modal-content)>:host .sky-sectioned-form,:host-context(sky-modal-content)>form :host .sky-sectioned-form{margin:var(--sky-override-sectioned-form-modal-margin-adjustment, calc(var(--sky-comp-modal-content-space-inset-top) * -1) calc(var(--sky-comp-modal-content-space-inset-right) * -1) calc(var(--sky-comp-modal-content-space-inset-bottom) * -1) calc(var(--sky-comp-modal-content-space-inset-left) * -1))}.sky-sectioned-form-tabs-hidden,.sky-sectioned-form-content-hidden{display:none}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], animations: [\n trigger('tabEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-sectioned-form', providers: [SkyTabIdService, SkyVerticalTabsetService], changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('tabEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ], standalone: false, template: \"<div class=\\\"sky-sectioned-form\\\" (window:resize)=\\\"tabService.updateContent()\\\">\\n <!--\\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\\n However, the markup for each sky-vertical-tab component includes both the tab button\\n and its panel, making the panel element a child of its tablist. Moreover, our\\n sky-vertical-tab components can be grouped within collapsible containers, which also\\n violates accessibility rules because only tab buttons can be children of a tablist.\\n To address this, we create an empty tablist element with an aria-owns attribute,\\n pointing to each tab element individually. That way, we don't have to worry about the\\n structure for each sky-vertical-tab component in order to satisfy accessibility\\n guidelines.\\n -->\\n <span\\n [attr.aria-orientation]=\\\"ariaRole ? 'vertical' : undefined\\\"\\n [attr.aria-owns]=\\\"ariaRole ? ariaOwns : undefined\\\"\\n [attr.role]=\\\"ariaRole\\\"\\n ></span>\\n @if (maintainSectionContent || tabService.tabsVisible()) {\\n <div\\n class=\\\"sky-sectioned-form-tabs\\\"\\n [ngClass]=\\\"{\\n 'sky-sectioned-form-tabs-hidden': !tabService.tabsVisible(),\\n 'sky-sectioned-form-tabs-only': !tabService.contentVisible()\\n }\\\"\\n [@tabEnter]=\\\"tabService.animationTabsVisibleState\\\"\\n >\\n <ng-content />\\n </div>\\n }\\n @if (maintainSectionContent || tabService.contentVisible()) {\\n <div\\n #skySectionSideContent\\n class=\\\"sky-sectioned-form-content\\\"\\n [ngClass]=\\\"{\\n 'sky-sectioned-form-content-hidden': !tabService.contentVisible()\\n }\\\"\\n [@contentEnter]=\\\"tabService.animationContentVisibleState\\\"\\n ></div>\\n }\\n</div>\\n\", styles: [\".sky-sectioned-form:not(.sky-theme-modern *){--sky-override-sectioned-form-content-border-left: 1px solid var(--sky-border-color-neutral-medium);--sky-override-sectioned-form-content-padding: var(--sky-padding-even-md) var(--sky-padding-even-xl);--sky-override-sectioned-form-modal-margin-adjustment: -15px;--sky-override-sectioned-form-tabs-only-padding: var(--sky-padding-even-md);--sky-override-sectioned-form-tabs-padding: 0}:host .sky-sectioned-form{display:block;max-height:none}:host .sky-sectioned-form-content{flex-basis:auto;overflow-y:visible;padding:var(--sky-override-sectioned-form-content-padding, var(--sky-comp-modal-content-space-inset-top) var(--sky-comp-modal-content-space-inset-right) var(--sky-comp-modal-content-space-inset-bottom) var(--sky-comp-modal-content-space-inset-left))}:host .sky-sectioned-form-tabs{flex-basis:auto;overflow-y:visible;padding:var(--sky-override-sectioned-form-tabs-padding, var(--sky-comp-tab-vertical-group-space-inset-top) var(--sky-comp-tab-vertical-group-space-inset-right) var(--sky-comp-tab-vertical-group-space-inset-bottom) var(--sky-comp-tab-vertical-group-space-inset-left))}:host .sky-sectioned-form-tabs+.sky-sectioned-form-content{border-left:var(--sky-override-sectioned-form-content-border-left, var(--sky-border-width-divider) solid var(--sky-color-border-divider))}:host .sky-sectioned-form-tabs-only{padding:var(--sky-override-sectioned-form-tabs-only-padding, var(--sky-comp-modal-content-space-inset-top) var(--sky-comp-modal-content-space-inset-right) var(--sky-comp-modal-content-space-inset-bottom) var(--sky-comp-modal-content-space-inset-left))}:host-context(.sky-responsive-container-xs) .sky-sectioned-form,:host-context(.sky-responsive-container-sm) .sky-sectioned-form,:host-context(.sky-responsive-container-md) .sky-sectioned-form,:host-context(.sky-responsive-container-lg) .sky-sectioned-form{display:block;max-height:none}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-content,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{flex-basis:auto;overflow-y:visible;padding:var(--sky-override-sectioned-form-content-padding, var(--sky-comp-modal-content-space-inset-top) var(--sky-comp-modal-content-space-inset-right) var(--sky-comp-modal-content-space-inset-bottom) var(--sky-comp-modal-content-space-inset-left))}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs{flex-basis:auto;overflow-y:visible;padding:var(--sky-override-sectioned-form-tabs-padding, var(--sky-comp-tab-vertical-group-space-inset-top) var(--sky-comp-tab-vertical-group-space-inset-right) var(--sky-comp-tab-vertical-group-space-inset-bottom) var(--sky-comp-tab-vertical-group-space-inset-left))}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-tabs+.sky-sectioned-form-content,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs+.sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs+.sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs+.sky-sectioned-form-content{border-left:var(--sky-override-sectioned-form-content-border-left, var(--sky-border-width-divider) solid var(--sky-color-border-divider))}:host-context(.sky-responsive-container-xs) .sky-sectioned-form-tabs-only,:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs-only,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs-only,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs-only{padding:var(--sky-override-sectioned-form-tabs-only-padding, var(--sky-comp-modal-content-space-inset-top) var(--sky-comp-modal-content-space-inset-right) var(--sky-comp-modal-content-space-inset-bottom) var(--sky-comp-modal-content-space-inset-left))}@media (min-width: 768px){:host .sky-sectioned-form{display:flex;max-height:100%}:host .sky-sectioned-form-content{flex-basis:70%;overflow-y:auto}:host .sky-sectioned-form-tabs{flex-basis:30%;overflow-y:auto}}:host-context(.sky-responsive-container-sm) .sky-sectioned-form,:host-context(.sky-responsive-container-md) .sky-sectioned-form,:host-context(.sky-responsive-container-lg) .sky-sectioned-form{display:flex;max-height:100%}:host-context(.sky-responsive-container-sm) .sky-sectioned-form-content,:host-context(.sky-responsive-container-md) .sky-sectioned-form-content,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-content{flex-basis:70%;overflow-y:auto}:host-context(.sky-responsive-container-sm) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-md) .sky-sectioned-form-tabs,:host-context(.sky-responsive-container-lg) .sky-sectioned-form-tabs{flex-basis:30%;overflow-y:auto}:host-context(sky-modal) .sky-sectioned-form{min-height:460px}:host-context(sky-modal-content)>:host .sky-sectioned-form,:host-context(sky-modal-content)>form :host .sky-sectioned-form{margin:var(--sky-override-sectioned-form-modal-margin-adjustment, calc(var(--sky-comp-modal-content-space-inset-top) * -1) calc(var(--sky-comp-modal-content-space-inset-right) * -1) calc(var(--sky-comp-modal-content-space-inset-bottom) * -1) calc(var(--sky-comp-modal-content-space-inset-left) * -1))}.sky-sectioned-form-tabs-hidden,.sky-sectioned-form-content-hidden{display:none}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyVerticalTabsetService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyTabIdService }, { type: i3.SkyLogService }], propDecorators: { maintainSectionContent: [{\n type: Input\n }], messageStream: [{\n type: Input\n }], indexChanged: [{\n type: Output\n }], tabsVisibleChanged: [{\n type: Output\n }], content: [{\n type: ViewChild,\n args: ['skySectionSideContent']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbmVkLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYnMvc3JjL2xpYi9tb2R1bGVzL3NlY3Rpb25lZC1mb3JtL3NlY3Rpb25lZC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy9zZWN0aW9uZWQtZm9ybS9zZWN0aW9uZWQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNMLFlBQVksRUFDWix3QkFBd0IsRUFDeEIsYUFBYSxHQUNkLE1BQU0sOENBQThDLENBQUM7QUFFdEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7OztBQUVsRjs7R0FFRztBQXVCSCxNQUFNLE9BQU8seUJBQXlCO0lBV3BDLElBQ1csYUFBYSxDQUN0QixLQUFtRDtRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sRUFBMkIsQ0FBQztRQUN2RSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFD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RSxpQkFBaUIsRUFBRSxDQUFDO29CQUN2QyxPQUFPLENBQUMsZUFBZSxDQUFDO2lCQUN6QixDQUFDO2FBQ0gsQ0FBQztTQUNIOzs0RkFHVSx5QkFBeUI7a0JBdEJyQyxTQUFTOytCQUNFLG9CQUFvQixhQUduQixDQUFDLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxtQkFDckMsdUJBQXVCLENBQUMsTUFBTSxjQUNuQzt3QkFDVixPQUFPLENBQUMsVUFBVSxFQUFFOzRCQUNsQixVQUFVLENBQUMsR0FBRyxZQUFZLE9BQU8sYUFBYSxFQUFFLEVBQUU7Z0NBQ2hELEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO2dDQUN4QyxPQUFPLENBQUMsZUFBZSxDQUFDOzZCQUN6QixDQUFDO3lCQUNILENBQUM7d0JBQ0YsT0FBTyxDQUFDLGNBQWMsRUFBRTs0QkFDdEIsVUFBVSxDQUFDLEdBQUcsWUFBWSxPQUFPLGFBQWEsRUFBRSxFQUFFO2dDQUNoRCxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztnQ0FDdkMsT0FBTyxDQUFDLGVBQWUsQ0FBQzs2QkFDekIsQ0FBQzt5QkFDSCxDQUFDO3FCQUNILGNBQ1csS0FBSzs7c0JBVWhCLEtBQUs7O3NCQUdMLEtBQUs7O3NCQWdCTCxNQUFNOztzQkFNTixNQUFNOztzQkFPTixTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VGFiSWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3RhYi1pZC5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgSElEREVOX1NUQVRFLFxuICBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UsXG4gIFZJU0lCTEVfU1RBVEUsXG59IGZyb20gJy4vLi4vdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVNlY3Rpb25lZEZvcm1NZXNzYWdlIH0gZnJvbSAnLi90eXBlcy9zZWN0aW9uZWQtZm9ybS1tZXNzYWdlJztcbmltcG9ydCB7IFNreVNlY3Rpb25lZEZvcm1NZXNzYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMvc2VjdGlvbmVkLWZvcm0tbWVzc2FnZS10eXBlJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29udGFpbmVyIGZvciB0aGUgc2VjdGlvbmVkIGZvcm1zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktc2VjdGlvbmVkLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VjdGlvbmVkLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWN0aW9uZWQtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lUYWJJZFNlcnZpY2UsIFNreVZlcnRpY2FsVGFic2V0U2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcigndGFiRW50ZXInLCBbXG4gICAgICB0cmFuc2l0aW9uKGAke0hJRERFTl9TVEFURX0gPT4gJHtWSVNJQkxFX1NUQVRFfWAsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoLTEwMCUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMgZWFzZS1pbicpLFxuICAgICAgXSksXG4gICAgXSksXG4gICAgdHJpZ2dlcignY29udGVudEVudGVyJywgW1xuICAgICAgdHJhbnNpdGlvbihgJHtISURERU5fU1RBVEV9ID0+ICR7VklTSUJMRV9TVEFURX1gLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDEwMCUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMgZWFzZS1pbicpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTZWN0aW9uZWRGb3JtQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNlY3Rpb25lZCBmb3JtIGxvYWRzIHNlY3Rpb24gY29udGVudCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBpdFxuICAgKiBkaXNwbGF5cyBjb250ZW50IHdpdGhvdXQgbW92aW5nIGFyb3VuZCBlbGVtZW50cyBpbiB0aGUgY29udGVudCBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWFpbnRhaW5TZWN0aW9uQ29udGVudDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVzc2FnZVN0cmVhbShcbiAgICB2YWx1ZTogU3ViamVjdDxTa3lTZWN0aW9uZWRGb3JtTWVzc2FnZT4gfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19tZXNzYWdlU3RyZWFtID0gdmFsdWUgfHwgbmV3IFN1YmplY3Q8U2t5U2VjdGlvbmVkRm9ybU1lc3NhZ2U+KCk7XG4gICAgdGhpcy4jaW5pdE1lc3NhZ2VTdHJlYW0oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVzc2FnZVN0cmVhbSgpOiBTdWJqZWN0PFNreVNlY3Rpb25lZEZvcm1NZXNzYWdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI19tZXNzYWdlU3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGFjdGl2ZSB0YWIgY2hhbmdlcyBhbmQgZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBhY3RpdmVcbiAgICogc2VjdGlvbi4gVGhlIGluZGV4IGlzIGJhc2VkIG9uIHRoZSBzZWN0aW9uJ3MgcG9zaXRpb24gd2hlbiB0aGUgZm9ybSBsb2Fkcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaW5kZXhDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHNlY3Rpb25lZCBmb3JtIHRhYnMgYXJlIHNob3duIG9yIGhpZGRlbi5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdGFic1Zpc2libGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBhcmlhT3duczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhcmlhUm9sZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ3RhYmxpc3QnO1xuXG4gIEBWaWV3Q2hpbGQoJ3NreVNlY3Rpb25TaWRlQ29udGVudCcpXG4gIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjbWVzc2FnZVN0cmVhbVN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICAjY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3RhYklkU3ZjOiBTa3lUYWJJZFNlcnZpY2U7XG4gICNsb2dnZXI6IFNreUxvZ1NlcnZpY2U7XG5cbiAgI19tZXNzYWdlU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5U2VjdGlvbmVkRm9ybU1lc3NhZ2U+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYlNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSxcbiAgICBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHRhYklkU3ZjOiBTa3lUYWJJZFNlcnZpY2UsXG4gICAgbG9nZ2VyOiBTa3lMb2dTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VSZWYgPSBjaGFuZ2VSZWY7XG4gICAgdGhpcy4jdGFiSWRTdmMgPSB0YWJJZFN2YztcbiAgICB0aGlzLiNsb2dnZXIgPSBsb2dnZXI7XG5cbiAgICB0aGlzLiNpbml0TWVzc2FnZVN0cmVhbSgpO1xuXG4gICAgdGhpcy4jdGFiSWRTdmMuaWRzLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGlkcykgPT4ge1xuICAgICAgdGhpcy5hcmlhT3ducyA9IGlkcy5qb2luKCcgJykgfHwgdW5kZWZpbmVkO1xuICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFiU2VydmljZS5tYWludGFpblRhYkNvbnRlbnQgPSB0aGlzLm1haW50YWluU2VjdGlvbkNvbnRlbnQ7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2UuaW5kZXhDaGFuZ2VkXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4ge1xuICAgICAgICB0aGlzLmluZGV4Q2hhbmdlZC5lbWl0KGluZGV4KTtcbiAgICAgICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2Uuc3dpdGNoaW5nTW9iaWxlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtb2JpbGU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFtb2JpbGUpIHtcbiAgICAgICAgICB0aGlzLmFyaWFSb2xlID0gJ3RhYmxpc3QnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXJpYVJvbGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMudGFiU2VydmljZS5oaWRpbmdUYWJzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJzVmlzaWJsZUNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMudGFiU2VydmljZS5zaG93aW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudGFic1Zpc2libGVDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnRhYlNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgdGhpcy5hcmlhUm9sZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudGFiU2VydmljZS5hbmltYXRpb25Db250ZW50VmlzaWJsZVN0YXRlID0gVklTSUJMRV9TVEFURTtcbiAgICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMudGFiU2VydmljZS5jb250ZW50ID0gdGhpcy5jb250ZW50O1xuICAgIHRoaXMudGFiU2VydmljZS51cGRhdGVDb250ZW50KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYHRhYnNWaXNpYmxlQ2hhbmdlZGAgb3V0cHV0IHRvIGxpc3RlbiBmb3IgdGFiIHZpc2liaWxpdHkgY2hhbmdlcy5cbiAgICovXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyB0YWJzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICB0aGlzLiNsb2dnZXIuZGVwcmVjYXRlZCgnU2VjdGlvbmVkRm9ybUNvbXBvbmVudC50YWJzVmlzaWJsZSgpJywge1xuICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDgsXG4gICAgICBtb3JlSW5mb1VybDpcbiAgICAgICAgJ2h0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9zZWN0aW9uZWQtZm9ybScsXG4gICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOlxuICAgICAgICAnVXNlIHRoZSBgdGFic1Zpc2libGVDaGFuZ2VkYCBvdXRwdXQgdG8gbGlzdGVuIGZvciB0YWIgdmlzaWJpbGl0eSBjaGFuZ2VzLicsXG4gICAgfSk7XG5cbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXMudGFiU2VydmljZS50YWJzVmlzaWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYG1lc3NhZ2VTdHJlYW1gIGlucHV0IGFuZCBwdXNoIGEgYFNob3dUYWJzYCBtZXNzYWdlIHRvIHRoZSBtZXNzYWdlIHN0cmVhbSBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIHNob3dUYWJzKCk6IHZvaWQge1xuICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTZWN0aW9uZWRGb3JtQ29tcG9uZW50LnNob3dUYWJzKCknLCB7XG4gICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOCxcbiAgICAgIG1vcmVJbmZvVXJsOlxuICAgICAgICAnaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3NlY3Rpb25lZC1mb3JtJyxcbiAgICAgIHJlcGxhY2VtZW50UmVjb21tZW5kYXRpb246XG4gICAgICAgICdVc2UgdGhlIGBtZXNzYWdlU3RyZWFtYCBpbnB1dCBhbmQgcHVzaCBhIGBTaG93VGFic2AgbWVzc2FnZSB0byB0aGUgbWVzc2FnZSBzdHJlYW0gaW5zdGVhZC4nLFxuICAgIH0pO1xuXG4gICAgdGhpcy4jc2hvd1RhYnMoKTtcbiAgfVxuXG4gICNzaG93VGFicygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYlNlcnZpY2Uuc2hvd1RhYnMoKTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjaW5pdE1lc3NhZ2VTdHJlYW0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIpIHtcbiAgICAgIHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNtZXNzYWdlU3RyZWFtU3ViID0gdGhpcy5tZXNzYWdlU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBTa3lTZWN0aW9uZWRGb3JtTWVzc2FnZVR5cGUuU2hvd1RhYnM6XG4gICAgICAgICAgICB0aGlzLiNzaG93VGFicygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LXNlY3Rpb25lZC1mb3JtXCIgKHdpbmRvdzpyZXNpemUpPVwidGFiU2VydmljZS51cGRhdGVDb250ZW50KClcIj5cbiAgPCEtLVxuICAgIEFSSUEgcnVsZXMgZG8gbm90IGFsbG93IHRhYnBhbmVsIGVsZW1lbnRzIHRvIGJlIGNoaWxkcmVuIG9mIGEgdGFibGlzdCBlbGVtZW50LlxuICAgIEhvd2V2ZXIsIHRoZSBtYXJrdXAgZm9yIGVhY2ggc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnQgaW5jbHVkZXMgYm90aCB0aGUgdGFiIGJ1dHRvblxuICAgIGFuZCBpdHMgcGFuZWwsIG1ha2luZyB0aGUgcGFuZWwgZWxlbWVudCBhIGNoaWxkIG9mIGl0cyB0YWJsaXN0LiBNb3Jlb3Zlciwgb3VyXG4gICAgc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnRzIGNhbiBiZSBncm91cGVkIHdpdGhpbiBjb2xsYXBzaWJsZSBjb250YWluZXJzLCB3aGljaCBhbHNvXG4gICAgdmlvbGF0ZXMgYWNjZXNzaWJpbGl0eSBydWxlcyBiZWNhdXNlIG9ubHkgdGFiIGJ1dHRvbnMgY2FuIGJlIGNoaWxkcmVuIG9mIGEgdGFibGlzdC5cbiAgICBUbyBhZGRyZXNzIHRoaXMsIHdlIGNyZWF0ZSBhbiBlbXB0eSB0YWJsaXN0IGVsZW1lbnQgd2l0aCBhbiBhcmlhLW93bnMgYXR0cmlidXRlLFxuICAgIHBvaW50aW5nIHRvIGVhY2ggdGFiIGVsZW1lbnQgaW5kaXZpZHVhbGx5LiBUaGF0IHdheSwgd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGVcbiAgICBzdHJ1Y3R1cmUgZm9yIGVhY2ggc2t5LXZlcnRpY2FsLXRhYiBjb21wb25lbnQgaW4gb3JkZXIgdG8gc2F0aXNmeSBhY2Nlc3NpYmlsaXR5XG4gICAgZ3VpZGVsaW5lcy5cbiAgLS0+XG4gIDxzcGFuXG4gICAgW2F0dHIuYXJpYS1vcmllbnRhdGlvbl09XCJhcmlhUm9sZSA/ICd2ZXJ0aWNhbCcgOiB1bmRlZmluZWRcIlxuICAgIFthdHRyLmFyaWEtb3duc109XCJhcmlhUm9sZSA/IGFyaWFPd25zIDogdW5kZWZpbmVkXCJcbiAgICBbYXR0ci5yb2xlXT1cImFyaWFSb2xlXCJcbiAgPjwvc3Bhbj5cbiAgQGlmIChtYWludGFpblNlY3Rpb25Db250ZW50IHx8IHRhYlNlcnZpY2UudGFic1Zpc2libGUoKSkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LXNlY3Rpb25lZC1mb3JtLXRhYnNcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LXNlY3Rpb25lZC1mb3JtLXRhYnMtaGlkZGVuJzogIXRhYlNlcnZpY2UudGFic1Zpc2libGUoKSxcbiAgICAgICAgJ3NreS1zZWN0aW9uZWQtZm9ybS10YWJzLW9ubHknOiAhdGFiU2VydmljZS5jb250ZW50VmlzaWJsZSgpXG4gICAgICB9XCJcbiAgICAgIFtAdGFiRW50ZXJdPVwidGFiU2VydmljZS5hbmltYXRpb25UYWJzVmlzaWJsZVN0YXRlXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCAvPlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAobWFpbnRhaW5TZWN0aW9uQ29udGVudCB8fCB0YWJTZXJ2aWNlLmNvbnRlbnRWaXNpYmxlKCkpIHtcbiAgICA8ZGl2XG4gICAgICAjc2t5U2VjdGlvblNpZGVDb250ZW50XG4gICAgICBjbGFzcz1cInNreS1zZWN0aW9uZWQtZm9ybS1jb250ZW50XCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1zZWN0aW9uZWQtZm9ybS1jb250ZW50LWhpZGRlbic6ICF0YWJTZXJ2aWNlLmNvbnRlbnRWaXNpYmxlKClcbiAgICAgIH1cIlxuICAgICAgW0Bjb250ZW50RW50ZXJdPVwidGFiU2VydmljZS5hbmltYXRpb25Db250ZW50VmlzaWJsZVN0YXRlXCJcbiAgICA+PC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';\nimport { SkySectionedFormSectionComponent } from './sectioned-form-section.component';\nimport { SkySectionedFormComponent } from './sectioned-form.component';\nimport * as i0 from \"@angular/core\";\nexport class SkySectionedFormModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormModule, declarations: [SkySectionedFormComponent, SkySectionedFormSectionComponent], imports: [CommonModule,\n SkyCheckboxModule,\n SkyThemeModule,\n SkyVerticalTabsetModule], exports: [SkySectionedFormComponent, SkySectionedFormSectionComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormModule, imports: [CommonModule,\n SkyCheckboxModule,\n SkyThemeModule,\n SkyVerticalTabsetModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySectionedFormModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkySectionedFormComponent, SkySectionedFormSectionComponent],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyThemeModule,\n SkyVerticalTabsetModule,\n ],\n exports: [SkySectionedFormComponent, SkySectionedFormSectionComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbmVkLWZvcm0ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYnMvc3JjL2xpYi9tb2R1bGVzL3NlY3Rpb25lZC1mb3JtL3NlY3Rpb25lZC1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVwRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFZdkUsTUFBTSxPQUFPLHNCQUFzQjsrR0FBdEIsc0JBQXNCO2dIQUF0QixzQkFBc0IsaUJBVGxCLHlCQUF5QixFQUFFLGdDQUFnQyxhQUV4RSxZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLGNBQWM7WUFDZCx1QkFBdUIsYUFFZix5QkFBeUIsRUFBRSxnQ0FBZ0M7Z0hBRTFELHNCQUFzQixZQVAvQixZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLGNBQWM7WUFDZCx1QkFBdUI7OzRGQUlkLHNCQUFzQjtrQkFWbEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxnQ0FBZ0MsQ0FBQztvQkFDM0UsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLHVCQUF1QjtxQkFDeEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMseUJBQXlCLEVBQUUsZ0NBQWdDLENBQUM7aUJBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0TW9kdWxlIH0gZnJvbSAnLi4vdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lTZWN0aW9uZWRGb3JtU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vc2VjdGlvbmVkLWZvcm0tc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5U2VjdGlvbmVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vc2VjdGlvbmVkLWZvcm0uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5U2VjdGlvbmVkRm9ybUNvbXBvbmVudCwgU2t5U2VjdGlvbmVkRm9ybVNlY3Rpb25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUNoZWNrYm94TW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreVZlcnRpY2FsVGFic2V0TW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbU2t5U2VjdGlvbmVkRm9ybUNvbXBvbmVudCwgU2t5U2VjdGlvbmVkRm9ybVNlY3Rpb25Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTZWN0aW9uZWRGb3JtTW9kdWxlIHt9XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyTabButtonAdapterService {\n focusButtonLink(buttonEl) {\n buttonEl.nativeElement.querySelector('a').focus();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabButtonAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabButtonAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabButtonAdapterService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWJ1dHRvbi1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWItYnV0dG9uLWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV2RDs7R0FFRztBQUVILE1BQU0sT0FBTywwQkFBMEI7SUFDOUIsZUFBZSxDQUFDLFFBQW9CO1FBQ3pDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BELENBQUM7K0dBSFUsMEJBQTBCO21IQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUYWJCdXR0b25BZGFwdGVyU2VydmljZSB7XG4gIHB1YmxpYyBmb2N1c0J1dHRvbkxpbmsoYnV0dG9uRWw6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICBidXR0b25FbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2EnKS5mb2N1cygpO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyTabsetService {\n #activeTabChange;\n #focusedTabBtnIndex;\n #activeTabUnregistered;\n #activeTabLayout;\n #tabs;\n #tabCounter;\n constructor() {\n this.currentActiveTabIndex = 0;\n this.currentFocusedTabBtnIndex = 0;\n this.#tabs = [];\n this.#tabCounter = 0;\n this.#activeTabChange = new BehaviorSubject({\n initial: true,\n tabIndex: 0,\n });\n this.#activeTabLayout = new Subject();\n this.#activeTabUnregistered = new Subject();\n this.#focusedTabBtnIndex = new Subject();\n this.activeTabChange = this.#activeTabChange.asObservable();\n this.activeTabLayout = this.#activeTabLayout.asObservable();\n this.activeTabUnregistered = this.#activeTabUnregistered.asObservable();\n this.focusedTabBtnIndex = this.#focusedTabBtnIndex.asObservable();\n }\n ngOnDestroy() {\n this.#activeTabChange.complete();\n this.#activeTabUnregistered.complete();\n this.#focusedTabBtnIndex.complete();\n this.#activeTabLayout.complete();\n }\n /**\n * Sets the active tab by its unique `tabIndex` property.\n */\n setActiveTabIndex(value, config = {\n emitChange: true,\n }) {\n if (value.tabIndex !== undefined &&\n !this.tabIndexesEqual(value.tabIndex, this.currentActiveTabIndex)) {\n this.currentActiveTabIndex = value.tabIndex;\n /* istanbul ignore else */\n if (config.emitChange) {\n this.#activeTabChange.next(value);\n }\n this.setFocusedTabBtnIndex(value.tabIndex);\n }\n }\n focusNextTabBtn(tabButtons) {\n const currentTabArrayIndex = this.#tabs.findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex));\n for (let i = this.#getNextTabArrayIndex(currentTabArrayIndex); i !== currentTabArrayIndex; i = this.#getNextTabArrayIndex(i)) {\n const tabBtn = tabButtons[i];\n if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n return;\n }\n }\n }\n focusPrevTabBtn(tabButtons) {\n const currentTabArrayIndex = this.#tabs.findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex));\n for (let i = this.#getPrevTabArrayIndex(currentTabArrayIndex); i !== currentTabArrayIndex; i = this.#getPrevTabArrayIndex(i)) {\n const tabBtn = tabButtons[i];\n if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n return;\n }\n }\n }\n focusFirstOrNearestTabBtn(tabButtons) {\n for (const tabBtn of tabButtons) {\n if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n return;\n }\n }\n }\n focusLastOrNearestTabBtn(tabButtons) {\n for (let i = tabButtons.length - 1; i >= 0; i--) {\n const tabBtn = tabButtons[i];\n if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n return;\n }\n }\n }\n setFocusedTabBtnIndex(tabIndex) {\n this.currentFocusedTabBtnIndex = tabIndex;\n this.#focusedTabBtnIndex.next(tabIndex);\n }\n /**\n * Registers a tab component.\n */\n registerTab(tabIndex) {\n if (tabIndex === undefined) {\n tabIndex = this.#tabCounter;\n this.#tabCounter++;\n }\n this.#tabs.push({ tabIndex });\n return tabIndex;\n }\n updateTabIndex(currentTabIndex, newTabIndex) {\n const found = this.#tabs.find((tab) => this.tabIndexesEqual(tab.tabIndex, currentTabIndex));\n if (found) {\n found.tabIndex = newTabIndex;\n }\n }\n updateActiveTabLayout(layout) {\n this.#activeTabLayout.next(layout);\n }\n /**\n * Unregisters a tab component.\n */\n unregisterTab(tabIndex) {\n const index = this.#tabs.findIndex((tab) => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n // Notify the tabset component when an active tab is unregistered.\n if (this.#isTabIndexActive(this.#tabs[index]?.tabIndex)) {\n this.#activeTabUnregistered.next({\n arrayIndex: index,\n });\n }\n this.#tabs.splice(index, 1);\n }\n /**\n * Unregisters all tab components at once.\n */\n unregisterAll() {\n this.#tabs = [];\n }\n /**\n * Compares two tab indexes and returns `true` if they are equal.\n */\n tabIndexesEqual(tabIndex1, tabIndex2) {\n return (tabIndex1 === tabIndex2 ||\n (tabIndex1 !== undefined &&\n tabIndex2 !== undefined &&\n +tabIndex1 === +tabIndex2));\n }\n /**\n * Verifies if a provided tab index is registered.\n */\n isValidTabIndex(tabIndex) {\n return this.#tabs.some((tab) => this.tabIndexesEqual(tab.tabIndex, tabIndex));\n }\n /**\n * Activates the first registered tab.\n */\n activateFirstTab() {\n const firstTabIndex = this.#tabs[0] && this.#tabs[0].tabIndex;\n if (firstTabIndex !== undefined) {\n this.setActiveTabIndex({\n tabIndex: firstTabIndex,\n });\n return firstTabIndex;\n }\n return undefined;\n }\n /**\n * Activates the next registered tab, or the previous one based on a provided array index.\n */\n activateNearestTab(arrayIndex) {\n const newActiveTab = this.#tabs[arrayIndex] || this.#tabs[arrayIndex - 1];\n if (newActiveTab) {\n this.currentActiveTabIndex = newActiveTab.tabIndex;\n }\n }\n #isTabIndexActive(tabIndex) {\n return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);\n }\n #getNextTabArrayIndex(currentIndex) {\n let nextIndex = currentIndex + 1;\n if (nextIndex === this.#tabs.length) {\n nextIndex = 0;\n }\n return nextIndex;\n }\n #getPrevTabArrayIndex(currentIndex) {\n let prevIndex = currentIndex - 1;\n if (prevIndex < 0) {\n prevIndex = this.#tabs.length - 1;\n }\n return prevIndex;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVE1RDs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsZ0JBQWdCLENBQWdEO0lBRWhFLG1CQUFtQixDQUF1QjtJQUUxQyxzQkFBc0IsQ0FBOEM7SUFFcEUsZ0JBQWdCLENBQTRCO0lBRTVDLEtBQUssQ0FFSTtJQUVULFdBQVcsQ0FBSztJQUVoQjtRQWxCTywwQkFBcUIsR0FBNEIsQ0FBQyxDQUFDO1FBRW5ELDhCQUF5QixHQUFnQixDQUFDLENBQUM7UUFVbEQsVUFBSyxHQUVDLEVBQUUsQ0FBQztRQUVULGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBR2QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZUFBZSxDQUErQjtZQUN4RSxPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFdEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFNUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUQs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RUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQscUJBQXFCLENBQUMsWUFBb0I7UUFDeEMsSUFBSSxTQUFTLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUVqQyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxZQUFvQjtRQUN4QyxJQUFJLFNBQVMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xCLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7K0dBdFFVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUYWJCdXR0b25WaWV3TW9kZWwgfSBmcm9tICcuL3RhYi1idXR0b24tdmlldy1tb2RlbCc7XG5pbXBvcnQgeyBTa3lUYWJJbmRleCB9IGZyb20gJy4vdGFiLWluZGV4JztcbmltcG9ydCB7IFNreVRhYkxheW91dFR5cGUgfSBmcm9tICcuL3RhYi1sYXlvdXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRBY3RpdmVUYWJDaGFuZ2VBcmdzIH0gZnJvbSAnLi90YWJzZXQtYWN0aXZlLXRhYi1jaGFuZ2UtYXJncyc7XG5pbXBvcnQgeyBTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzIH0gZnJvbSAnLi90YWJzZXQtYWN0aXZlLXRhYi11bnJlZ2lzdGVyZWQtYXJncyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUYWJzZXRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVRhYlVucmVnaXN0ZXJlZDogT2JzZXJ2YWJsZTxTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlVGFiQ2hhbmdlOiBPYnNlcnZhYmxlPFNreVRhYnNldEFjdGl2ZVRhYkNoYW5nZUFyZ3M+O1xuXG4gIHB1YmxpYyByZWFkb25seSBmb2N1c2VkVGFiQnRuSW5kZXg6IE9ic2VydmFibGU8U2t5VGFiSW5kZXg+O1xuXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVUYWJMYXlvdXQ6IE9ic2VydmFibGU8U2t5VGFiTGF5b3V0VHlwZT47XG5cbiAgcHVibGljIGN1cnJlbnRBY3RpdmVUYWJJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQgPSAwO1xuXG4gIHB1YmxpYyBjdXJyZW50Rm9jdXNlZFRhYkJ0bkluZGV4OiBTa3lUYWJJbmRleCA9IDA7XG5cbiAgI2FjdGl2ZVRhYkNoYW5nZTogQmVoYXZpb3JTdWJqZWN0PFNreVRhYnNldEFjdGl2ZVRhYkNoYW5nZUFyZ3M+O1xuXG4gICNmb2N1c2VkVGFiQnRuSW5kZXg6IFN1YmplY3Q8U2t5VGFiSW5kZXg+O1xuXG4gICNhY3RpdmVUYWJVbnJlZ2lzdGVyZWQ6IFN1YmplY3Q8U2t5VGFic2V0QWN0aXZlVGFiVW5yZWdpc3RlcmVkQXJncz47XG5cbiAgI2FjdGl2ZVRhYkxheW91dDogU3ViamVjdDxTa3lUYWJMYXlvdXRUeXBlPjtcblxuICAjdGFiczoge1xuICAgIHRhYkluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcbiAgfVtdID0gW107XG5cbiAgI3RhYkNvdW50ZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2FjdGl2ZVRhYkNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2t5VGFic2V0QWN0aXZlVGFiQ2hhbmdlQXJncz4oe1xuICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgIHRhYkluZGV4OiAwLFxuICAgIH0pO1xuXG4gICAgdGhpcy4jYWN0aXZlVGFiTGF5b3V0ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHRoaXMuI2FjdGl2ZVRhYlVucmVnaXN0ZXJlZCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICB0aGlzLiNmb2N1c2VkVGFiQnRuSW5kZXggPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgdGhpcy5hY3RpdmVUYWJDaGFuZ2UgPSB0aGlzLiNhY3RpdmVUYWJDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5hY3RpdmVUYWJMYXlvdXQgPSB0aGlzLiNhY3RpdmVUYWJMYXlvdXQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5hY3RpdmVUYWJVbnJlZ2lzdGVyZWQgPSB0aGlzLiNhY3RpdmVUYWJVbnJlZ2lzdGVyZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5mb2N1c2VkVGFiQnRuSW5kZXggPSB0aGlzLiNmb2N1c2VkVGFiQnRuSW5kZXguYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYWN0aXZlVGFiQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jYWN0aXZlVGFiVW5yZWdpc3RlcmVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jZm9jdXNlZFRhYkJ0bkluZGV4LmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jYWN0aXZlVGFiTGF5b3V0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWN0aXZlIHRhYiBieSBpdHMgdW5pcXVlIGB0YWJJbmRleGAgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgc2V0QWN0aXZlVGFiSW5kZXgoXG4gICAgdmFsdWU6IFNreVRhYnNldEFjdGl2ZVRhYkNoYW5nZUFyZ3MsXG4gICAgY29uZmlnID0ge1xuICAgICAgZW1pdENoYW5nZTogdHJ1ZSxcbiAgICB9LFxuICApOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZS50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAhdGhpcy50YWJJbmRleGVzRXF1YWwodmFsdWUudGFiSW5kZXgsIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4KVxuICAgICkge1xuICAgICAgdGhpcy5jdXJyZW50QWN0aXZlVGFiSW5kZXggPSB2YWx1ZS50YWJJbmRleDtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChjb25maWcuZW1pdENoYW5nZSkge1xuICAgICAgICB0aGlzLiNhY3RpdmVUYWJDaGFuZ2UubmV4dCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHZhbHVlLnRhYkluZGV4KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNOZXh0VGFiQnRuKHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFRhYkFycmF5SW5kZXggPSB0aGlzLiN0YWJzLmZpbmRJbmRleCgodGFiKSA9PlxuICAgICAgdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0aGlzLmN1cnJlbnRGb2N1c2VkVGFiQnRuSW5kZXgpLFxuICAgICk7XG5cbiAgICBmb3IgKFxuICAgICAgbGV0IGkgPSB0aGlzLiNnZXROZXh0VGFiQXJyYXlJbmRleChjdXJyZW50VGFiQXJyYXlJbmRleCk7XG4gICAgICBpICE9PSBjdXJyZW50VGFiQXJyYXlJbmRleDtcbiAgICAgIGkgPSB0aGlzLiNnZXROZXh0VGFiQXJyYXlJbmRleChpKVxuICAgICkge1xuICAgICAgY29uc3QgdGFiQnRuID0gdGFiQnV0dG9uc1tpXTtcbiAgICAgIGlmICghdGFiQnRuLmRpc2FibGVkICYmIHRhYkJ0bi50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkJ0bi50YWJJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNQcmV2VGFiQnRuKHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFRhYkFycmF5SW5kZXggPSB0aGlzLiN0YWJzLmZpbmRJbmRleCgodGFiKSA9PlxuICAgICAgdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0aGlzLmN1cnJlbnRGb2N1c2VkVGFiQnRuSW5kZXgpLFxuICAgICk7XG5cbiAgICBmb3IgKFxuICAgICAgbGV0IGkgPSB0aGlzLiNnZXRQcmV2VGFiQXJyYXlJbmRleChjdXJyZW50VGFiQXJyYXlJbmRleCk7XG4gICAgICBpICE9PSBjdXJyZW50VGFiQXJyYXlJbmRleDtcbiAgICAgIGkgPSB0aGlzLiNnZXRQcmV2VGFiQXJyYXlJbmRleChpKVxuICAgICkge1xuICAgICAgY29uc3QgdGFiQnRuID0gdGFiQnV0dG9uc1tpXTtcbiAgICAgIGlmICghdGFiQnRuLmRpc2FibGVkICYmIHRhYkJ0bi50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkJ0bi50YWJJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNGaXJzdE9yTmVhcmVzdFRhYkJ0bih0YWJCdXR0b25zOiBUYWJCdXR0b25WaWV3TW9kZWxbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdGFiQnRuIG9mIHRhYkJ1dHRvbnMpIHtcbiAgICAgIGlmICghdGFiQnRuLmRpc2FibGVkICYmIHRhYkJ0bi50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkJ0bi50YWJJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNMYXN0T3JOZWFyZXN0VGFiQnRuKHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IHRhYkJ1dHRvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IHRhYkJ0biA9IHRhYkJ1dHRvbnNbaV07XG5cbiAgICAgIGlmICghdGFiQnRuLmRpc2FibGVkICYmIHRhYkJ0bi50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkJ0bi50YWJJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkluZGV4OiBTa3lUYWJJbmRleCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZvY3VzZWRUYWJCdG5JbmRleCA9IHRhYkluZGV4O1xuICAgIHRoaXMuI2ZvY3VzZWRUYWJCdG5JbmRleC5uZXh0KHRhYkluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB0YWIgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyVGFiKHRhYkluZGV4PzogU2t5VGFiSW5kZXgpOiBTa3lUYWJJbmRleCB7XG4gICAgaWYgKHRhYkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhYkluZGV4ID0gdGhpcy4jdGFiQ291bnRlcjtcbiAgICAgIHRoaXMuI3RhYkNvdW50ZXIrKztcbiAgICB9XG5cbiAgICB0aGlzLiN0YWJzLnB1c2goeyB0YWJJbmRleCB9KTtcblxuICAgIHJldHVybiB0YWJJbmRleDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVUYWJJbmRleChcbiAgICBjdXJyZW50VGFiSW5kZXg6IFNreVRhYkluZGV4LFxuICAgIG5ld1RhYkluZGV4OiBTa3lUYWJJbmRleCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLiN0YWJzLmZpbmQoKHRhYikgPT5cbiAgICAgIHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgY3VycmVudFRhYkluZGV4KSxcbiAgICApO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgZm91bmQudGFiSW5kZXggPSBuZXdUYWJJbmRleDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWN0aXZlVGFiTGF5b3V0KGxheW91dDogU2t5VGFiTGF5b3V0VHlwZSk6IHZvaWQge1xuICAgIHRoaXMuI2FjdGl2ZVRhYkxheW91dC5uZXh0KGxheW91dCk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgYSB0YWIgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHVucmVnaXN0ZXJUYWIodGFiSW5kZXg6IFNreVRhYkluZGV4KTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLiN0YWJzLmZpbmRJbmRleCgodGFiKSA9PlxuICAgICAgdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0YWJJbmRleCksXG4gICAgKTtcblxuICAgIC8vIE5vdGlmeSB0aGUgdGFic2V0IGNvbXBvbmVudCB3aGVuIGFuIGFjdGl2ZSB0YWIgaXMgdW5yZWdpc3RlcmVkLlxuICAgIGlmICh0aGlzLiNpc1RhYkluZGV4QWN0aXZlKHRoaXMuI3RhYnNbaW5kZXhdPy50YWJJbmRleCkpIHtcbiAgICAgIHRoaXMuI2FjdGl2ZVRhYlVucmVnaXN0ZXJlZC5uZXh0KHtcbiAgICAgICAgYXJyYXlJbmRleDogaW5kZXgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiN0YWJzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgYWxsIHRhYiBjb21wb25lbnRzIGF0IG9uY2UuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlckFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIHRhYiBpbmRleGVzIGFuZCByZXR1cm5zIGB0cnVlYCBpZiB0aGV5IGFyZSBlcXVhbC5cbiAgICovXG4gIHB1YmxpYyB0YWJJbmRleGVzRXF1YWwoXG4gICAgdGFiSW5kZXgxOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCxcbiAgICB0YWJJbmRleDI6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGFiSW5kZXgxID09PSB0YWJJbmRleDIgfHxcbiAgICAgICh0YWJJbmRleDEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICB0YWJJbmRleDIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICArdGFiSW5kZXgxID09PSArdGFiSW5kZXgyKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgYSBwcm92aWRlZCB0YWIgaW5kZXggaXMgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHB1YmxpYyBpc1ZhbGlkVGFiSW5kZXgodGFiSW5kZXg6IFNreVRhYkluZGV4KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI3RhYnMuc29tZSgodGFiKSA9PlxuICAgICAgdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0YWJJbmRleCksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIGZpcnN0IHJlZ2lzdGVyZWQgdGFiLlxuICAgKi9cbiAgcHVibGljIGFjdGl2YXRlRmlyc3RUYWIoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZpcnN0VGFiSW5kZXggPSB0aGlzLiN0YWJzWzBdICYmIHRoaXMuI3RhYnNbMF0udGFiSW5kZXg7XG4gICAgaWYgKGZpcnN0VGFiSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZXRBY3RpdmVUYWJJbmRleCh7XG4gICAgICAgIHRhYkluZGV4OiBmaXJzdFRhYkluZGV4LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmlyc3RUYWJJbmRleDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIG5leHQgcmVnaXN0ZXJlZCB0YWIsIG9yIHRoZSBwcmV2aW91cyBvbmUgYmFzZWQgb24gYSBwcm92aWRlZCBhcnJheSBpbmRleC5cbiAgICovXG4gIHB1YmxpYyBhY3RpdmF0ZU5lYXJlc3RUYWIoYXJyYXlJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbmV3QWN0aXZlVGFiID0gdGhpcy4jdGFic1thcnJheUluZGV4XSB8fCB0aGlzLiN0YWJzW2FycmF5SW5kZXggLSAxXTtcbiAgICBpZiAobmV3QWN0aXZlVGFiKSB7XG4gICAgICB0aGlzLmN1cnJlbnRBY3RpdmVUYWJJbmRleCA9IG5ld0FjdGl2ZVRhYi50YWJJbmRleDtcbiAgICB9XG4gIH1cblxuICAjaXNUYWJJbmRleEFjdGl2ZSh0YWJJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJJbmRleGVzRXF1YWwodGFiSW5kZXgsIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4KTtcbiAgfVxuXG4gICNnZXROZXh0VGFiQXJyYXlJbmRleChjdXJyZW50SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCArIDE7XG5cbiAgICBpZiAobmV4dEluZGV4ID09PSB0aGlzLiN0YWJzLmxlbmd0aCkge1xuICAgICAgbmV4dEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dEluZGV4O1xuICB9XG5cbiAgI2dldFByZXZUYWJBcnJheUluZGV4KGN1cnJlbnRJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgcHJldkluZGV4ID0gY3VycmVudEluZGV4IC0gMTtcblxuICAgIGlmIChwcmV2SW5kZXggPCAwKSB7XG4gICAgICBwcmV2SW5kZXggPSB0aGlzLiN0YWJzLmxlbmd0aCAtIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXZJbmRleDtcbiAgfVxufVxuIl19","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { SkyTabButtonAdapterService } from './tab-button-adapter.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./tab-button-adapter.service\";\nimport * as i2 from \"./tabset.service\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@skyux/icon\";\nimport * as i5 from \"@skyux/core\";\nimport * as i6 from \"@skyux/theme\";\nimport * as i7 from \"@skyux/i18n\";\nconst DEFAULT_DISABLED = false;\n/**\n * @internal\n */\nexport class SkyTabButtonComponent {\n get active() {\n return this.#_isActive;\n }\n set active(value) {\n this.#_isActive = value;\n this.#updateWizardStepState();\n }\n get disabled() {\n return this.#_isDisabled;\n }\n set disabled(value) {\n this.#_isDisabled = value ?? DEFAULT_DISABLED;\n this.#updateWizardStepState();\n }\n get tabStyle() {\n return this.#_tabStyle;\n }\n set tabStyle(style) {\n this.#_tabStyle = style;\n this.#updateWizardStepState();\n }\n constructor(elementRef, adapterService, changeDetectorRef, tabsetService) {\n this.buttonClick = new EventEmitter();\n this.closeClick = new EventEmitter();\n this.closeBtnTabIndex = '-1';\n this.#_isActive = false;\n this.#_isDisabled = DEFAULT_DISABLED;\n this.#ngUnsubscribe = new Subject();\n this.#adapterService = adapterService;\n this.#changeDetectorRef = changeDetectorRef;\n this.#elementRef = elementRef;\n this.#tabsetService = tabsetService;\n }\n #_isActive;\n #_isDisabled;\n #_tabStyle;\n #adapterService;\n #changeDetectorRef;\n #elementRef;\n #tabsetService;\n #ngUnsubscribe;\n ngAfterViewInit() {\n this.#tabsetService.focusedTabBtnIndex\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((focusedIndex) => {\n if (this.tabIndex !== undefined && focusedIndex === this.tabIndex) {\n this.closeBtnTabIndex = '0';\n this.focusBtn();\n }\n else {\n this.closeBtnTabIndex = '-1';\n }\n this.#changeDetectorRef.markForCheck();\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n onButtonClick(event) {\n if (!this.disabled) {\n this.buttonClick.emit();\n event.preventDefault();\n }\n }\n onTabButtonKeyDown(event) {\n /*istanbul ignore else */\n if (event.key) {\n switch (event.key.toUpperCase()) {\n case ' ':\n case 'ENTER':\n this.onButtonClick(event);\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n }\n }\n onCloseClick(event) {\n this.closeClick.emit();\n // Prevent the click event from bubbling up to the anchor tag;\n // otherwise it will trigger a page refresh.\n event.stopPropagation();\n event.preventDefault();\n }\n focusBtn() {\n this.#adapterService.focusButtonLink(this.#elementRef);\n }\n onFocus() {\n if (this.tabIndex !== undefined) {\n this.#tabsetService.setFocusedTabBtnIndex(this.tabIndex);\n }\n }\n #updateWizardStepState() {\n if (this.tabStyle === 'tabs') {\n this.wizardStepState = undefined;\n }\n else {\n if (this.active) {\n this.wizardStepState = 'current';\n }\n else if (!this.disabled) {\n this.wizardStepState = 'completed';\n }\n else {\n this.wizardStepState = 'unavailable';\n }\n }\n this.#changeDetectorRef.markForCheck();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.SkyTabButtonAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyTabButtonComponent, isStandalone: false, selector: \"sky-tab-button\", inputs: { active: \"active\", ariaControls: \"ariaControls\", buttonHref: \"buttonHref\", buttonId: \"buttonId\", buttonText: \"buttonText\", buttonTextCount: \"buttonTextCount\", closeable: \"closeable\", disabled: \"disabled\", tabIndex: \"tabIndex\", tabNumber: \"tabNumber\", totalTabsCount: \"totalTabsCount\", tabStyle: \"tabStyle\" }, outputs: { buttonClick: \"buttonClick\", closeClick: \"closeClick\" }, providers: [SkyTabButtonAdapterService], ngImport: i0, template: \"<div\\n class=\\\"sky-btn-tab-wrapper\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-tab-wrapper-selected': active,\\n 'sky-btn-tab-wrapper-disabled': disabled\\n }\\\"\\n>\\n <a\\n #tabButtonEl\\n class=\\\"sky-btn-tab\\\"\\n role=\\\"tab\\\"\\n [attr.aria-controls]=\\\"ariaControls\\\"\\n [attr.aria-disabled]=\\\"disabled\\\"\\n [attr.aria-selected]=\\\"active\\\"\\n [attr.href]=\\\"buttonHref\\\"\\n [attr.aria-label]=\\\"\\n tabStyle === 'wizard'\\n ? ('skyux_wizard_sr_step_' + wizardStepState\\n | skyLibResources: tabNumber : totalTabsCount : buttonText)\\n : null\\n \\\"\\n [attr.aria-labelledby]=\\\"tabStyle === 'wizard' ? null : tabHeading.id\\\"\\n [id]=\\\"buttonId\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\\n 'sky-btn-tab-selected': active,\\n 'sky-btn-tab-disabled': disabled,\\n 'sky-tab-btn-closeable': closeable\\n }\\\"\\n [tabindex]=\\\"active ? '0' : '-1'\\\"\\n (click)=\\\"onButtonClick($event)\\\"\\n (keydown)=\\\"onTabButtonKeyDown($event)\\\"\\n (focus)=\\\"onFocus()\\\"\\n >\\n <span class=\\\"sky-tab-heading\\\" [attr.aria-hidden]=\\\"true\\\">\\n <span #tabHeading=\\\"skyId\\\" skyId>\\n {{ buttonText }}\\n @if (buttonTextCount !== undefined) {\\n <span class=\\\"sky-tab-header-count\\\">\\n {{ buttonTextCount }}\\n </span>\\n }\\n </span>\\n @if (closeable) {\\n <span\\n class=\\\"sky-btn-tab-close\\\"\\n [tabindex]=\\\"closeBtnTabIndex\\\"\\n [attr.aria-label]=\\\"'skyux_tab_close' | skyLibResources: buttonText\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-tab-close-disabled': disabled\\n }\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-btn sky-btn-icon-borderless': 'modern'\\n }\\\"\\n (click)=\\\"onCloseClick($event)\\\"\\n (keydown.enter)=\\\"onCloseClick($event)\\\"\\n >\\n <sky-icon iconName=\\\"close\\\" />\\n </span>\\n }\\n </span>\\n </a>\\n</div>\\n\", styles: [\"sky-tab-button:not(.sky-theme-modern *){--sky-override-closeable-tab-padding-right: 43px;--sky-override-tab-close-active-hover-color: #fff;--sky-override-tab-close-padding: 1px 6px;--sky-override-tab-close-position: absolute;--sky-override-tab-close-position-right: 10px;--sky-override-tab-close-position-top: 10px;--sky-override-tab-margin-right: 5px;--sky-override-tab-btn-wizard-disabled-background-color: var( --sky-background-color-neutral-light );--sky-override-tab-btn-wizard-disabled-border-color: #e2e3e4}.sky-btn-tab-wrapper{display:inline-block;position:relative;margin-right:var(--sky-override-tab-margin-right, var(--sky-space-gap-action_group-m))}.sky-btn-tab-wrapper .sky-btn-tab-close{position:var(--sky-override-tab-close-position, static);top:var(--sky-override-tab-close-position-top, none);right:var(--sky-override-tab-close-position-right, none);padding:var(--sky-override-tab-close-padding, var(--sky-comp-button-borderless-space-inset-top) var(--sky-comp-button-borderless-space-inset-right) var(--sky-comp-button-borderless-space-inset-bottom) var(--sky-comp-button-borderless-space-inset-left))}.sky-btn-tab-wrapper .sky-btn-tab-close.sky-btn-icon-borderless{display:inline;height:auto;width:auto}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:var(--sky-override-tab-close-active-hover-color, var(--sky-color-icon-deemphasized))}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-disabled{cursor:not-allowed}.sky-btn-tab-wrapper .sky-tab-btn-closeable{padding-right:var(--sky-override-closeable-tab-padding-right, var(--sky-comp-tab-horizontal-space-inset-right))}.sky-btn-tab-wrapper a.sky-btn-tab-wizard.sky-btn-tab-disabled{background-color:var(--sky-override-tab-btn-wizard-disabled-background-color, var(--sky-color-background-tab-wizard-disabled));border-color:var(--sky-override-tab-btn-wizard-disabled-border-color, var(--sky-color-border-tab-wizard-disabled))}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: i4.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i5.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"directive\", type: i6.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"pipe\", type: i7.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabButtonComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-tab-button', providers: [SkyTabButtonAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: \"<div\\n class=\\\"sky-btn-tab-wrapper\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-tab-wrapper-selected': active,\\n 'sky-btn-tab-wrapper-disabled': disabled\\n }\\\"\\n>\\n <a\\n #tabButtonEl\\n class=\\\"sky-btn-tab\\\"\\n role=\\\"tab\\\"\\n [attr.aria-controls]=\\\"ariaControls\\\"\\n [attr.aria-disabled]=\\\"disabled\\\"\\n [attr.aria-selected]=\\\"active\\\"\\n [attr.href]=\\\"buttonHref\\\"\\n [attr.aria-label]=\\\"\\n tabStyle === 'wizard'\\n ? ('skyux_wizard_sr_step_' + wizardStepState\\n | skyLibResources: tabNumber : totalTabsCount : buttonText)\\n : null\\n \\\"\\n [attr.aria-labelledby]=\\\"tabStyle === 'wizard' ? null : tabHeading.id\\\"\\n [id]=\\\"buttonId\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\\n 'sky-btn-tab-selected': active,\\n 'sky-btn-tab-disabled': disabled,\\n 'sky-tab-btn-closeable': closeable\\n }\\\"\\n [tabindex]=\\\"active ? '0' : '-1'\\\"\\n (click)=\\\"onButtonClick($event)\\\"\\n (keydown)=\\\"onTabButtonKeyDown($event)\\\"\\n (focus)=\\\"onFocus()\\\"\\n >\\n <span class=\\\"sky-tab-heading\\\" [attr.aria-hidden]=\\\"true\\\">\\n <span #tabHeading=\\\"skyId\\\" skyId>\\n {{ buttonText }}\\n @if (buttonTextCount !== undefined) {\\n <span class=\\\"sky-tab-header-count\\\">\\n {{ buttonTextCount }}\\n </span>\\n }\\n </span>\\n @if (closeable) {\\n <span\\n class=\\\"sky-btn-tab-close\\\"\\n [tabindex]=\\\"closeBtnTabIndex\\\"\\n [attr.aria-label]=\\\"'skyux_tab_close' | skyLibResources: buttonText\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-tab-close-disabled': disabled\\n }\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-btn sky-btn-icon-borderless': 'modern'\\n }\\\"\\n (click)=\\\"onCloseClick($event)\\\"\\n (keydown.enter)=\\\"onCloseClick($event)\\\"\\n >\\n <sky-icon iconName=\\\"close\\\" />\\n </span>\\n }\\n </span>\\n </a>\\n</div>\\n\", styles: [\"sky-tab-button:not(.sky-theme-modern *){--sky-override-closeable-tab-padding-right: 43px;--sky-override-tab-close-active-hover-color: #fff;--sky-override-tab-close-padding: 1px 6px;--sky-override-tab-close-position: absolute;--sky-override-tab-close-position-right: 10px;--sky-override-tab-close-position-top: 10px;--sky-override-tab-margin-right: 5px;--sky-override-tab-btn-wizard-disabled-background-color: var( --sky-background-color-neutral-light );--sky-override-tab-btn-wizard-disabled-border-color: #e2e3e4}.sky-btn-tab-wrapper{display:inline-block;position:relative;margin-right:var(--sky-override-tab-margin-right, var(--sky-space-gap-action_group-m))}.sky-btn-tab-wrapper .sky-btn-tab-close{position:var(--sky-override-tab-close-position, static);top:var(--sky-override-tab-close-position-top, none);right:var(--sky-override-tab-close-position-right, none);padding:var(--sky-override-tab-close-padding, var(--sky-comp-button-borderless-space-inset-top) var(--sky-comp-button-borderless-space-inset-right) var(--sky-comp-button-borderless-space-inset-bottom) var(--sky-comp-button-borderless-space-inset-left))}.sky-btn-tab-wrapper .sky-btn-tab-close.sky-btn-icon-borderless{display:inline;height:auto;width:auto}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-selected:not(.sky-btn-tab-wrapper-disabled) .sky-btn-tab-close{color:var(--sky-override-tab-close-active-hover-color, var(--sky-color-icon-deemphasized))}.sky-btn-tab-wrapper.sky-btn-tab-wrapper-disabled{cursor:not-allowed}.sky-btn-tab-wrapper .sky-tab-btn-closeable{padding-right:var(--sky-override-closeable-tab-padding-right, var(--sky-comp-tab-horizontal-space-inset-right))}.sky-btn-tab-wrapper a.sky-btn-tab-wizard.sky-btn-tab-disabled{background-color:var(--sky-override-tab-btn-wizard-disabled-background-color, var(--sky-color-background-tab-wizard-disabled));border-color:var(--sky-override-tab-btn-wizard-disabled-border-color, var(--sky-color-border-tab-wizard-disabled))}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkyTabButtonAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyTabsetService }], propDecorators: { active: [{\n type: Input\n }], ariaControls: [{\n type: Input\n }], buttonHref: [{\n type: Input\n }], buttonId: [{\n type: Input\n }], buttonText: [{\n type: Input\n }], buttonTextCount: [{\n type: Input\n }], closeable: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], tabNumber: [{\n type: Input\n }], totalTabsCount: [{\n type: Input\n }], tabStyle: [{\n type: Input\n }], buttonClick: [{\n type: Output\n }], closeClick: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7QUFLMUUsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFJL0I7O0dBRUc7QUFVSCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLElBQ1csTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBMEI7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQW9CRCxJQUNXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFFBQVEsQ0FBQyxLQUEwQjtRQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQztRQUM5QyxJQUFJ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c0JBU0wsS0FBSzs7c0JBR0wsS0FBSzs7c0JBR0wsS0FBSzs7c0JBR0wsS0FBSzs7c0JBR0wsS0FBSzs7c0JBR0wsS0FBSzs7c0JBR0wsS0FBSzs7c0JBVUwsS0FBSzs7c0JBR0wsS0FBSzs7c0JBR0wsS0FBSzs7c0JBR0wsS0FBSzs7c0JBVUwsTUFBTTs7c0JBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUYWJCdXR0b25BZGFwdGVyU2VydmljZSB9IGZyb20gJy4vdGFiLWJ1dHRvbi1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGFiSW5kZXggfSBmcm9tICcuL3RhYi1pbmRleCc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTdHlsZSB9IGZyb20gJy4vdGFic2V0LXN0eWxlJztcbmltcG9ydCB7IFNreVRhYnNldFNlcnZpY2UgfSBmcm9tICcuL3RhYnNldC5zZXJ2aWNlJztcblxuY29uc3QgREVGQVVMVF9ESVNBQkxFRCA9IGZhbHNlO1xuXG50eXBlIFNreVdpemFyZFN0ZXBTdGF0ZSA9ICdjb21wbGV0ZWQnIHwgJ2N1cnJlbnQnIHwgJ3VuYXZhaWxhYmxlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRhYi1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYi1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5VGFiQnV0dG9uQWRhcHRlclNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRhYkJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaXNBY3RpdmU7XG4gIH1cbiAgcHVibGljIHNldCBhY3RpdmUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfaXNBY3RpdmUgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVXaXphcmRTdGVwU3RhdGUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhQ29udHJvbHM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYnV0dG9uSHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBidXR0b25JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBidXR0b25UZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGJ1dHRvblRleHRDb3VudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjbG9zZWFibGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2lzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2lzRGlzYWJsZWQgPSB2YWx1ZSA/PyBERUZBVUxUX0RJU0FCTEVEO1xuICAgIHRoaXMuI3VwZGF0ZVdpemFyZFN0ZXBTdGF0ZSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRhYkluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdGFiTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRvdGFsVGFic0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB0YWJTdHlsZSgpOiBTa3lUYWJzZXRTdHlsZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJTdHlsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdGFiU3R5bGUoc3R5bGU6IFNreVRhYnNldFN0eWxlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RhYlN0eWxlID0gc3R5bGU7XG4gICAgdGhpcy4jdXBkYXRlV2l6YXJkU3RlcFN0YXRlKCk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xvc2VDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGFkYXB0ZXJTZXJ2aWNlOiBTa3lUYWJCdXR0b25BZGFwdGVyU2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UgPSBhZGFwdGVyU2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvclJlZiA9IGNoYW5nZURldGVjdG9yUmVmO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UgPSB0YWJzZXRTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIGNsb3NlQnRuVGFiSW5kZXggPSAnLTEnO1xuICBwdWJsaWMgd2l6YXJkU3RlcFN0YXRlOiBTa3lXaXphcmRTdGVwU3RhdGUgfCB1bmRlZmluZWQ7XG4gICNfaXNBY3RpdmU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgI19pc0Rpc2FibGVkID0gREVGQVVMVF9ESVNBQkxFRDtcbiAgI190YWJTdHlsZTogU2t5VGFic2V0U3R5bGUgfCB1bmRlZmluZWQ7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGFiQnV0dG9uQWRhcHRlclNlcnZpY2U7XG4gICNjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICAjdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5mb2N1c2VkVGFiQnRuSW5kZXhcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGZvY3VzZWRJbmRleCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGZvY3VzZWRJbmRleCA9PT0gdGhpcy50YWJJbmRleCkge1xuICAgICAgICAgIHRoaXMuY2xvc2VCdG5UYWJJbmRleCA9ICcwJztcbiAgICAgICAgICB0aGlzLmZvY3VzQnRuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jbG9zZUJ0blRhYkluZGV4ID0gJy0xJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJ1dHRvbkNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25UYWJCdXR0b25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChldmVudC5rZXkpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5LnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgIGNhc2UgJ0VOVEVSJzpcbiAgICAgICAgICB0aGlzLm9uQnV0dG9uQ2xpY2soZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VDbGljay5lbWl0KCk7XG5cbiAgICAvLyBQcmV2ZW50IHRoZSBjbGljayBldmVudCBmcm9tIGJ1YmJsaW5nIHVwIHRvIHRoZSBhbmNob3IgdGFnO1xuICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIHRyaWdnZXIgYSBwYWdlIHJlZnJlc2guXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0J0bigpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5mb2N1c0J1dHRvbkxpbmsodGhpcy4jZWxlbWVudFJlZik7XG4gIH1cblxuICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEZvY3VzZWRUYWJCdG5JbmRleCh0aGlzLnRhYkluZGV4KTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlV2l6YXJkU3RlcFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYlN0eWxlID09PSAndGFicycpIHtcbiAgICAgIHRoaXMud2l6YXJkU3RlcFN0YXRlID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgdGhpcy53aXphcmRTdGVwU3RhdGUgPSAnY3VycmVudCc7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMud2l6YXJkU3RlcFN0YXRlID0gJ2NvbXBsZXRlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndpemFyZFN0ZXBTdGF0ZSA9ICd1bmF2YWlsYWJsZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktYnRuLXRhYi13cmFwcGVyXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktYnRuLXRhYi13cmFwcGVyLXNlbGVjdGVkJzogYWN0aXZlLFxuICAgICdza3ktYnRuLXRhYi13cmFwcGVyLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgfVwiXG4+XG4gIDxhXG4gICAgI3RhYkJ1dHRvbkVsXG4gICAgY2xhc3M9XCJza3ktYnRuLXRhYlwiXG4gICAgcm9sZT1cInRhYlwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHNcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiYWN0aXZlXCJcbiAgICBbYXR0ci5ocmVmXT1cImJ1dHRvbkhyZWZcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICB0YWJTdHlsZSA9PT0gJ3dpemFyZCdcbiAgICAgICAgPyAoJ3NreXV4X3dpemFyZF9zcl9zdGVwXycgKyB3aXphcmRTdGVwU3RhdGVcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogdGFiTnVtYmVyIDogdG90YWxUYWJzQ291bnQgOiBidXR0b25UZXh0KVxuICAgICAgICA6IG51bGxcbiAgICBcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0YWJTdHlsZSA9PT0gJ3dpemFyZCcgPyBudWxsIDogdGFiSGVhZGluZy5pZFwiXG4gICAgW2lkXT1cImJ1dHRvbklkXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWJ0bi10YWItd2l6YXJkJzogdGFiU3R5bGUgPT09ICd3aXphcmQnLFxuICAgICAgJ3NreS1idG4tdGFiLXNlbGVjdGVkJzogYWN0aXZlLFxuICAgICAgJ3NreS1idG4tdGFiLWRpc2FibGVkJzogZGlzYWJsZWQsXG4gICAgICAnc2t5LXRhYi1idG4tY2xvc2VhYmxlJzogY2xvc2VhYmxlXG4gICAgfVwiXG4gICAgW3RhYmluZGV4XT1cImFjdGl2ZSA/ICcwJyA6ICctMSdcIlxuICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uVGFiQnV0dG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwic2t5LXRhYi1oZWFkaW5nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgPHNwYW4gI3RhYkhlYWRpbmc9XCJza3lJZFwiIHNreUlkPlxuICAgICAgICB7eyBidXR0b25UZXh0IH19XG4gICAgICAgIEBpZiAoYnV0dG9uVGV4dENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNreS10YWItaGVhZGVyLWNvdW50XCI+XG4gICAgICAgICAgICB7eyBidXR0b25UZXh0Q291bnQgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIEBpZiAoY2xvc2VhYmxlKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuLXRhYi1jbG9zZVwiXG4gICAgICAgICAgW3RhYmluZGV4XT1cImNsb3NlQnRuVGFiSW5kZXhcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X3RhYl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXM6IGJ1dHRvblRleHRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdza3ktYnRuLXRhYi1jbG9zZS1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3NreS1idG4gc2t5LWJ0bi1pY29uLWJvcmRlcmxlc3MnOiAnbW9kZXJuJ1xuICAgICAgICAgIH1cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25DbG9zZUNsaWNrKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiY2xvc2VcIiAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICA8L2E+XG48L2Rpdj5cbiJdfQ==","import { Location } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyTabsetPermalinkService {\n get popStateChange() {\n return this.#popStateChange;\n }\n #popStateChange = new Subject();\n #subscription;\n #activatedRoute = inject(ActivatedRoute);\n #location = inject(Location);\n #router = inject(Router);\n ngOnDestroy() {\n this.#subscription?.unsubscribe();\n this.#popStateChange.complete();\n }\n init() {\n this.#subscription = this.#location.subscribe(() => {\n this.#popStateChange.next();\n });\n }\n /**\n * Returns the value of a URL query param.\n */\n getParam(name) {\n return this.#getParams()[name];\n }\n /**\n * Sets the value of a URL query param.\n */\n setParam(name, value, initial) {\n const params = this.#getParams();\n params[name] = value ?? undefined;\n // Uses merge so other query params are not lost. Deleted query params\n // are set to `undefined` so they are removed from the URL.\n const url = this.#router\n .createUrlTree([], {\n relativeTo: this.#activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge',\n })\n .toString();\n // Abort redirect if the current URL is equal to the new URL.\n if (this.#location.isCurrentPathEqualTo(url)) {\n return;\n }\n // Navigate via the Angular router to update the URL and broadcast the\n // change. Use `replaceUrl` on the initial navigation so an extra history\n // item isn't added to the browser's back stack.\n void this.#router.navigate([], {\n relativeTo: this.#activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge',\n replaceUrl: initial,\n });\n }\n /**\n * Removes the provided query param from the URL.\n */\n clearParam(name) {\n // Don't overwrite the URL while the Angular router is in the process\n // of navigating (e.g. when the tabset is destroyed due to navigating\n // away from the current page).\n if (!this.#router.currentNavigation()) {\n this.setParam(name, null);\n }\n }\n /**\n * Returns a relative URL that includes the provided query parameter. The value is intended to be\n * used by an HTML anchor element.\n */\n getParamHref(name, value) {\n if (!name) {\n return null;\n }\n const params = this.#getParams();\n params[name] = value;\n const baseUrl = this.#location.path().split('?')[0];\n const paramString = Object.keys(params)\n .map((k) => `${k}=${params[k]}`)\n .join('&');\n return this.#location.prepareExternalUrl(`${baseUrl}?${paramString}`);\n }\n /**\n * Converts the provided string into a value that can be safely used in a URL.\n */\n urlify(value) {\n if (!value) {\n return '';\n }\n const sanitized = value\n .toLowerCase()\n // Remove special characters.\n .replace(/[_~`@!#$%^&*()[\\]{};:'/\\\\<>,.?=+|\"]/g, '')\n // Replace space characters with a dash.\n .replace(/\\s/g, '-')\n // Remove any double-dashes.\n .replace(/--/g, '-');\n return sanitized;\n }\n /**\n * Returns all query params that exist in the current URL.\n */\n #getParams() {\n const params = {};\n const path = this.#location.path();\n if (path.indexOf('?') === -1) {\n return params;\n }\n const existingParamPairs = path.split('?')[1].split('&');\n existingParamPairs.forEach((pair) => {\n const fragments = pair.split('=');\n params[fragments[0]] = decodeURIComponent(fragments[1]);\n });\n return params;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetPermalinkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetPermalinkService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetPermalinkService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LXBlcm1hbGluay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYnMvc3JjL2xpYi9tb2R1bGVzL3RhYnMvdGFic2V0LXBlcm1hbGluay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpFLE9BQU8sRUFBYyxPQUFPLEVBQW9CLE1BQU0sTUFBTSxDQUFDOztBQU83RDs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdEMsYUFBYSxDQUErQjtJQUVuQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pDLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUzQixXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxD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Q25CLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixNQUFNLE1BQU0sR0FBb0IsRUFBRSxDQUFDO1FBRW5DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOytHQXpJVSx5QkFBeUI7bUhBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb25MaWtlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbnR5cGUgUGVybWFsaW5rUGFyYW1zID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZ2V0IHBvcFN0YXRlQ2hhbmdlKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNwb3BTdGF0ZUNoYW5nZTtcbiAgfVxuXG4gICNwb3BTdGF0ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uTGlrZSB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSAjYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICByZWFkb25seSAjbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xuICByZWFkb25seSAjcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLiNwb3BTdGF0ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uID0gdGhpcy4jbG9jYXRpb24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuI3BvcFN0YXRlQ2hhbmdlLm5leHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBhIFVSTCBxdWVyeSBwYXJhbS5cbiAgICovXG4gIHB1YmxpYyBnZXRQYXJhbShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNnZXRQYXJhbXMoKVtuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIFVSTCBxdWVyeSBwYXJhbS5cbiAgICovXG4gIHB1YmxpYyBzZXRQYXJhbShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBpbml0aWFsPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtczogUGFyYW1zID0gdGhpcy4jZ2V0UGFyYW1zKCk7XG4gICAgcGFyYW1zW25hbWVdID0gdmFsdWUgPz8gdW5kZWZpbmVkO1xuXG4gICAgLy8gVXNlcyBtZXJnZSBzbyBvdGhlciBxdWVyeSBwYXJhbXMgYXJlIG5vdCBsb3N0LiBEZWxldGVkIHF1ZXJ5IHBhcmFtc1xuICAgIC8vIGFyZSBzZXQgdG8gYHVuZGVmaW5lZGAgc28gdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBVUkwuXG4gICAgY29uc3QgdXJsID0gdGhpcy4jcm91dGVyXG4gICAgICAuY3JlYXRlVXJsVHJlZShbXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLiNhY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgIH0pXG4gICAgICAudG9TdHJpbmcoKTtcblxuICAgIC8vIEFib3J0IHJlZGlyZWN0IGlmIHRoZSBjdXJyZW50IFVSTCBpcyBlcXVhbCB0byB0aGUgbmV3IFVSTC5cbiAgICBpZiAodGhpcy4jbG9jYXRpb24uaXNDdXJyZW50UGF0aEVxdWFsVG8odXJsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE5hdmlnYXRlIHZpYSB0aGUgQW5ndWxhciByb3V0ZXIgdG8gdXBkYXRlIHRoZSBVUkwgYW5kIGJyb2FkY2FzdCB0aGVcbiAgICAvLyBjaGFuZ2UuIFVzZSBgcmVwbGFjZVVybGAgb24gdGhlIGluaXRpYWwgbmF2aWdhdGlvbiBzbyBhbiBleHRyYSBoaXN0b3J5XG4gICAgLy8gaXRlbSBpc24ndCBhZGRlZCB0byB0aGUgYnJvd3NlcidzIGJhY2sgc3RhY2suXG4gICAgdm9pZCB0aGlzLiNyb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuI2FjdGl2YXRlZFJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICByZXBsYWNlVXJsOiBpbml0aWFsLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtIGZyb20gdGhlIFVSTC5cbiAgICovXG4gIHB1YmxpYyBjbGVhclBhcmFtKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIERvbid0IG92ZXJ3cml0ZSB0aGUgVVJMIHdoaWxlIHRoZSBBbmd1bGFyIHJvdXRlciBpcyBpbiB0aGUgcHJvY2Vzc1xuICAgIC8vIG9mIG5hdmlnYXRpbmcgKGUuZy4gd2hlbiB0aGUgdGFic2V0IGlzIGRlc3Ryb3llZCBkdWUgdG8gbmF2aWdhdGluZ1xuICAgIC8vIGF3YXkgZnJvbSB0aGUgY3VycmVudCBwYWdlKS5cbiAgICBpZiAoIXRoaXMuI3JvdXRlci5jdXJyZW50TmF2aWdhdGlvbigpKSB7XG4gICAgICB0aGlzLnNldFBhcmFtKG5hbWUsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVsYXRpdmUgVVJMIHRoYXQgaW5jbHVkZXMgdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlci4gVGhlIHZhbHVlIGlzIGludGVuZGVkIHRvIGJlXG4gICAqIHVzZWQgYnkgYW4gSFRNTCBhbmNob3IgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRQYXJhbUhyZWYobmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLiNnZXRQYXJhbXMoKTtcbiAgICBwYXJhbXNbbmFtZV0gPSB2YWx1ZTtcblxuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLiNsb2NhdGlvbi5wYXRoKCkuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCBwYXJhbVN0cmluZyA9IE9iamVjdC5rZXlzKHBhcmFtcylcbiAgICAgIC5tYXAoKGspID0+IGAke2t9PSR7cGFyYW1zW2tdfWApXG4gICAgICAuam9pbignJicpO1xuXG4gICAgcmV0dXJuIHRoaXMuI2xvY2F0aW9uLnByZXBhcmVFeHRlcm5hbFVybChgJHtiYXNlVXJsfT8ke3BhcmFtU3RyaW5nfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwcm92aWRlZCBzdHJpbmcgaW50byBhIHZhbHVlIHRoYXQgY2FuIGJlIHNhZmVseSB1c2VkIGluIGEgVVJMLlxuICAgKi9cbiAgcHVibGljIHVybGlmeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FuaXRpemVkID0gdmFsdWVcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG5cbiAgICAgIC8vIFJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnMuXG4gICAgICAucmVwbGFjZSgvW19+YEAhIyQlXiYqKClbXFxde307OicvXFxcXDw+LC4/PSt8XCJdL2csICcnKVxuXG4gICAgICAvLyBSZXBsYWNlIHNwYWNlIGNoYXJhY3RlcnMgd2l0aCBhIGRhc2guXG4gICAgICAucmVwbGFjZSgvXFxzL2csICctJylcblxuICAgICAgLy8gUmVtb3ZlIGFueSBkb3VibGUtZGFzaGVzLlxuICAgICAgLnJlcGxhY2UoLy0tL2csICctJyk7XG5cbiAgICByZXR1cm4gc2FuaXRpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIHF1ZXJ5IHBhcmFtcyB0aGF0IGV4aXN0IGluIHRoZSBjdXJyZW50IFVSTC5cbiAgICovXG4gICNnZXRQYXJhbXMoKTogUGVybWFsaW5rUGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXM6IFBlcm1hbGlua1BhcmFtcyA9IHt9O1xuXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuI2xvY2F0aW9uLnBhdGgoKTtcbiAgICBpZiAocGF0aC5pbmRleE9mKCc/JykgPT09IC0xKSB7XG4gICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nUGFyYW1QYWlycyA9IHBhdGguc3BsaXQoJz8nKVsxXS5zcGxpdCgnJicpO1xuICAgIGV4aXN0aW5nUGFyYW1QYWlycy5mb3JFYWNoKChwYWlyKSA9PiB7XG4gICAgICBjb25zdCBmcmFnbWVudHMgPSBwYWlyLnNwbGl0KCc9Jyk7XG4gICAgICBwYXJhbXNbZnJhZ21lbnRzWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudChmcmFnbWVudHNbMV0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuIl19","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, } from '@angular/core';\nimport { SkyResponsiveHostDirective } from '@skyux/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./tabset-permalink.service\";\nimport * as i2 from \"./tabset.service\";\nimport * as i3 from \"@skyux/core\";\nconst LAYOUT_CLASS_PREFIX = 'sky-layout-host-';\nconst LAYOUT_DEFAULT = 'none';\nlet nextId = 0;\nexport class SkyTabComponent {\n /**\n * Whether the tab is active when the tabset loads. After initialization, the `active`\n * property on the tabset component should be used to set the active tab.\n * @default false\n */\n set active(value) {\n if (value !== undefined && !!value !== this.#_active) {\n this.#_active = value;\n this.#activeChange.next();\n }\n }\n get active() {\n return this.#_active;\n }\n get activeChange() {\n return this.#activeChange;\n }\n /**\n * The custom query parameter value for the tab.\n * This works in conjunction with the tabset's `permalinkId` to distinguish\n * the tab's unique state in the URL by generating a query parameter that is\n * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n * By default, the query parameter's value is parsed automatically from the tab's heading text.\n * This input only applies when the tabset's `tabStyle` is `\"tabs\"`.\n */\n set permalinkValue(value) {\n this.#_permalinkValue = value;\n this.#setPermalinkValueOrDefault();\n }\n get permalinkValue() {\n return this.#_permalinkValue;\n }\n /**\n * The tab header.\n * When using tabs as the main navigation on a page,\n * use [the Angular `Title` service](https://angular.dev/api/platform-browser/Title)\n * and [the SKY UX page title guidelines](https://developer.blackbaud.com/skyux/design/guidelines/content#page-titles)\n * to reflect the tab header in the page title.\n * @required\n */\n set tabHeading(value) {\n this.#_tabHeading = value;\n this.#setPermalinkValueOrDefault();\n }\n get tabHeading() {\n return this.#_tabHeading;\n }\n /**\n * The unique identifier for the tab.\n * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n */\n set tabIndexValue(value) {\n if (value !== this.#_tabIndexValue &&\n value !== undefined &&\n this.#_tabIndexValue !== undefined) {\n this.#tabsetService.updateTabIndex(this.#_tabIndexValue, value);\n this.#tabIndexChange.next(value);\n }\n this.#_tabIndexValue = value;\n }\n get tabIndexValue() {\n return this.#_tabIndexValue;\n }\n /**\n * The tab layout that applies spacing to the tab container element. Use the layout\n * that corresponds with the top-level component type used within the tab, or use `fit` to\n * constrain the tab contents to the available viewport.\n * Use `none` for custom content that does not adhere to predefined spacing or constraints.\n * @default \"none\"\n */\n set layout(value) {\n const layout = value || LAYOUT_DEFAULT;\n this.#_layout = layout;\n this.cssClass = `${LAYOUT_CLASS_PREFIX}${layout}`;\n if (this.active) {\n this.#tabsetService.updateActiveTabLayout(layout);\n }\n }\n get layout() {\n return this.#_layout;\n }\n /**\n * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n */\n get stateChange() {\n return this.#stateChange;\n }\n get tabIndexChange() {\n return this.#tabIndexChange;\n }\n #_active;\n #activeChange;\n #_permalinkValue;\n #stateChange;\n #_tabHeading;\n #_tabIndexValue;\n #_layout;\n #tabIndexChange;\n #changeDetector;\n #permalinkService;\n #tabsetService;\n constructor(changeDetector, permalinkService, tabsetService) {\n this.cssClass = `${LAYOUT_CLASS_PREFIX}${LAYOUT_DEFAULT}`;\n /**\n * Fires when users click the button to close the tab.\n * The close button is added to the tab when you specify a listener for this event.\n * This event only applies when the tabset's `tabStyle` is `\"tabs\"`.\n */\n this.close = new EventEmitter(); // eslint-disable-line @angular-eslint/no-output-native\n this.permalinkValueOrDefault = '';\n this.showContent = false;\n this.#_active = false;\n this.#_layout = LAYOUT_DEFAULT;\n this.#changeDetector = changeDetector;\n this.#permalinkService = permalinkService;\n this.#tabsetService = tabsetService;\n const id = nextId++;\n this.tabPanelId = `sky-tab-${id}`;\n this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n this.#activeChange = new BehaviorSubject(undefined);\n this.#stateChange = new BehaviorSubject(undefined);\n this.#tabIndexChange = new BehaviorSubject(undefined);\n this.#setPermalinkValueOrDefault();\n }\n ngOnChanges(changes) {\n if ((changes['disabled'] && !changes['disabled'].firstChange) ||\n (changes['tabHeading'] && !changes['tabHeading'].firstChange) ||\n (changes['tabHeaderCount'] && !changes['tabHeaderCount'].firstChange) ||\n (changes['permalinkValue'] && !changes['permalinkValue'].firstChange)) {\n this.#stateChange.next();\n }\n }\n ngOnDestroy() {\n this.#activeChange.complete();\n this.#stateChange.complete();\n this.#tabIndexChange.complete();\n if (this.tabIndexValue !== undefined) {\n this.#tabsetService.unregisterTab(this.tabIndexValue);\n }\n }\n init() {\n this.#_tabIndexValue = this.#tabsetService.registerTab(this.tabIndexValue);\n }\n activate() {\n this.#_active = true;\n this.showContent = true;\n this.#changeDetector.markForCheck();\n }\n deactivate() {\n this.#_active = false;\n this.showContent = false;\n this.#changeDetector.markForCheck();\n }\n isCloseable() {\n return this.close.observers.length > 0;\n }\n #setPermalinkValueOrDefault() {\n this.permalinkValueOrDefault =\n this.#permalinkService.urlify(this.permalinkValue) ||\n this.#permalinkService.urlify(this.tabHeading);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyTabsetPermalinkService }, { token: i2.SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyTabComponent, isStandalone: false, selector: \"sky-tab\", inputs: { active: \"active\", disabled: \"disabled\", permalinkValue: \"permalinkValue\", tabHeaderCount: \"tabHeaderCount\", tabHeading: \"tabHeading\", tabIndexValue: \"tabIndexValue\", layout: \"layout\" }, outputs: { close: \"close\" }, host: { properties: { \"class\": \"this.cssClass\" } }, usesOnChanges: true, hostDirectives: [{ directive: i3.SkyResponsiveHostDirective }], ngImport: i0, template: \"<div\\n class=\\\"sky-tab\\\"\\n role=\\\"tabpanel\\\"\\n [attr.aria-labelledby]=\\\"tabButtonId\\\"\\n [hidden]=\\\"!showContent\\\"\\n [id]=\\\"tabPanelId\\\"\\n>\\n <ng-content />\\n</div>\\n\", styles: [\":host{display:block}:host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}:host.sky-layout-host-fit,:host.sky-layout-host-list{--sky-comp-override-list-header-background-color: var( --sky-color-background-container-dimmed )}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabComponent, decorators: [{\n type: Component,\n args: [{ hostDirectives: [SkyResponsiveHostDirective], selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<div\\n class=\\\"sky-tab\\\"\\n role=\\\"tabpanel\\\"\\n [attr.aria-labelledby]=\\\"tabButtonId\\\"\\n [hidden]=\\\"!showContent\\\"\\n [id]=\\\"tabPanelId\\\"\\n>\\n <ng-content />\\n</div>\\n\", styles: [\":host{display:block}:host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}:host.sky-layout-host-fit,:host.sky-layout-host-list{--sky-comp-override-list-header-background-color: var( --sky-color-background-container-dimmed )}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyTabsetPermalinkService }, { type: i2.SkyTabsetService }], propDecorators: { active: [{\n type: Input\n }], disabled: [{\n type: Input\n }], permalinkValue: [{\n type: Input\n }], tabHeaderCount: [{\n type: Input\n }], tabHeading: [{\n type: Input\n }], tabIndexValue: [{\n type: Input\n }], layout: [{\n type: Input\n }], cssClass: [{\n type: HostBinding,\n args: ['class']\n }], close: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7OztBQU9uRCxNQUFNLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO0FBQy9DLE1BQU0sY0FBYyxHQUFxQixNQUFNLENBQUM7QUFFaEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBVWYsTUFBTSxPQUFPLGVBQWU7SUFDMUI7Ozs7T0FJRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQTBCO1FBQzFDLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFTRDs7Ozs7OztP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LEtBQUs7O3NCQWdCTCxXQUFXO3VCQUFDLE9BQU87O3NCQVFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreVJlc3BvbnNpdmVIb3N0RGlyZWN0aXZlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5VGFiSW5kZXggfSBmcm9tICcuL3RhYi1pbmRleCc7XG5pbXBvcnQgeyBTa3lUYWJMYXlvdXRUeXBlIH0gZnJvbSAnLi90YWItbGF5b3V0LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSB9IGZyb20gJy4vdGFic2V0LXBlcm1hbGluay5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRhYnNldFNlcnZpY2UgfSBmcm9tICcuL3RhYnNldC5zZXJ2aWNlJztcblxuY29uc3QgTEFZT1VUX0NMQVNTX1BSRUZJWCA9ICdza3ktbGF5b3V0LWhvc3QtJztcbmNvbnN0IExBWU9VVF9ERUZBVUxUOiBTa3lUYWJMYXlvdXRUeXBlID0gJ25vbmUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIGhvc3REaXJlY3RpdmVzOiBbU2t5UmVzcG9uc2l2ZUhvc3REaXJlY3RpdmVdLFxuICBzZWxlY3RvcjogJ3NreS10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFiIGlzIGFjdGl2ZSB3aGVuIHRoZSB0YWJzZXQgbG9hZHMuIEFmdGVyIGluaXRpYWxpemF0aW9uLCB0aGUgYGFjdGl2ZWBcbiAgICogcHJvcGVydHkgb24gdGhlIHRhYnNldCBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZSBhY3RpdmUgdGFiLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhY3RpdmUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhIXZhbHVlICE9PSB0aGlzLiNfYWN0aXZlKSB7XG4gICAgICB0aGlzLiNfYWN0aXZlID0gdmFsdWU7XG4gICAgICB0aGlzLiNhY3RpdmVDaGFuZ2UubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfYWN0aXZlO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVDaGFuZ2UoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2FjdGl2ZUNoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHRhYi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSBxdWVyeSBwYXJhbWV0ZXIgdmFsdWUgZm9yIHRoZSB0YWIuXG4gICAqIFRoaXMgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgdGFic2V0J3MgYHBlcm1hbGlua0lkYCB0byBkaXN0aW5ndWlzaFxuICAgKiB0aGUgdGFiJ3MgdW5pcXVlIHN0YXRlIGluIHRoZSBVUkwgYnkgZ2VuZXJhdGluZyBhIHF1ZXJ5IHBhcmFtZXRlciB0aGF0IGlzXG4gICAqIHdyaXR0ZW4gYXMgYD88cXVlcnlQYXJhbT4tYWN0aXZlLXRhYj08c2FuaXRpemVkLXRhYi1oZWFkaW5nYC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIHF1ZXJ5IHBhcmFtZXRlcidzIHZhbHVlIGlzIHBhcnNlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHRhYidzIGhlYWRpbmcgdGV4dC5cbiAgICogVGhpcyBpbnB1dCBvbmx5IGFwcGxpZXMgd2hlbiB0aGUgdGFic2V0J3MgYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwZXJtYWxpbmtWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3Blcm1hbGlua1ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy4jc2V0UGVybWFsaW5rVmFsdWVPckRlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVybWFsaW5rVmFsdWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3Blcm1hbGlua1ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgY291bnRlciBiZXNpZGUgdGhlIHRhYiBoZWFkZXIuXG4gICAqIFRoaXMgaW5wdXQgb25seSBhcHBsaWVzIHdoZW4gdGhlIHRhYnNldCdzIGB0YWJTdHlsZWAgaXMgYFwidGFic1wiYC5cbiAgICogQGRlcHJlY2F0ZWQgU0tZIFVYIG5vIGxvbmdlciByZWNvbW1lbmRzIGFkZGluZyBjb3VudHMgdG8gdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0YWJIZWFkZXJDb3VudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFiIGhlYWRlci5cbiAgICogV2hlbiB1c2luZyB0YWJzIGFzIHRoZSBtYWluIG5hdmlnYXRpb24gb24gYSBwYWdlLFxuICAgKiB1c2UgW3RoZSBBbmd1bGFyIGBUaXRsZWAgc2VydmljZV0oaHR0cHM6Ly9hbmd1bGFyLmRldi9hcGkvcGxhdGZvcm0tYnJvd3Nlci9UaXRsZSlcbiAgICogYW5kIFt0aGUgU0tZIFVYIHBhZ2UgdGl0bGUgZ3VpZGVsaW5lc10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy9jb250ZW50I3BhZ2UtdGl0bGVzKVxuICAgKiB0byByZWZsZWN0IHRoZSB0YWIgaGVhZGVyIGluIHRoZSBwYWdlIHRpdGxlLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSGVhZGluZyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RhYkhlYWRpbmcgPSB2YWx1ZTtcblxuICAgIHRoaXMuI3NldFBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYkhlYWRpbmcoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYkhlYWRpbmc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdGFiLlxuICAgKiBJZiBub3QgZGVmaW5lZCwgdGhlIGlkZW50aWZpZXIgaXMgc2V0IHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFiIG9uIGxvYWQsIHN0YXJ0aW5nIHdpdGggYDBgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJJbmRleFZhbHVlKHZhbHVlOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB0aGlzLiNfdGFiSW5kZXhWYWx1ZSAmJlxuICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy4jX3RhYkluZGV4VmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS51cGRhdGVUYWJJbmRleCh0aGlzLiNfdGFiSW5kZXhWYWx1ZSwgdmFsdWUpO1xuICAgICAgdGhpcy4jdGFiSW5kZXhDaGFuZ2UubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy4jX3RhYkluZGV4VmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiSW5kZXhWYWx1ZSgpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJJbmRleFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0YWIgbGF5b3V0IHRoYXQgYXBwbGllcyBzcGFjaW5nIHRvIHRoZSB0YWIgY29udGFpbmVyIGVsZW1lbnQuIFVzZSB0aGUgbGF5b3V0XG4gICAqIHRoYXQgY29ycmVzcG9uZHMgd2l0aCB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCB0eXBlIHVzZWQgd2l0aGluIHRoZSB0YWIsIG9yIHVzZSBgZml0YCB0b1xuICAgKiBjb25zdHJhaW4gdGhlIHRhYiBjb250ZW50cyB0byB0aGUgYXZhaWxhYmxlIHZpZXdwb3J0LlxuICAgKiBVc2UgYG5vbmVgIGZvciBjdXN0b20gY29udGVudCB0aGF0IGRvZXMgbm90IGFkaGVyZSB0byBwcmVkZWZpbmVkIHNwYWNpbmcgb3IgY29uc3RyYWludHMuXG4gICAqIEBkZWZhdWx0IFwibm9uZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxheW91dCh2YWx1ZTogU2t5VGFiTGF5b3V0VHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGxheW91dCA9IHZhbHVlIHx8IExBWU9VVF9ERUZBVUxUO1xuXG4gICAgdGhpcy4jX2xheW91dCA9IGxheW91dDtcbiAgICB0aGlzLmNzc0NsYXNzID0gYCR7TEFZT1VUX0NMQVNTX1BSRUZJWH0ke2xheW91dH1gO1xuXG4gICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnVwZGF0ZUFjdGl2ZVRhYkxheW91dChsYXlvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGF5b3V0KCk6IFNreVRhYkxheW91dFR5cGUge1xuICAgIHJldHVybiB0aGlzLiNfbGF5b3V0O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyBjc3NDbGFzcyA9IGAke0xBWU9VVF9DTEFTU19QUkVGSVh9JHtMQVlPVVRfREVGQVVMVH1gO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNsaWNrIHRoZSBidXR0b24gdG8gY2xvc2UgdGhlIHRhYi5cbiAgICogVGhlIGNsb3NlIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgdGFiIHdoZW4geW91IHNwZWNpZnkgYSBsaXN0ZW5lciBmb3IgdGhpcyBldmVudC5cbiAgICogVGhpcyBldmVudCBvbmx5IGFwcGxpZXMgd2hlbiB0aGUgdGFic2V0J3MgYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuXG4gIC8qKlxuICAgKiBBbGVydHMgdGhlIHRhYnNldCBjb21wb25lbnQgd2hlbiB0aGlzIGNvbXBvbmVudCBoYXMgY2hhbmdlcyB0aGF0IG5lZWQgdG8gYmUgcmVmbGVjdGVkIGluIHRoZSBVSS5cbiAgICovXG4gIHB1YmxpYyBnZXQgc3RhdGVDaGFuZ2UoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI3N0YXRlQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJJbmRleENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreVRhYkluZGV4IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuI3RhYkluZGV4Q2hhbmdlO1xuICB9XG5cbiAgcHVibGljIHBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0ID0gJyc7XG5cbiAgcHVibGljIHNob3dDb250ZW50ID0gZmFsc2U7XG5cbiAgcHVibGljIHRhYkJ1dHRvbklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHRhYlBhbmVsSWQ6IHN0cmluZztcblxuICAjX2FjdGl2ZSA9IGZhbHNlO1xuXG4gICNhY3RpdmVDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDx2b2lkIHwgdW5kZWZpbmVkPjtcblxuICAjX3Blcm1hbGlua1ZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI3N0YXRlQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8dm9pZD47XG5cbiAgI190YWJIZWFkaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI190YWJJbmRleFZhbHVlOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcblxuICAjX2xheW91dDogU2t5VGFiTGF5b3V0VHlwZSA9IExBWU9VVF9ERUZBVUxUO1xuXG4gICN0YWJJbmRleENoYW5nZTogQmVoYXZpb3JTdWJqZWN0PFNreVRhYkluZGV4IHwgdW5kZWZpbmVkPjtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZTtcbiAgI3RhYnNldFNlcnZpY2U6IFNreVRhYnNldFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHBlcm1hbGlua1NlcnZpY2U6IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlID0gcGVybWFsaW5rU2VydmljZTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlID0gdGFic2V0U2VydmljZTtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIHRoaXMudGFiUGFuZWxJZCA9IGBza3ktdGFiLSR7aWR9YDtcbiAgICB0aGlzLnRhYkJ1dHRvbklkID0gYCR7dGhpcy50YWJQYW5lbElkfS1uYXYtYnRuYDtcblxuICAgIHRoaXMuI2FjdGl2ZUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICB0aGlzLiNzdGF0ZUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcbiAgICB0aGlzLiN0YWJJbmRleENoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2t5VGFiSW5kZXggfCB1bmRlZmluZWQ+KFxuICAgICAgdW5kZWZpbmVkLFxuICAgICk7XG5cbiAgICB0aGlzLiNzZXRQZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAoY2hhbmdlc1snZGlzYWJsZWQnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWQnXS5maXJzdENoYW5nZSkgfHxcbiAgICAgIChjaGFuZ2VzWyd0YWJIZWFkaW5nJ10gJiYgIWNoYW5nZXNbJ3RhYkhlYWRpbmcnXS5maXJzdENoYW5nZSkgfHxcbiAgICAgIChjaGFuZ2VzWyd0YWJIZWFkZXJDb3VudCddICYmICFjaGFuZ2VzWyd0YWJIZWFkZXJDb3VudCddLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgKGNoYW5nZXNbJ3Blcm1hbGlua1ZhbHVlJ10gJiYgIWNoYW5nZXNbJ3Blcm1hbGlua1ZhbHVlJ10uZmlyc3RDaGFuZ2UpXG4gICAgKSB7XG4gICAgICB0aGlzLiNzdGF0ZUNoYW5nZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2FjdGl2ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3N0YXRlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jdGFiSW5kZXhDaGFuZ2UuY29tcGxldGUoKTtcbiAgICBpZiAodGhpcy50YWJJbmRleFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UudW5yZWdpc3RlclRhYih0aGlzLnRhYkluZGV4VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI190YWJJbmRleFZhbHVlID0gdGhpcy4jdGFic2V0U2VydmljZS5yZWdpc3RlclRhYih0aGlzLnRhYkluZGV4VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuI19hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuc2hvd0NvbnRlbnQgPSB0cnVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGRlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgdGhpcy4jX2FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0NvbnRlbnQgPSBmYWxzZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Nsb3NlYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZS5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gICNzZXRQZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0ID1cbiAgICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2UudXJsaWZ5KHRoaXMucGVybWFsaW5rVmFsdWUpIHx8XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnVybGlmeSh0aGlzLnRhYkhlYWRpbmcpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LXRhYlwiXG4gIHJvbGU9XCJ0YWJwYW5lbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0YWJCdXR0b25JZFwiXG4gIFtoaWRkZW5dPVwiIXNob3dDb250ZW50XCJcbiAgW2lkXT1cInRhYlBhbmVsSWRcIlxuPlxuICA8bmctY29udGVudCAvPlxuPC9kaXY+XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SkyTabsetNavButtonDisabledPipe {\n transform(disabled, buttonType, tabToSelectExists, tabToSelectIsDisabled) {\n if (disabled !== undefined) {\n return disabled;\n }\n else if (buttonType === 'finish') {\n return false;\n }\n return !tabToSelectExists || !!tabToSelectIsDisabled;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetNavButtonDisabledPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetNavButtonDisabledPipe, isStandalone: false, name: \"skyTabsetNavButtonDisabled\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetNavButtonDisabledPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyTabsetNavButtonDisabled',\n standalone: false,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LW5hdi1idXR0b24tZGlzYWJsZWQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYnNldC1uYXYtYnV0dG9uLWRpc2FibGVkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBUXBELE1BQU0sT0FBTyw4QkFBOEI7SUFDbEMsU0FBUyxDQUNkLFFBQTZCLEVBQzdCLFVBQTRDLEVBQzVDLGlCQUEyQixFQUMzQixxQkFBK0I7UUFFL0IsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMscUJBQXFCLENBQUM7SUFDdkQsQ0FBQzsrR0FkVSw4QkFBOEI7NkdBQTlCLDhCQUE4Qjs7NEZBQTlCLDhCQUE4QjtrQkFKMUMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsNEJBQTRCO29CQUNsQyxVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVRhYnNldE5hdkJ1dHRvblR5cGUgfSBmcm9tICcuL3RhYnNldC1uYXYtYnV0dG9uLXR5cGUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdza3lUYWJzZXROYXZCdXR0b25EaXNhYmxlZCcsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUYWJzZXROYXZCdXR0b25EaXNhYmxlZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHVibGljIHRyYW5zZm9ybShcbiAgICBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgICBidXR0b25UeXBlPzogU2t5VGFic2V0TmF2QnV0dG9uVHlwZSB8IHN0cmluZyxcbiAgICB0YWJUb1NlbGVjdEV4aXN0cz86IGJvb2xlYW4sXG4gICAgdGFiVG9TZWxlY3RJc0Rpc2FibGVkPzogYm9vbGVhbixcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKGRpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBkaXNhYmxlZDtcbiAgICB9IGVsc2UgaWYgKGJ1dHRvblR5cGUgPT09ICdmaW5pc2gnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICF0YWJUb1NlbGVjdEV4aXN0cyB8fCAhIXRhYlRvU2VsZWN0SXNEaXNhYmxlZDtcbiAgfVxufVxuIl19","import { Component, HostBinding, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@skyux/i18n\";\nimport * as i4 from \"./tabset-nav-button-disabled.pipe\";\nconst buttonTypeNext = 'next';\nconst buttonTypePrevious = 'previous';\nconst buttonTypeFinish = 'finish';\n/**\n * Creates a button to navigate between tabs in a tabset when `tabStyle` is `\"wizard\"`.\n */\nexport class SkyTabsetNavButtonComponent {\n /**\n * The tabset wizard component to associate with the nav button.\n * @required\n */\n get tabset() {\n return this.#_tabset;\n }\n set tabset(value) {\n this.#_tabset = value;\n if (this.#currentTabsetSub) {\n this.#currentTabsetSub.unsubscribe();\n }\n if (value) {\n this.#currentTabsetSub = value.activeChange\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((index) => {\n this.#activeSkyTabIndex = index;\n this.#tabCount = this.#_tabset?.tabs?.length;\n this.#updateTabToSelect();\n this.#updateButtonVisibility();\n this.#updateButtonProperties();\n });\n }\n else {\n this.#logger.error('The SkyTabsetNavButtonComponent requires a reference to the SkyTabsetComponent it controls.');\n }\n }\n /**\n * The type of nav button to include.\n * @required\n */\n get buttonType() {\n return this.#_buttonType;\n }\n set buttonType(value) {\n this.#_buttonType = value;\n this.#updateTabToSelect();\n this.#updateButtonProperties();\n this.#updateButtonVisibility();\n if (value === buttonTypeFinish) {\n this.type = 'submit';\n }\n else {\n this.type = 'button';\n }\n }\n get buttonTypeData() {\n return this.buttonType;\n }\n /**\n * Whether to disable the nav button.\n * Defaults to the disabled state of the next tab for `next`, the existence of a previous tab for `previous`,\n * and false for `finish`.\n */\n set disabled(value) {\n this.#_disabled = value;\n }\n get disabled() {\n return this.#_disabled;\n }\n #_buttonType;\n #_disabled;\n #_tabset;\n #activeIndexNumber;\n #activeSkyTabIndex;\n #currentTabsetSub;\n #logger;\n #tabCount;\n #ngUnsubscribe;\n constructor(logger) {\n this.isVisible = false;\n this.type = 'submit';\n this.#ngUnsubscribe = new Subject();\n this.#logger = logger;\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n buttonClick() {\n /* istanbul ignore else */\n if (this.tabToSelect && !this.tabToSelect.disabled && this.tabset) {\n this.tabset.active = this.tabToSelect.tabIndexValue;\n }\n }\n #updateButtonVisibility() {\n const isLastStep = !!this.#tabCount && this.#activeIndexNumber === this.#tabCount - 1;\n if (this.buttonType === buttonTypeFinish) {\n this.isVisible = isLastStep;\n }\n else if (this.buttonType === buttonTypeNext) {\n this.isVisible = !isLastStep;\n }\n else {\n this.isVisible = true;\n }\n }\n #updateButtonProperties() {\n if (this.buttonType === buttonTypeNext ||\n this.buttonType === buttonTypeFinish) {\n this.buttonClassName = 'sky-btn-primary';\n }\n else {\n this.buttonClassName = 'sky-btn-default';\n }\n this.ariaControls = this.tabToSelect?.tabPanelId;\n }\n #updateTabToSelect() {\n if (this.tabset?.tabs) {\n const tabs = this.tabset.tabs.toArray();\n this.tabToSelect = undefined;\n // tab index can be a number or a string, but we need the actual number index\n this.#activeIndexNumber = tabs.findIndex((tab) => tab.tabIndexValue === this.#activeSkyTabIndex);\n /* istanbul ignore else */\n if (this.#activeIndexNumber !== undefined) {\n if (this.buttonType === buttonTypeNext) {\n this.tabToSelect = tabs[this.#activeIndexNumber + 1];\n }\n else if (this.buttonType === buttonTypePrevious) {\n this.tabToSelect = tabs[this.#activeIndexNumber - 1];\n }\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetNavButtonComponent, deps: [{ token: i1.SkyLogService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyTabsetNavButtonComponent, isStandalone: false, selector: \"sky-tabset-nav-button\", inputs: { tabset: \"tabset\", buttonType: \"buttonType\", buttonText: \"buttonText\", disabled: \"disabled\" }, host: { properties: { \"attr.data-button-type\": \"this.buttonTypeData\" } }, ngImport: i0, template: \"@if (isVisible) {\\n <button\\n class=\\\"sky-btn sky-margin-inline-sm\\\"\\n [attr.aria-controls]=\\\"ariaControls\\\"\\n [disabled]=\\\"\\n disabled\\n | skyTabsetNavButtonDisabled\\n : buttonType\\n : !!tabToSelect\\n : tabToSelect?.disabled\\n \\\"\\n [ngClass]=\\\"buttonClassName\\\"\\n [type]=\\\"type\\\"\\n (click)=\\\"buttonType === 'finish' ? null : buttonClick()\\\"\\n >\\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\\n </button>\\n}\\n\", dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: i3.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"pipe\", type: i4.SkyTabsetNavButtonDisabledPipe, name: \"skyTabsetNavButtonDisabled\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetNavButtonComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-tabset-nav-button', standalone: false, template: \"@if (isVisible) {\\n <button\\n class=\\\"sky-btn sky-margin-inline-sm\\\"\\n [attr.aria-controls]=\\\"ariaControls\\\"\\n [disabled]=\\\"\\n disabled\\n | skyTabsetNavButtonDisabled\\n : buttonType\\n : !!tabToSelect\\n : tabToSelect?.disabled\\n \\\"\\n [ngClass]=\\\"buttonClassName\\\"\\n [type]=\\\"type\\\"\\n (click)=\\\"buttonType === 'finish' ? null : buttonClick()\\\"\\n >\\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\\n </button>\\n}\\n\" }]\n }], ctorParameters: () => [{ type: i1.SkyLogService }], propDecorators: { tabset: [{\n type: Input\n }], buttonType: [{\n type: Input\n }], buttonTypeData: [{\n type: HostBinding,\n args: ['attr.data-button-type']\n }], buttonText: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LW5hdi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYnMvc3JjL2xpYi9tb2R1bGVzL3RhYnMvdGFic2V0LW5hdi1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYnMvc3JjL2xpYi9tb2R1bGVzL3RhYnMvdGFic2V0LW5hdi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBT2pFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUM5QixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztBQUN0QyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztBQUVsQzs7R0FFRztBQU1ILE1BQU0sT0FBTywyQkFBMkI7SUFDdEM7OztPQUdHO0lBQ0gsSUFDVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLE1BQU0sQ0FBQyxLQUFxQztRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsWUFBWTtpQkFDeEMsSUFBSSxD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LGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxrQkFBa0IsRUFBRSxDQUFDO29CQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7K0dBaEtVLDJCQUEyQjttR0FBM0IsMkJBQTJCLG9RQ3ZCeEMsNmZBa0JBOzs0RkRLYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBRXJCLEtBQUs7O3NCQU9oQixLQUFLOztzQkFpQ0wsS0FBSzs7c0JBa0JMLFdBQVc7dUJBQUMsdUJBQXVCOztzQkFTbkMsS0FBSzs7c0JBUUwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VGFiSW5kZXggfSBmcm9tICcuL3RhYi1pbmRleCc7XG5pbXBvcnQgeyBTa3lUYWJDb21wb25lbnQgfSBmcm9tICcuL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGFic2V0TmF2QnV0dG9uVHlwZSB9IGZyb20gJy4vdGFic2V0LW5hdi1idXR0b24tdHlwZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRDb21wb25lbnQgfSBmcm9tICcuL3RhYnNldC5jb21wb25lbnQnO1xuXG5jb25zdCBidXR0b25UeXBlTmV4dCA9ICduZXh0JztcbmNvbnN0IGJ1dHRvblR5cGVQcmV2aW91cyA9ICdwcmV2aW91cyc7XG5jb25zdCBidXR0b25UeXBlRmluaXNoID0gJ2ZpbmlzaCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJ1dHRvbiB0byBuYXZpZ2F0ZSBiZXR3ZWVuIHRhYnMgaW4gYSB0YWJzZXQgd2hlbiBgdGFiU3R5bGVgIGlzIGBcIndpemFyZFwiYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRhYnNldC1uYXYtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYnNldC1uYXYtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRhYnNldE5hdkJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgdGFic2V0IHdpemFyZCBjb21wb25lbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhlIG5hdiBidXR0b24uXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB0YWJzZXQoKTogU2t5VGFic2V0Q29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYnNldDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdGFic2V0KHZhbHVlOiBTa3lUYWJzZXRDb21wb25lbnQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfdGFic2V0ID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy4jY3VycmVudFRhYnNldFN1Yikge1xuICAgICAgdGhpcy4jY3VycmVudFRhYnNldFN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jY3VycmVudFRhYnNldFN1YiA9IHZhbHVlLmFjdGl2ZUNoYW5nZVxuICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGluZGV4OiBTa3lUYWJJbmRleCkgPT4ge1xuICAgICAgICAgIHRoaXMuI2FjdGl2ZVNreVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgdGhpcy4jdGFiQ291bnQgPSB0aGlzLiNfdGFic2V0Py50YWJzPy5sZW5ndGg7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlVGFiVG9TZWxlY3QoKTtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVCdXR0b25WaXNpYmlsaXR5KCk7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlQnV0dG9uUHJvcGVydGllcygpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jbG9nZ2VyLmVycm9yKFxuICAgICAgICAnVGhlIFNreVRhYnNldE5hdkJ1dHRvbkNvbXBvbmVudCByZXF1aXJlcyBhIHJlZmVyZW5jZSB0byB0aGUgU2t5VGFic2V0Q29tcG9uZW50IGl0IGNvbnRyb2xzLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBuYXYgYnV0dG9uIHRvIGluY2x1ZGUuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBidXR0b25UeXBlKCk6IFNreVRhYnNldE5hdkJ1dHRvblR5cGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYnV0dG9uVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYnV0dG9uVHlwZSh2YWx1ZTogU2t5VGFic2V0TmF2QnV0dG9uVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19idXR0b25UeXBlID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlVGFiVG9TZWxlY3QoKTtcbiAgICB0aGlzLiN1cGRhdGVCdXR0b25Qcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy4jdXBkYXRlQnV0dG9uVmlzaWJpbGl0eSgpO1xuXG4gICAgaWYgKHZhbHVlID09PSBidXR0b25UeXBlRmluaXNoKSB7XG4gICAgICB0aGlzLnR5cGUgPSAnc3VibWl0JztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50eXBlID0gJ2J1dHRvbic7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtYnV0dG9uLXR5cGUnKVxuICBwdWJsaWMgZ2V0IGJ1dHRvblR5cGVEYXRhKCk6IFNreVRhYnNldE5hdkJ1dHRvblR5cGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxhYmVsIHRvIGRpc3BsYXkgb24gdGhlIG5hdiBidXR0b24uIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBkZWZhdWx0cyBmb3IgZWFjaCBgYnV0dG9uVHlwZWA6XG4gICAqIGBuZXh0YCA9IFwiTmV4dFwiLCBgcHJldmlvdXNgID0gXCJQcmV2aW91c1wiLCBgZmluaXNoYCA9IFwiRmluaXNoXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBidXR0b25UZXh0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIG5hdiBidXR0b24uXG4gICAqIERlZmF1bHRzIHRvIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgbmV4dCB0YWIgZm9yIGBuZXh0YCwgdGhlIGV4aXN0ZW5jZSBvZiBhIHByZXZpb3VzIHRhYiBmb3IgYHByZXZpb3VzYCxcbiAgICogYW5kIGZhbHNlIGZvciBgZmluaXNoYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBidXR0b25DbGFzc05hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgdHlwZTogJ3N1Ym1pdCcgfCAnYnV0dG9uJyA9ICdzdWJtaXQnO1xuICBwdWJsaWMgYXJpYUNvbnRyb2xzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIHRhYlRvU2VsZWN0OiBTa3lUYWJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI19idXR0b25UeXBlOiBTa3lUYWJzZXROYXZCdXR0b25UeXBlIHwgdW5kZWZpbmVkO1xuICAjX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAjX3RhYnNldDogU2t5VGFic2V0Q29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAjYWN0aXZlSW5kZXhOdW1iZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI2FjdGl2ZVNreVRhYkluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcbiAgI2N1cnJlbnRUYWJzZXRTdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgI2xvZ2dlcjogU2t5TG9nU2VydmljZTtcbiAgI3RhYkNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihsb2dnZXI6IFNreUxvZ1NlcnZpY2UpIHtcbiAgICB0aGlzLiNsb2dnZXIgPSBsb2dnZXI7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMudGFiVG9TZWxlY3QgJiYgIXRoaXMudGFiVG9TZWxlY3QuZGlzYWJsZWQgJiYgdGhpcy50YWJzZXQpIHtcbiAgICAgIHRoaXMudGFic2V0LmFjdGl2ZSA9IHRoaXMudGFiVG9TZWxlY3QudGFiSW5kZXhWYWx1ZTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQnV0dG9uVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0xhc3RTdGVwID1cbiAgICAgICEhdGhpcy4jdGFiQ291bnQgJiYgdGhpcy4jYWN0aXZlSW5kZXhOdW1iZXIgPT09IHRoaXMuI3RhYkNvdW50IC0gMTtcblxuICAgIGlmICh0aGlzLmJ1dHRvblR5cGUgPT09IGJ1dHRvblR5cGVGaW5pc2gpIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gaXNMYXN0U3RlcDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnV0dG9uVHlwZSA9PT0gYnV0dG9uVHlwZU5leHQpIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gIWlzTGFzdFN0ZXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQnV0dG9uUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmJ1dHRvblR5cGUgPT09IGJ1dHRvblR5cGVOZXh0IHx8XG4gICAgICB0aGlzLmJ1dHRvblR5cGUgPT09IGJ1dHRvblR5cGVGaW5pc2hcbiAgICApIHtcbiAgICAgIHRoaXMuYnV0dG9uQ2xhc3NOYW1lID0gJ3NreS1idG4tcHJpbWFyeSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnV0dG9uQ2xhc3NOYW1lID0gJ3NreS1idG4tZGVmYXVsdCc7XG4gICAgfVxuXG4gICAgdGhpcy5hcmlhQ29udHJvbHMgPSB0aGlzLnRhYlRvU2VsZWN0Py50YWJQYW5lbElkO1xuICB9XG5cbiAgI3VwZGF0ZVRhYlRvU2VsZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYnNldD8udGFicykge1xuICAgICAgY29uc3QgdGFicyA9IHRoaXMudGFic2V0LnRhYnMudG9BcnJheSgpO1xuICAgICAgdGhpcy50YWJUb1NlbGVjdCA9IHVuZGVmaW5lZDtcblxuICAgICAgLy8gdGFiIGluZGV4IGNhbiBiZSBhIG51bWJlciBvciBhIHN0cmluZywgYnV0IHdlIG5lZWQgdGhlIGFjdHVhbCBudW1iZXIgaW5kZXhcbiAgICAgIHRoaXMuI2FjdGl2ZUluZGV4TnVtYmVyID0gdGFicy5maW5kSW5kZXgoXG4gICAgICAgICh0YWIpID0+IHRhYi50YWJJbmRleFZhbHVlID09PSB0aGlzLiNhY3RpdmVTa3lUYWJJbmRleCxcbiAgICAgICk7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAodGhpcy4jYWN0aXZlSW5kZXhOdW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodGhpcy5idXR0b25UeXBlID09PSBidXR0b25UeXBlTmV4dCkge1xuICAgICAgICAgIHRoaXMudGFiVG9TZWxlY3QgPSB0YWJzW3RoaXMuI2FjdGl2ZUluZGV4TnVtYmVyICsgMV07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5idXR0b25UeXBlID09PSBidXR0b25UeXBlUHJldmlvdXMpIHtcbiAgICAgICAgICB0aGlzLnRhYlRvU2VsZWN0ID0gdGFic1t0aGlzLiNhY3RpdmVJbmRleE51bWJlciAtIDFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKGlzVmlzaWJsZSkge1xuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJza3ktYnRuIHNreS1tYXJnaW4taW5saW5lLXNtXCJcbiAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9sc1wiXG4gICAgW2Rpc2FibGVkXT1cIlxuICAgICAgZGlzYWJsZWRcbiAgICAgICAgfCBza3lUYWJzZXROYXZCdXR0b25EaXNhYmxlZFxuICAgICAgICAgIDogYnV0dG9uVHlwZVxuICAgICAgICAgIDogISF0YWJUb1NlbGVjdFxuICAgICAgICAgIDogdGFiVG9TZWxlY3Q/LmRpc2FibGVkXG4gICAgXCJcbiAgICBbbmdDbGFzc109XCJidXR0b25DbGFzc05hbWVcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIChjbGljayk9XCJidXR0b25UeXBlID09PSAnZmluaXNoJyA/IG51bGwgOiBidXR0b25DbGljaygpXCJcbiAgPlxuICAgIHt7IGJ1dHRvblRleHQgfHwgKCdza3l1eF90YWJzX25hdmlnYXRvcl8nICsgYnV0dG9uVHlwZSB8IHNreUxpYlJlc291cmNlcykgfX1cbiAgPC9idXR0b24+XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyTabsetAdapterService {\n get overflowChange() {\n return this.#overflowChange;\n }\n #currentOverflow = false;\n #tabsetRef;\n #tabsOffsetLeft;\n #overflowChange;\n constructor() {\n this.#overflowChange = new BehaviorSubject(false);\n }\n ngOnDestroy() {\n this.#overflowChange.complete();\n }\n registerTabset(tabsetRef) {\n this.#tabsetRef = tabsetRef;\n this.#tabsOffsetLeft = this.#getTabsOffsetLeft(tabsetRef.nativeElement);\n }\n /**\n * Detects if the tab buttons are wider than the tabset container.\n */\n detectOverflow() {\n const nativeElement = this.#tabsetRef?.nativeElement;\n const tabsetRect = nativeElement\n .querySelector('.sky-tabset')\n .getBoundingClientRect();\n const tabButtonsRect = nativeElement\n .querySelector('.sky-tabset-tabs')\n .getBoundingClientRect();\n const tabExtraButtonsRect = nativeElement\n .querySelector('.sky-tabset-btns')\n .getBoundingClientRect();\n const tabButtonsWidth = tabButtonsRect.width + tabExtraButtonsRect.width + this.#tabsOffsetLeft;\n const newOverflow = tabButtonsWidth > tabsetRect.width;\n if (this.#currentOverflow !== newOverflow) {\n this.#currentOverflow = newOverflow;\n this.#overflowChange.next(this.#currentOverflow);\n }\n }\n /**\n * Returns the number of pixels to the left of the first tab.\n */\n #getTabsOffsetLeft(tabsetEl) {\n const tabsetRect = tabsetEl.getBoundingClientRect();\n // The dropdown element is the first \"tab\" and always exists in the DOM, even when hidden.\n const firstTabRect = tabsetEl\n .querySelector('.sky-tabset-dropdown')\n ?.getBoundingClientRect();\n // Safety check\n /* istanbul ignore next */\n if (!firstTabRect) {\n return 0;\n }\n return firstTabRect.left - tabsetRect.left;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetAdapterService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYnNldC1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVsRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUVuRDs7R0FFRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBRXpCLFVBQVUsQ0FBeUI7SUFFbkMsZUFBZSxDQUFxQjtJQUVwQyxlQUFlLENBQTJCO0lBRTFDO1FBQ0UsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxjQUFjLENBQUMsU0FBcUI7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDbkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUM7UUFFckQsTUFBTSxVQUFVLEdBQUcsYUFBYTthQUM3QixhQUFhLENBQUMsYUFBYSxDQUFDO2FBQzVCLHFCQUFxQixFQUFFLENBQUM7UUFFM0IsTUFBTSxjQUFjLEdBQUcsYUFBYTthQUNqQyxhQUFhLENBQUMsa0JBQWtCLENBQUM7YUFDakMscUJBQXFCLEVBQUUsQ0FBQztRQUUzQixNQUFNLG1CQUFtQixHQUFHLGFBQWE7YUFDdEMsYUFBYSxDQUFDLGtCQUFrQixDQUFDO2FBQ2pDLHFCQUFxQixFQUFFLENBQUM7UUFFM0IsTUFBTSxlQUFlLEdBQ25CLGNBQWMsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFMUUsTUFBTSxXQUFXLEdBQUcsZUFBZSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsUUFBcUI7UUFDdEMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFcEQsMEZBQTBGO1FBQzFGLE1BQU0sWUFBWSxHQUFHLFFBQVE7YUFDMUIsYUFBYSxDQUFDLHNCQUFzQixDQUFDO1lBQ3RDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztRQUU1QixlQUFlO1FBQ2YsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUM3QyxDQUFDOytHQXhFVSx1QkFBdUI7bUhBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIGdldCBvdmVyZmxvd0NoYW5nZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy4jb3ZlcmZsb3dDaGFuZ2U7XG4gIH1cblxuICAjY3VycmVudE92ZXJmbG93ID0gZmFsc2U7XG5cbiAgI3RhYnNldFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjdGFic09mZnNldExlZnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjb3ZlcmZsb3dDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNvdmVyZmxvd0NoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI292ZXJmbG93Q2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJUYWJzZXQodGFic2V0UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0UmVmID0gdGFic2V0UmVmO1xuICAgIHRoaXMuI3RhYnNPZmZzZXRMZWZ0ID0gdGhpcy4jZ2V0VGFic09mZnNldExlZnQodGFic2V0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVjdHMgaWYgdGhlIHRhYiBidXR0b25zIGFyZSB3aWRlciB0aGFuIHRoZSB0YWJzZXQgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIGRldGVjdE92ZXJmbG93KCk6IHZvaWQge1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLiN0YWJzZXRSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCB0YWJzZXRSZWN0ID0gbmF0aXZlRWxlbWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5za3ktdGFic2V0JylcbiAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IHRhYkJ1dHRvbnNSZWN0ID0gbmF0aXZlRWxlbWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5za3ktdGFic2V0LXRhYnMnKVxuICAgICAgLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgdGFiRXh0cmFCdXR0b25zUmVjdCA9IG5hdGl2ZUVsZW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCcuc2t5LXRhYnNldC1idG5zJylcbiAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IHRhYkJ1dHRvbnNXaWR0aCA9XG4gICAgICB0YWJCdXR0b25zUmVjdC53aWR0aCArIHRhYkV4dHJhQnV0dG9uc1JlY3Qud2lkdGggKyB0aGlzLiN0YWJzT2Zmc2V0TGVmdDtcblxuICAgIGNvbnN0IG5ld092ZXJmbG93ID0gdGFiQnV0dG9uc1dpZHRoID4gdGFic2V0UmVjdC53aWR0aDtcbiAgICBpZiAodGhpcy4jY3VycmVudE92ZXJmbG93ICE9PSBuZXdPdmVyZmxvdykge1xuICAgICAgdGhpcy4jY3VycmVudE92ZXJmbG93ID0gbmV3T3ZlcmZsb3c7XG4gICAgICB0aGlzLiNvdmVyZmxvd0NoYW5nZS5uZXh0KHRoaXMuI2N1cnJlbnRPdmVyZmxvdyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBwaXhlbHMgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IHRhYi5cbiAgICovXG4gICNnZXRUYWJzT2Zmc2V0TGVmdCh0YWJzZXRFbDogSFRNTEVsZW1lbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IHRhYnNldFJlY3QgPSB0YWJzZXRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIC8vIFRoZSBkcm9wZG93biBlbGVtZW50IGlzIHRoZSBmaXJzdCBcInRhYlwiIGFuZCBhbHdheXMgZXhpc3RzIGluIHRoZSBET00sIGV2ZW4gd2hlbiBoaWRkZW4uXG4gICAgY29uc3QgZmlyc3RUYWJSZWN0ID0gdGFic2V0RWxcbiAgICAgIC5xdWVyeVNlbGVjdG9yKCcuc2t5LXRhYnNldC1kcm9wZG93bicpXG4gICAgICA/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgLy8gU2FmZXR5IGNoZWNrXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIWZpcnN0VGFiUmVjdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpcnN0VGFiUmVjdC5sZWZ0IC0gdGFic2V0UmVjdC5sZWZ0O1xuICB9XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostBinding, Input, Output, ViewEncapsulation, inject, } from '@angular/core';\nimport { SkyLayoutHostService } from '@skyux/core';\nimport { Subject, combineLatest, race } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetAdapterService } from './tabset-adapter.service';\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\nimport { SkyTabsetService } from './tabset.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./tabset-adapter.service\";\nimport * as i2 from \"./tabset-permalink.service\";\nimport * as i3 from \"./tabset.service\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@skyux/popovers\";\nimport * as i6 from \"@skyux/icon\";\nimport * as i7 from \"@skyux/theme\";\nimport * as i8 from \"./tab-button.component\";\nimport * as i9 from \"@skyux/i18n\";\nexport class SkyTabsetComponent {\n /**\n * Activates a tab by its `tabIndex` property.\n */\n set active(value) {\n if (value === undefined ||\n this.#tabsetService.tabIndexesEqual(value, this.#_active)) {\n return;\n }\n this.#_active = value;\n if (this.tabs) {\n this.#tabsetService.setActiveTabIndex({ tabIndex: value });\n }\n else {\n // On init, wait for children tabs to render before broadcasting the active tab index.\n setTimeout(() => {\n if (this.#tabsetService.isValidTabIndex(value)) {\n // On init, yield to the permalink ID, if it exists.\n if (this.#getActiveTabIndexByPermalinkId() === undefined) {\n this.#tabsetService.setActiveTabIndex({ tabIndex: value });\n }\n }\n else {\n // Activate the first tab if the new tab index is invalid.\n this.#_active = this.#tabsetService.activateFirstTab();\n }\n });\n }\n }\n get active() {\n return this.#_active;\n }\n /**\n * Distinguishes a tabset's unique state in the URL by generating a query parameter\n * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n * The query parameter's value is parsed automatically from the selected tab's heading text,\n * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n * This input only applies when `tabStyle` is `\"tabs\"`\n */\n set permalinkId(value) {\n if (!value) {\n this.#_permalinkId = '';\n }\n else {\n const sanitized = this.#permalinkService.urlify(value);\n this.#_permalinkId = `${sanitized}-active-tab`;\n }\n }\n get permalinkId() {\n return this.#_permalinkId;\n }\n /**\n * The behavior for a series of tabs.\n * @default \"tabs\"\n */\n set tabStyle(value) {\n this.#_tabStyle = value || 'tabs';\n }\n get tabStyle() {\n return this.#_tabStyle;\n }\n get dataTabStyle() {\n return this.tabStyle;\n }\n set tabDisplayMode(value) {\n this.#_tabDisplayMode = value;\n this.#changeDetector.markForCheck();\n }\n get tabDisplayMode() {\n return this.#_tabDisplayMode;\n }\n set tabs(value) {\n this.#_tabs = value;\n this.#tabComponentsChangeUnsubscribe.next();\n value?.changes\n .pipe(takeUntil(this.#tabComponentsChangeUnsubscribe))\n .subscribe(() => {\n this.#resetTabComponents();\n });\n }\n get tabs() {\n return this.#_tabs;\n }\n #ngUnsubscribe;\n #tabComponentsChangeUnsubscribe;\n #tabComponentsStateChangeUnsubscribe;\n #_active;\n #_permalinkId;\n #_tabs;\n #_tabDisplayMode;\n #_tabStyle;\n #changeDetector;\n #elementRef;\n #adapterService;\n #permalinkService;\n #tabsetService;\n #layoutHostSvc;\n constructor(changeDetector, elementRef, adapterService, permalinkService, tabsetService) {\n /**\n * Fires when the active tab changes. This event emits the index of the active tab.\n */\n this.activeChange = new EventEmitter();\n /**\n * Fires when users click the button to add a new tab.\n * The new tab button is added to the tab area when you specify a listener for this event.\n * This event only applies when `tabStyle` is `\"tabs\"`.\n */\n this.newTab = new EventEmitter();\n /**\n * Fires when users click the button to open a tab.\n * The open tab button is added to the tab area when you specify a listener for this event.\n * This event only applies when `tabStyle` is `\"tabs\"`.\n */\n this.openTab = new EventEmitter();\n /**\n * Fires when any tab's `tabIndex` value changes.\n * This event only applies when `tabStyle` is `\"tabs\"`.\n */\n this.tabIndexesChange = new EventEmitter();\n this.cssClass = 'sky-tabset-layout-none';\n this.dropdownTriggerButtonText = '';\n this.tabButtons = [];\n this.#ngUnsubscribe = new Subject();\n this.#tabComponentsChangeUnsubscribe = new Subject();\n this.#tabComponentsStateChangeUnsubscribe = new Subject();\n this.#_permalinkId = '';\n this.#_tabDisplayMode = 'tabs';\n this.#_tabStyle = 'tabs';\n this.#layoutHostSvc = inject(SkyLayoutHostService, { optional: true });\n this.#changeDetector = changeDetector;\n this.#elementRef = elementRef;\n this.#adapterService = adapterService;\n this.#permalinkService = permalinkService;\n this.#tabsetService = tabsetService;\n }\n ngAfterViewInit() {\n this.#initTabComponents();\n const initialTabIndex = this.#getInitialTabIndex();\n this.#tabsetService.setActiveTabIndex({\n tabIndex: initialTabIndex,\n initial: true,\n });\n this.#listenTabButtonsOverflowChange();\n this.#listenLocationPopStateChange();\n // If the currently active tab is getting unregistered, activate the next one.\n this.#tabsetService.activeTabUnregistered\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((tab) => {\n // Wait for the new tabs to render before activating.\n setTimeout(() => {\n this.#tabsetService.activateNearestTab(tab.arrayIndex);\n });\n });\n this.#tabsetService.activeTabLayout\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((layout) => {\n this.#updateLayout(layout);\n });\n // Let the tabset render the initial active index before listening for changes.\n setTimeout(() => {\n this.#listenTabComponentsStateChange();\n this.#listenActiveIndexChange();\n this.#permalinkService.init();\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#tabComponentsChangeUnsubscribe.next();\n this.#tabComponentsChangeUnsubscribe.complete();\n this.#unsubscribeTabComponentsStateChange();\n if (this.permalinkId) {\n this.#permalinkService.clearParam(this.permalinkId);\n }\n }\n onWindowResize() {\n this.#adapterService.detectOverflow();\n }\n onTabCloseClick(tabButton) {\n const tabComponent = this.tabs?.find((tab) => this.#tabsetService.tabIndexesEqual(tab.tabIndexValue, tabButton.tabIndex));\n tabComponent?.close.emit();\n }\n onTabButtonClick(tabButton) {\n this.#tabsetService.setActiveTabIndex({ tabIndex: tabButton.tabIndex });\n }\n onNewTabClick() {\n this.newTab.emit();\n }\n onOpenTabClick() {\n this.openTab.emit();\n }\n onRightKeyDown() {\n this.#tabsetService.focusNextTabBtn(this.tabButtons);\n }\n onLeftKeyDown() {\n this.#tabsetService.focusPrevTabBtn(this.tabButtons);\n }\n onHomeKeyDown() {\n this.#tabsetService.focusFirstOrNearestTabBtn(this.tabButtons);\n }\n onEndKeyDown() {\n this.#tabsetService.focusLastOrNearestTabBtn(this.tabButtons);\n }\n /**\n * Sets the initial active tab index based on the following criteria.\n * 1. Does the URL include a query param that reflects this tabset's active tab?\n * 2. Does one of the tab components have their `active` property set to `true`?\n * 3. Is the tabset component's `active` property set to a specific tab index?\n */\n #getInitialTabIndex() {\n let activeIndex = this.#getActiveTabIndexByPermalinkId();\n if (activeIndex === undefined) {\n activeIndex = this.#getActiveTabComponent()?.tabIndexValue;\n if (activeIndex === undefined) {\n activeIndex = this.active;\n }\n }\n return activeIndex;\n }\n #listenActiveIndexChange() {\n this.#tabsetService.activeTabChange\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((tabChange) => {\n this.#updateTabsetComponent(tabChange.tabIndex, false, tabChange.initial);\n const activeTab = this.#getActiveTabComponent();\n this.#updateLayout(activeTab?.layout);\n });\n }\n #updateLayout(layout) {\n if (this.#layoutHostSvc && layout) {\n this.#layoutHostSvc.setHostLayoutForChild({\n layout,\n });\n this.cssClass = `sky-tabset-layout-${layout}`;\n }\n }\n #listenTabComponentsStateChange() {\n if (this.tabs) {\n combineLatest(this.tabs.map((tab) => tab.activeChange))\n .pipe(takeUntil(race(this.#tabComponentsStateChangeUnsubscribe, this.#ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n const tabIndex = this.#getActiveTabComponent()?.tabIndexValue;\n this.#tabsetService.setActiveTabIndex({ tabIndex });\n });\n });\n combineLatest(this.tabs.map((tab) => tab.tabIndexChange))\n .pipe(takeUntil(race(this.#tabComponentsStateChangeUnsubscribe, this.#ngUnsubscribe)))\n .subscribe(() => {\n // Don't emit the first change.\n if (this.lastActiveTabIndex !== undefined) {\n // Wait for the tab components to render changes before updating the view.\n setTimeout(() => {\n this.#updateTabsetComponent(this.#tabsetService.currentActiveTabIndex, true);\n this.#emitTabIndexChange();\n });\n }\n });\n combineLatest(this.tabs.map((tab) => tab.stateChange))\n .pipe(takeUntil(race(this.#tabComponentsStateChangeUnsubscribe, this.#ngUnsubscribe)))\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n this.#updateTabsetComponent(this.#tabsetService.currentActiveTabIndex, true);\n });\n });\n }\n }\n #initTabComponents() {\n this.tabs?.forEach((tab) => tab.init());\n }\n #resetTabComponents() {\n this.#unsubscribeTabComponentsStateChange();\n this.#tabsetService.unregisterAll();\n // If there are no tab components, do a hard reset of the view.\n if (this.tabs?.length === 0) {\n this.#updateTabsetComponent(0, true);\n return;\n }\n this.#initTabComponents();\n const activeIndex = this.#getActiveTabComponent()?.tabIndexValue;\n this.#tabsetService.setActiveTabIndex({\n tabIndex: activeIndex,\n }, {\n emitChange: false,\n });\n this.#listenTabComponentsStateChange();\n }\n #emitTabIndexChange() {\n this.tabIndexesChange.emit({\n tabs: this.tabs?.map((tab) => ({\n tabHeading: tab.tabHeading,\n tabIndex: tab.tabIndexValue,\n })),\n });\n }\n #unsubscribeTabComponentsStateChange() {\n this.#tabComponentsStateChangeUnsubscribe.next();\n this.#tabComponentsStateChangeUnsubscribe.complete();\n this.#tabComponentsStateChangeUnsubscribe = new Subject();\n }\n #listenTabButtonsOverflowChange() {\n this.#adapterService.registerTabset(this.#elementRef);\n this.#adapterService.overflowChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((isOverflowing) => {\n this.tabDisplayMode = isOverflowing ? 'dropdown' : 'tabs';\n this.#changeDetector.markForCheck();\n });\n }\n /**\n * Listen for back/forward history button presses to detect query param changes in the URL.\n */\n #listenLocationPopStateChange() {\n this.#permalinkService.popStateChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#setActiveTabIndexByPermalinkId();\n });\n }\n #setActiveTabIndexByPermalinkId() {\n const activeIndex = this.#getActiveTabIndexByPermalinkId();\n this.#tabsetService.setActiveTabIndex({\n tabIndex: activeIndex,\n });\n }\n #getActiveTabIndexByPermalinkId() {\n if (this.permalinkId) {\n const paramValue = this.#permalinkService.getParam(this.permalinkId);\n if (paramValue) {\n return this.tabs?.find((tab) => tab.permalinkValueOrDefault === paramValue)?.tabIndexValue;\n }\n return undefined;\n }\n return undefined;\n }\n #getActiveTabComponent() {\n return this.tabs\n ?.toArray()\n .reverse()\n .find((tab) => tab.active === true);\n }\n #createTabButtons(activeIndex) {\n // Safety check\n /* istanbul ignore next */\n if (!this.tabs) {\n return [];\n }\n return this.tabs.map((tab, index) => ({\n active: this.#tabsetService.tabIndexesEqual(tab.tabIndexValue, activeIndex),\n closeable: tab.isCloseable(),\n ariaControls: tab.tabPanelId,\n disabled: tab.disabled,\n buttonHref: tab.disabled\n ? null\n : this.#permalinkService.getParamHref(this.permalinkId, tab.permalinkValueOrDefault),\n buttonId: tab.tabButtonId,\n buttonTextCount: tab.tabHeaderCount,\n buttonText: tab.tabHeading,\n tabIndex: tab.tabIndexValue,\n tabNumber: index + 1,\n totalTabsCount: this.tabs.length,\n }));\n }\n #updateTabButtons(activeIndex) {\n this.tabButtons.forEach((button) => {\n button.active = this.#tabsetService.tabIndexesEqual(button.tabIndex, activeIndex);\n });\n }\n /**\n * Updates the UI and state of the tabset component after the tab index or\n * tab components have changed.\n * @param activeIndex The currently active tab index.\n * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n * to `true` is only necessary when the underlying tab components have changed and the tab\n * buttons must reflect those changes.\n * @param initial Indicates whether tabs are being updated during initialization of the tabset\n * component. This is passed through to the permalink service where it prevents adding an extra\n * item to browser history when the URL is updated with the selected tab's permalink value.\n */\n #updateTabsetComponent(activeIndex, regenerateTabButtons, initial) {\n // Activate/deactivate tab components.\n this.tabs?.forEach((tab) => {\n if (this.#tabsetService.tabIndexesEqual(tab.tabIndexValue, activeIndex)) {\n tab.activate();\n }\n else {\n tab.deactivate();\n }\n });\n // Update the tab button models.\n if (regenerateTabButtons || !this.tabButtons.length) {\n this.tabButtons = this.#createTabButtons(activeIndex);\n }\n else {\n this.#updateTabButtons(activeIndex);\n }\n // Update the dropdown trigger button text.\n this.dropdownTriggerButtonText =\n this.tabButtons.find((b) => {\n return this.#tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n })?.buttonText ?? '';\n // Set the query params based on active tab.\n if (this.permalinkId) {\n const activeTabComponent = this.tabs?.find((tab) => {\n return this.#tabsetService.tabIndexesEqual(tab.tabIndexValue, activeIndex);\n });\n if (activeTabComponent) {\n this.#permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValueOrDefault, initial);\n }\n }\n // Wait for tab button view models to render before gauging dimensions.\n setTimeout(() => {\n this.#adapterService.detectOverflow();\n });\n this.#changeDetector.markForCheck();\n // Emit the new active index value to consumers.\n if (this.lastActiveTabIndex !== activeIndex) {\n this.lastActiveTabIndex = activeIndex;\n this.activeChange.emit(activeIndex);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyTabsetAdapterService }, { token: i2.SkyTabsetPermalinkService }, { token: i3.SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyTabsetComponent, isStandalone: false, selector: \"sky-tabset\", inputs: { active: \"active\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", permalinkId: \"permalinkId\", tabStyle: \"tabStyle\" }, outputs: { activeChange: \"activeChange\", newTab: \"newTab\", openTab: \"openTab\", tabIndexesChange: \"tabIndexesChange\" }, host: { properties: { \"attr.data-tab-style\": \"this.dataTabStyle\", \"class\": \"this.cssClass\" } }, providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService,\n ], queries: [{ propertyName: \"tabs\", predicate: SkyTabComponent }], ngImport: i0, template: \"<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\\n<div\\n class=\\\"sky-tabset\\\"\\n role=\\\"tablist\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [ngClass]=\\\"\\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\\n \\\"\\n (window:resize)=\\\"onWindowResize()\\\"\\n (keydown.arrowright)=\\\"onRightKeyDown()\\\"\\n (keydown.arrowleft)=\\\"onLeftKeyDown()\\\"\\n (keydown.home)=\\\"onHomeKeyDown()\\\"\\n (keydown.end)=\\\"onEndKeyDown()\\\"\\n>\\n <span class=\\\"sky-tabset-dropdown\\\">\\n @if (tabDisplayMode === 'dropdown') {\\n <sky-dropdown buttonType=\\\"tab\\\">\\n <sky-dropdown-button>\\n {{ dropdownTriggerButtonText }}\\n </sky-dropdown-button>\\n <sky-dropdown-menu>\\n @for (tabButton of tabButtons; track tabButton.buttonId) {\\n <sky-dropdown-item class=\\\"sky-tab-dropdown-menu-item\\\">\\n <div\\n class=\\\"sky-tab-dropdown-item\\\"\\n [ngClass]=\\\"{\\n 'sky-tab-dropdown-item-selected': tabButton.active\\n }\\\"\\n >\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n tabButtonTemplate;\\n context: {\\n $implicit: tabButton\\n }\\n \\\"\\n />\\n </div>\\n </sky-dropdown-item>\\n }\\n </sky-dropdown-menu>\\n </sky-dropdown>\\n }\\n </span>\\n <span class=\\\"sky-tabset-tabs\\\">\\n @for (tabButton of tabButtons; track tabButton.buttonId) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n tabButtonTemplate;\\n context: {\\n $implicit: tabButton\\n }\\n \\\"\\n />\\n }\\n </span>\\n <span class=\\\"sky-tabset-btns\\\">\\n @if (newTab.observers.length > 0) {\\n <button\\n class=\\\"sky-btn sky-btn-icon sky-tabset-btn-new\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_tab_add' | skyLibResources\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-margin-inline-compact': 'default'\\n }\\\"\\n (click)=\\\"onNewTabClick()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n </button>\\n }\\n @if (openTab.observers.length > 0) {\\n <button\\n class=\\\"sky-btn sky-btn-icon sky-tabset-btn-open\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_tab_open' | skyLibResources\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-margin-inline-compact': 'default'\\n }\\\"\\n (click)=\\\"onOpenTabClick()\\\"\\n >\\n <sky-icon iconName=\\\"folder-open\\\" />\\n </button>\\n }\\n </span>\\n</div>\\n<ng-content />\\n\\n<ng-template #tabButtonTemplate let-tabButton>\\n <sky-tab-button\\n [active]=\\\"tabButton.active\\\"\\n [ariaControls]=\\\"tabButton.ariaControls\\\"\\n [buttonHref]=\\\"tabButton.buttonHref\\\"\\n [buttonId]=\\\"tabButton.buttonId\\\"\\n [buttonText]=\\\"tabButton.buttonText\\\"\\n [buttonTextCount]=\\\"tabButton.buttonTextCount\\\"\\n [closeable]=\\\"tabButton.closeable\\\"\\n [disabled]=\\\"tabButton.disabled\\\"\\n [tabIndex]=\\\"tabButton.tabIndex\\\"\\n [tabStyle]=\\\"tabStyle\\\"\\n [tabNumber]=\\\"tabButton.tabNumber\\\"\\n [totalTabsCount]=\\\"tabButton.totalTabsCount\\\"\\n (buttonClick)=\\\"onTabButtonClick(tabButton)\\\"\\n (closeClick)=\\\"onTabCloseClick(tabButton)\\\"\\n />\\n</ng-template>\\n\", styles: [\"sky-tabset:not(.sky-theme-modern *){--sky-override-tab-heading-display: block;--sky-override-tabset-align-items: center;--sky-override-tabset-border-bottom: 2px solid #0974a1;--sky-override-tabset-button-color: #0974a1;--sky-override-tabset-button-group-padding-left: 10px;--sky-override-tabset-button-margin-right: 5px;--sky-override-tabset-icon-button-padding: 6px 12px;--sky-override-tabset-modal-margin: 0 -15px 20px;--sky-override-tabset-modal-padding-left: 15px;--sky-override-tabset-modal-padding-none: 0;--sky-override-tabset-overflow: hidden;--sky-override-tabset-padding: 0 0 0 var(--sky-layout-host-tab-content-spacing, 15px);--sky-override-tabset-wizard-modal-margin: 0 0 20px}sky-tabset.sky-tabset-layout-fit{position:absolute;inset:0;display:flex;flex-direction:column}sky-tabset.sky-tabset-layout-fit .sky-tabset{flex-grow:0}.sky-tabset{--sky-tabset-margin: 0;align-items:var(--sky-override-tabset-align-items, baseline);border-bottom:var(--sky-override-tabset-border-bottom, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider));display:flex;list-style-type:none;margin:var(--sky-tabset-margin);padding:var(--sky-override-tabset-padding, var(--sky-layout-host-tab-content-spacing, var(--sky-comp-tabset-tabs-space-inset-top) var(--sky-comp-tabset-tabs-space-inset-right) var(--sky-comp-tabset-tabs-space-inset-bottom) var(--sky-comp-tabset-tabs-space-inset-left)));white-space:nowrap;flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, var(--sky-override-tabset-overflow, visible));position:var(--sky-layout-host-content-position, static)}.sky-tabset.sky-tabset-style-wizard{border-bottom:var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider)}.sky-modal-content .sky-tabset-style-tabs{--sky-tabset-margin: var( --sky-override-tabset-modal-margin, calc(var(--sky-comp-modal-content-space-inset-top) * -1) calc(var(--sky-comp-modal-content-space-inset-right) * -1) var(--sky-comp-modal-content-space-inset-bottom) calc(var(--sky-comp-modal-content-space-inset-left) * -1) );padding-left:var(--sky-override-tabset-modal-padding-left, var(--sky-comp-modal-content-space-inset-left));padding-right:var(--sky-override-tabset-modal-padding-none, var(--sky-comp-modal-content-space-inset-right))}.sky-modal-content .sky-tabset-style-wizard{--sky-tabset-margin: var( --sky-override-tabset-wizard-modal-margin, calc(var(--sky-comp-wizard-tabset-space-inset-top) * -1) calc(var(--sky-comp-wizard-tabset-space-inset-right) * -1) var(--sky-comp-wizard-tabset-space-inset-left) calc(var(--sky-comp-wizard-tabset-space-inset-left) * -1) );padding-left:var(--sky-override-tabset-modal-padding-none, var(--sky-comp-wizard-tabset-tabs-space-inset-left));padding-right:var(--sky-override-tabset-modal-padding-none, var(--sky-comp-wizard-tabset-tabs-space-inset-right))}.sky-tabset-btns{order:1;padding-left:var(--sky-override-tabset-button-group-padding-left, var(--sky-space-gap-action_group-m))}.sky-tabset-btns .sky-tabset-btn-new,.sky-tabset-btns .sky-tabset-btn-open{margin-right:var(--sky-override-tabset-button-margin-right, var(--sky-space-gap-action_group-m));padding:var(--sky-override-tabset-icon-button-padding, var(--sky-comp-tabset-button-space-inset-top) var(--sky-comp-tabset-button-space-inset-right) var(--sky-comp-tabset-button-space-inset-bottom) var(--sky-comp-tabset-button-space-inset-left))}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset.sky-tabset-mode-dropdown{overflow:hidden}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-dropdown-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto;display:var(--sky-override-tab-heading-display, flex);align-items:baseline;justify-content:space-between}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:var(--sky-override-tabset-button-color, --sky-color-text-default)}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i5.λ2, selector: \"sky-dropdown-button\" }, { kind: \"component\", type: i5.λ3, selector: \"sky-dropdown\", inputs: [\"buttonStyle\", \"buttonType\", \"disabled\", \"label\", \"horizontalAlignment\", \"messageStream\", \"title\", \"trigger\"] }, { kind: \"component\", type: i5.λ1, selector: \"sky-dropdown-item\", inputs: [\"ariaRole\"] }, { kind: \"component\", type: i5.λ4, selector: \"sky-dropdown-menu\", inputs: [\"ariaLabelledBy\", \"ariaRole\", \"useNativeFocus\"], outputs: [\"menuChanges\"] }, { kind: \"component\", type: i6.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i7.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"component\", type: i8.SkyTabButtonComponent, selector: \"sky-tab-button\", inputs: [\"active\", \"ariaControls\", \"buttonHref\", \"buttonId\", \"buttonText\", \"buttonTextCount\", \"closeable\", \"disabled\", \"tabIndex\", \"tabNumber\", \"totalTabsCount\", \"tabStyle\"], outputs: [\"buttonClick\", \"closeClick\"] }, { kind: \"pipe\", type: i9.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsetComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-tabset', providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: \"<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\\n<div\\n class=\\\"sky-tabset\\\"\\n role=\\\"tablist\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [ngClass]=\\\"\\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\\n \\\"\\n (window:resize)=\\\"onWindowResize()\\\"\\n (keydown.arrowright)=\\\"onRightKeyDown()\\\"\\n (keydown.arrowleft)=\\\"onLeftKeyDown()\\\"\\n (keydown.home)=\\\"onHomeKeyDown()\\\"\\n (keydown.end)=\\\"onEndKeyDown()\\\"\\n>\\n <span class=\\\"sky-tabset-dropdown\\\">\\n @if (tabDisplayMode === 'dropdown') {\\n <sky-dropdown buttonType=\\\"tab\\\">\\n <sky-dropdown-button>\\n {{ dropdownTriggerButtonText }}\\n </sky-dropdown-button>\\n <sky-dropdown-menu>\\n @for (tabButton of tabButtons; track tabButton.buttonId) {\\n <sky-dropdown-item class=\\\"sky-tab-dropdown-menu-item\\\">\\n <div\\n class=\\\"sky-tab-dropdown-item\\\"\\n [ngClass]=\\\"{\\n 'sky-tab-dropdown-item-selected': tabButton.active\\n }\\\"\\n >\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n tabButtonTemplate;\\n context: {\\n $implicit: tabButton\\n }\\n \\\"\\n />\\n </div>\\n </sky-dropdown-item>\\n }\\n </sky-dropdown-menu>\\n </sky-dropdown>\\n }\\n </span>\\n <span class=\\\"sky-tabset-tabs\\\">\\n @for (tabButton of tabButtons; track tabButton.buttonId) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n tabButtonTemplate;\\n context: {\\n $implicit: tabButton\\n }\\n \\\"\\n />\\n }\\n </span>\\n <span class=\\\"sky-tabset-btns\\\">\\n @if (newTab.observers.length > 0) {\\n <button\\n class=\\\"sky-btn sky-btn-icon sky-tabset-btn-new\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_tab_add' | skyLibResources\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-margin-inline-compact': 'default'\\n }\\\"\\n (click)=\\\"onNewTabClick()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n </button>\\n }\\n @if (openTab.observers.length > 0) {\\n <button\\n class=\\\"sky-btn sky-btn-icon sky-tabset-btn-open\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_tab_open' | skyLibResources\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-margin-inline-compact': 'default'\\n }\\\"\\n (click)=\\\"onOpenTabClick()\\\"\\n >\\n <sky-icon iconName=\\\"folder-open\\\" />\\n </button>\\n }\\n </span>\\n</div>\\n<ng-content />\\n\\n<ng-template #tabButtonTemplate let-tabButton>\\n <sky-tab-button\\n [active]=\\\"tabButton.active\\\"\\n [ariaControls]=\\\"tabButton.ariaControls\\\"\\n [buttonHref]=\\\"tabButton.buttonHref\\\"\\n [buttonId]=\\\"tabButton.buttonId\\\"\\n [buttonText]=\\\"tabButton.buttonText\\\"\\n [buttonTextCount]=\\\"tabButton.buttonTextCount\\\"\\n [closeable]=\\\"tabButton.closeable\\\"\\n [disabled]=\\\"tabButton.disabled\\\"\\n [tabIndex]=\\\"tabButton.tabIndex\\\"\\n [tabStyle]=\\\"tabStyle\\\"\\n [tabNumber]=\\\"tabButton.tabNumber\\\"\\n [totalTabsCount]=\\\"tabButton.totalTabsCount\\\"\\n (buttonClick)=\\\"onTabButtonClick(tabButton)\\\"\\n (closeClick)=\\\"onTabCloseClick(tabButton)\\\"\\n />\\n</ng-template>\\n\", styles: [\"sky-tabset:not(.sky-theme-modern *){--sky-override-tab-heading-display: block;--sky-override-tabset-align-items: center;--sky-override-tabset-border-bottom: 2px solid #0974a1;--sky-override-tabset-button-color: #0974a1;--sky-override-tabset-button-group-padding-left: 10px;--sky-override-tabset-button-margin-right: 5px;--sky-override-tabset-icon-button-padding: 6px 12px;--sky-override-tabset-modal-margin: 0 -15px 20px;--sky-override-tabset-modal-padding-left: 15px;--sky-override-tabset-modal-padding-none: 0;--sky-override-tabset-overflow: hidden;--sky-override-tabset-padding: 0 0 0 var(--sky-layout-host-tab-content-spacing, 15px);--sky-override-tabset-wizard-modal-margin: 0 0 20px}sky-tabset.sky-tabset-layout-fit{position:absolute;inset:0;display:flex;flex-direction:column}sky-tabset.sky-tabset-layout-fit .sky-tabset{flex-grow:0}.sky-tabset{--sky-tabset-margin: 0;align-items:var(--sky-override-tabset-align-items, baseline);border-bottom:var(--sky-override-tabset-border-bottom, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider));display:flex;list-style-type:none;margin:var(--sky-tabset-margin);padding:var(--sky-override-tabset-padding, var(--sky-layout-host-tab-content-spacing, var(--sky-comp-tabset-tabs-space-inset-top) var(--sky-comp-tabset-tabs-space-inset-right) var(--sky-comp-tabset-tabs-space-inset-bottom) var(--sky-comp-tabset-tabs-space-inset-left)));white-space:nowrap;flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, var(--sky-override-tabset-overflow, visible));position:var(--sky-layout-host-content-position, static)}.sky-tabset.sky-tabset-style-wizard{border-bottom:var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider)}.sky-modal-content .sky-tabset-style-tabs{--sky-tabset-margin: var( --sky-override-tabset-modal-margin, calc(var(--sky-comp-modal-content-space-inset-top) * -1) calc(var(--sky-comp-modal-content-space-inset-right) * -1) var(--sky-comp-modal-content-space-inset-bottom) calc(var(--sky-comp-modal-content-space-inset-left) * -1) );padding-left:var(--sky-override-tabset-modal-padding-left, var(--sky-comp-modal-content-space-inset-left));padding-right:var(--sky-override-tabset-modal-padding-none, var(--sky-comp-modal-content-space-inset-right))}.sky-modal-content .sky-tabset-style-wizard{--sky-tabset-margin: var( --sky-override-tabset-wizard-modal-margin, calc(var(--sky-comp-wizard-tabset-space-inset-top) * -1) calc(var(--sky-comp-wizard-tabset-space-inset-right) * -1) var(--sky-comp-wizard-tabset-space-inset-left) calc(var(--sky-comp-wizard-tabset-space-inset-left) * -1) );padding-left:var(--sky-override-tabset-modal-padding-none, var(--sky-comp-wizard-tabset-tabs-space-inset-left));padding-right:var(--sky-override-tabset-modal-padding-none, var(--sky-comp-wizard-tabset-tabs-space-inset-right))}.sky-tabset-btns{order:1;padding-left:var(--sky-override-tabset-button-group-padding-left, var(--sky-space-gap-action_group-m))}.sky-tabset-btns .sky-tabset-btn-new,.sky-tabset-btns .sky-tabset-btn-open{margin-right:var(--sky-override-tabset-button-margin-right, var(--sky-space-gap-action_group-m));padding:var(--sky-override-tabset-icon-button-padding, var(--sky-comp-tabset-button-space-inset-top) var(--sky-comp-tabset-button-space-inset-right) var(--sky-comp-tabset-button-space-inset-bottom) var(--sky-comp-tabset-button-space-inset-left))}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset.sky-tabset-mode-dropdown{overflow:hidden}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-dropdown-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto;display:var(--sky-override-tab-heading-display, flex);align-items:baseline;justify-content:space-between}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:var(--sky-override-tabset-button-color, --sky-color-text-default)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyTabsetAdapterService }, { type: i2.SkyTabsetPermalinkService }, { type: i3.SkyTabsetService }], propDecorators: { active: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], permalinkId: [{\n type: Input\n }], tabStyle: [{\n type: Input\n }], dataTabStyle: [{\n type: HostBinding,\n args: ['attr.data-tab-style']\n }], activeChange: [{\n type: Output\n }], newTab: [{\n type: Output\n }], openTab: [{\n type: Output\n }], tabIndexesChange: [{\n type: Output\n }], tabs: [{\n type: ContentChildren,\n args: [SkyTabComponent]\n }], cssClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYnNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFFTixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFlcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQThCO1FBQzlDLElBQ0UsS0FBSyxLQUFLLFNBQVM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFD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LHlCQUF5Qjt3QkFDekIsZ0JBQWdCO3FCQUNqQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixLQUFLOztzQkFNaEIsS0FBSzs7c0JBdUNMLEtBQUs7O3NCQVVMLEtBQUs7O3NCQVVMLEtBQUs7O3NCQWtCTCxLQUFLOztzQkFTTCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBT2pDLE1BQU07O3NCQVFOLE1BQU07O3NCQVFOLE1BQU07O3NCQU9OLE1BQU07O3NCQVlOLGVBQWU7dUJBQUMsZUFBZTs7c0JBZ0IvQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMYXlvdXRIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgcmFjZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGFiQnV0dG9uVmlld01vZGVsIH0gZnJvbSAnLi90YWItYnV0dG9uLXZpZXctbW9kZWwnO1xuaW1wb3J0IHsgU2t5VGFiSW5kZXggfSBmcm9tICcuL3RhYi1pbmRleCc7XG5pbXBvcnQgeyBTa3lUYWJMYXlvdXRUeXBlIH0gZnJvbSAnLi90YWItbGF5b3V0LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGFiQ29tcG9uZW50IH0gZnJvbSAnLi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSB9IGZyb20gJy4vdGFic2V0LWJ1dHRvbnMtZGlzcGxheS1tb2RlJztcbmltcG9ydCB7IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1wZXJtYWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTdHlsZSB9IGZyb20gJy4vdGFic2V0LXN0eWxlJztcbmltcG9ydCB7IFNreVRhYnNldFRhYkluZGV4ZXNDaGFuZ2UgfSBmcm9tICcuL3RhYnNldC10YWItaW5kZXhlcy1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5VGFic2V0U2VydmljZSB9IGZyb20gJy4vdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGFic2V0JyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFic2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lUYWJzZXRBZGFwdGVyU2VydmljZSxcbiAgICBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlLFxuICAgIFNreVRhYnNldFNlcnZpY2UsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGFic2V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEFjdGl2YXRlcyBhIHRhYiBieSBpdHMgYHRhYkluZGV4YCBwcm9wZXJ0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWN0aXZlKHZhbHVlOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChcbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKHZhbHVlLCB0aGlzLiNfYWN0aXZlKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI19hY3RpdmUgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLnRhYnMpIHtcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoeyB0YWJJbmRleDogdmFsdWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9uIGluaXQsIHdhaXQgZm9yIGNoaWxkcmVuIHRhYnMgdG8gcmVuZGVyIGJlZm9yZSBicm9hZGNhc3RpbmcgdGhlIGFjdGl2ZSB0YWIgaW5kZXguXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuI3RhYnNldFNlcnZpY2UuaXNWYWxpZFRhYkluZGV4KHZhbHVlKSkge1xuICAgICAgICAgIC8vIE9uIGluaXQsIHlpZWxkIHRvIHRoZSBwZXJtYWxpbmsgSUQsIGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICBpZiAodGhpcy4jZ2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy4jdGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh7IHRhYkluZGV4OiB2YWx1ZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQWN0aXZhdGUgdGhlIGZpcnN0IHRhYiBpZiB0aGUgbmV3IHRhYiBpbmRleCBpcyBpbnZhbGlkLlxuICAgICAgICAgIHRoaXMuI19hY3RpdmUgPSB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2YXRlRmlyc3RUYWIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmUoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYWN0aXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgdGFic2V0LiBUaGlzIHNldHMgdGhlIHRhYnNldCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHRhYnNldCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSB0YWJzZXQuIFRoaXMgc2V0cyB0aGUgdGFic2V0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSB0YWJzZXQgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsYCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWxsZWRieSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGlzdGluZ3Vpc2hlcyBhIHRhYnNldCdzIHVuaXF1ZSBzdGF0ZSBpbiB0aGUgVVJMIGJ5IGdlbmVyYXRpbmcgYSBxdWVyeSBwYXJhbWV0ZXJcbiAgICogdGhhdCBpcyB3cml0dGVuIGFzIGA/PHF1ZXJ5UGFyYW0+LWFjdGl2ZS10YWI9PHNhbml0aXplZC10YWItaGVhZGluZz5gLlxuICAgKiBUaGUgcXVlcnkgcGFyYW1ldGVyJ3MgdmFsdWUgaXMgcGFyc2VkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgc2VsZWN0ZWQgdGFiJ3MgaGVhZGluZyB0ZXh0LFxuICAgKiBidXQgeW91IGNhbiBzdXBwbHkgYSBjdXN0b20gcXVlcnkgcGFyYW1ldGVyIHZhbHVlIGZvciBlYWNoIHRhYiB3aXRoIGl0cyBgcGVybWFsaW5rVmFsdWVgLlxuICAgKiBUaGlzIGlucHV0IG9ubHkgYXBwbGllcyB3aGVuIGB0YWJTdHlsZWAgaXMgYFwidGFic1wiYFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwZXJtYWxpbmtJZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy4jX3Blcm1hbGlua0lkID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNhbml0aXplZCA9IHRoaXMuI3Blcm1hbGlua1NlcnZpY2UudXJsaWZ5KHZhbHVlKTtcbiAgICAgIHRoaXMuI19wZXJtYWxpbmtJZCA9IGAke3Nhbml0aXplZH0tYWN0aXZlLXRhYmA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBwZXJtYWxpbmtJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfcGVybWFsaW5rSWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJlaGF2aW9yIGZvciBhIHNlcmllcyBvZiB0YWJzLlxuICAgKiBAZGVmYXVsdCBcInRhYnNcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJTdHlsZSh2YWx1ZTogU2t5VGFic2V0U3R5bGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfdGFiU3R5bGUgPSB2YWx1ZSB8fCAndGFicyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYlN0eWxlKCk6IFNreVRhYnNldFN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYlN0eWxlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGFiLXN0eWxlJykgcHVibGljIGdldCBkYXRhVGFiU3R5bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50YWJTdHlsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXMuIFRoaXMgZXZlbnQgZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgdGFiLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVRhYkluZGV4PigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNsaWNrIHRoZSBidXR0b24gdG8gYWRkIGEgbmV3IHRhYi5cbiAgICogVGhlIG5ldyB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBuZXdUYWIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBvcGVuIGEgdGFiLlxuICAgKiBUaGUgb3BlbiB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuVGFiID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGFueSB0YWIncyBgdGFiSW5kZXhgIHZhbHVlIGNoYW5nZXMuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0YWJJbmRleGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUYWJzZXRUYWJJbmRleGVzQ2hhbmdlPigpO1xuXG4gIHB1YmxpYyBzZXQgdGFiRGlzcGxheU1vZGUodmFsdWU6IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSkge1xuICAgIHRoaXMuI190YWJEaXNwbGF5TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJEaXNwbGF5TW9kZSgpOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUge1xuICAgIHJldHVybiB0aGlzLiNfdGFiRGlzcGxheU1vZGU7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVRhYkNvbXBvbmVudClcbiAgcHVibGljIHNldCB0YWJzKHZhbHVlOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190YWJzID0gdmFsdWU7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcblxuICAgIHZhbHVlPy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNyZXNldFRhYkNvbXBvbmVudHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJzKCk6IFF1ZXJ5TGlzdDxTa3lUYWJDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYnM7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGNzc0NsYXNzID0gJ3NreS10YWJzZXQtbGF5b3V0LW5vbmUnO1xuXG4gIHB1YmxpYyBkcm9wZG93blRyaWdnZXJCdXR0b25UZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSB0aGUgZGVwcmVjYXRlZCB0YWJzZXQtbmF2LWJ1dHRvbiBjb21wb25lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGxhc3RBY3RpdmVUYWJJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdID0gW107XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN0YWJDb21wb25lbnRzQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfYWN0aXZlOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcblxuICAjX3Blcm1hbGlua0lkID0gJyc7XG5cbiAgI190YWJzOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICAjX3RhYkRpc3BsYXlNb2RlOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUgPSAndGFicyc7XG5cbiAgI190YWJTdHlsZTogU2t5VGFic2V0U3R5bGUgPSAndGFicyc7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2U7XG4gICNwZXJtYWxpbmtTZXJ2aWNlOiBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlO1xuICAjdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZTtcblxuICAjbGF5b3V0SG9zdFN2YyA9IGluamVjdChTa3lMYXlvdXRIb3N0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSxcbiAgICB0YWJzZXRTZXJ2aWNlOiBTa3lUYWJzZXRTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jcGVybWFsaW5rU2VydmljZSA9IHBlcm1hbGlua1NlcnZpY2U7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZSA9IHRhYnNldFNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRUYWJDb21wb25lbnRzKCk7XG5cbiAgICBjb25zdCBpbml0aWFsVGFiSW5kZXggPSB0aGlzLiNnZXRJbml0aWFsVGFiSW5kZXgoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHtcbiAgICAgIHRhYkluZGV4OiBpbml0aWFsVGFiSW5kZXgsXG4gICAgICBpbml0aWFsOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy4jbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk7XG4gICAgdGhpcy4jbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGFiIGlzIGdldHRpbmcgdW5yZWdpc3RlcmVkLCBhY3RpdmF0ZSB0aGUgbmV4dCBvbmUuXG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmVUYWJVbnJlZ2lzdGVyZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRhYikgPT4ge1xuICAgICAgICAvLyBXYWl0IGZvciB0aGUgbmV3IHRhYnMgdG8gcmVuZGVyIGJlZm9yZSBhY3RpdmF0aW5nLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2YXRlTmVhcmVzdFRhYih0YWIuYXJyYXlJbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2ZVRhYkxheW91dFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobGF5b3V0KSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZUxheW91dChsYXlvdXQpO1xuICAgICAgfSk7XG5cbiAgICAvLyBMZXQgdGhlIHRhYnNldCByZW5kZXIgdGhlIGluaXRpYWwgYWN0aXZlIGluZGV4IGJlZm9yZSBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNsaXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICAgIHRoaXMuI2xpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk7XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmluaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmNsZWFyUGFyYW0odGhpcy5wZXJtYWxpbmtJZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRldGVjdE92ZXJmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgb25UYWJDbG9zZUNsaWNrKHRhYkJ1dHRvbjogVGFiQnV0dG9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgdGFiQ29tcG9uZW50ID0gdGhpcy50YWJzPy5maW5kKCh0YWIpID0+XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbChcbiAgICAgICAgdGFiLnRhYkluZGV4VmFsdWUsXG4gICAgICAgIHRhYkJ1dHRvbi50YWJJbmRleCxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRhYkNvbXBvbmVudD8uY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uVGFiQnV0dG9uQ2xpY2sodGFiQnV0dG9uOiBUYWJCdXR0b25WaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXg6IHRhYkJ1dHRvbi50YWJJbmRleCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5ld1RhYkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubmV3VGFiLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk9wZW5UYWJDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5UYWIuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uUmlnaHRLZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuZm9jdXNOZXh0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25MZWZ0S2V5RG93bigpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmZvY3VzUHJldlRhYkJ0bih0aGlzLnRhYkJ1dHRvbnMpO1xuICB9XG5cbiAgcHVibGljIG9uSG9tZUtleURvd24oKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5mb2N1c0ZpcnN0T3JOZWFyZXN0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25FbmRLZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuZm9jdXNMYXN0T3JOZWFyZXN0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaW5pdGlhbCBhY3RpdmUgdGFiIGluZGV4IGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWEuXG4gICAqIDEuIERvZXMgdGhlIFVSTCBpbmNsdWRlIGEgcXVlcnkgcGFyYW0gdGhhdCByZWZsZWN0cyB0aGlzIHRhYnNldCdzIGFjdGl2ZSB0YWI/XG4gICAqIDIuIERvZXMgb25lIG9mIHRoZSB0YWIgY29tcG9uZW50cyBoYXZlIHRoZWlyIGBhY3RpdmVgIHByb3BlcnR5IHNldCB0byBgdHJ1ZWA/XG4gICAqIDMuIElzIHRoZSB0YWJzZXQgY29tcG9uZW50J3MgYGFjdGl2ZWAgcHJvcGVydHkgc2V0IHRvIGEgc3BlY2lmaWMgdGFiIGluZGV4P1xuICAgKi9cbiAgI2dldEluaXRpYWxUYWJJbmRleCgpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLiNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICBpZiAoYWN0aXZlSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXhWYWx1ZTtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy5hY3RpdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xuICB9XG5cbiAgI2xpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuYWN0aXZlVGFiQ2hhbmdlXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh0YWJDaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlVGFic2V0Q29tcG9uZW50KFxuICAgICAgICAgIHRhYkNoYW5nZS50YWJJbmRleCxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICB0YWJDaGFuZ2UuaW5pdGlhbCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlTGF5b3V0KGFjdGl2ZVRhYj8ubGF5b3V0KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgI3VwZGF0ZUxheW91dChsYXlvdXQ/OiBTa3lUYWJMYXlvdXRUeXBlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2xheW91dEhvc3RTdmMgJiYgbGF5b3V0KSB7XG4gICAgICB0aGlzLiNsYXlvdXRIb3N0U3ZjLnNldEhvc3RMYXlvdXRGb3JDaGlsZCh7XG4gICAgICAgIGxheW91dCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNzc0NsYXNzID0gYHNreS10YWJzZXQtbGF5b3V0LSR7bGF5b3V0fWA7XG4gICAgfVxuICB9XG5cbiAgI2xpc3RlblRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmFjdGl2ZUNoYW5nZSkpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICAgIHJhY2UoXG4gICAgICAgICAgICAgIHRoaXMuI3RhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLFxuICAgICAgICAgICAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgZmluZGluZyB0aGUgYWN0aXZlIG9uZS5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4VmFsdWU7XG4gICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXggfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLnRhYkluZGV4Q2hhbmdlKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKFxuICAgICAgICAgICAgcmFjZShcbiAgICAgICAgICAgICAgdGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsXG4gICAgICAgICAgICAgIHRoaXMuI25nVW5zdWJzY3JpYmUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gRG9uJ3QgZW1pdCB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICAgIGlmICh0aGlzLmxhc3RBY3RpdmVUYWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSB2aWV3LlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmN1cnJlbnRBY3RpdmVUYWJJbmRleCxcbiAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLiNlbWl0VGFiSW5kZXhDaGFuZ2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy50YWJzLm1hcCgodGFiKSA9PiB0YWIuc3RhdGVDaGFuZ2UpKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoXG4gICAgICAgICAgICByYWNlKFxuICAgICAgICAgICAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSxcbiAgICAgICAgICAgICAgdGhpcy4jbmdVbnN1YnNjcmliZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIGZpbmRpbmcgdGhlIGFjdGl2ZSBvbmUuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgICAgICAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuY3VycmVudEFjdGl2ZVRhYkluZGV4LFxuICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2luaXRUYWJDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMudGFicz8uZm9yRWFjaCgodGFiKSA9PiB0YWIuaW5pdCgpKTtcbiAgfVxuXG4gICNyZXNldFRhYkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy4jdW5zdWJzY3JpYmVUYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnVucmVnaXN0ZXJBbGwoKTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyB0YWIgY29tcG9uZW50cywgZG8gYSBoYXJkIHJlc2V0IG9mIHRoZSB2aWV3LlxuICAgIGlmICh0aGlzLnRhYnM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy4jdXBkYXRlVGFic2V0Q29tcG9uZW50KDAsIHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI2luaXRUYWJDb21wb25lbnRzKCk7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXhWYWx1ZTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KFxuICAgICAge1xuICAgICAgICB0YWJJbmRleDogYWN0aXZlSW5kZXgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbWl0Q2hhbmdlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLiNsaXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgfVxuXG4gICNlbWl0VGFiSW5kZXhDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy50YWJJbmRleGVzQ2hhbmdlLmVtaXQoe1xuICAgICAgdGFiczogdGhpcy50YWJzPy5tYXAoKHRhYikgPT4gKHtcbiAgICAgICAgdGFiSGVhZGluZzogdGFiLnRhYkhlYWRpbmcsXG4gICAgICAgIHRhYkluZGV4OiB0YWIudGFiSW5kZXhWYWx1ZSxcbiAgICAgIH0pKSxcbiAgICB9KTtcbiAgfVxuXG4gICN1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIH1cblxuICAjbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnJlZ2lzdGVyVGFic2V0KHRoaXMuI2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLm92ZXJmbG93Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpc092ZXJmbG93aW5nKSA9PiB7XG4gICAgICAgIHRoaXMudGFiRGlzcGxheU1vZGUgPSBpc092ZXJmbG93aW5nID8gJ2Ryb3Bkb3duJyA6ICd0YWJzJztcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGJhY2svZm9yd2FyZCBoaXN0b3J5IGJ1dHRvbiBwcmVzc2VzIHRvIGRldGVjdCBxdWVyeSBwYXJhbSBjaGFuZ2VzIGluIHRoZSBVUkwuXG4gICAqL1xuICAjbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnBvcFN0YXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jc2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNzZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHtcbiAgICAgIHRhYkluZGV4OiBhY3RpdmVJbmRleCxcbiAgICB9KTtcbiAgfVxuXG4gICNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy4jcGVybWFsaW5rU2VydmljZS5nZXRQYXJhbSh0aGlzLnBlcm1hbGlua0lkKTtcbiAgICAgIGlmIChwYXJhbVZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnM/LmZpbmQoXG4gICAgICAgICAgKHRhYikgPT4gdGFiLnBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0ID09PSBwYXJhbVZhbHVlLFxuICAgICAgICApPy50YWJJbmRleFZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gICNnZXRBY3RpdmVUYWJDb21wb25lbnQoKTogU2t5VGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJzXG4gICAgICA/LnRvQXJyYXkoKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoKHRhYikgPT4gdGFiLmFjdGl2ZSA9PT0gdHJ1ZSk7XG4gIH1cblxuICAjY3JlYXRlVGFiQnV0dG9ucyhcbiAgICBhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQsXG4gICk6IFRhYkJ1dHRvblZpZXdNb2RlbFtdIHtcbiAgICAvLyBTYWZldHkgY2hlY2tcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy50YWJzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFicy5tYXAoKHRhYiwgaW5kZXgpID0+ICh7XG4gICAgICBhY3RpdmU6IHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKFxuICAgICAgICB0YWIudGFiSW5kZXhWYWx1ZSxcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICApLFxuICAgICAgY2xvc2VhYmxlOiB0YWIuaXNDbG9zZWFibGUoKSxcbiAgICAgIGFyaWFDb250cm9sczogdGFiLnRhYlBhbmVsSWQsXG4gICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgYnV0dG9uSHJlZjogdGFiLmRpc2FibGVkXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMuI3Blcm1hbGlua1NlcnZpY2UuZ2V0UGFyYW1IcmVmKFxuICAgICAgICAgICAgdGhpcy5wZXJtYWxpbmtJZCxcbiAgICAgICAgICAgIHRhYi5wZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCxcbiAgICAgICAgICApLFxuICAgICAgYnV0dG9uSWQ6IHRhYi50YWJCdXR0b25JZCxcbiAgICAgIGJ1dHRvblRleHRDb3VudDogdGFiLnRhYkhlYWRlckNvdW50LFxuICAgICAgYnV0dG9uVGV4dDogdGFiLnRhYkhlYWRpbmcsXG4gICAgICB0YWJJbmRleDogdGFiLnRhYkluZGV4VmFsdWUsXG4gICAgICB0YWJOdW1iZXI6IGluZGV4ICsgMSxcbiAgICAgIHRvdGFsVGFic0NvdW50OiB0aGlzLnRhYnMhLmxlbmd0aCxcbiAgICB9KSk7XG4gIH1cblxuICAjdXBkYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICBidXR0b24uYWN0aXZlID0gdGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwoXG4gICAgICAgIGJ1dHRvbi50YWJJbmRleCxcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFVJIGFuZCBzdGF0ZSBvZiB0aGUgdGFic2V0IGNvbXBvbmVudCBhZnRlciB0aGUgdGFiIGluZGV4IG9yXG4gICAqIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZC5cbiAgICogQHBhcmFtIGFjdGl2ZUluZGV4IFRoZSBjdXJyZW50bHkgYWN0aXZlIHRhYiBpbmRleC5cbiAgICogQHBhcmFtIHJlZ2VuZXJhdGVUYWJCdXR0b25zIEluZGljYXRlcyBpZiB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHNob3VsZCBiZSByZWdlbmVyYXRlZC5cbiAgICogU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBmYWxzZWAgd2lsbCBzaW1wbHkgdXBkYXRlIHRoZSBleGlzdGluZyB0YWIgYnV0dG9ucy4gU2V0dGluZyB0aGlzIHZhbHVlXG4gICAqIHRvIGB0cnVlYCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIHRoZSB1bmRlcmx5aW5nIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZCBhbmQgdGhlIHRhYlxuICAgKiBidXR0b25zIG11c3QgcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gaW5pdGlhbCBJbmRpY2F0ZXMgd2hldGhlciB0YWJzIGFyZSBiZWluZyB1cGRhdGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiB0aGUgdGFic2V0XG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgcGVybWFsaW5rIHNlcnZpY2Ugd2hlcmUgaXQgcHJldmVudHMgYWRkaW5nIGFuIGV4dHJhXG4gICAqIGl0ZW0gdG8gYnJvd3NlciBoaXN0b3J5IHdoZW4gdGhlIFVSTCBpcyB1cGRhdGVkIHdpdGggdGhlIHNlbGVjdGVkIHRhYidzIHBlcm1hbGluayB2YWx1ZS5cbiAgICovXG4gICN1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkLFxuICAgIHJlZ2VuZXJhdGVUYWJCdXR0b25zOiBib29sZWFuLFxuICAgIGluaXRpYWw/OiBib29sZWFuLFxuICApOiB2b2lkIHtcbiAgICAvLyBBY3RpdmF0ZS9kZWFjdGl2YXRlIHRhYiBjb21wb25lbnRzLlxuICAgIHRoaXMudGFicz8uZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICBpZiAodGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4VmFsdWUsIGFjdGl2ZUluZGV4KSkge1xuICAgICAgICB0YWIuYWN0aXZhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYi5kZWFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIHRhYiBidXR0b24gbW9kZWxzLlxuICAgIGlmIChyZWdlbmVyYXRlVGFiQnV0dG9ucyB8fCAhdGhpcy50YWJCdXR0b25zLmxlbmd0aCkge1xuICAgICAgdGhpcy50YWJCdXR0b25zID0gdGhpcy4jY3JlYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3VwZGF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXgpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZHJvcGRvd24gdHJpZ2dlciBidXR0b24gdGV4dC5cbiAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlckJ1dHRvblRleHQgPVxuICAgICAgdGhpcy50YWJCdXR0b25zLmZpbmQoKGIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKGIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICAgIH0pPy5idXR0b25UZXh0ID8/ICcnO1xuXG4gICAgLy8gU2V0IHRoZSBxdWVyeSBwYXJhbXMgYmFzZWQgb24gYWN0aXZlIHRhYi5cbiAgICBpZiAodGhpcy5wZXJtYWxpbmtJZCkge1xuICAgICAgY29uc3QgYWN0aXZlVGFiQ29tcG9uZW50ID0gdGhpcy50YWJzPy5maW5kKCh0YWIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKFxuICAgICAgICAgIHRhYi50YWJJbmRleFZhbHVlLFxuICAgICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAoYWN0aXZlVGFiQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2Uuc2V0UGFyYW0oXG4gICAgICAgICAgdGhpcy5wZXJtYWxpbmtJZCxcbiAgICAgICAgICBhY3RpdmVUYWJDb21wb25lbnQucGVybWFsaW5rVmFsdWVPckRlZmF1bHQsXG4gICAgICAgICAgaW5pdGlhbCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHRvIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyBkaW1lbnNpb25zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZGV0ZWN0T3ZlcmZsb3coKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gRW1pdCB0aGUgbmV3IGFjdGl2ZSBpbmRleCB2YWx1ZSB0byBjb25zdW1lcnMuXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZVRhYkluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgICAgdGhpcy5sYXN0QWN0aXZlVGFiSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQoYWN0aXZlSW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLSBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvaW50ZXJhY3RpdmUtc3VwcG9ydHMtZm9jdXMgLS0+XG48ZGl2XG4gIGNsYXNzPVwic2t5LXRhYnNldFwiXG4gIHJvbGU9XCJ0YWJsaXN0XCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICBbbmdDbGFzc109XCJcbiAgICAnc2t5LXRhYnNldC1tb2RlLScgKyB0YWJEaXNwbGF5TW9kZSArICcgc2t5LXRhYnNldC1zdHlsZS0nICsgdGFiU3R5bGVcbiAgXCJcbiAgKHdpbmRvdzpyZXNpemUpPVwib25XaW5kb3dSZXNpemUoKVwiXG4gIChrZXlkb3duLmFycm93cmlnaHQpPVwib25SaWdodEtleURvd24oKVwiXG4gIChrZXlkb3duLmFycm93bGVmdCk9XCJvbkxlZnRLZXlEb3duKClcIlxuICAoa2V5ZG93bi5ob21lKT1cIm9uSG9tZUtleURvd24oKVwiXG4gIChrZXlkb3duLmVuZCk9XCJvbkVuZEtleURvd24oKVwiXG4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRhYnNldC1kcm9wZG93blwiPlxuICAgIEBpZiAodGFiRGlzcGxheU1vZGUgPT09ICdkcm9wZG93bicpIHtcbiAgICAgIDxza3ktZHJvcGRvd24gYnV0dG9uVHlwZT1cInRhYlwiPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7eyBkcm9wZG93blRyaWdnZXJCdXR0b25UZXh0IH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIEBmb3IgKHRhYkJ1dHRvbiBvZiB0YWJCdXR0b25zOyB0cmFjayB0YWJCdXR0b24uYnV0dG9uSWQpIHtcbiAgICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSBjbGFzcz1cInNreS10YWItZHJvcGRvd24tbWVudS1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS10YWItZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ3NreS10YWItZHJvcGRvd24taXRlbS1zZWxlY3RlZCc6IHRhYkJ1dHRvbi5hY3RpdmVcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHRhYkJ1dHRvblRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB0YWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NreS1kcm9wZG93bi1tZW51PlxuICAgICAgPC9za3ktZHJvcGRvd24+XG4gICAgfVxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRhYnNldC10YWJzXCI+XG4gICAgQGZvciAodGFiQnV0dG9uIG9mIHRhYkJ1dHRvbnM7IHRyYWNrIHRhYkJ1dHRvbi5idXR0b25JZCkge1xuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHRhYkJ1dHRvblRlbXBsYXRlO1xuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogdGFiQnV0dG9uXG4gICAgICAgICAgfVxuICAgICAgICBcIlxuICAgICAgLz5cbiAgICB9XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJza3ktdGFic2V0LWJ0bnNcIj5cbiAgICBAaWYgKG5ld1RhYi5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1pY29uIHNreS10YWJzZXQtYnRuLW5ld1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90YWJfYWRkJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdCc6ICdkZWZhdWx0J1xuICAgICAgICB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTmV3VGFiQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBpY29uTmFtZT1cImFkZFwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gICAgQGlmIChvcGVuVGFiLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWljb24gc2t5LXRhYnNldC1idG4tb3BlblwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90YWJfb3BlbicgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1tYXJnaW4taW5saW5lLWNvbXBhY3QnOiAnZGVmYXVsdCdcbiAgICAgICAgfVwiXG4gICAgICAgIChjbGljayk9XCJvbk9wZW5UYWJDbGljaygpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiZm9sZGVyLW9wZW5cIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICA8L3NwYW4+XG48L2Rpdj5cbjxuZy1jb250ZW50IC8+XG5cbjxuZy10ZW1wbGF0ZSAjdGFiQnV0dG9uVGVtcGxhdGUgbGV0LXRhYkJ1dHRvbj5cbiAgPHNreS10YWItYnV0dG9uXG4gICAgW2FjdGl2ZV09XCJ0YWJCdXR0b24uYWN0aXZlXCJcbiAgICBbYXJpYUNvbnRyb2xzXT1cInRhYkJ1dHRvbi5hcmlhQ29udHJvbHNcIlxuICAgIFtidXR0b25IcmVmXT1cInRhYkJ1dHRvbi5idXR0b25IcmVmXCJcbiAgICBbYnV0dG9uSWRdPVwidGFiQnV0dG9uLmJ1dHRvbklkXCJcbiAgICBbYnV0dG9uVGV4dF09XCJ0YWJCdXR0b24uYnV0dG9uVGV4dFwiXG4gICAgW2J1dHRvblRleHRDb3VudF09XCJ0YWJCdXR0b24uYnV0dG9uVGV4dENvdW50XCJcbiAgICBbY2xvc2VhYmxlXT1cInRhYkJ1dHRvbi5jbG9zZWFibGVcIlxuICAgIFtkaXNhYmxlZF09XCJ0YWJCdXR0b24uZGlzYWJsZWRcIlxuICAgIFt0YWJJbmRleF09XCJ0YWJCdXR0b24udGFiSW5kZXhcIlxuICAgIFt0YWJTdHlsZV09XCJ0YWJTdHlsZVwiXG4gICAgW3RhYk51bWJlcl09XCJ0YWJCdXR0b24udGFiTnVtYmVyXCJcbiAgICBbdG90YWxUYWJzQ291bnRdPVwidGFiQnV0dG9uLnRvdGFsVGFic0NvdW50XCJcbiAgICAoYnV0dG9uQ2xpY2spPVwib25UYWJCdXR0b25DbGljayh0YWJCdXR0b24pXCJcbiAgICAoY2xvc2VDbGljayk9XCJvblRhYkNsb3NlQ2xpY2sodGFiQnV0dG9uKVwiXG4gIC8+XG48L25nLXRlbXBsYXRlPlxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyResponsiveHostDirective } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyDropdownModule } from '@skyux/popovers';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\nimport { SkyTabButtonComponent } from './tab-button.component';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetNavButtonDisabledPipe } from './tabset-nav-button-disabled.pipe';\nimport { SkyTabsetNavButtonComponent } from './tabset-nav-button.component';\nimport { SkyTabsetComponent } from './tabset.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyTabsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsModule, declarations: [SkyTabButtonComponent,\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent,\n SkyTabsetNavButtonDisabledPipe], imports: [CommonModule,\n SkyResponsiveHostDirective,\n SkyDropdownModule,\n SkyIconModule,\n SkyIdModule,\n SkyTabsResourcesModule,\n SkyThemeModule], exports: [SkyTabComponent, SkyTabsetComponent, SkyTabsetNavButtonComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsModule, imports: [CommonModule,\n SkyDropdownModule,\n SkyIconModule,\n SkyIdModule,\n SkyTabsResourcesModule,\n SkyThemeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyTabsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkyTabButtonComponent,\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent,\n SkyTabsetNavButtonDisabledPipe,\n ],\n imports: [\n CommonModule,\n SkyResponsiveHostDirective,\n SkyDropdownModule,\n SkyIconModule,\n SkyIdModule,\n SkyTabsResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyTabComponent, SkyTabsetComponent, SkyTabsetNavButtonComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBcUJ4RCxNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWEsaUJBakJ0QixxQkFBcUI7WUFDckIsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQiwyQkFBMkI7WUFDM0IsOEJBQThCLGFBRzlCLFlBQVk7WUFDWiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixXQUFXO1lBQ1gsc0JBQXNCO1lBQ3RCLGNBQWMsYUFFTixlQUFlLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCO2dIQUUvRCxhQUFhLFlBVnRCLFlBQVk7WUFFWixpQkFBaUI7WUFDakIsYUFBYTtZQUNiLFdBQVc7WUFDWCxzQkFBc0I7WUFDdEIsY0FBYzs7NEZBSUwsYUFBYTtrQkFuQnpCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IsOEJBQThCO3FCQUMvQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWiwwQkFBMEI7d0JBQzFCLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLHNCQUFzQjt3QkFDdEIsY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLENBQUM7aUJBQzVFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lJZE1vZHVsZSwgU2t5UmVzcG9uc2l2ZUhvc3REaXJlY3RpdmUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvcG9wb3ZlcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lUYWJzUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS10YWJzLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lUYWJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3RhYi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lUYWJzZXROYXZCdXR0b25EaXNhYmxlZFBpcGUgfSBmcm9tICcuL3RhYnNldC1uYXYtYnV0dG9uLWRpc2FibGVkLnBpcGUnO1xuaW1wb3J0IHsgU2t5VGFic2V0TmF2QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJzZXQtbmF2LWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGFic2V0Q29tcG9uZW50IH0gZnJvbSAnLi90YWJzZXQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2t5VGFiQnV0dG9uQ29tcG9uZW50LFxuICAgIFNreVRhYkNvbXBvbmVudCxcbiAgICBTa3lUYWJzZXRDb21wb25lbnQsXG4gICAgU2t5VGFic2V0TmF2QnV0dG9uQ29tcG9uZW50LFxuICAgIFNreVRhYnNldE5hdkJ1dHRvbkRpc2FibGVkUGlwZSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lSZXNwb25zaXZlSG9zdERpcmVjdGl2ZSxcbiAgICBTa3lEcm9wZG93bk1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUlkTW9kdWxlLFxuICAgIFNreVRhYnNSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5VGhlbWVNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTa3lUYWJDb21wb25lbnQsIFNreVRhYnNldENvbXBvbmVudCwgU2t5VGFic2V0TmF2QnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGFic01vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtdGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9za3l1eC10YWJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["nextId","i1.SkyVerticalTabsetAdapterService","i2.SkyVerticalTabsetService","i3.SkyTabIdService","i5","i6","i1.SkyVerticalTabsetService","i2","i4","i3","i4.SkyTabIdService","i1.SkySectionedFormService","i3.SkyVerticalTabComponent","i2.SkyTabIdService","i1.SkyTabButtonAdapterService","i2.SkyTabsetService","i7","i1.SkyTabsetPermalinkService","i1","i4.SkyTabsetNavButtonDisabledPipe","i1.SkyTabsetAdapterService","i2.SkyTabsetPermalinkService","i3.SkyTabsetService","i8.SkyTabButtonComponent","i9"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-tabs.mjs","sources":["../../../../../libs/components/tabs/src/lib/modules/shared/sky-tabs-resources.module.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.service.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-adapter.service.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.service.ts","../../../../../libs/components/tabs/src/lib/modules/shared/tab-id.service.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab.component.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab.component.html","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.component.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset-group.component.html","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.component.ts","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.component.html","../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tabset.module.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.service.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form-section.component.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form-section.component.html","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/types/sectioned-form-message-type.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.component.ts","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.component.html","../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.module.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab-button-adapter.service.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.service.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab-button.component.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab-button.component.html","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-permalink.service.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.html","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button-disabled.pipe.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.html","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-adapter.service.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.component.ts","../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.component.html","../../../../../libs/components/tabs/src/lib/modules/tabs/tabs.module.ts","../../../../../libs/components/tabs/src/skyux-tabs.ts"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-tabs' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_tab_add: { message: 'Add tab' },\n skyux_tab_close: { message: 'Close {0} tab' },\n skyux_tabs_navigator_finish: { message: 'Finish' },\n skyux_tabs_navigator_next: { message: 'Next' },\n skyux_tabs_navigator_previous: { message: 'Previous' },\n skyux_tab_open: { message: 'Open tab' },\n skyux_vertical_tabs_show_tabs_text: { message: 'Tab list' },\n skyux_wizard_sr_step_current: { message: 'Step {0} of {1}, current: {2}' },\n skyux_wizard_sr_step_completed: {\n message: 'Step {0} of {1}, completed: {2}',\n },\n skyux_wizard_sr_step_unavailable: {\n message: 'Step {0} of {1}, unavailable: {2}',\n },\n },\n 'FR-CA': {\n skyux_tab_add: { message: 'Ajouter un onglet' },\n skyux_tab_close: { message: 'Fermer l’onglet {0}' },\n skyux_tabs_navigator_finish: { message: 'Terminer' },\n skyux_tabs_navigator_next: { message: 'Suivant' },\n skyux_tabs_navigator_previous: { message: 'Précédent' },\n skyux_tab_open: { message: 'Ouvrir l’onglet' },\n skyux_vertical_tabs_show_tabs_text: { message: 'Liste des onglets' },\n skyux_wizard_sr_step_current: {\n message: 'Étape {0} de {1}, en cours : {2}',\n },\n skyux_wizard_sr_step_completed: {\n message: 'Étape {0} de {1}, terminée : {2}',\n },\n skyux_wizard_sr_step_unavailable: {\n message: 'Étape {0} de {1}, non disponible : {2}',\n },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyTabsResourcesModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyVerticalTabsetGroupMessage } from './vertical-tabset-group-message';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabsetGroupService {\n public messageStream = new Subject<SkyVerticalTabsetGroupMessage>();\n}\n","import { DOCUMENT, ElementRef, Injectable, inject } from '@angular/core';\n\nconst VERTICAL_TABSET_BUTTON_SELECTOR = '.sky-vertical-tabset-button';\nconst VERTICAL_TABSET_BUTTON_DISABLED_SELECTOR = `${VERTICAL_TABSET_BUTTON_SELECTOR}-disabled`;\n\n@Injectable()\nexport class SkyVerticalTabsetAdapterService {\n #document = inject(DOCUMENT);\n\n public scrollToContentTop(element: ElementRef): void {\n element.nativeElement.scrollTop = 0;\n }\n\n public focusButton(elRef: ElementRef<HTMLElement> | undefined): boolean {\n return this.#focusButtonEl(elRef?.nativeElement);\n }\n\n public focusFirstButton(\n tabGroups: ElementRef<HTMLElement> | undefined,\n ): void {\n const tabGroupsEl = tabGroups?.nativeElement;\n\n if (tabGroupsEl) {\n const firstButtonEl = tabGroupsEl.querySelector(\n VERTICAL_TABSET_BUTTON_SELECTOR,\n ) as HTMLElement | null;\n\n if (firstButtonEl) {\n firstButtonEl.focus();\n }\n }\n }\n\n public focusNextButton(tabGroups: ElementRef | undefined): void {\n this.#focusSiblingButton(tabGroups);\n }\n\n public focusPreviousButton(tabGroups: ElementRef | undefined): void {\n this.#focusSiblingButton(tabGroups, true);\n }\n\n #focusSiblingButton(\n tabGroups: ElementRef<HTMLElement> | undefined,\n previous?: boolean,\n ): void {\n if (tabGroups) {\n const focusedEl = this.#document.activeElement as HTMLElement | null;\n\n if (focusedEl?.matches(VERTICAL_TABSET_BUTTON_SELECTOR)) {\n const tabGroupsEl = tabGroups.nativeElement;\n\n const buttonEls = Array.from(\n tabGroupsEl.querySelectorAll(VERTICAL_TABSET_BUTTON_SELECTOR),\n ) as HTMLElement[];\n\n if (previous) {\n buttonEls.reverse();\n }\n\n const focusedIndex = buttonEls.indexOf(focusedEl);\n\n for (let i = 1, n = buttonEls.length; i < n; i++) {\n // Offset the index of the next button from the index of the\n // currently focused button, circling back to the first button\n // when the end of the list is reached.\n const offset = (i + focusedIndex) % n;\n\n if (this.#focusButtonEl(buttonEls[offset])) {\n break;\n }\n }\n }\n }\n }\n\n #focusButtonEl(el: HTMLElement | null | undefined): boolean {\n if (el && !el.matches(VERTICAL_TABSET_BUTTON_DISABLED_SELECTOR)) {\n el.focus();\n return this.#elHasFocus(el);\n }\n\n return false;\n }\n\n #elHasFocus(el: HTMLElement | null | undefined): boolean {\n return !!el && el === this.#document.activeElement;\n }\n}\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SkyMediaQueryService } from '@skyux/core';\n\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';\n\nexport const VISIBLE_STATE = 'shown';\nexport const HIDDEN_STATE = 'void';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabsetService {\n public activeIndex: number | undefined = undefined;\n\n public animationContentVisibleState: string | undefined;\n\n public animationTabsVisibleState: string | undefined;\n\n public content: ElementRef | undefined;\n\n public hidingTabs = new BehaviorSubject(false);\n\n public indexChanged = new ReplaySubject<number | undefined>(1);\n\n public maintainTabContent: boolean | undefined = false;\n\n public showingTabs = new BehaviorSubject(false);\n\n public switchingMobile = new Subject<boolean>();\n\n public tabs: SkyVerticalTabComponent[] = [];\n\n public tabAdded = new Subject<SkyVerticalTabComponent>();\n\n public tabClicked = new ReplaySubject<boolean>(1);\n\n #groups: SkyVerticalTabsetGroupComponent[] = [];\n\n #contentAdded = false;\n\n #tabsVisible = false;\n\n #isMobile = false;\n\n #adapterSvc = inject(SkyVerticalTabsetAdapterService);\n\n constructor() {\n inject(SkyMediaQueryService)\n .breakpointChange.pipe(takeUntilDestroyed())\n .subscribe((breakpoint) => {\n const nowMobile = breakpoint === 'xs';\n\n if (nowMobile && !this.#isMobile) {\n // switching to mobile\n this.switchingMobile.next(true);\n\n if (!this.#tabsVisible) {\n this.hidingTabs.next(true);\n }\n } else if (!nowMobile && this.#isMobile) {\n // switching to widescreen\n this.switchingMobile.next(false);\n\n if (!this.#tabsVisible) {\n this.showingTabs.next(true);\n }\n }\n\n this.#isMobile = nowMobile;\n });\n }\n\n public addTab(tab: SkyVerticalTabComponent): void {\n const index = this.tabs.length;\n tab.index = index;\n\n this.tabs.push(tab);\n\n if (tab.active) {\n this.activateTab(tab);\n }\n\n this.tabAdded.next(tab);\n }\n\n public destroyTab(tab: SkyVerticalTabComponent): void {\n const tabIndex = this.tabs.indexOf(tab);\n if (tabIndex === -1) {\n return;\n }\n\n if (\n this.maintainTabContent &&\n tab.contentRendered &&\n /* istanbul ignore next */\n this.content?.nativeElement.contains(tab.tabContent?.nativeElement)\n ) {\n this.content?.nativeElement.removeChild(tab.tabContent?.nativeElement);\n }\n\n this.tabs.splice(tabIndex, 1);\n // update tab indices\n this.tabs.forEach((tabItem, index) => (tabItem.index = index));\n\n if (tab.active) {\n if (!this.maintainTabContent) {\n this.#destroyContent();\n }\n // Try selecting the next tab first, and if there's no next tab then\n // try selecting the previous one.\n const newActiveTab = this.tabs[tabIndex] || this.tabs[tabIndex - 1];\n /*istanbul ignore else */\n if (newActiveTab) {\n newActiveTab.activateTab();\n }\n }\n }\n\n public addGroup(group: SkyVerticalTabsetGroupComponent): void {\n this.#groups.push(group);\n }\n\n public destroyGroup(group: SkyVerticalTabsetGroupComponent): void {\n const groupIndex = this.#groups.indexOf(group);\n\n if (groupIndex >= 0) {\n this.#groups.splice(groupIndex, 1);\n }\n }\n\n public activateTab(tab: SkyVerticalTabComponent): void {\n // deactivate active tab\n const activeTab = this.tabs.find((t) => t.index === this.activeIndex);\n if (activeTab && activeTab.index !== tab.index) {\n activeTab.active = false;\n activeTab.tabDeactivated();\n }\n\n this.activeIndex = tab.index;\n this.tabClicked.next(true);\n this.#updateTabClicked();\n }\n\n public activeTab(): SkyVerticalTabComponent | undefined {\n return this.tabs.find((t) => t.index === this.activeIndex);\n }\n\n public isMobile(): boolean {\n return this.#isMobile;\n }\n\n public updateContent(): void {\n if (!this.maintainTabContent) {\n if (!this.#contentAdded && this.contentVisible()) {\n // content needs to be moved\n this.#moveContent();\n } else if (this.#contentAdded && !this.contentVisible()) {\n // content hidden\n this.#contentAdded = false;\n }\n } else {\n this.tabs.forEach((tab) => {\n if (!tab.contentRendered) {\n this.content?.nativeElement.appendChild(\n tab.tabContent?.nativeElement,\n );\n tab.contentRendered = true;\n }\n });\n }\n }\n\n public tabsVisible(): boolean {\n return !this.isMobile() || this.#tabsVisible;\n }\n\n public contentVisible(): boolean {\n return !this.isMobile() || !this.#tabsVisible;\n }\n\n public showTabs(): void {\n this.#tabsVisible = true;\n this.#contentAdded = false;\n this.animationTabsVisibleState = VISIBLE_STATE;\n this.animationContentVisibleState = HIDDEN_STATE;\n this.showingTabs.next(true);\n }\n\n public focusActiveTab(tabGroups: ElementRef | undefined): void {\n let focused = false;\n\n const activeTab = this.tabs.find((tab) => tab.active);\n\n if (activeTab) {\n const parentGroup = this.#findParentGroup(activeTab);\n\n const buttonToFocus =\n parentGroup && !parentGroup.open\n ? parentGroup.groupHeadingButton\n : activeTab.tabButton;\n\n focused = this.#adapterSvc.focusButton(buttonToFocus);\n }\n\n if (!focused) {\n this.#adapterSvc.focusFirstButton(tabGroups);\n }\n }\n\n #findParentGroup(\n tab: SkyVerticalTabComponent,\n ): SkyVerticalTabsetGroupComponent | undefined {\n return this.#groups.find((group) =>\n group.tabs?.some((groupTab) => tab === groupTab),\n );\n }\n\n #destroyContent(): void {\n if (this.content) {\n this.content.nativeElement.innerHTML = '';\n }\n this.content = undefined;\n }\n\n #moveContent(): void {\n /* istanbul ignore else */\n if (this.content && !this.#contentAdded) {\n const activeTab = this.activeTab();\n const activeContent = activeTab ? activeTab.tabContent : undefined;\n\n if (activeContent && activeTab && activeContent.nativeElement) {\n this.content.nativeElement.appendChild(activeContent.nativeElement);\n activeTab.contentRendered = true;\n this.#contentAdded = true;\n }\n }\n }\n\n #updateTabClicked(): void {\n this.#contentAdded = false;\n\n if (this.isMobile()) {\n this.#tabsVisible = false;\n this.animationContentVisibleState = VISIBLE_STATE;\n this.animationTabsVisibleState = HIDDEN_STATE;\n this.hidingTabs.next(true);\n }\n\n this.indexChanged.next(this.activeIndex);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Tracks the element IDs for all tabs within a tablist.\n * @internal\n */\n@Injectable()\nexport class SkyTabIdService {\n public get ids(): Observable<string[]> {\n return this.#idsObs;\n }\n\n #ids: Map<string, string>;\n #ids$: BehaviorSubject<string[]>;\n #idsObs: Observable<string[]>;\n\n constructor() {\n this.#ids = new Map();\n this.#ids$ = new BehaviorSubject<string[]>([]);\n this.#idsObs = this.#ids$.asObservable();\n }\n\n /**\n * Associates a tab's ID with its parent tablist.\n * @param {string} id A unique ID for the tab's registration.\n * @param {string} elementId The ID applied to the tab's element.\n */\n public register(id: string, elementId: string): void {\n if (!this.#ids.has(id) || this.#ids.get(id) !== elementId) {\n this.#ids.set(id, elementId);\n this.#emitIds();\n }\n }\n\n /**\n * Disassociates a tab's ID with its parent tablist.\n * @param {string} id The ID used to register the tab.\n */\n public unregister(id: string): void {\n if (this.#ids.has(id)) {\n this.#ids.delete(id);\n this.#emitIds();\n }\n }\n\n #emitIds(): void {\n this.#ids$.next(Array.from(this.#ids.values()));\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n inject,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyTabIdService } from '../shared/tab-id.service';\n\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupService } from './vertical-tabset-group.service';\nimport { SkyVerticalTabsetService } from './vertical-tabset.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-vertical-tab',\n templateUrl: './vertical-tab.component.html',\n styleUrls: ['./vertical-tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyVerticalTabComponent implements OnInit, OnDestroy {\n /**\n * Whether the tab is active when the tabset loads.\n * @default false\n */\n @Input()\n public set active(value: boolean | undefined) {\n if (value !== this.#_active) {\n this.#_active = value ?? false;\n\n if (this.#_active) {\n this.#tabsetService.activateTab(this);\n }\n }\n }\n\n public get active(): boolean {\n return this.#_active;\n }\n\n #_active = false;\n\n /**\n * The HTML element ID of the element that contains\n * the content that the vertical tab displays, which corresponds to the `tabId`. This property\n * [supports accessibility rules for disclosures](https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure).\n * For more information about the `aria-controls` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-controls).\n * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n */\n @Input()\n public ariaControls: string | undefined;\n\n /**\n * The ARIA role for the vertical tab\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tab functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/#roles).\n * @default \"tab\"\n * @deprecated Any other value than `tab` could lead to a poor user experience for users with assistive technology.\n * In the next major version, this property will be automatically set to `tab`.\n */\n @Input()\n public get ariaRole(): string {\n return this.#_ariaRole;\n }\n public set ariaRole(value: string | undefined) {\n this.#_ariaRole = value ?? 'tab';\n }\n\n /**\n * Whether to disable the tab.\n */\n @Input()\n public disabled: boolean | undefined = false;\n\n /**\n * Whether to indicate that the tab has an error.\n * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n */\n @Input()\n public errorIndicator: boolean | undefined = false;\n\n /**\n * Whether to indicate that the tab has required content.\n * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.\n */\n @Input()\n public requiredIndicator: boolean | undefined = false;\n\n /**\n * Displays an item count alongside the tab header to indicate how many list items the tab contains.\n */\n @Input()\n public tabHeaderCount: number | undefined;\n\n /**\n * The tab header.\n * @required\n */\n @Input()\n public tabHeading: string | undefined;\n\n /**\n * Whether to display a chevron-right icon on the right hand side of the tab.\n * @internal\n */\n @Input()\n public showTabRightArrow: boolean | undefined;\n\n /**\n * The ID for the tab.\n * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.\n */\n @Input()\n public set tabId(value: string | undefined) {\n this.#tabIdOrDefault = value || this.#defaultTabId;\n this.#tabIdSvc?.register(this.#defaultTabId, this.#tabIdOrDefault);\n }\n\n public get tabId(): string {\n return this.#tabIdOrDefault;\n }\n\n public set contentRendered(value: boolean) {\n this.#_contentRendered = value;\n\n /* istanbul ignore else */\n if (this.#_contentRendered) {\n // NOTE: Trigger another change detection cycle when the service marks\n // this tab as \"rendered\".\n setTimeout(() => {\n if (this.tabContent) {\n this.#changeRef.markForCheck();\n }\n });\n }\n }\n\n public get contentRendered(): boolean {\n return this.#_contentRendered;\n }\n\n public index: number | undefined;\n\n public isMobile = false;\n\n @ViewChild('tabButton')\n public tabButton: ElementRef | undefined;\n\n @ViewChild('tabContentWrapper')\n public tabContent: ElementRef | undefined;\n\n public groupService = inject(SkyVerticalTabsetGroupService, {\n optional: true,\n });\n\n #_ariaRole = 'tab';\n\n #_contentRendered = false;\n\n #tabIdOrDefault: string;\n\n #defaultTabId: string;\n\n #mobileSubscription = new Subject();\n\n #ngUnsubscribe = new Subject<void>();\n\n #adapterService: SkyVerticalTabsetAdapterService;\n #changeRef: ChangeDetectorRef;\n #tabsetService: SkyVerticalTabsetService;\n #tabIdSvc: SkyTabIdService | undefined;\n\n constructor(\n adapterService: SkyVerticalTabsetAdapterService,\n changeRef: ChangeDetectorRef,\n tabsetService: SkyVerticalTabsetService,\n @Optional() tabIdSvc?: SkyTabIdService,\n ) {\n this.#adapterService = adapterService;\n this.#changeRef = changeRef;\n this.#tabsetService = tabsetService;\n this.#tabIdSvc = tabIdSvc;\n\n this.#tabIdOrDefault = this.#defaultTabId = `sky-vertical-tab-${++nextId}`;\n this.tabId = this.#defaultTabId;\n }\n\n public ngOnInit(): void {\n this.isMobile = this.#tabsetService.isMobile();\n this.#changeRef.markForCheck();\n\n this.#tabsetService.switchingMobile.subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.#changeRef.markForCheck();\n });\n\n this.#tabsetService.addTab(this);\n }\n\n public ngOnDestroy(): void {\n this.#tabIdSvc?.unregister(this.#defaultTabId);\n this.#mobileSubscription.unsubscribe();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#tabsetService.destroyTab(this);\n }\n\n public activateTab(): void {\n if (!this.disabled) {\n this.active = true;\n this.#tabsetService.activateTab(this);\n\n this.#changeRef.markForCheck();\n }\n }\n\n public focusButton(): void {\n this.#adapterService.focusButton(this.tabButton);\n }\n\n public tabButtonActivate(event: Event): void {\n this.activateTab();\n event.stopPropagation();\n }\n\n public tabButtonArrowLeft(event: Event): void {\n if (this.groupService) {\n this.groupService.messageStream.next({\n messageType: 'focus',\n });\n\n event.preventDefault();\n }\n }\n\n public tabDeactivated(): void {\n this.#changeRef.markForCheck();\n }\n}\n","<a\n #tabButton\n class=\"sky-vertical-tab sky-vertical-tabset-button\"\n [attr.aria-controls]=\"\n isMobile ? undefined : ariaControls || tabContentPane.id\n \"\n [attr.aria-disabled]=\"isMobile ? undefined : disabled || undefined\"\n [attr.aria-selected]=\"isMobile ? undefined : active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tabset-button-disabled': disabled,\n 'sky-font-deemphasized': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"activateTab()\"\n (keyup.arrowleft)=\"tabButtonArrowLeft($event)\"\n (keyup.enter)=\"tabButtonActivate($event)\"\n (keyup.space)=\"tabButtonActivate($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div\n class=\"sky-vertical-tab-heading\"\n [ngClass]=\"{ 'sky-control-label-required': requiredIndicator }\"\n >\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n @if (tabHeaderCount || tabHeaderCount === 0) {\n <span class=\"sky-vertical-tab-count\"> ({{ tabHeaderCount }}) </span>\n }\n </div>\n @if (errorIndicator) {\n <sky-status-indicator\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n />\n }\n @if (isMobile && showTabRightArrow) {\n <sky-icon class=\"sky-vertical-tab-right-arrow\" iconName=\"chevron-right\" />\n }\n </div>\n</a>\n\n<div #tabContentWrapper skyResponsiveHost>\n <div\n #tabContentPane\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n >\n <ng-content />\n </div>\n</div>\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { skyAnimationSlide } from '@skyux/animations';\nimport { SkyIdService } from '@skyux/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIdService } from '../shared/tab-id.service';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupService } from './vertical-tabset-group.service';\nimport { SkyVerticalTabsetService } from './vertical-tabset.service';\n\n// Due to how we leave the content element in the DOM - we need to ensure that the padding for the content area is animated away along with the height.\n// The timing here matches what the slide animation uses to ensure they happen together.\nconst skyVerticalTabsetPaddingAnimation: AnimationTriggerMetadata = trigger(\n 'skyVerticalTabsetPaddingAnimation',\n [\n state(\n 'down',\n style({\n 'padding-top': 'var(--sky-comp-tab-vertical-subgroup-space-inset-top)',\n 'padding-bottom':\n 'var(--sky-comp-tab-vertical-subgroup-space-inset-bottom)',\n }),\n ),\n state(\n 'up',\n style({\n 'padding-top': '0',\n 'padding-bottom': '0',\n }),\n ),\n state(\n 'void',\n style({\n 'padding-top': '0',\n 'padding-bottom': '0',\n }),\n ),\n // Same timing as skyAnimationSlide to stay synchronized\n transition('up <=> down', animate('150ms ease-in')),\n ],\n);\n\n@Component({\n selector: 'sky-vertical-tabset-group',\n templateUrl: './vertical-tabset-group.component.html',\n styleUrls: ['./vertical-tabset-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [skyAnimationSlide, skyVerticalTabsetPaddingAnimation],\n providers: [SkyVerticalTabsetGroupService],\n standalone: false,\n})\nexport class SkyVerticalTabsetGroupComponent implements OnInit, OnDestroy {\n /**\n * Whether to disable the ability to expand and collapse the group.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = value;\n this.#updateSlideDirection(false);\n }\n\n public get disabled(): boolean | undefined {\n return this.#_disabled;\n }\n\n /**\n * The header for the collapsible group of tabs.\n */\n @Input()\n public groupHeading: string | undefined;\n\n /**\n * Whether the collapsible group is expanded.\n * @default false\n */\n @Input()\n public set open(value: boolean | undefined) {\n this.#_open = value;\n this.#updateSlideDirection(false);\n }\n\n public get open(): boolean | undefined {\n return this.#_open;\n }\n\n @ContentChildren(SkyVerticalTabComponent)\n public tabs: QueryList<SkyVerticalTabComponent> | undefined;\n\n @ViewChild('groupHeadingButton')\n public groupHeadingButton: ElementRef | undefined;\n\n public animationDisabled = false;\n public slideDirection: 'down' | 'up' | 'void' = 'up';\n\n protected groupId: string;\n\n #ngUnsubscribe = new Subject<void>();\n\n #tabService: SkyVerticalTabsetService;\n #changeRef: ChangeDetectorRef;\n #adapterService = inject(SkyVerticalTabsetAdapterService);\n #idService = inject(SkyIdService);\n #tabIdService = inject(SkyTabIdService);\n #groupService = inject(SkyVerticalTabsetGroupService);\n\n #_disabled: boolean | undefined;\n #_open: boolean | undefined = false;\n\n constructor(\n tabService: SkyVerticalTabsetService,\n changeRef: ChangeDetectorRef,\n ) {\n this.#tabService = tabService;\n this.#changeRef = changeRef;\n\n this.groupId = this.#idService.generateId();\n\n this.#groupService.messageStream.subscribe((message) => {\n switch (message.messageType) {\n case 'focus':\n this.#focusButton();\n }\n });\n }\n\n public ngOnInit(): void {\n this.#tabIdService.register(this.groupId, this.groupId);\n\n this.#tabService.addGroup(this);\n\n this.#tabService.hidingTabs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#tabsHidden());\n\n this.#tabService.showingTabs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#tabsShown());\n\n this.#tabService.tabClicked\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#tabClicked());\n }\n\n public ngOnDestroy(): void {\n this.#tabService.destroyGroup(this);\n\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#tabIdService.unregister(this.groupId);\n }\n\n public toggleMenuOpen(): void {\n if (!this.disabled) {\n this.open = !this.open;\n }\n\n this.#updateSlideDirection(true);\n this.#changeRef.markForCheck();\n }\n\n protected groupButtonArrowLeft(event: Event): void {\n if (this.open) {\n this.toggleMenuOpen();\n }\n\n event.preventDefault();\n }\n\n protected groupButtonArrowRight(event: Event): void {\n if (this.open) {\n this.tabs?.get(0)?.focusButton();\n } else {\n this.toggleMenuOpen();\n }\n\n event.preventDefault();\n }\n\n public isActive(): boolean {\n return !!this.tabs && this.tabs.find((t) => !!t.active) !== undefined;\n }\n\n #tabClicked(): void {\n this.#changeRef.markForCheck();\n }\n\n #tabsHidden(): void {\n // Angular will sometimes place the animation into the \"void\" state when tabs are hidden. Update our internal variable to reflect that.\n this.slideDirection = 'void';\n this.#changeRef.markForCheck();\n }\n\n #tabsShown(): void {\n // Set the animation back up so that the \"void\" state is returned to where it was prior to the tabs being hidden.\n // This will be instantaneous due to there not being a \"void -> *\" state on the slide animation.\n this.#updateSlideDirection(true);\n this.#changeRef.markForCheck();\n }\n\n #updateSlideDirection(animate: boolean): void {\n this.animationDisabled = !animate;\n this.slideDirection = this.open && !this.disabled ? 'down' : 'up';\n }\n\n #focusButton(): void {\n this.#adapterService.focusButton(this.groupHeadingButton);\n }\n}\n","<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-active': isActive(),\n 'sky-vertical-tabset-group-header-sub-open': open,\n 'sky-font-deemphasized': disabled\n }\"\n >\n <button\n #groupHeadingButton\n class=\"sky-vertical-tabset-button\"\n role=\"tab\"\n type=\"button\"\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-expanded]=\"!disabled && open\"\n [id]=\"groupId\"\n [ngClass]=\"{\n 'sky-vertical-tabset-button-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"toggleMenuOpen()\"\n (keyup.arrowleft)=\"groupButtonArrowLeft($event)\"\n (keyup.arrowright)=\"groupButtonArrowRight($event)\"\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n />\n </button>\n </div>\n <div\n #groupContent\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupId\"\n [@.disabled]=\"animationDisabled\"\n [@skyAnimationSlide]=\"slideDirection\"\n [@skyVerticalTabsetPaddingAnimation]=\"slideDirection\"\n >\n <ng-content />\n </div>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIdService } from '../shared/tab-id.service';\n\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport {\n HIDDEN_STATE,\n SkyVerticalTabsetService,\n VISIBLE_STATE,\n} from './vertical-tabset.service';\n\n@Component({\n selector: 'sky-vertical-tabset',\n templateUrl: './vertical-tabset.component.html',\n styleUrls: ['./vertical-tabset.component.scss'],\n providers: [SkyTabIdService, SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('tabGroupEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ],\n standalone: false,\n})\nexport class SkyVerticalTabsetComponent\n implements OnInit, AfterViewChecked, OnDestroy\n{\n /**\n * The text to display on the show tabs button on mobile devices.\n */\n @Input()\n public showTabsText: string | undefined;\n\n /**\n * The ARIA label for the tabset. This sets the tabset's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * The HTML element ID of the element that labels\n * the tabset. This sets the tabset's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset does not include a visible label, use `ariaLabel` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * The ARIA role for the vertical tabset\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * by indicating how the tabset functions and what it controls. For information about how\n * an ARIA role indicates what an item represents on a web page, see the\n * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/#roles).\n * @default \"tablist\"\n * @deprecated Any other value than `tablist` could lead to a poor user experience for users with assistive technology.\n * In the next major version, this property will be automatically set to `tablist`.\n */\n @Input()\n public get ariaRole(): string {\n return this.#_ariaRole;\n }\n\n public set ariaRole(value: string | undefined) {\n this.#_ariaRole = value ?? 'tablist';\n }\n\n /**\n * Whether the vertical tabset loads tab content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n @Input()\n public maintainTabContent: boolean | undefined = false;\n\n /**\n * Fires when the active tab changes. Emits the index of the active tab. The\n * index is based on the tab's position when it loads.\n */\n @Output()\n public activeChange = new EventEmitter<number>();\n\n @ViewChild('groupContainerWrapper')\n public tabGroups: ElementRef | undefined;\n\n @ViewChild('skySideContent')\n public content: ElementRef | undefined;\n\n @ViewChild('contentContainerWrapper')\n public contentWrapper: ElementRef | undefined;\n\n public ariaOwns: string | undefined;\n\n public isMobile = false;\n\n protected tablistHasFocus = false;\n\n #ngUnsubscribe = new Subject<void>();\n #_ariaRole = 'tablist';\n\n #resources: SkyLibResourcesService;\n #changeRef: ChangeDetectorRef;\n\n constructor(\n public adapterService: SkyVerticalTabsetAdapterService,\n public tabService: SkyVerticalTabsetService,\n resources: SkyLibResourcesService,\n changeRef: ChangeDetectorRef,\n public tabIdSvc: SkyTabIdService,\n ) {\n this.#resources = resources;\n this.#changeRef = changeRef;\n }\n\n public ngOnInit(): void {\n this.tabService.maintainTabContent = this.maintainTabContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((index) => {\n this.activeChange.emit(index);\n if (this.contentWrapper) {\n this.adapterService.scrollToContentTop(this.contentWrapper);\n }\n this.#changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.#changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.#changeRef.markForCheck();\n }\n if (!this.showTabsText) {\n this.#resources\n .getString('skyux_vertical_tabs_show_tabs_text')\n .pipe(take(1))\n .subscribe((resource) => {\n /* sanity check */\n /* istanbul ignore else */\n if (!this.showTabsText) {\n this.showTabsText = resource;\n }\n });\n }\n }\n\n public ngAfterViewChecked(): void {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n protected tabsetFocus(): void {\n this.tabService.focusActiveTab(this.tabGroups);\n }\n\n protected trapFocusInTablist(): void {\n // This will set the tab index of the the vertical tabset element to -1\n // while focus is inside the tab list, allowing Shift+Tab to move\n // to the next element above the tab list element. Otherwise focus would\n // be trapped on the currently focused tab.\n this.tablistHasFocus = true;\n }\n\n protected resetTabIndex(): void {\n this.tablistHasFocus = false;\n }\n\n protected tabGroupsArrowDown(): void {\n this.adapterService.focusNextButton(this.tabGroups);\n }\n\n protected tabGroupsArrowUp(): void {\n this.adapterService.focusPreviousButton(this.tabGroups);\n }\n}\n","<div\n class=\"sky-vertical-tabset\"\n [tabIndex]=\"tablistHasFocus ? -1 : 0\"\n (focus)=\"tabsetFocus()\"\n>\n <!--\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\n However, the markup for each sky-vertical-tab component includes both the tab button\n and its panel, making the panel element a child of its tablist. Moreover, our\n sky-vertical-tab components can be grouped within collapsible containers, which also\n violates accessibility rules because only tab buttons can be children of a tablist.\n To address this, we create an empty tablist element with an aria-owns attribute,\n pointing to each tab element individually. That way, we don't have to worry about the\n structure for each sky-vertical-tab component in order to satisfy accessibility\n guidelines.\n -->\n <span\n class=\"sky-vertical-tabset-tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-orientation]=\"isMobile ? undefined : 'vertical'\"\n [attr.aria-owns]=\"\n isMobile ? undefined : (tabIdSvc.ids | async)?.join(' ') || undefined\n \"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n ></span>\n @if (maintainTabContent || tabService.tabsVisible()) {\n <div\n #groupContainerWrapper\n class=\"sky-vertical-tabset-group-container\"\n [@tabGroupEnter]=\"tabService.animationTabsVisibleState\"\n [ngClass]=\"{ 'sky-vertical-tabset-hidden': !tabService.tabsVisible() }\"\n [tabIndex]=\"tablistHasFocus ? -1 : 0\"\n (@tabGroupEnter.done)=\"tabsetFocus()\"\n (keydown.arrowDown)=\"tabGroupsArrowDown(); $event.preventDefault()\"\n (keydown.arrowUp)=\"tabGroupsArrowUp(); $event.preventDefault()\"\n (focusin)=\"trapFocusInTablist()\"\n (focusout)=\"resetTabIndex()\"\n >\n <ng-content />\n </div>\n }\n @if (maintainTabContent || tabService.contentVisible()) {\n <div\n #contentContainerWrapper\n class=\"sky-vertical-tabset-content\"\n [ngClass]=\"{\n 'sky-vertical-tabset-content-hidden': !tabService.contentVisible()\n }\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n (focusin)=\"resetTabIndex()\"\n >\n <div #skySideContent></div>\n @if (!tabService.tabsVisible()) {\n <button\n class=\"sky-btn sky-btn-primary sky-vertical-tabset-show-tabs-btn\"\n type=\"button\"\n (click)=\"tabService.showTabs()\"\n >\n <sky-icon iconName=\"chevron-left\" />\n {{ showTabsText }}\n </button>\n }\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyResponsiveHostDirective } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport {\n SkyExpansionIndicatorModule,\n SkyStatusIndicatorModule,\n} from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyVerticalTabComponent } from './vertical-tab.component';\nimport { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';\nimport { SkyVerticalTabsetGroupComponent } from './vertical-tabset-group.component';\nimport { SkyVerticalTabsetComponent } from './vertical-tabset.component';\n\n@NgModule({\n declarations: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent,\n ],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIdModule,\n SkyExpansionIndicatorModule,\n SkyResponsiveHostDirective,\n SkyStatusIndicatorModule,\n SkyTabsResourcesModule,\n SkyThemeModule,\n ],\n providers: [SkyVerticalTabsetAdapterService],\n exports: [\n SkyVerticalTabsetComponent,\n SkyVerticalTabsetGroupComponent,\n SkyVerticalTabComponent,\n ],\n})\nexport class SkyVerticalTabsetModule {}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class SkySectionedFormService {\n /**\n * @internal\n */\n public invalidChange: BehaviorSubject<boolean | undefined> =\n new BehaviorSubject<boolean | undefined>(undefined);\n /**\n * @internal\n */\n public requiredChange: BehaviorSubject<boolean | undefined> =\n new BehaviorSubject<boolean | undefined>(undefined);\n\n /**\n * Sets the current section's invalid state based on the `isInvalid` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public invalidFieldChanged(isInvalid: boolean | undefined): void {\n this.invalidChange.next(isInvalid);\n }\n\n /**\n * Sets the current section's required state based on the `isRequired` parameter.\n * This method is used within a `sky-sectioned-form-section` element.\n */\n public requiredFieldChanged(isRequired: boolean | undefined): void {\n this.requiredChange.next(isRequired);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabsetService } from '../vertical-tabset/vertical-tabset.service';\n\nimport { SkyVerticalTabComponent } from './../vertical-tabset/vertical-tab.component';\nimport { SkySectionedFormService } from './sectioned-form.service';\n\nlet nextId = 0;\n\n/**\n * Creates an individual form to display as a section within the sectioned form.\n */\n@Component({\n selector: 'sky-sectioned-form-section',\n templateUrl: './sectioned-form-section.component.html',\n providers: [SkySectionedFormService],\n standalone: false,\n})\nexport class SkySectionedFormSectionComponent implements OnInit, OnDestroy {\n public sectionTabId = `sky-sectioned-form-tab-${++nextId}`;\n public sectionContentId = `sky-sectioned-form-section-${++nextId}`;\n\n /**\n * The section header.\n * @required\n */\n @Input()\n public heading: string | undefined;\n\n /**\n * The number of items within the section. A counter appears beside the section header.\n */\n @Input()\n public itemCount: number | undefined;\n\n /**\n * Whether the section is active when the form loads.\n * @default false\n */\n @Input()\n public active: boolean | undefined = false;\n\n public fieldRequired: boolean | undefined;\n public fieldInvalid: boolean | undefined;\n\n @ViewChild(SkyVerticalTabComponent)\n public tab: SkyVerticalTabComponent | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #sectionedFormService: SkySectionedFormService;\n #tabsetService: SkyVerticalTabsetService;\n #changeRef: ChangeDetectorRef;\n\n constructor(\n sectionedFormService: SkySectionedFormService,\n tabsetService: SkyVerticalTabsetService,\n changeRef: ChangeDetectorRef,\n ) {\n this.#sectionedFormService = sectionedFormService;\n this.#tabsetService = tabsetService;\n this.#changeRef = changeRef;\n }\n\n public ngOnInit(): void {\n this.#changeRef.detectChanges();\n\n this.#tabsetService.switchingMobile.subscribe((mobile: boolean) => {\n this.#changeRef.detectChanges();\n });\n\n this.#sectionedFormService.requiredChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(\n (required: boolean | undefined) => (this.fieldRequired = required),\n );\n\n this.#sectionedFormService.invalidChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(\n (invalid: boolean | undefined) => (this.fieldInvalid = invalid),\n );\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n}\n","<sky-vertical-tab\n [active]=\"active\"\n [errorIndicator]=\"fieldInvalid\"\n [requiredIndicator]=\"fieldRequired\"\n [showTabRightArrow]=\"true\"\n [tabHeaderCount]=\"itemCount\"\n [tabHeading]=\"heading\"\n [tabId]=\"sectionTabId\"\n>\n <ng-content />\n</sky-vertical-tab>\n","export enum SkySectionedFormMessageType {\n ShowTabs = 1,\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIdService } from '../shared/tab-id.service';\n\nimport {\n HIDDEN_STATE,\n SkyVerticalTabsetService,\n VISIBLE_STATE,\n} from './../vertical-tabset/vertical-tabset.service';\nimport { SkySectionedFormMessage } from './types/sectioned-form-message';\nimport { SkySectionedFormMessageType } from './types/sectioned-form-message-type';\n\n/**\n * Creates a container for the sectioned forms.\n */\n@Component({\n selector: 'sky-sectioned-form',\n templateUrl: './sectioned-form.component.html',\n styleUrls: ['./sectioned-form.component.scss'],\n providers: [SkyTabIdService, SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('tabEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ],\n standalone: false,\n})\nexport class SkySectionedFormComponent\n implements OnInit, OnDestroy, AfterViewChecked\n{\n /**\n * Whether the sectioned form loads section content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n @Input()\n public maintainSectionContent: boolean | undefined = false;\n\n @Input()\n public set messageStream(\n value: Subject<SkySectionedFormMessage> | undefined,\n ) {\n this.#_messageStream = value || new Subject<SkySectionedFormMessage>();\n this.#initMessageStream();\n }\n\n public get messageStream(): Subject<SkySectionedFormMessage> {\n return this.#_messageStream;\n }\n\n /**\n * Fires when the active tab changes and emits the index of the active\n * section. The index is based on the section's position when the form loads.\n */\n @Output()\n public indexChanged = new EventEmitter<number>();\n\n /**\n * Fires when the sectioned form tabs are shown or hidden.\n */\n @Output()\n public tabsVisibleChanged = new EventEmitter<boolean>();\n\n public ariaOwns: string | undefined;\n\n public ariaRole: string | undefined = 'tablist';\n\n @ViewChild('skySectionSideContent')\n public content: ElementRef | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #messageStreamSub: Subscription | undefined;\n #changeRef: ChangeDetectorRef;\n #tabIdSvc: SkyTabIdService;\n #logger: SkyLogService;\n\n #_messageStream = new Subject<SkySectionedFormMessage>();\n\n constructor(\n public tabService: SkyVerticalTabsetService,\n changeRef: ChangeDetectorRef,\n tabIdSvc: SkyTabIdService,\n logger: SkyLogService,\n ) {\n this.#changeRef = changeRef;\n this.#tabIdSvc = tabIdSvc;\n this.#logger = logger;\n\n this.#initMessageStream();\n\n this.#tabIdSvc.ids.pipe(takeUntil(this.#ngUnsubscribe)).subscribe((ids) => {\n this.ariaOwns = ids.join(' ') || undefined;\n this.#changeRef.markForCheck();\n });\n }\n\n public ngOnInit(): void {\n this.tabService.maintainTabContent = this.maintainSectionContent;\n\n this.tabService.indexChanged\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((index) => {\n this.indexChanged.emit(index);\n this.#changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n if (!mobile) {\n this.ariaRole = 'tablist';\n } else {\n this.ariaRole = undefined;\n }\n\n this.#changeRef.markForCheck();\n });\n\n this.tabService.hidingTabs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.tabsVisibleChanged.emit(false);\n });\n\n this.tabService.showingTabs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.tabsVisibleChanged.emit(true);\n });\n\n if (this.tabService.isMobile()) {\n this.ariaRole = undefined;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.#changeRef.markForCheck();\n }\n }\n\n public ngAfterViewChecked(): void {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * @deprecated Use the `tabsVisibleChanged` output to listen for tab visibility changes.\n */\n /* istanbul ignore next */\n public tabsVisible(): boolean {\n this.#logger.deprecated('SectionedFormComponent.tabsVisible()', {\n deprecationMajorVersion: 8,\n moreInfoUrl:\n 'https://developer.blackbaud.com/skyux/components/sectioned-form',\n replacementRecommendation:\n 'Use the `tabsVisibleChanged` output to listen for tab visibility changes.',\n });\n\n this.#changeRef.markForCheck();\n return this.tabService.tabsVisible();\n }\n\n /**\n * @deprecated Use the `messageStream` input and push a `ShowTabs` message to the message stream instead.\n */\n public showTabs(): void {\n this.#logger.deprecated('SectionedFormComponent.showTabs()', {\n deprecationMajorVersion: 8,\n moreInfoUrl:\n 'https://developer.blackbaud.com/skyux/components/sectioned-form',\n replacementRecommendation:\n 'Use the `messageStream` input and push a `ShowTabs` message to the message stream instead.',\n });\n\n this.#showTabs();\n }\n\n #showTabs(): void {\n this.tabService.showTabs();\n this.#changeRef.markForCheck();\n }\n\n #initMessageStream(): void {\n if (this.#messageStreamSub) {\n this.#messageStreamSub.unsubscribe();\n }\n\n this.#messageStreamSub = this.messageStream\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((message) => {\n switch (message.type) {\n case SkySectionedFormMessageType.ShowTabs:\n this.#showTabs();\n break;\n }\n });\n }\n}\n","<div class=\"sky-sectioned-form\" (window:resize)=\"tabService.updateContent()\">\n <!--\n ARIA rules do not allow tabpanel elements to be children of a tablist element.\n However, the markup for each sky-vertical-tab component includes both the tab button\n and its panel, making the panel element a child of its tablist. Moreover, our\n sky-vertical-tab components can be grouped within collapsible containers, which also\n violates accessibility rules because only tab buttons can be children of a tablist.\n To address this, we create an empty tablist element with an aria-owns attribute,\n pointing to each tab element individually. That way, we don't have to worry about the\n structure for each sky-vertical-tab component in order to satisfy accessibility\n guidelines.\n -->\n <span\n [attr.aria-orientation]=\"ariaRole ? 'vertical' : undefined\"\n [attr.aria-owns]=\"ariaRole ? ariaOwns : undefined\"\n [attr.role]=\"ariaRole\"\n ></span>\n @if (maintainSectionContent || tabService.tabsVisible()) {\n <div\n class=\"sky-sectioned-form-tabs\"\n [ngClass]=\"{\n 'sky-sectioned-form-tabs-hidden': !tabService.tabsVisible(),\n 'sky-sectioned-form-tabs-only': !tabService.contentVisible()\n }\"\n [@tabEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content />\n </div>\n }\n @if (maintainSectionContent || tabService.contentVisible()) {\n <div\n #skySectionSideContent\n class=\"sky-sectioned-form-content\"\n [ngClass]=\"{\n 'sky-sectioned-form-content-hidden': !tabService.contentVisible()\n }\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n ></div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';\n\nimport { SkySectionedFormSectionComponent } from './sectioned-form-section.component';\nimport { SkySectionedFormComponent } from './sectioned-form.component';\n\n@NgModule({\n declarations: [SkySectionedFormComponent, SkySectionedFormSectionComponent],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyThemeModule,\n SkyVerticalTabsetModule,\n ],\n exports: [SkySectionedFormComponent, SkySectionedFormSectionComponent],\n})\nexport class SkySectionedFormModule {}\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabButtonAdapterService {\n public focusButtonLink(buttonEl: ElementRef): void {\n buttonEl.nativeElement.querySelector('a').focus();\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { TabButtonViewModel } from './tab-button-view-model';\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabLayoutType } from './tab-layout-type';\nimport { SkyTabsetActiveTabChangeArgs } from './tabset-active-tab-change-args';\nimport { SkyTabsetActiveTabUnregisteredArgs } from './tabset-active-tab-unregistered-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetService implements OnDestroy {\n public readonly activeTabUnregistered: Observable<SkyTabsetActiveTabUnregisteredArgs>;\n\n public readonly activeTabChange: Observable<SkyTabsetActiveTabChangeArgs>;\n\n public readonly focusedTabBtnIndex: Observable<SkyTabIndex>;\n\n public readonly activeTabLayout: Observable<SkyTabLayoutType>;\n\n public currentActiveTabIndex: SkyTabIndex | undefined = 0;\n\n public currentFocusedTabBtnIndex: SkyTabIndex = 0;\n\n #activeTabChange: BehaviorSubject<SkyTabsetActiveTabChangeArgs>;\n\n #focusedTabBtnIndex: Subject<SkyTabIndex>;\n\n #activeTabUnregistered: Subject<SkyTabsetActiveTabUnregisteredArgs>;\n\n #activeTabLayout: Subject<SkyTabLayoutType>;\n\n #tabs: {\n tabIndex: SkyTabIndex | undefined;\n }[] = [];\n\n #tabCounter = 0;\n\n constructor() {\n this.#activeTabChange = new BehaviorSubject<SkyTabsetActiveTabChangeArgs>({\n initial: true,\n tabIndex: 0,\n });\n\n this.#activeTabLayout = new Subject();\n\n this.#activeTabUnregistered = new Subject();\n\n this.#focusedTabBtnIndex = new Subject();\n\n this.activeTabChange = this.#activeTabChange.asObservable();\n this.activeTabLayout = this.#activeTabLayout.asObservable();\n this.activeTabUnregistered = this.#activeTabUnregistered.asObservable();\n this.focusedTabBtnIndex = this.#focusedTabBtnIndex.asObservable();\n }\n\n public ngOnDestroy(): void {\n this.#activeTabChange.complete();\n this.#activeTabUnregistered.complete();\n this.#focusedTabBtnIndex.complete();\n this.#activeTabLayout.complete();\n }\n\n /**\n * Sets the active tab by its unique `tabIndex` property.\n */\n public setActiveTabIndex(\n value: SkyTabsetActiveTabChangeArgs,\n config = {\n emitChange: true,\n },\n ): void {\n if (\n value.tabIndex !== undefined &&\n !this.tabIndexesEqual(value.tabIndex, this.currentActiveTabIndex)\n ) {\n this.currentActiveTabIndex = value.tabIndex;\n\n /* istanbul ignore else */\n if (config.emitChange) {\n this.#activeTabChange.next(value);\n }\n\n this.setFocusedTabBtnIndex(value.tabIndex);\n }\n }\n\n public focusNextTabBtn(tabButtons: TabButtonViewModel[]): void {\n const currentTabArrayIndex = this.#tabs.findIndex((tab) =>\n this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex),\n );\n\n for (\n let i = this.#getNextTabArrayIndex(currentTabArrayIndex);\n i !== currentTabArrayIndex;\n i = this.#getNextTabArrayIndex(i)\n ) {\n const tabBtn = tabButtons[i];\n if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n return;\n }\n }\n }\n\n public focusPrevTabBtn(tabButtons: TabButtonViewModel[]): void {\n const currentTabArrayIndex = this.#tabs.findIndex((tab) =>\n this.tabIndexesEqual(tab.tabIndex, this.currentFocusedTabBtnIndex),\n );\n\n for (\n let i = this.#getPrevTabArrayIndex(currentTabArrayIndex);\n i !== currentTabArrayIndex;\n i = this.#getPrevTabArrayIndex(i)\n ) {\n const tabBtn = tabButtons[i];\n if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n return;\n }\n }\n }\n\n public focusFirstOrNearestTabBtn(tabButtons: TabButtonViewModel[]): void {\n for (const tabBtn of tabButtons) {\n if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n return;\n }\n }\n }\n\n public focusLastOrNearestTabBtn(tabButtons: TabButtonViewModel[]): void {\n for (let i = tabButtons.length - 1; i >= 0; i--) {\n const tabBtn = tabButtons[i];\n\n if (!tabBtn.disabled && tabBtn.tabIndex !== undefined) {\n this.setFocusedTabBtnIndex(tabBtn.tabIndex);\n return;\n }\n }\n }\n\n public setFocusedTabBtnIndex(tabIndex: SkyTabIndex): void {\n this.currentFocusedTabBtnIndex = tabIndex;\n this.#focusedTabBtnIndex.next(tabIndex);\n }\n\n /**\n * Registers a tab component.\n */\n public registerTab(tabIndex?: SkyTabIndex): SkyTabIndex {\n if (tabIndex === undefined) {\n tabIndex = this.#tabCounter;\n this.#tabCounter++;\n }\n\n this.#tabs.push({ tabIndex });\n\n return tabIndex;\n }\n\n public updateTabIndex(\n currentTabIndex: SkyTabIndex,\n newTabIndex: SkyTabIndex,\n ): void {\n const found = this.#tabs.find((tab) =>\n this.tabIndexesEqual(tab.tabIndex, currentTabIndex),\n );\n if (found) {\n found.tabIndex = newTabIndex;\n }\n }\n\n public updateActiveTabLayout(layout: SkyTabLayoutType): void {\n this.#activeTabLayout.next(layout);\n }\n\n /**\n * Unregisters a tab component.\n */\n public unregisterTab(tabIndex: SkyTabIndex): void {\n const index = this.#tabs.findIndex((tab) =>\n this.tabIndexesEqual(tab.tabIndex, tabIndex),\n );\n\n // Notify the tabset component when an active tab is unregistered.\n if (this.#isTabIndexActive(this.#tabs[index]?.tabIndex)) {\n this.#activeTabUnregistered.next({\n arrayIndex: index,\n });\n }\n\n this.#tabs.splice(index, 1);\n }\n\n /**\n * Unregisters all tab components at once.\n */\n public unregisterAll(): void {\n this.#tabs = [];\n }\n\n /**\n * Compares two tab indexes and returns `true` if they are equal.\n */\n public tabIndexesEqual(\n tabIndex1: SkyTabIndex | undefined,\n tabIndex2: SkyTabIndex | undefined,\n ): boolean {\n return (\n tabIndex1 === tabIndex2 ||\n (tabIndex1 !== undefined &&\n tabIndex2 !== undefined &&\n +tabIndex1 === +tabIndex2)\n );\n }\n\n /**\n * Verifies if a provided tab index is registered.\n */\n public isValidTabIndex(tabIndex: SkyTabIndex): boolean {\n return this.#tabs.some((tab) =>\n this.tabIndexesEqual(tab.tabIndex, tabIndex),\n );\n }\n\n /**\n * Activates the first registered tab.\n */\n public activateFirstTab(): SkyTabIndex | undefined {\n const firstTabIndex = this.#tabs[0] && this.#tabs[0].tabIndex;\n if (firstTabIndex !== undefined) {\n this.setActiveTabIndex({\n tabIndex: firstTabIndex,\n });\n return firstTabIndex;\n }\n return undefined;\n }\n\n /**\n * Activates the next registered tab, or the previous one based on a provided array index.\n */\n public activateNearestTab(arrayIndex: number): void {\n const newActiveTab = this.#tabs[arrayIndex] || this.#tabs[arrayIndex - 1];\n if (newActiveTab) {\n this.currentActiveTabIndex = newActiveTab.tabIndex;\n }\n }\n\n #isTabIndexActive(tabIndex: SkyTabIndex | undefined): boolean {\n return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);\n }\n\n #getNextTabArrayIndex(currentIndex: number): number {\n let nextIndex = currentIndex + 1;\n\n if (nextIndex === this.#tabs.length) {\n nextIndex = 0;\n }\n\n return nextIndex;\n }\n\n #getPrevTabArrayIndex(currentIndex: number): number {\n let prevIndex = currentIndex - 1;\n\n if (prevIndex < 0) {\n prevIndex = this.#tabs.length - 1;\n }\n\n return prevIndex;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabButtonAdapterService } from './tab-button-adapter.service';\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabsetStyle } from './tabset-style';\nimport { SkyTabsetService } from './tabset.service';\n\nconst DEFAULT_DISABLED = false;\n\ntype SkyWizardStepState = 'completed' | 'current' | 'unavailable';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tab-button',\n templateUrl: './tab-button.component.html',\n styleUrls: ['./tab-button.component.scss'],\n providers: [SkyTabButtonAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class SkyTabButtonComponent implements AfterViewInit, OnDestroy {\n @Input()\n public get active(): boolean | undefined {\n return this.#_isActive;\n }\n public set active(value: boolean | undefined) {\n this.#_isActive = value;\n this.#updateWizardStepState();\n }\n\n @Input()\n public ariaControls: string | undefined;\n\n @Input()\n public buttonHref: string | undefined;\n\n @Input()\n public buttonId: string | undefined;\n\n @Input()\n public buttonText: string | undefined;\n\n @Input()\n public buttonTextCount: string | undefined;\n\n @Input()\n public closeable: boolean | undefined;\n\n @Input()\n public get disabled(): boolean {\n return this.#_isDisabled;\n }\n\n public set disabled(value: boolean | undefined) {\n this.#_isDisabled = value ?? DEFAULT_DISABLED;\n this.#updateWizardStepState();\n }\n\n @Input()\n public tabIndex: SkyTabIndex | undefined;\n\n @Input()\n public tabNumber: number | undefined;\n\n @Input()\n public totalTabsCount: number | undefined;\n\n @Input()\n public get tabStyle(): SkyTabsetStyle | undefined {\n return this.#_tabStyle;\n }\n\n public set tabStyle(style: SkyTabsetStyle | undefined) {\n this.#_tabStyle = style;\n this.#updateWizardStepState();\n }\n\n @Output()\n public buttonClick = new EventEmitter<void>();\n\n @Output()\n public closeClick = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n adapterService: SkyTabButtonAdapterService,\n changeDetectorRef: ChangeDetectorRef,\n tabsetService: SkyTabsetService,\n ) {\n this.#adapterService = adapterService;\n this.#changeDetectorRef = changeDetectorRef;\n this.#elementRef = elementRef;\n this.#tabsetService = tabsetService;\n }\n\n public closeBtnTabIndex = '-1';\n public wizardStepState: SkyWizardStepState | undefined;\n #_isActive: boolean | undefined = false;\n #_isDisabled = DEFAULT_DISABLED;\n #_tabStyle: SkyTabsetStyle | undefined;\n #adapterService: SkyTabButtonAdapterService;\n #changeDetectorRef: ChangeDetectorRef;\n #elementRef: ElementRef;\n #tabsetService: SkyTabsetService;\n #ngUnsubscribe = new Subject<void>();\n\n public ngAfterViewInit(): void {\n this.#tabsetService.focusedTabBtnIndex\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((focusedIndex) => {\n if (this.tabIndex !== undefined && focusedIndex === this.tabIndex) {\n this.closeBtnTabIndex = '0';\n this.focusBtn();\n } else {\n this.closeBtnTabIndex = '-1';\n }\n this.#changeDetectorRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public onButtonClick(event: any): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n event.preventDefault();\n }\n }\n\n public onTabButtonKeyDown(event: KeyboardEvent): void {\n /*istanbul ignore else */\n if (event.key) {\n switch (event.key.toUpperCase()) {\n case ' ':\n case 'ENTER':\n this.onButtonClick(event);\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n }\n }\n\n public onCloseClick(event: any): void {\n this.closeClick.emit();\n\n // Prevent the click event from bubbling up to the anchor tag;\n // otherwise it will trigger a page refresh.\n event.stopPropagation();\n event.preventDefault();\n }\n\n public focusBtn(): void {\n this.#adapterService.focusButtonLink(this.#elementRef);\n }\n\n public onFocus(): void {\n if (this.tabIndex !== undefined) {\n this.#tabsetService.setFocusedTabBtnIndex(this.tabIndex);\n }\n }\n\n #updateWizardStepState(): void {\n if (this.tabStyle === 'tabs') {\n this.wizardStepState = undefined;\n } else {\n if (this.active) {\n this.wizardStepState = 'current';\n } else if (!this.disabled) {\n this.wizardStepState = 'completed';\n } else {\n this.wizardStepState = 'unavailable';\n }\n }\n\n this.#changeDetectorRef.markForCheck();\n }\n}\n","<div\n class=\"sky-btn-tab-wrapper\"\n [ngClass]=\"{\n 'sky-btn-tab-wrapper-selected': active,\n 'sky-btn-tab-wrapper-disabled': disabled\n }\"\n>\n <a\n #tabButtonEl\n class=\"sky-btn-tab\"\n role=\"tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n [attr.href]=\"buttonHref\"\n [attr.aria-label]=\"\n tabStyle === 'wizard'\n ? ('skyux_wizard_sr_step_' + wizardStepState\n | skyLibResources: tabNumber : totalTabsCount : buttonText)\n : null\n \"\n [attr.aria-labelledby]=\"tabStyle === 'wizard' ? null : tabHeading.id\"\n [id]=\"buttonId\"\n [ngClass]=\"{\n 'sky-btn-tab-wizard': tabStyle === 'wizard',\n 'sky-btn-tab-selected': active,\n 'sky-btn-tab-disabled': disabled,\n 'sky-tab-btn-closeable': closeable\n }\"\n [tabindex]=\"active ? '0' : '-1'\"\n (click)=\"onButtonClick($event)\"\n (keydown)=\"onTabButtonKeyDown($event)\"\n (focus)=\"onFocus()\"\n >\n <span class=\"sky-tab-heading\" [attr.aria-hidden]=\"true\">\n <span #tabHeading=\"skyId\" skyId>\n {{ buttonText }}\n @if (buttonTextCount !== undefined) {\n <span class=\"sky-tab-header-count\">\n {{ buttonTextCount }}\n </span>\n }\n </span>\n @if (closeable) {\n <span\n class=\"sky-btn-tab-close\"\n [tabindex]=\"closeBtnTabIndex\"\n [attr.aria-label]=\"'skyux_tab_close' | skyLibResources: buttonText\"\n [ngClass]=\"{\n 'sky-btn-tab-close-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-btn sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"onCloseClick($event)\"\n (keydown.enter)=\"onCloseClick($event)\"\n >\n <sky-icon iconName=\"close\" />\n </span>\n }\n </span>\n </a>\n</div>\n","import { Location } from '@angular/common';\nimport { Injectable, OnDestroy, inject } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\n\nimport { Observable, Subject, SubscriptionLike } from 'rxjs';\n\n/**\n * @internal\n */\ntype PermalinkParams = Record<string, string>;\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetPermalinkService implements OnDestroy {\n public get popStateChange(): Observable<void> {\n return this.#popStateChange;\n }\n\n #popStateChange = new Subject<void>();\n\n #subscription: SubscriptionLike | undefined;\n\n readonly #activatedRoute = inject(ActivatedRoute);\n readonly #location = inject(Location);\n readonly #router = inject(Router);\n\n public ngOnDestroy(): void {\n this.#subscription?.unsubscribe();\n this.#popStateChange.complete();\n }\n\n public init(): void {\n this.#subscription = this.#location.subscribe(() => {\n this.#popStateChange.next();\n });\n }\n\n /**\n * Returns the value of a URL query param.\n */\n public getParam(name: string): string {\n return this.#getParams()[name];\n }\n\n /**\n * Sets the value of a URL query param.\n */\n public setParam(name: string, value: string | null, initial?: boolean): void {\n const params: Params = this.#getParams();\n params[name] = value ?? undefined;\n\n // Uses merge so other query params are not lost. Deleted query params\n // are set to `undefined` so they are removed from the URL.\n const url = this.#router\n .createUrlTree([], {\n relativeTo: this.#activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge',\n })\n .toString();\n\n // Abort redirect if the current URL is equal to the new URL.\n if (this.#location.isCurrentPathEqualTo(url)) {\n return;\n }\n\n // Navigate via the Angular router to update the URL and broadcast the\n // change. Use `replaceUrl` on the initial navigation so an extra history\n // item isn't added to the browser's back stack.\n void this.#router.navigate([], {\n relativeTo: this.#activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge',\n replaceUrl: initial,\n });\n }\n\n /**\n * Removes the provided query param from the URL.\n */\n public clearParam(name: string): void {\n // Don't overwrite the URL while the Angular router is in the process\n // of navigating (e.g. when the tabset is destroyed due to navigating\n // away from the current page).\n if (!this.#router.currentNavigation()) {\n this.setParam(name, null);\n }\n }\n\n /**\n * Returns a relative URL that includes the provided query parameter. The value is intended to be\n * used by an HTML anchor element.\n */\n public getParamHref(name: string | undefined, value: string): string | null {\n if (!name) {\n return null;\n }\n\n const params = this.#getParams();\n params[name] = value;\n\n const baseUrl = this.#location.path().split('?')[0];\n const paramString = Object.keys(params)\n .map((k) => `${k}=${params[k]}`)\n .join('&');\n\n return this.#location.prepareExternalUrl(`${baseUrl}?${paramString}`);\n }\n\n /**\n * Converts the provided string into a value that can be safely used in a URL.\n */\n public urlify(value: string | undefined): string {\n if (!value) {\n return '';\n }\n\n const sanitized = value\n .toLowerCase()\n\n // Remove special characters.\n .replace(/[_~`@!#$%^&*()[\\]{};:'/\\\\<>,.?=+|\"]/g, '')\n\n // Replace space characters with a dash.\n .replace(/\\s/g, '-')\n\n // Remove any double-dashes.\n .replace(/--/g, '-');\n\n return sanitized;\n }\n\n /**\n * Returns all query params that exist in the current URL.\n */\n #getParams(): PermalinkParams {\n const params: PermalinkParams = {};\n\n const path = this.#location.path();\n if (path.indexOf('?') === -1) {\n return params;\n }\n\n const existingParamPairs = path.split('?')[1].split('&');\n existingParamPairs.forEach((pair) => {\n const fragments = pair.split('=');\n params[fragments[0]] = decodeURIComponent(fragments[1]);\n });\n\n return params;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { SkyResponsiveHostDirective } from '@skyux/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabLayoutType } from './tab-layout-type';\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\nimport { SkyTabsetService } from './tabset.service';\n\nconst LAYOUT_CLASS_PREFIX = 'sky-layout-host-';\nconst LAYOUT_DEFAULT: SkyTabLayoutType = 'none';\n\nlet nextId = 0;\n\n@Component({\n hostDirectives: [SkyResponsiveHostDirective],\n selector: 'sky-tab',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyTabComponent implements OnChanges, OnDestroy {\n /**\n * Whether the tab is active when the tabset loads. After initialization, the `active`\n * property on the tabset component should be used to set the active tab.\n * @default false\n */\n @Input()\n public set active(value: boolean | undefined) {\n if (value !== undefined && !!value !== this.#_active) {\n this.#_active = value;\n this.#activeChange.next();\n }\n }\n\n public get active(): boolean {\n return this.#_active;\n }\n\n public get activeChange(): Observable<void> {\n return this.#activeChange;\n }\n\n /**\n * Whether to disable the tab.\n * @default false\n */\n @Input()\n public disabled: boolean | undefined;\n\n /**\n * The custom query parameter value for the tab.\n * This works in conjunction with the tabset's `permalinkId` to distinguish\n * the tab's unique state in the URL by generating a query parameter that is\n * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n * By default, the query parameter's value is parsed automatically from the tab's heading text.\n * This input only applies when the tabset's `tabStyle` is `\"tabs\"`.\n */\n @Input()\n public set permalinkValue(value: string | undefined) {\n this.#_permalinkValue = value;\n this.#setPermalinkValueOrDefault();\n }\n\n public get permalinkValue(): string | undefined {\n return this.#_permalinkValue;\n }\n\n /**\n * Displays a counter beside the tab header.\n * This input only applies when the tabset's `tabStyle` is `\"tabs\"`.\n * @deprecated SKY UX no longer recommends adding counts to tabs.\n */\n @Input()\n public tabHeaderCount: string | undefined;\n\n /**\n * The tab header.\n * When using tabs as the main navigation on a page,\n * use [the Angular `Title` service](https://angular.dev/api/platform-browser/Title)\n * and [the SKY UX page title guidelines](https://developer.blackbaud.com/skyux/design/guidelines/content#page-titles)\n * to reflect the tab header in the page title.\n * @required\n */\n @Input()\n public set tabHeading(value: string | undefined) {\n this.#_tabHeading = value;\n\n this.#setPermalinkValueOrDefault();\n }\n\n public get tabHeading(): string | undefined {\n return this.#_tabHeading;\n }\n\n /**\n * The unique identifier for the tab.\n * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n */\n @Input()\n public set tabIndexValue(value: SkyTabIndex | undefined) {\n if (\n value !== this.#_tabIndexValue &&\n value !== undefined &&\n this.#_tabIndexValue !== undefined\n ) {\n this.#tabsetService.updateTabIndex(this.#_tabIndexValue, value);\n this.#tabIndexChange.next(value);\n }\n\n this.#_tabIndexValue = value;\n }\n\n public get tabIndexValue(): SkyTabIndex | undefined {\n return this.#_tabIndexValue;\n }\n\n /**\n * The tab layout that applies spacing to the tab container element. Use the layout\n * that corresponds with the top-level component type used within the tab, or use `fit` to\n * constrain the tab contents to the available viewport.\n * Use `none` for custom content that does not adhere to predefined spacing or constraints.\n * @default \"none\"\n */\n @Input()\n public set layout(value: SkyTabLayoutType | undefined) {\n const layout = value || LAYOUT_DEFAULT;\n\n this.#_layout = layout;\n this.cssClass = `${LAYOUT_CLASS_PREFIX}${layout}`;\n\n if (this.active) {\n this.#tabsetService.updateActiveTabLayout(layout);\n }\n }\n\n public get layout(): SkyTabLayoutType {\n return this.#_layout;\n }\n\n @HostBinding('class')\n public cssClass = `${LAYOUT_CLASS_PREFIX}${LAYOUT_DEFAULT}`;\n\n /**\n * Fires when users click the button to close the tab.\n * The close button is added to the tab when you specify a listener for this event.\n * This event only applies when the tabset's `tabStyle` is `\"tabs\"`.\n */\n @Output()\n public close = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n /**\n * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n */\n public get stateChange(): Observable<void> {\n return this.#stateChange;\n }\n\n public get tabIndexChange(): Observable<SkyTabIndex | undefined> {\n return this.#tabIndexChange;\n }\n\n public permalinkValueOrDefault = '';\n\n public showContent = false;\n\n public tabButtonId: string;\n\n public tabPanelId: string;\n\n #_active = false;\n\n #activeChange: BehaviorSubject<void | undefined>;\n\n #_permalinkValue: string | undefined;\n\n #stateChange: BehaviorSubject<void>;\n\n #_tabHeading: string | undefined;\n\n #_tabIndexValue: SkyTabIndex | undefined;\n\n #_layout: SkyTabLayoutType = LAYOUT_DEFAULT;\n\n #tabIndexChange: BehaviorSubject<SkyTabIndex | undefined>;\n\n #changeDetector: ChangeDetectorRef;\n #permalinkService: SkyTabsetPermalinkService;\n #tabsetService: SkyTabsetService;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n permalinkService: SkyTabsetPermalinkService,\n tabsetService: SkyTabsetService,\n ) {\n this.#changeDetector = changeDetector;\n this.#permalinkService = permalinkService;\n this.#tabsetService = tabsetService;\n const id = nextId++;\n this.tabPanelId = `sky-tab-${id}`;\n this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n\n this.#activeChange = new BehaviorSubject<void | undefined>(undefined);\n this.#stateChange = new BehaviorSubject<void>(undefined);\n this.#tabIndexChange = new BehaviorSubject<SkyTabIndex | undefined>(\n undefined,\n );\n\n this.#setPermalinkValueOrDefault();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes['disabled'] && !changes['disabled'].firstChange) ||\n (changes['tabHeading'] && !changes['tabHeading'].firstChange) ||\n (changes['tabHeaderCount'] && !changes['tabHeaderCount'].firstChange) ||\n (changes['permalinkValue'] && !changes['permalinkValue'].firstChange)\n ) {\n this.#stateChange.next();\n }\n }\n\n public ngOnDestroy(): void {\n this.#activeChange.complete();\n this.#stateChange.complete();\n this.#tabIndexChange.complete();\n if (this.tabIndexValue !== undefined) {\n this.#tabsetService.unregisterTab(this.tabIndexValue);\n }\n }\n\n public init(): void {\n this.#_tabIndexValue = this.#tabsetService.registerTab(this.tabIndexValue);\n }\n\n public activate(): void {\n this.#_active = true;\n this.showContent = true;\n this.#changeDetector.markForCheck();\n }\n\n public deactivate(): void {\n this.#_active = false;\n this.showContent = false;\n this.#changeDetector.markForCheck();\n }\n\n public isCloseable(): boolean {\n return this.close.observers.length > 0;\n }\n\n #setPermalinkValueOrDefault(): void {\n this.permalinkValueOrDefault =\n this.#permalinkService.urlify(this.permalinkValue) ||\n this.#permalinkService.urlify(this.tabHeading);\n }\n}\n","<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content />\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { SkyTabsetNavButtonType } from './tabset-nav-button-type';\n\n@Pipe({\n name: 'skyTabsetNavButtonDisabled',\n standalone: false,\n})\nexport class SkyTabsetNavButtonDisabledPipe implements PipeTransform {\n public transform(\n disabled: boolean | undefined,\n buttonType?: SkyTabsetNavButtonType | string,\n tabToSelectExists?: boolean,\n tabToSelectIsDisabled?: boolean,\n ): boolean {\n if (disabled !== undefined) {\n return disabled;\n } else if (buttonType === 'finish') {\n return false;\n }\n\n return !tabToSelectExists || !!tabToSelectIsDisabled;\n }\n}\n","import { Component, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetNavButtonType } from './tabset-nav-button-type';\nimport { SkyTabsetComponent } from './tabset.component';\n\nconst buttonTypeNext = 'next';\nconst buttonTypePrevious = 'previous';\nconst buttonTypeFinish = 'finish';\n\n/**\n * Creates a button to navigate between tabs in a tabset when `tabStyle` is `\"wizard\"`.\n */\n@Component({\n selector: 'sky-tabset-nav-button',\n templateUrl: './tabset-nav-button.component.html',\n standalone: false,\n})\nexport class SkyTabsetNavButtonComponent implements OnDestroy {\n /**\n * The tabset wizard component to associate with the nav button.\n * @required\n */\n @Input()\n public get tabset(): SkyTabsetComponent | undefined {\n return this.#_tabset;\n }\n\n public set tabset(value: SkyTabsetComponent | undefined) {\n this.#_tabset = value;\n\n if (this.#currentTabsetSub) {\n this.#currentTabsetSub.unsubscribe();\n }\n\n if (value) {\n this.#currentTabsetSub = value.activeChange\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((index: SkyTabIndex) => {\n this.#activeSkyTabIndex = index;\n this.#tabCount = this.#_tabset?.tabs?.length;\n this.#updateTabToSelect();\n this.#updateButtonVisibility();\n this.#updateButtonProperties();\n });\n } else {\n this.#logger.error(\n 'The SkyTabsetNavButtonComponent requires a reference to the SkyTabsetComponent it controls.',\n );\n }\n }\n\n /**\n * The type of nav button to include.\n * @required\n */\n @Input()\n public get buttonType(): SkyTabsetNavButtonType | undefined {\n return this.#_buttonType;\n }\n\n public set buttonType(value: SkyTabsetNavButtonType | undefined) {\n this.#_buttonType = value;\n this.#updateTabToSelect();\n this.#updateButtonProperties();\n this.#updateButtonVisibility();\n\n if (value === buttonTypeFinish) {\n this.type = 'submit';\n } else {\n this.type = 'button';\n }\n }\n\n @HostBinding('attr.data-button-type')\n public get buttonTypeData(): SkyTabsetNavButtonType | undefined {\n return this.buttonType;\n }\n\n /**\n * The label to display on the nav button. The following are the defaults for each `buttonType`:\n * `next` = \"Next\", `previous` = \"Previous\", `finish` = \"Finish\"\n */\n @Input()\n public buttonText?: string | undefined;\n\n /**\n * Whether to disable the nav button.\n * Defaults to the disabled state of the next tab for `next`, the existence of a previous tab for `previous`,\n * and false for `finish`.\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = value;\n }\n\n public get disabled(): boolean | undefined {\n return this.#_disabled;\n }\n\n public buttonClassName: string | undefined;\n public isVisible = false;\n public type: 'submit' | 'button' = 'submit';\n public ariaControls: string | undefined;\n\n protected tabToSelect: SkyTabComponent | undefined;\n\n #_buttonType: SkyTabsetNavButtonType | undefined;\n #_disabled: boolean | undefined;\n #_tabset: SkyTabsetComponent | undefined;\n #activeIndexNumber: number | undefined;\n #activeSkyTabIndex: SkyTabIndex | undefined;\n #currentTabsetSub: Subscription | undefined;\n #logger: SkyLogService;\n #tabCount: number | undefined;\n #ngUnsubscribe = new Subject<void>();\n\n constructor(logger: SkyLogService) {\n this.#logger = logger;\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public buttonClick(): void {\n /* istanbul ignore else */\n if (this.tabToSelect && !this.tabToSelect.disabled && this.tabset) {\n this.tabset.active = this.tabToSelect.tabIndexValue;\n }\n }\n\n #updateButtonVisibility(): void {\n const isLastStep =\n !!this.#tabCount && this.#activeIndexNumber === this.#tabCount - 1;\n\n if (this.buttonType === buttonTypeFinish) {\n this.isVisible = isLastStep;\n } else if (this.buttonType === buttonTypeNext) {\n this.isVisible = !isLastStep;\n } else {\n this.isVisible = true;\n }\n }\n\n #updateButtonProperties(): void {\n if (\n this.buttonType === buttonTypeNext ||\n this.buttonType === buttonTypeFinish\n ) {\n this.buttonClassName = 'sky-btn-primary';\n } else {\n this.buttonClassName = 'sky-btn-default';\n }\n\n this.ariaControls = this.tabToSelect?.tabPanelId;\n }\n\n #updateTabToSelect(): void {\n if (this.tabset?.tabs) {\n const tabs = this.tabset.tabs.toArray();\n this.tabToSelect = undefined;\n\n // tab index can be a number or a string, but we need the actual number index\n this.#activeIndexNumber = tabs.findIndex(\n (tab) => tab.tabIndexValue === this.#activeSkyTabIndex,\n );\n\n /* istanbul ignore else */\n if (this.#activeIndexNumber !== undefined) {\n if (this.buttonType === buttonTypeNext) {\n this.tabToSelect = tabs[this.#activeIndexNumber + 1];\n } else if (this.buttonType === buttonTypePrevious) {\n this.tabToSelect = tabs[this.#activeIndexNumber - 1];\n }\n }\n }\n }\n}\n","@if (isVisible) {\n <button\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"\n disabled\n | skyTabsetNavButtonDisabled\n : buttonType\n : !!tabToSelect\n : tabToSelect?.disabled\n \"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n >\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n </button>\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetAdapterService implements OnDestroy {\n public get overflowChange(): Observable<boolean> {\n return this.#overflowChange;\n }\n\n #currentOverflow = false;\n\n #tabsetRef: ElementRef | undefined;\n\n #tabsOffsetLeft: number | undefined;\n\n #overflowChange: BehaviorSubject<boolean>;\n\n constructor() {\n this.#overflowChange = new BehaviorSubject<boolean>(false);\n }\n\n public ngOnDestroy(): void {\n this.#overflowChange.complete();\n }\n\n public registerTabset(tabsetRef: ElementRef): void {\n this.#tabsetRef = tabsetRef;\n this.#tabsOffsetLeft = this.#getTabsOffsetLeft(tabsetRef.nativeElement);\n }\n\n /**\n * Detects if the tab buttons are wider than the tabset container.\n */\n public detectOverflow(): void {\n const nativeElement = this.#tabsetRef?.nativeElement;\n\n const tabsetRect = nativeElement\n .querySelector('.sky-tabset')\n .getBoundingClientRect();\n\n const tabButtonsRect = nativeElement\n .querySelector('.sky-tabset-tabs')\n .getBoundingClientRect();\n\n const tabExtraButtonsRect = nativeElement\n .querySelector('.sky-tabset-btns')\n .getBoundingClientRect();\n\n const tabButtonsWidth =\n tabButtonsRect.width + tabExtraButtonsRect.width + this.#tabsOffsetLeft;\n\n const newOverflow = tabButtonsWidth > tabsetRect.width;\n if (this.#currentOverflow !== newOverflow) {\n this.#currentOverflow = newOverflow;\n this.#overflowChange.next(this.#currentOverflow);\n }\n }\n\n /**\n * Returns the number of pixels to the left of the first tab.\n */\n #getTabsOffsetLeft(tabsetEl: HTMLElement): number {\n const tabsetRect = tabsetEl.getBoundingClientRect();\n\n // The dropdown element is the first \"tab\" and always exists in the DOM, even when hidden.\n const firstTabRect = tabsetEl\n .querySelector('.sky-tabset-dropdown')\n ?.getBoundingClientRect();\n\n // Safety check\n /* istanbul ignore next */\n if (!firstTabRect) {\n return 0;\n }\n\n return firstTabRect.left - tabsetRect.left;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { SkyLayoutHostService } from '@skyux/core';\n\nimport { Subject, combineLatest, race } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { TabButtonViewModel } from './tab-button-view-model';\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabLayoutType } from './tab-layout-type';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetAdapterService } from './tabset-adapter.service';\nimport { SkyTabsetButtonsDisplayMode } from './tabset-buttons-display-mode';\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\nimport { SkyTabsetStyle } from './tabset-style';\nimport { SkyTabsetTabIndexesChange } from './tabset-tab-indexes-change';\nimport { SkyTabsetService } from './tabset.service';\n\n@Component({\n selector: 'sky-tabset',\n styleUrls: ['./tabset.component.scss'],\n templateUrl: './tabset.component.html',\n providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class SkyTabsetComponent implements AfterViewInit, OnDestroy {\n /**\n * Activates a tab by its `tabIndex` property.\n */\n @Input()\n public set active(value: SkyTabIndex | undefined) {\n if (\n value === undefined ||\n this.#tabsetService.tabIndexesEqual(value, this.#_active)\n ) {\n return;\n }\n\n this.#_active = value;\n\n if (this.tabs) {\n this.#tabsetService.setActiveTabIndex({ tabIndex: value });\n } else {\n // On init, wait for children tabs to render before broadcasting the active tab index.\n setTimeout(() => {\n if (this.#tabsetService.isValidTabIndex(value)) {\n // On init, yield to the permalink ID, if it exists.\n if (this.#getActiveTabIndexByPermalinkId() === undefined) {\n this.#tabsetService.setActiveTabIndex({ tabIndex: value });\n }\n } else {\n // Activate the first tab if the new tab index is invalid.\n this.#_active = this.#tabsetService.activateFirstTab();\n }\n });\n }\n }\n\n public get active(): SkyTabIndex | undefined {\n return this.#_active;\n }\n\n /**\n * The ARIA label for the tabset. This sets the tabset's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * The HTML element ID of the element that labels\n * the tabset. This sets the tabset's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset does not include a visible label, use `ariaLabel` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * Distinguishes a tabset's unique state in the URL by generating a query parameter\n * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n * The query parameter's value is parsed automatically from the selected tab's heading text,\n * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n * This input only applies when `tabStyle` is `\"tabs\"`\n */\n @Input()\n public set permalinkId(value: string | undefined) {\n if (!value) {\n this.#_permalinkId = '';\n } else {\n const sanitized = this.#permalinkService.urlify(value);\n this.#_permalinkId = `${sanitized}-active-tab`;\n }\n }\n\n public get permalinkId(): string {\n return this.#_permalinkId;\n }\n\n /**\n * The behavior for a series of tabs.\n * @default \"tabs\"\n */\n @Input()\n public set tabStyle(value: SkyTabsetStyle | undefined) {\n this.#_tabStyle = value || 'tabs';\n }\n\n public get tabStyle(): SkyTabsetStyle {\n return this.#_tabStyle;\n }\n\n @HostBinding('attr.data-tab-style') public get dataTabStyle(): string {\n return this.tabStyle;\n }\n\n /**\n * Fires when the active tab changes. This event emits the index of the active tab.\n */\n @Output()\n public activeChange = new EventEmitter<SkyTabIndex>();\n\n /**\n * Fires when users click the button to add a new tab.\n * The new tab button is added to the tab area when you specify a listener for this event.\n * This event only applies when `tabStyle` is `\"tabs\"`.\n */\n @Output()\n public newTab = new EventEmitter<void>();\n\n /**\n * Fires when users click the button to open a tab.\n * The open tab button is added to the tab area when you specify a listener for this event.\n * This event only applies when `tabStyle` is `\"tabs\"`.\n */\n @Output()\n public openTab = new EventEmitter<void>();\n\n /**\n * Fires when any tab's `tabIndex` value changes.\n * This event only applies when `tabStyle` is `\"tabs\"`.\n */\n @Output()\n public tabIndexesChange = new EventEmitter<SkyTabsetTabIndexesChange>();\n\n public set tabDisplayMode(value: SkyTabsetButtonsDisplayMode) {\n this.#_tabDisplayMode = value;\n this.#changeDetector.markForCheck();\n }\n\n public get tabDisplayMode(): SkyTabsetButtonsDisplayMode {\n return this.#_tabDisplayMode;\n }\n\n @ContentChildren(SkyTabComponent)\n public set tabs(value: QueryList<SkyTabComponent> | undefined) {\n this.#_tabs = value;\n this.#tabComponentsChangeUnsubscribe.next();\n\n value?.changes\n .pipe(takeUntil(this.#tabComponentsChangeUnsubscribe))\n .subscribe(() => {\n this.#resetTabComponents();\n });\n }\n\n public get tabs(): QueryList<SkyTabComponent> | undefined {\n return this.#_tabs;\n }\n\n @HostBinding('class')\n public cssClass = 'sky-tabset-layout-none';\n\n public dropdownTriggerButtonText = '';\n\n /**\n * This property is used by the deprecated tabset-nav-button component.\n * @internal\n */\n public lastActiveTabIndex: SkyTabIndex | undefined;\n\n public tabButtons: TabButtonViewModel[] = [];\n\n #ngUnsubscribe = new Subject<void>();\n\n #tabComponentsChangeUnsubscribe = new Subject<void>();\n #tabComponentsStateChangeUnsubscribe = new Subject<void>();\n\n #_active: SkyTabIndex | undefined;\n\n #_permalinkId = '';\n\n #_tabs: QueryList<SkyTabComponent> | undefined;\n\n #_tabDisplayMode: SkyTabsetButtonsDisplayMode = 'tabs';\n\n #_tabStyle: SkyTabsetStyle = 'tabs';\n\n #changeDetector: ChangeDetectorRef;\n #elementRef: ElementRef;\n #adapterService: SkyTabsetAdapterService;\n #permalinkService: SkyTabsetPermalinkService;\n #tabsetService: SkyTabsetService;\n\n #layoutHostSvc = inject(SkyLayoutHostService, { optional: true });\n\n constructor(\n changeDetector: ChangeDetectorRef,\n elementRef: ElementRef,\n adapterService: SkyTabsetAdapterService,\n permalinkService: SkyTabsetPermalinkService,\n tabsetService: SkyTabsetService,\n ) {\n this.#changeDetector = changeDetector;\n this.#elementRef = elementRef;\n this.#adapterService = adapterService;\n this.#permalinkService = permalinkService;\n this.#tabsetService = tabsetService;\n }\n\n public ngAfterViewInit(): void {\n this.#initTabComponents();\n\n const initialTabIndex = this.#getInitialTabIndex();\n this.#tabsetService.setActiveTabIndex({\n tabIndex: initialTabIndex,\n initial: true,\n });\n\n this.#listenTabButtonsOverflowChange();\n this.#listenLocationPopStateChange();\n\n // If the currently active tab is getting unregistered, activate the next one.\n this.#tabsetService.activeTabUnregistered\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((tab) => {\n // Wait for the new tabs to render before activating.\n setTimeout(() => {\n this.#tabsetService.activateNearestTab(tab.arrayIndex);\n });\n });\n\n this.#tabsetService.activeTabLayout\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((layout) => {\n this.#updateLayout(layout);\n });\n\n // Let the tabset render the initial active index before listening for changes.\n setTimeout(() => {\n this.#listenTabComponentsStateChange();\n this.#listenActiveIndexChange();\n this.#permalinkService.init();\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#tabComponentsChangeUnsubscribe.next();\n this.#tabComponentsChangeUnsubscribe.complete();\n this.#unsubscribeTabComponentsStateChange();\n if (this.permalinkId) {\n this.#permalinkService.clearParam(this.permalinkId);\n }\n }\n\n public onWindowResize(): void {\n this.#adapterService.detectOverflow();\n }\n\n public onTabCloseClick(tabButton: TabButtonViewModel): void {\n const tabComponent = this.tabs?.find((tab) =>\n this.#tabsetService.tabIndexesEqual(\n tab.tabIndexValue,\n tabButton.tabIndex,\n ),\n );\n\n tabComponent?.close.emit();\n }\n\n public onTabButtonClick(tabButton: TabButtonViewModel): void {\n this.#tabsetService.setActiveTabIndex({ tabIndex: tabButton.tabIndex });\n }\n\n public onNewTabClick(): void {\n this.newTab.emit();\n }\n\n public onOpenTabClick(): void {\n this.openTab.emit();\n }\n\n public onRightKeyDown(): void {\n this.#tabsetService.focusNextTabBtn(this.tabButtons);\n }\n\n public onLeftKeyDown(): void {\n this.#tabsetService.focusPrevTabBtn(this.tabButtons);\n }\n\n public onHomeKeyDown(): void {\n this.#tabsetService.focusFirstOrNearestTabBtn(this.tabButtons);\n }\n\n public onEndKeyDown(): void {\n this.#tabsetService.focusLastOrNearestTabBtn(this.tabButtons);\n }\n\n /**\n * Sets the initial active tab index based on the following criteria.\n * 1. Does the URL include a query param that reflects this tabset's active tab?\n * 2. Does one of the tab components have their `active` property set to `true`?\n * 3. Is the tabset component's `active` property set to a specific tab index?\n */\n #getInitialTabIndex(): SkyTabIndex | undefined {\n let activeIndex: SkyTabIndex | undefined =\n this.#getActiveTabIndexByPermalinkId();\n if (activeIndex === undefined) {\n activeIndex = this.#getActiveTabComponent()?.tabIndexValue;\n if (activeIndex === undefined) {\n activeIndex = this.active;\n }\n }\n\n return activeIndex;\n }\n\n #listenActiveIndexChange(): void {\n this.#tabsetService.activeTabChange\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((tabChange) => {\n this.#updateTabsetComponent(\n tabChange.tabIndex,\n false,\n tabChange.initial,\n );\n const activeTab = this.#getActiveTabComponent();\n\n this.#updateLayout(activeTab?.layout);\n });\n }\n\n #updateLayout(layout?: SkyTabLayoutType): void {\n if (this.#layoutHostSvc && layout) {\n this.#layoutHostSvc.setHostLayoutForChild({\n layout,\n });\n\n this.cssClass = `sky-tabset-layout-${layout}`;\n }\n }\n\n #listenTabComponentsStateChange(): void {\n if (this.tabs) {\n combineLatest(this.tabs.map((tab) => tab.activeChange))\n .pipe(\n takeUntil(\n race(\n this.#tabComponentsStateChangeUnsubscribe,\n this.#ngUnsubscribe,\n ),\n ),\n )\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n const tabIndex = this.#getActiveTabComponent()?.tabIndexValue;\n this.#tabsetService.setActiveTabIndex({ tabIndex });\n });\n });\n\n combineLatest(this.tabs.map((tab) => tab.tabIndexChange))\n .pipe(\n takeUntil(\n race(\n this.#tabComponentsStateChangeUnsubscribe,\n this.#ngUnsubscribe,\n ),\n ),\n )\n .subscribe(() => {\n // Don't emit the first change.\n if (this.lastActiveTabIndex !== undefined) {\n // Wait for the tab components to render changes before updating the view.\n setTimeout(() => {\n this.#updateTabsetComponent(\n this.#tabsetService.currentActiveTabIndex,\n true,\n );\n this.#emitTabIndexChange();\n });\n }\n });\n\n combineLatest(this.tabs.map((tab) => tab.stateChange))\n .pipe(\n takeUntil(\n race(\n this.#tabComponentsStateChangeUnsubscribe,\n this.#ngUnsubscribe,\n ),\n ),\n )\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n this.#updateTabsetComponent(\n this.#tabsetService.currentActiveTabIndex,\n true,\n );\n });\n });\n }\n }\n\n #initTabComponents(): void {\n this.tabs?.forEach((tab) => tab.init());\n }\n\n #resetTabComponents(): void {\n this.#unsubscribeTabComponentsStateChange();\n this.#tabsetService.unregisterAll();\n\n // If there are no tab components, do a hard reset of the view.\n if (this.tabs?.length === 0) {\n this.#updateTabsetComponent(0, true);\n return;\n }\n\n this.#initTabComponents();\n const activeIndex = this.#getActiveTabComponent()?.tabIndexValue;\n this.#tabsetService.setActiveTabIndex(\n {\n tabIndex: activeIndex,\n },\n {\n emitChange: false,\n },\n );\n this.#listenTabComponentsStateChange();\n }\n\n #emitTabIndexChange(): void {\n this.tabIndexesChange.emit({\n tabs: this.tabs?.map((tab) => ({\n tabHeading: tab.tabHeading,\n tabIndex: tab.tabIndexValue,\n })),\n });\n }\n\n #unsubscribeTabComponentsStateChange(): void {\n this.#tabComponentsStateChangeUnsubscribe.next();\n this.#tabComponentsStateChangeUnsubscribe.complete();\n this.#tabComponentsStateChangeUnsubscribe = new Subject<void>();\n }\n\n #listenTabButtonsOverflowChange(): void {\n this.#adapterService.registerTabset(this.#elementRef);\n this.#adapterService.overflowChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((isOverflowing) => {\n this.tabDisplayMode = isOverflowing ? 'dropdown' : 'tabs';\n this.#changeDetector.markForCheck();\n });\n }\n\n /**\n * Listen for back/forward history button presses to detect query param changes in the URL.\n */\n #listenLocationPopStateChange(): void {\n this.#permalinkService.popStateChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#setActiveTabIndexByPermalinkId();\n });\n }\n\n #setActiveTabIndexByPermalinkId(): void {\n const activeIndex = this.#getActiveTabIndexByPermalinkId();\n this.#tabsetService.setActiveTabIndex({\n tabIndex: activeIndex,\n });\n }\n\n #getActiveTabIndexByPermalinkId(): SkyTabIndex | undefined {\n if (this.permalinkId) {\n const paramValue = this.#permalinkService.getParam(this.permalinkId);\n if (paramValue) {\n return this.tabs?.find(\n (tab) => tab.permalinkValueOrDefault === paramValue,\n )?.tabIndexValue;\n }\n return undefined;\n }\n return undefined;\n }\n\n #getActiveTabComponent(): SkyTabComponent | undefined {\n return this.tabs\n ?.toArray()\n .reverse()\n .find((tab) => tab.active === true);\n }\n\n #createTabButtons(\n activeIndex: SkyTabIndex | undefined,\n ): TabButtonViewModel[] {\n // Safety check\n /* istanbul ignore next */\n if (!this.tabs) {\n return [];\n }\n\n return this.tabs.map((tab, index) => ({\n active: this.#tabsetService.tabIndexesEqual(\n tab.tabIndexValue,\n activeIndex,\n ),\n closeable: tab.isCloseable(),\n ariaControls: tab.tabPanelId,\n disabled: tab.disabled,\n buttonHref: tab.disabled\n ? null\n : this.#permalinkService.getParamHref(\n this.permalinkId,\n tab.permalinkValueOrDefault,\n ),\n buttonId: tab.tabButtonId,\n buttonTextCount: tab.tabHeaderCount,\n buttonText: tab.tabHeading,\n tabIndex: tab.tabIndexValue,\n tabNumber: index + 1,\n totalTabsCount: this.tabs!.length,\n }));\n }\n\n #updateTabButtons(activeIndex: SkyTabIndex | undefined): void {\n this.tabButtons.forEach((button) => {\n button.active = this.#tabsetService.tabIndexesEqual(\n button.tabIndex,\n activeIndex,\n );\n });\n }\n\n /**\n * Updates the UI and state of the tabset component after the tab index or\n * tab components have changed.\n * @param activeIndex The currently active tab index.\n * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n * to `true` is only necessary when the underlying tab components have changed and the tab\n * buttons must reflect those changes.\n * @param initial Indicates whether tabs are being updated during initialization of the tabset\n * component. This is passed through to the permalink service where it prevents adding an extra\n * item to browser history when the URL is updated with the selected tab's permalink value.\n */\n #updateTabsetComponent(\n activeIndex: SkyTabIndex | undefined,\n regenerateTabButtons: boolean,\n initial?: boolean,\n ): void {\n // Activate/deactivate tab components.\n this.tabs?.forEach((tab) => {\n if (this.#tabsetService.tabIndexesEqual(tab.tabIndexValue, activeIndex)) {\n tab.activate();\n } else {\n tab.deactivate();\n }\n });\n\n // Update the tab button models.\n if (regenerateTabButtons || !this.tabButtons.length) {\n this.tabButtons = this.#createTabButtons(activeIndex);\n } else {\n this.#updateTabButtons(activeIndex);\n }\n\n // Update the dropdown trigger button text.\n this.dropdownTriggerButtonText =\n this.tabButtons.find((b) => {\n return this.#tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n })?.buttonText ?? '';\n\n // Set the query params based on active tab.\n if (this.permalinkId) {\n const activeTabComponent = this.tabs?.find((tab) => {\n return this.#tabsetService.tabIndexesEqual(\n tab.tabIndexValue,\n activeIndex,\n );\n });\n if (activeTabComponent) {\n this.#permalinkService.setParam(\n this.permalinkId,\n activeTabComponent.permalinkValueOrDefault,\n initial,\n );\n }\n }\n\n // Wait for tab button view models to render before gauging dimensions.\n setTimeout(() => {\n this.#adapterService.detectOverflow();\n });\n\n this.#changeDetector.markForCheck();\n\n // Emit the new active index value to consumers.\n if (this.lastActiveTabIndex !== activeIndex) {\n this.lastActiveTabIndex = activeIndex;\n this.activeChange.emit(activeIndex);\n }\n }\n}\n","<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\n<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n @if (tabDisplayMode === 'dropdown') {\n <sky-dropdown buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (tabButton of tabButtons; track tabButton.buttonId) {\n <sky-dropdown-item class=\"sky-tab-dropdown-menu-item\">\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n </div>\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n </span>\n <span class=\"sky-tabset-tabs\">\n @for (tabButton of tabButtons; track tabButton.buttonId) {\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n }\n </span>\n <span class=\"sky-tabset-btns\">\n @if (newTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-compact': 'default'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon iconName=\"add\" />\n </button>\n }\n @if (openTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-compact': 'default'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon iconName=\"folder-open\" />\n </button>\n }\n </span>\n</div>\n<ng-content />\n\n<ng-template #tabButtonTemplate let-tabButton>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyResponsiveHostDirective } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyDropdownModule } from '@skyux/popovers';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyTabButtonComponent } from './tab-button.component';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetNavButtonDisabledPipe } from './tabset-nav-button-disabled.pipe';\nimport { SkyTabsetNavButtonComponent } from './tabset-nav-button.component';\nimport { SkyTabsetComponent } from './tabset.component';\n\n@NgModule({\n declarations: [\n SkyTabButtonComponent,\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent,\n SkyTabsetNavButtonDisabledPipe,\n ],\n imports: [\n CommonModule,\n SkyResponsiveHostDirective,\n SkyDropdownModule,\n SkyIconModule,\n SkyIdModule,\n SkyTabsResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyTabComponent, SkyTabsetComponent, SkyTabsetNavButtonComponent],\n})\nexport class SkyTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId","i1.SkyVerticalTabsetAdapterService","i2.SkyVerticalTabsetService","i3.SkyTabIdService","i5","i6","i1.SkyVerticalTabsetService","i2","i4","i3","i4.SkyTabIdService","i1.SkySectionedFormService","i3.SkyVerticalTabComponent","i2.SkyTabIdService","i1.SkyTabButtonAdapterService","i2.SkyTabsetService","i7","i1.SkyTabsetPermalinkService","i1","i4.SkyTabsetNavButtonDisabledPipe","i1.SkyTabsetAdapterService","i2.SkyTabsetPermalinkService","i3.SkyTabsetService","i8.SkyTabButtonComponent","i9"],"mappings":"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"}
|