@ukic/web-components 3.23.0 → 3.24.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.
- package/dist/cjs/{helpers-81cd6930.js → helpers-51bab4b5.js} +9 -68
- package/dist/cjs/helpers-51bab4b5.js.map +1 -0
- package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
- package/dist/cjs/ic-action-chip.cjs.entry.js +1 -1
- package/dist/cjs/ic-alert.cjs.entry.js +1 -1
- package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
- package/dist/cjs/ic-badge.cjs.entry.js +1 -1
- package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/ic-button_3.cjs.entry.js +1 -1
- package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-card-horizontal.cjs.entry.js +1 -1
- package/dist/cjs/ic-card-vertical.cjs.entry.js +1 -1
- package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/ic-chip.cjs.entry.js +1 -1
- package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
- package/dist/cjs/ic-dialog.cjs.entry.js +41 -29
- package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-divider.cjs.entry.js +1 -1
- package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
- package/dist/cjs/ic-footer.cjs.entry.js +1 -1
- package/dist/cjs/ic-hero.cjs.entry.js +1 -1
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js +27 -26
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
- package/dist/cjs/ic-link.cjs.entry.js +1 -1
- package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
- package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
- package/dist/cjs/ic-pagination-bar.cjs.entry.js +1 -1
- package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-pagination_3.cjs.entry.js +19 -17
- package/dist/cjs/ic-pagination_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
- package/dist/cjs/ic-radio-group.cjs.entry.js +7 -7
- package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-option.cjs.entry.js +9 -7
- package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
- package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
- package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
- package/dist/cjs/ic-step.cjs.entry.js +1 -1
- package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ic-switch.cjs.entry.js +1 -1
- package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-tab.cjs.entry.js +1 -1
- package/dist/cjs/ic-theme.cjs.entry.js +1 -1
- package/dist/cjs/ic-toast.cjs.entry.js +1 -1
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
- package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
- package/dist/cjs/ic-typography.cjs.entry.js +1 -1
- package/dist/collection/components/ic-dialog/ic-dialog.js +41 -29
- package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
- package/dist/collection/components/ic-radio-group/ic-radio-group.css +15 -0
- package/dist/collection/components/ic-radio-group/ic-radio-group.js +9 -9
- package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
- package/dist/collection/components/ic-radio-group/ic-radio-group.stories.js +48 -4
- package/dist/collection/components/ic-radio-option/ic-radio-option.css +29 -444
- package/dist/collection/components/ic-radio-option/ic-radio-option.js +7 -5
- package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
- package/dist/collection/components/ic-select/ic-select.js +18 -16
- package/dist/collection/components/ic-select/ic-select.js.map +1 -1
- package/dist/collection/components/ic-select/ic-select.types.js.map +1 -1
- package/dist/collection/utils/helpers.js +8 -66
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/components/helpers.js +9 -67
- package/dist/components/helpers.js.map +1 -1
- package/dist/components/ic-dialog.js +41 -29
- package/dist/components/ic-dialog.js.map +1 -1
- package/dist/components/ic-divider2.js +1 -1
- package/dist/components/ic-footer.js +1 -1
- package/dist/components/ic-horizontal-scroll2.js +1 -1
- package/dist/components/ic-menu2.js +27 -26
- package/dist/components/ic-menu2.js.map +1 -1
- package/dist/components/ic-navigation-button.js +1 -1
- package/dist/components/ic-navigation-group.js +1 -1
- package/dist/components/ic-navigation-item.js +1 -1
- package/dist/components/ic-navigation-menu2.js +1 -1
- package/dist/components/ic-page-header.js.map +1 -1
- package/dist/components/ic-pagination-bar.js +1 -1
- package/dist/components/ic-pagination-bar.js.map +1 -1
- package/dist/components/ic-pagination-item2.js +1 -1
- package/dist/components/ic-popover-menu.js.map +1 -1
- package/dist/components/ic-radio-group.js +6 -6
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-radio-option.js +8 -6
- package/dist/components/ic-radio-option.js.map +1 -1
- package/dist/components/ic-search-bar.js +1 -1
- package/dist/components/ic-select2.js +19 -17
- package/dist/components/ic-select2.js.map +1 -1
- package/dist/components/ic-side-navigation.js +1 -1
- package/dist/components/ic-side-navigation.js.map +1 -1
- package/dist/components/ic-step.js.map +1 -1
- package/dist/components/ic-text-field2.js +1 -1
- package/dist/components/ic-theme.js +1 -1
- package/dist/components/ic-toast.js +1 -1
- package/dist/components/ic-toggle-button.js +1 -1
- package/dist/components/ic-top-navigation.js +1 -1
- package/dist/core/core.esm.js +1 -1
- package/dist/core/{p-fb9376f0.entry.js → p-043a5677.entry.js} +2 -2
- package/dist/core/{p-0fb7f915.entry.js → p-111abe0f.entry.js} +2 -2
- package/dist/core/{p-e7767c0d.entry.js → p-174a70c4.entry.js} +2 -2
- package/dist/core/{p-347cc084.entry.js → p-19056c16.entry.js} +2 -2
- package/dist/core/{p-659d048d.entry.js → p-1bacfc3c.entry.js} +2 -2
- package/dist/core/p-27540e3e.entry.js +2 -0
- package/dist/core/p-27540e3e.entry.js.map +1 -0
- package/dist/core/{p-f661ba76.entry.js → p-2a1faef2.entry.js} +2 -2
- package/dist/core/{p-67de1290.entry.js → p-2b1ce5b7.entry.js} +2 -2
- package/dist/core/p-2e15136e.entry.js +2 -0
- package/dist/core/p-2e15136e.entry.js.map +1 -0
- package/dist/core/{p-ea7a3d30.entry.js → p-3f001e75.entry.js} +2 -2
- package/dist/core/{p-9cb83a2e.entry.js → p-44d043f7.entry.js} +2 -2
- package/dist/core/{p-e938eb31.entry.js → p-4613f697.entry.js} +2 -2
- package/dist/core/{p-4f56acff.entry.js → p-46e5a58b.entry.js} +2 -2
- package/dist/core/{p-cfbacca1.entry.js → p-4dbc72f4.entry.js} +2 -2
- package/dist/core/{p-99433296.entry.js → p-4e59d889.entry.js} +2 -2
- package/dist/core/p-52be32d7.entry.js +3 -0
- package/dist/core/p-52be32d7.entry.js.map +1 -0
- package/dist/core/{p-daec7e69.entry.js → p-570d763b.entry.js} +2 -2
- package/dist/core/{p-8a833e82.entry.js → p-571404d0.entry.js} +2 -2
- package/dist/core/{p-61d79fc6.entry.js → p-574ef8c9.entry.js} +2 -2
- package/dist/core/{p-a780a34b.entry.js → p-59c5265c.entry.js} +2 -2
- package/dist/core/{p-2691cc80.entry.js → p-5d01fefb.entry.js} +2 -2
- package/dist/core/{p-2b87c592.entry.js → p-6183ad85.entry.js} +2 -2
- package/dist/core/{p-46fd555f.entry.js → p-66bfff48.entry.js} +2 -2
- package/dist/core/{p-90678e67.entry.js → p-7410fde3.entry.js} +2 -2
- package/dist/core/{p-cbca04bb.entry.js → p-75bf2d00.entry.js} +2 -2
- package/dist/core/{p-09505807.entry.js → p-884af70c.entry.js} +2 -2
- package/dist/core/{p-aaf4e367.entry.js → p-9ae157de.entry.js} +2 -2
- package/dist/core/{p-80d85403.entry.js → p-9b48971f.entry.js} +2 -2
- package/dist/core/{p-73043f57.entry.js → p-9ced00a7.entry.js} +2 -2
- package/dist/core/{p-b777f0a1.entry.js → p-9da03270.entry.js} +2 -2
- package/dist/core/{p-bb7652cd.entry.js → p-a0c54a50.entry.js} +2 -2
- package/dist/core/{p-880f7548.entry.js → p-a5fcb9c1.entry.js} +2 -2
- package/dist/core/{p-2a124daf.entry.js → p-a6ebe253.entry.js} +2 -2
- package/dist/core/{p-ef70ea50.entry.js → p-b27e147d.entry.js} +2 -2
- package/dist/core/{p-f64996f1.entry.js → p-b2aef77d.entry.js} +2 -2
- package/dist/core/{p-393af2bc.entry.js → p-b431dd8a.entry.js} +2 -2
- package/dist/core/{p-1b81ec88.entry.js → p-b4e8e438.entry.js} +2 -2
- package/dist/core/p-b4e8e438.entry.js.map +1 -0
- package/dist/core/{p-b997ad5e.entry.js → p-b5e683d0.entry.js} +2 -2
- package/dist/core/{p-7b538fd1.entry.js → p-ba80d403.entry.js} +2 -2
- package/dist/core/{p-3aed13ba.entry.js → p-be0010c0.entry.js} +2 -2
- package/dist/core/p-c14ec3e2.entry.js +2 -0
- package/dist/core/p-c14ec3e2.entry.js.map +1 -0
- package/dist/core/{p-5900cb65.entry.js → p-c9fbad60.entry.js} +2 -2
- package/dist/core/{p-a2953aad.entry.js → p-cc3cda99.entry.js} +2 -2
- package/dist/core/{p-a2953aad.entry.js.map → p-cc3cda99.entry.js.map} +1 -1
- package/dist/core/{p-735d3096.entry.js → p-cf669574.entry.js} +2 -2
- package/dist/core/{p-50dca790.entry.js → p-d5fcd4f9.entry.js} +2 -2
- package/dist/core/{p-506d428a.entry.js → p-d8de5b88.entry.js} +2 -2
- package/dist/core/{p-05fd2707.entry.js → p-dbb1370f.entry.js} +2 -2
- package/dist/core/{p-53ab3c0f.entry.js → p-e35f15ec.entry.js} +2 -2
- package/dist/core/{p-09caf7ed.entry.js → p-e8e45d88.entry.js} +2 -2
- package/dist/core/p-ee63aaf8.entry.js +2 -0
- package/dist/core/p-ee63aaf8.entry.js.map +1 -0
- package/dist/core/{p-b77b1e1f.js → p-eeb8d98a.js} +2 -2
- package/dist/core/p-eeb8d98a.js.map +1 -0
- package/dist/core/{p-9c2b2cb9.entry.js → p-f82baa04.entry.js} +2 -2
- package/dist/core/{p-2bd80913.entry.js → p-fc4b7d2b.entry.js} +2 -2
- package/dist/core/{p-48a628f0.entry.js → p-fe9c3f6e.entry.js} +2 -2
- package/dist/esm/{helpers-66681c73.js → helpers-33039856.js} +10 -68
- package/dist/esm/helpers-33039856.js.map +1 -0
- package/dist/esm/ic-accordion-group.entry.js +1 -1
- package/dist/esm/ic-accordion.entry.js +1 -1
- package/dist/esm/ic-action-chip.entry.js +1 -1
- package/dist/esm/ic-alert.entry.js +1 -1
- package/dist/esm/ic-back-to-top.entry.js +1 -1
- package/dist/esm/ic-badge.entry.js +1 -1
- package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
- package/dist/esm/ic-breadcrumb.entry.js +1 -1
- package/dist/esm/ic-button_3.entry.js +1 -1
- package/dist/esm/ic-button_3.entry.js.map +1 -1
- package/dist/esm/ic-card-horizontal.entry.js +1 -1
- package/dist/esm/ic-card-vertical.entry.js +1 -1
- package/dist/esm/ic-checkbox-group.entry.js +1 -1
- package/dist/esm/ic-checkbox.entry.js +1 -1
- package/dist/esm/ic-chip.entry.js +1 -1
- package/dist/esm/ic-data-row.entry.js +1 -1
- package/dist/esm/ic-dialog.entry.js +41 -29
- package/dist/esm/ic-dialog.entry.js.map +1 -1
- package/dist/esm/ic-divider.entry.js +1 -1
- package/dist/esm/ic-empty-state.entry.js +1 -1
- package/dist/esm/ic-footer-link-group.entry.js +1 -1
- package/dist/esm/ic-footer-link.entry.js +1 -1
- package/dist/esm/ic-footer.entry.js +1 -1
- package/dist/esm/ic-hero.entry.js +1 -1
- package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
- package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
- package/dist/esm/ic-input-component-container_3.entry.js +27 -26
- package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
- package/dist/esm/ic-input-label_2.entry.js +1 -1
- package/dist/esm/ic-link.entry.js +1 -1
- package/dist/esm/ic-menu-group.entry.js +1 -1
- package/dist/esm/ic-menu-item.entry.js +1 -1
- package/dist/esm/ic-navigation-button.entry.js +1 -1
- package/dist/esm/ic-navigation-group.entry.js +1 -1
- package/dist/esm/ic-navigation-item.entry.js +1 -1
- package/dist/esm/ic-navigation-menu.entry.js +1 -1
- package/dist/esm/ic-page-header.entry.js +1 -1
- package/dist/esm/ic-pagination-bar.entry.js +1 -1
- package/dist/esm/ic-pagination-item.entry.js +1 -1
- package/dist/esm/ic-pagination_3.entry.js +19 -17
- package/dist/esm/ic-pagination_3.entry.js.map +1 -1
- package/dist/esm/ic-popover-menu.entry.js +1 -1
- package/dist/esm/ic-radio-group.entry.js +7 -7
- package/dist/esm/ic-radio-group.entry.js.map +1 -1
- package/dist/esm/ic-radio-option.entry.js +9 -7
- package/dist/esm/ic-radio-option.entry.js.map +1 -1
- package/dist/esm/ic-search-bar.entry.js +1 -1
- package/dist/esm/ic-side-navigation.entry.js +1 -1
- package/dist/esm/ic-status-tag.entry.js +1 -1
- package/dist/esm/ic-step.entry.js +1 -1
- package/dist/esm/ic-stepper.entry.js +1 -1
- package/dist/esm/ic-switch.entry.js +1 -1
- package/dist/esm/ic-tab-group.entry.js +1 -1
- package/dist/esm/ic-tab.entry.js +1 -1
- package/dist/esm/ic-theme.entry.js +1 -1
- package/dist/esm/ic-toast.entry.js +1 -1
- package/dist/esm/ic-toggle-button-group.entry.js +1 -1
- package/dist/esm/ic-toggle-button.entry.js +1 -1
- package/dist/esm/ic-top-navigation.entry.js +1 -1
- package/dist/esm/ic-typography.entry.js +1 -1
- package/dist/types/components/ic-dialog/ic-dialog.d.ts +2 -1
- package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +2 -2
- package/dist/types/components/ic-select/ic-select.types.d.ts +2 -1
- package/dist/types/components.d.ts +2 -2
- package/dist/types/utils/helpers.d.ts +0 -31
- package/hydrate/index.js +106 -147
- package/hydrate/index.mjs +106 -147
- package/package.json +3 -3
- package/vscode-data.json +3 -0
- package/dist/cjs/helpers-81cd6930.js.map +0 -1
- package/dist/core/p-1b81ec88.entry.js.map +0 -1
- package/dist/core/p-6b4ec95f.entry.js +0 -3
- package/dist/core/p-6b4ec95f.entry.js.map +0 -1
- package/dist/core/p-a08d6b46.entry.js +0 -2
- package/dist/core/p-a08d6b46.entry.js.map +0 -1
- package/dist/core/p-a321feee.entry.js +0 -2
- package/dist/core/p-a321feee.entry.js.map +0 -1
- package/dist/core/p-b77b1e1f.js.map +0 -1
- package/dist/core/p-cc64e5ef.entry.js +0 -2
- package/dist/core/p-cc64e5ef.entry.js.map +0 -1
- package/dist/core/p-f84ac9c6.entry.js +0 -2
- package/dist/core/p-f84ac9c6.entry.js.map +0 -1
- package/dist/esm/helpers-66681c73.js.map +0 -1
- /package/dist/core/{p-fb9376f0.entry.js.map → p-043a5677.entry.js.map} +0 -0
- /package/dist/core/{p-0fb7f915.entry.js.map → p-111abe0f.entry.js.map} +0 -0
- /package/dist/core/{p-e7767c0d.entry.js.map → p-174a70c4.entry.js.map} +0 -0
- /package/dist/core/{p-347cc084.entry.js.map → p-19056c16.entry.js.map} +0 -0
- /package/dist/core/{p-659d048d.entry.js.map → p-1bacfc3c.entry.js.map} +0 -0
- /package/dist/core/{p-f661ba76.entry.js.map → p-2a1faef2.entry.js.map} +0 -0
- /package/dist/core/{p-67de1290.entry.js.map → p-2b1ce5b7.entry.js.map} +0 -0
- /package/dist/core/{p-ea7a3d30.entry.js.map → p-3f001e75.entry.js.map} +0 -0
- /package/dist/core/{p-9cb83a2e.entry.js.map → p-44d043f7.entry.js.map} +0 -0
- /package/dist/core/{p-e938eb31.entry.js.map → p-4613f697.entry.js.map} +0 -0
- /package/dist/core/{p-4f56acff.entry.js.map → p-46e5a58b.entry.js.map} +0 -0
- /package/dist/core/{p-cfbacca1.entry.js.map → p-4dbc72f4.entry.js.map} +0 -0
- /package/dist/core/{p-99433296.entry.js.map → p-4e59d889.entry.js.map} +0 -0
- /package/dist/core/{p-daec7e69.entry.js.map → p-570d763b.entry.js.map} +0 -0
- /package/dist/core/{p-8a833e82.entry.js.map → p-571404d0.entry.js.map} +0 -0
- /package/dist/core/{p-61d79fc6.entry.js.map → p-574ef8c9.entry.js.map} +0 -0
- /package/dist/core/{p-a780a34b.entry.js.map → p-59c5265c.entry.js.map} +0 -0
- /package/dist/core/{p-2691cc80.entry.js.map → p-5d01fefb.entry.js.map} +0 -0
- /package/dist/core/{p-2b87c592.entry.js.map → p-6183ad85.entry.js.map} +0 -0
- /package/dist/core/{p-46fd555f.entry.js.map → p-66bfff48.entry.js.map} +0 -0
- /package/dist/core/{p-90678e67.entry.js.map → p-7410fde3.entry.js.map} +0 -0
- /package/dist/core/{p-cbca04bb.entry.js.map → p-75bf2d00.entry.js.map} +0 -0
- /package/dist/core/{p-09505807.entry.js.map → p-884af70c.entry.js.map} +0 -0
- /package/dist/core/{p-aaf4e367.entry.js.map → p-9ae157de.entry.js.map} +0 -0
- /package/dist/core/{p-80d85403.entry.js.map → p-9b48971f.entry.js.map} +0 -0
- /package/dist/core/{p-73043f57.entry.js.map → p-9ced00a7.entry.js.map} +0 -0
- /package/dist/core/{p-b777f0a1.entry.js.map → p-9da03270.entry.js.map} +0 -0
- /package/dist/core/{p-bb7652cd.entry.js.map → p-a0c54a50.entry.js.map} +0 -0
- /package/dist/core/{p-880f7548.entry.js.map → p-a5fcb9c1.entry.js.map} +0 -0
- /package/dist/core/{p-2a124daf.entry.js.map → p-a6ebe253.entry.js.map} +0 -0
- /package/dist/core/{p-ef70ea50.entry.js.map → p-b27e147d.entry.js.map} +0 -0
- /package/dist/core/{p-f64996f1.entry.js.map → p-b2aef77d.entry.js.map} +0 -0
- /package/dist/core/{p-393af2bc.entry.js.map → p-b431dd8a.entry.js.map} +0 -0
- /package/dist/core/{p-b997ad5e.entry.js.map → p-b5e683d0.entry.js.map} +0 -0
- /package/dist/core/{p-7b538fd1.entry.js.map → p-ba80d403.entry.js.map} +0 -0
- /package/dist/core/{p-3aed13ba.entry.js.map → p-be0010c0.entry.js.map} +0 -0
- /package/dist/core/{p-5900cb65.entry.js.map → p-c9fbad60.entry.js.map} +0 -0
- /package/dist/core/{p-735d3096.entry.js.map → p-cf669574.entry.js.map} +0 -0
- /package/dist/core/{p-50dca790.entry.js.map → p-d5fcd4f9.entry.js.map} +0 -0
- /package/dist/core/{p-506d428a.entry.js.map → p-d8de5b88.entry.js.map} +0 -0
- /package/dist/core/{p-05fd2707.entry.js.map → p-dbb1370f.entry.js.map} +0 -0
- /package/dist/core/{p-53ab3c0f.entry.js.map → p-e35f15ec.entry.js.map} +0 -0
- /package/dist/core/{p-09caf7ed.entry.js.map → p-e8e45d88.entry.js.map} +0 -0
- /package/dist/core/{p-9c2b2cb9.entry.js.map → p-f82baa04.entry.js.map} +0 -0
- /package/dist/core/{p-2bd80913.entry.js.map → p-fc4b7d2b.entry.js.map} +0 -0
- /package/dist/core/{p-48a628f0.entry.js.map → p-fe9c3f6e.entry.js.map} +0 -0
|
@@ -338,7 +338,9 @@ export class Select {
|
|
|
338
338
|
if (filteredOptions.length > 0) {
|
|
339
339
|
const firstOption = filteredOptions[0];
|
|
340
340
|
if ("children" in firstOption) {
|
|
341
|
-
|
|
341
|
+
if (firstOption.children) {
|
|
342
|
+
this.value = firstOption.children[0].value;
|
|
343
|
+
}
|
|
342
344
|
}
|
|
343
345
|
else {
|
|
344
346
|
this.value = firstOption.value;
|
|
@@ -605,19 +607,19 @@ export class Select {
|
|
|
605
607
|
"loading" in menuOptions[0] ||
|
|
606
608
|
"timedOut" in menuOptions[0]));
|
|
607
609
|
renderHiddenInput(this.el, value, name || inputId, disabled);
|
|
608
|
-
const ClearButton = () => (h("ic-button", { key: '
|
|
609
|
-
const NativeSelect = () => (h("select", Object.assign({ key: '
|
|
610
|
-
const SelectButton = () => (h("div", { key: '
|
|
610
|
+
const ClearButton = () => (h("ic-button", { key: '8b264f825c15b75c6b4b75659f8fe054425f1d08', ref: (el) => (this.clearButton = el), id: "clear-button", "aria-label": this.searchable ? "Clear input" : "Clear selection", class: "clear-button", innerHTML: Clear, onClick: this.handleClear, onBlur: this.handleBlur, size: size, variant: "icon-tertiary" }));
|
|
611
|
+
const NativeSelect = () => (h("select", Object.assign({ key: '75584fed7b1a6ad382ded83c440643657c1e1c7c', ref: (el) => (this.nativeSelectElement = el), disabled: disabled, onChange: this.handleNativeSelectChange, required: required, id: inputId, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid ? "true" : "false", onBlur: this.handleBlur, onFocus: this.handleFocus, onKeyDown: this.handleNativeSelectKeyDown, form: form }, inheritedAttributes), h("option", { key: '9cecd0abe9eb2f3df10dcc9cf6f6bd0f866f5e9d', value: "", selected: true, disabled: !showClearButton }, placeholder), options.map((option) => "children" in option && option.children ? (h("optgroup", { label: option.label }, option.children.map((child) => this.renderNativeOption(child)))) : (this.renderNativeOption(option)))));
|
|
612
|
+
const SelectButton = () => (h("div", { key: '236970625078488c8fc0b592ffff98fdce92eb59', class: "select-container" }, h("button", { key: '7c57aae2a5ffc206af492ef69afc81ed45f132e4', class: "select-input", role: "combobox", ref: (el) => (this.selectElement = el), id: inputId, "aria-label": `${label}, ${(multiple && value
|
|
611
613
|
? `${value.length} of ${this.flatOptions.length} selected, ${this.getLabelString()}`
|
|
612
|
-
: this.getLabelString()) || placeholder}`, onClick: this.handleClick, "aria-describedby": describedBy, "aria-invalid": invalid ? "true" : "false", "aria-haspopup": "listbox", "aria-expanded": `${open}`, "aria-controls": menuId, "aria-required": `${required}`, disabled: disabled, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, "aria-activedescendant": ariaActiveDescendant }, h("ic-typography", { key: '
|
|
614
|
+
: this.getLabelString()) || placeholder}`, onClick: this.handleClick, "aria-describedby": describedBy, "aria-invalid": invalid ? "true" : "false", "aria-haspopup": "listbox", "aria-expanded": `${open}`, "aria-controls": menuId, "aria-required": `${required}`, disabled: disabled, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, "aria-activedescendant": ariaActiveDescendant }, h("ic-typography", { key: 'e83a141287ad5f72e5760781452a4f191cf04fa8', variant: "body", class: {
|
|
613
615
|
"value-text": true,
|
|
614
616
|
"with-clear-button": !!isClearable,
|
|
615
617
|
placeholder: !value,
|
|
616
|
-
} }, this.getLabelString()), h("div", { key: '
|
|
618
|
+
} }, this.getLabelString()), h("div", { key: 'd0144dcf41567138a7920ef03e3487e0ec54adaf', class: "select-input-end" }, isClearable && h("div", { key: '7476a99bca242fb377406f059e23445307f8fd47', class: "divider" }), h("span", { key: '9c7bcbd45dd68efa9342fec61ca30e8129cbe3e3', class: {
|
|
617
619
|
"expand-icon": true,
|
|
618
620
|
"expand-icon-open": open,
|
|
619
|
-
}, innerHTML: Expand, "aria-hidden": "true" }))), isClearable && h(ClearButton, { key: '
|
|
620
|
-
const SelectInput = () => (h("div", { key: '
|
|
621
|
+
}, innerHTML: Expand, "aria-hidden": "true" }))), isClearable && h(ClearButton, { key: '96fe7d88db9ae07066b8975594a9394b51adbead' }), h("div", { key: 'f8aa1da24f4f1b7c6caefd93af5626939a4c30da', "aria-live": "polite", "aria-atomic": "true", class: "aria-live-hidden-text" }, selectButtonAriaLiveText)));
|
|
622
|
+
const SelectInput = () => (h("div", { key: '0359142f04587d68aad6d55f9a7a64bc3f61943e', class: "searchable-select-container" }, h("input", { key: 'e7c6a921b493e0a8b810e5ea823fe2970313b4f9', class: {
|
|
621
623
|
"value-text": true,
|
|
622
624
|
"select-input": true,
|
|
623
625
|
"with-clear-button": !!searchableSelectInputValue,
|
|
@@ -625,25 +627,25 @@ export class Select {
|
|
|
625
627
|
? ""
|
|
626
628
|
: value
|
|
627
629
|
? this.getLabelString()
|
|
628
|
-
: searchableSelectInputValue || undefined, disabled: disabled, placeholder: placeholder, onInput: this.handleSearchableSelectInput, onClick: this.handleClick, onBlur: this.handleBlur, onFocus: this.handleFocus, onKeyDown: this.handleKeyDown, form: form }), isClearable && (h("div", { key: '
|
|
630
|
+
: searchableSelectInputValue || undefined, disabled: disabled, placeholder: placeholder, onInput: this.handleSearchableSelectInput, onClick: this.handleClick, onBlur: this.handleBlur, onFocus: this.handleFocus, onKeyDown: this.handleKeyDown, form: form }), isClearable && (h("div", { key: '4c6c663b7f3794a0a3748d6cb61c31372bbad84d', class: "clear-button-container" }, h(ClearButton, { key: '03413d6336fa01461037740a9a73c2acbad9d3c1' }), h("div", { key: 'aad75a81b8a62e8302a83f95d3dae62028d82841', class: "divider" }))), h("span", { key: 'cc9aa62781332afed5a4a00ad687820fd6106a8a', onMouseDown: this.handleExpandIconMouseDown, class: {
|
|
629
631
|
"expand-icon": true,
|
|
630
632
|
"expand-icon-open": open,
|
|
631
|
-
}, innerHTML: Expand, "aria-hidden": "true" }), h("div", { key: '
|
|
632
|
-
const ReadOnly = () => (h("ic-typography", { key: '
|
|
633
|
-
return (h(Host, { key: '
|
|
633
|
+
}, innerHTML: Expand, "aria-hidden": "true" }), h("div", { key: 'f689789683bad109768658de55194fd922f6a586', "aria-live": "polite", role: "status", class: "aria-live-hidden-text" }, selectInputAriaLiveText)));
|
|
634
|
+
const ReadOnly = () => (h("ic-typography", { key: 'f77135f478f4860a473bda5ce2d5ed82adae0b53' }, h("p", { key: 'b98c424e53047b835231479ba3c8e949207b2e60' }, this.getLabelString() === placeholder ? "" : this.getLabelString())));
|
|
635
|
+
return (h(Host, { key: '126f830a424039ed189c5c0bdb3a5581f4c9fd34', class: {
|
|
634
636
|
"ic-select-disabled": disabled,
|
|
635
637
|
"ic-select-searchable": searchable,
|
|
636
638
|
[`ic-select-${size}`]: size !== "medium",
|
|
637
639
|
"ic-select-full-width": fullWidth,
|
|
638
640
|
[`ic-theme-${theme}`]: theme !== "inherit",
|
|
639
|
-
} }, h("ic-input-container", { key: '
|
|
641
|
+
} }, h("ic-input-container", { key: 'b9dee0df3b7201371974b1384cc773550304574f', readonly: readonly }, !hideLabel && (h("ic-input-label", { key: 'a247b8e90fd62cc805e6e2b921bd598d81023b50', for: inputId, label: label, helperText: helperText, required: required, disabled: disabled, readonly: readonly }, h("slot", { key: '022b03330ee4995b282ca486b8b8407458b65242', name: "helper-text", slot: "helper-text" }))), h("ic-input-component-container", { key: '012bec0098db190860d46d78d0d0eabfea6f349b', ref: (el) => (this.anchorEl = el), class: { "menu-open": open }, size: size, fullWidth: fullWidth, disabled: disabled, readonly: readonly, validationStatus: validationStatus }, isSlotUsed(this.el, "icon") &&
|
|
640
642
|
!disabled &&
|
|
641
|
-
(!readonly || !!value) && (h("span", { key: '
|
|
643
|
+
(!readonly || !!value) && (h("span", { key: 'e510aaf8f1af290adeda47fb69a2b9fe03ba45df', slot: "left-icon", class: {
|
|
642
644
|
readonly,
|
|
643
645
|
"has-value": !!value,
|
|
644
|
-
} }, h("slot", { key: '
|
|
646
|
+
} }, h("slot", { key: '4618acba252d43f20b92430be62ad522296145c9', name: "icon" }))), isMobileOrTablet() && this.useNativeSelectOnMobile && !multiple ? (h(NativeSelect, null)) : readonly ? (h(ReadOnly, null)) : !searchable ? (h(SelectButton, null)) : (h(SelectInput, null))), !(isMobileOrTablet() &&
|
|
645
647
|
this.useNativeSelectOnMobile &&
|
|
646
|
-
!multiple) && (h("ic-menu", { key: '
|
|
648
|
+
!multiple) && (h("ic-menu", { key: '5e014dba6d6c4598aa9c6644aa556fc4e80022cc', ref: (el) => (this.menu = el), class: { "no-results": noOptions }, inputEl: searchable ? this.searchableSelectElement : this.selectElement, allowMenuFocus: false, inputLabel: label, anchorEl: this.anchorEl, size: size, menuId: menuId, open: open, options: this.getOptions(), value: multiple ? value : value, fullWidth: fullWidth, selectOnEnter: selectOnEnter, onMenuStateChange: this.handleMenuChange, onMenuOptionSelect: this.handleSelectChange, onMenuOptionSelectAll: this.handleSelectAllChange, onTimeoutBlur: this.handleTimeoutBlur, onMenuOptionId: this.updateAriaActiveDescendant, onClick: this.setFocus, parentEl: this.el, activationType: searchable || multiple || selectOnEnter ? "manual" : "automatic", onRetryButtonClicked: this.handleRetry, closeOnSelect: !multiple, multiSelect: multiple, searchableSelect: searchable })), h("ic-input-validation", { key: '08feb8f8e219adb8aba58e078a9dc6d0aa8bc006', class: {
|
|
647
649
|
"menu-open": open,
|
|
648
650
|
}, ariaLiveMode: validationAriaLive, status: showValidation ? validationStatus : "", message: showValidation ? validationText : "", for: inputId }))));
|
|
649
651
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ic-select.js","sourceRoot":"","sources":["../../../src/components/ic-select/ic-select.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n State,\n Watch,\n forceUpdate,\n Method,\n} from \"@stencil/core\";\nimport {\n addFormResetListener,\n checkSlotInChildMutations,\n getInputDescribedByText,\n isMobileOrTablet,\n isSlotUsed,\n removeDisabledFalse,\n removeFormResetListener,\n renderHiddenInput,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcAriaLive,\n IcInformationStatusOrEmpty,\n IcSearchMatchPositions,\n IcMultiValueEventDetail,\n IcSizes,\n IcThemeMode,\n IcInformationStatus,\n} from \"../../utils/types\";\nimport {\n IcSelectOption,\n IcSelectOptionBase,\n IcSelectOptionFlat,\n IcSelectOptionGroup,\n} from \"./ic-select.types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport {\n IcMenuChangeEventDetail,\n IcMenuOptionIdEventDetail,\n IcOptionSelectEventDetail,\n} from \"../ic-menu/ic-menu.types\";\nimport { IcMenuCustomEvent } from \"../../components\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"tabindex\", \"title\"];\n\n/**\n * @slot helper-text - Content is set as the helper text for the select.\n * @slot icon - Content will be placed to the left of the select text input.\n */\n@Component({\n tag: \"ic-select\",\n styleUrl: \"ic-select.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Select {\n private inputId = `ic-select-input-${inputIds++}`;\n private menu?: HTMLIcMenuElement;\n private menuId = `${this.inputId}-menu`;\n private inheritedAttributes: { [k: string]: string } = {};\n private anchorEl?: HTMLElement;\n private nativeSelectElement?: HTMLSelectElement;\n private hostMutationObserver: MutationObserver | null = null;\n private clearButton?: HTMLIcButtonElement;\n private searchableSelectElement?: HTMLInputElement;\n private timeoutTimer: number | null = null;\n private hasTimedOut: boolean = false;\n private selectElement?: HTMLButtonElement;\n private initialRender: boolean = true;\n private characterKeyPressTimer?: number;\n private pressedCharacters = \"\";\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant?: string;\n @State() debounceIcInput?: number;\n @State() hiddenInputValue: string | null;\n @State() hasError: boolean = false;\n @State() searchableSelectInputValue: string = \"\";\n @State() selectButtonAriaLiveText: string = \"\";\n @State() selectInputAriaLiveText: string = \"\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled = false;\n\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the built in filtering will be disabled for a searchable variant. For example, if options will already be filtered from external source.\n */\n @Prop() disableAutoFiltering = false;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * The <form> element to associate the select with.\n */\n @Prop() form?: string;\n\n /**\n * If `true`, the select will fill the width of the container.\n */\n @Prop() fullWidth = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText = \"\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel = false;\n\n /**\n * If `true`, descriptions of options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeDescriptionsInSearch = false;\n\n /**\n * If `true`, group titles of grouped options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeGroupTitlesInSearch = false;\n\n /**\n * The label for the select.\n */\n @Prop() label!: string;\n\n /**\n * The message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel = \"Loading Error\";\n\n /**\n * The message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel = \"Loading...\";\n\n /**\n * If `true`, multiple options can be selected.\n */\n @Prop() multiple = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder = \"Select an option\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly = false;\n\n /**\n * If `true`, the select will require a value.\n */\n @Prop() required = false;\n\n /**\n * If `true`, a searchable variant of the select will be displayed which can be typed in to filter options. This functionality is only available on the single-select variant of the select component.\n */\n @Prop() searchable = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options. Only applies to built in filtering.\n */\n @Prop() searchMatchPosition: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown on the single select.\n */\n @Prop() selectOnEnter = false;\n\n /**\n * If `true`, a button which clears the select input when clicked will be displayed. The button will always appear on the searchable select.\n */\n @Prop() showClearButton = false;\n\n /**\n * The size of the select.\n */\n @Prop() size: IcSizes = \"medium\";\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * The value of the `aria-live` attribute on the validation message.\n */\n @Prop() validationAriaLive: IcAriaLive = \"polite\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message.\n */\n @Prop() validationText = \"\";\n\n /**\n * If `true` and on a mobile or tablet device, the native select element will be used instead of the custom select component for better usability.\n */\n @Prop() useNativeSelectOnMobile = true;\n\n /**\n * If `true`, the loading state will be triggered when fetching options asynchronously.\n */\n @Prop({ mutable: true }) loading = false;\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n this.hasTimedOut = false;\n\n if (newValue) {\n this.hasError = false;\n if (this.timeout) {\n if (this.timeoutTimer) {\n this.clearTimer();\n }\n this.timeoutTimer = window.setTimeout(() => {\n this.loading = false;\n this.hasTimedOut = true;\n forceUpdate(this);\n }, this.timeout);\n }\n } else {\n if (this.timeoutTimer) {\n this.clearTimer();\n }\n }\n }\n\n private clearTimer() {\n if (this.timeoutTimer) {\n clearTimeout(this.timeoutTimer);\n this.timeoutTimer = null;\n }\n }\n\n /**\n * The possible selection options.\n */\n @Prop() options: IcSelectOption[] = [];\n @State() flatOptions: IcSelectOptionFlat[] = [];\n @Watch(\"options\")\n optionsChangedHandler(): void {\n const flat = this.getFlatOptions(this.options)\n .filter((option) => option.value != null || option.label != null) // filter out options missing both value and label\n .map((option) => ({\n ...option,\n value: option.value ?? option.label, // if an option is missing a value, use the label as the value\n label: option.label ?? option.value, // vice versa\n }));\n this.flatOptions = this.getDeduplicatedOptions(flat);\n\n if (!this.initialRender) this.loading = false;\n this.clearTimer();\n this.updateSelectButtonAriaLive();\n }\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icInput` event after each keystroke.\n */\n @Prop() debounce = 0;\n @State() currDebounce = this.debounce;\n @Watch(\"debounce\")\n debounceChangedHandler(newValue: number): void {\n if (this.currDebounce !== newValue) {\n this.currDebounce = newValue;\n }\n }\n\n /**\n * The value of the select, reflected by the value of the currently selected option.\n * For the searchable variant, the value is also reflected by the user input.\n * For the multi-select variant, the value must be an array of option values.\n */\n @Prop({ mutable: true }) value: string | string[] | null = null;\n @State() initialValue = this.value;\n @Watch(\"value\")\n valueChangedHandler(newValue: string | string[] | null): void {\n const validated = this.getValidatedValue(newValue);\n\n const isEqual =\n Array.isArray(validated) && Array.isArray(this.value)\n ? validated.length === this.value.length &&\n validated.every((v, i) => v === (this.value as string[])[i])\n : validated === this.value;\n\n if (!isEqual) {\n this.value = validated;\n return;\n }\n\n this.updateSelectButtonAriaLive();\n this.icChange.emit({ value: this.value });\n }\n\n @State() open = false;\n @Watch(\"open\")\n openChangedHandler(): void {\n this.open ? this.icOpen.emit() : this.icClose.emit();\n if (!this.open) {\n this.ariaActiveDescendant = undefined;\n }\n this.handleFocusIndicatorDisplay();\n }\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() icBlur: EventEmitter<void>;\n\n /**\n * Emitted when the value changes.\n */\n @Event() icChange: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the clear or clear all button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * Emitted when the select options menu is closed.\n */\n @Event() icClose: EventEmitter<void>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() icFocus: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the select options menu is opened.\n */\n @Event() icOpen: EventEmitter<void>;\n\n /**\n * Emitted when an option is selected.\n * Selecting an option will also trigger an `icChange/onIcChange` due to the value being updated.\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when `multiple` is `true` and an option is deselected.\n */\n @Event() icOptionDeselect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the 'retry loading' button is clicked for a searchable variant.\n */\n @Event() icRetryLoad: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Sets focus on the select component.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.selectElement) {\n this.selectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n this.initialRender = false;\n }\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n this.clearTimer();\n }\n\n componentDidLoad(): void {\n forceUpdate(this);\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n }\n\n private getValidatedValue = (\n value: string | string[] | null\n ): string | string[] | null => {\n const validValues = this.flatOptions.map((opt) => opt.value);\n\n if (validValues.length === 0) return value;\n\n if (this.multiple) {\n if (!value) return null;\n const arr = Array.isArray(value) ? value : [value]; // Ensure value is an array\n const filtered = validValues.filter((v) => arr.includes(v)); // Keep only valid values\n return filtered.length > 0 ? filtered : null;\n } else {\n return validValues.includes(value as string) ? value : null;\n }\n };\n\n componentWillLoad(): void {\n this.optionsChangedHandler();\n this.value = this.getValidatedValue(this.value);\n this.initialValue = this.value;\n\n if (this.loading) this.loadingHandler(true);\n\n addFormResetListener(this.el, this.handleFormReset);\n }\n\n private getFilteredOptions = (\n searchString: string,\n searchMatchPosition: \"anywhere\" | \"start\",\n includeDescriptionsInSearch: boolean,\n includeGroupTitlesInSearch: boolean\n ): IcSelectOption[] => {\n const search = searchString.toLowerCase();\n const match = (text: string, method: \"anywhere\" | \"start\") =>\n method === \"anywhere\" ? text.includes(search) : text.startsWith(search);\n\n return this.unflattenOptions(\n this.flatOptions.filter((option) => {\n const label = option.label.toLowerCase();\n const group = option.group?.toLowerCase() ?? \"\";\n const description = option.description?.toLowerCase() ?? \"\";\n return (\n match(label, searchMatchPosition) ||\n (includeDescriptionsInSearch &&\n match(description, searchMatchPosition)) ||\n (includeGroupTitlesInSearch && match(group, searchMatchPosition))\n );\n })\n );\n };\n\n private getOptions = (): IcSelectOption[] => {\n const options =\n this.searchable &&\n !this.disableAutoFiltering &&\n this.searchableSelectInputValue\n ? this.getFilteredOptions(\n this.searchableSelectInputValue,\n this.searchMatchPosition,\n this.includeDescriptionsInSearch,\n this.includeGroupTitlesInSearch\n )\n : this.unflattenOptions(this.flatOptions);\n\n if (this.hasTimedOut)\n return [{ label: this.loadingErrorLabel, value: \"\", timedOut: true }];\n\n if (this.loading)\n return [{ label: this.loadingLabel, value: \"\", loading: true }];\n\n if (options.length > 0) return options;\n\n return [{ label: this.emptyOptionListText, value: \"\" }];\n };\n\n private getFlatOptions = (options: IcSelectOption[]): IcSelectOptionFlat[] =>\n options.flatMap(\n (item) =>\n (\"children\" in item && item.children\n ? [...item.children.map((child) => ({ group: item.label, ...child }))]\n : [item]) as IcSelectOptionFlat[]\n );\n\n private unflattenOptions = (\n flatOptions: IcSelectOptionFlat[]\n ): IcSelectOption[] => {\n const groupMap = new Map<string, IcSelectOptionGroup>();\n const result: IcSelectOption[] = [];\n\n for (const option of flatOptions) {\n if (option.group) {\n let group = groupMap.get(option.group);\n if (!group) {\n group = { label: option.group, children: [] };\n groupMap.set(option.group, group);\n result.push(group);\n }\n const { group: _, ...rest } = option;\n group.children.push(rest as IcSelectOptionBase);\n } else {\n result.push(option);\n }\n }\n return result;\n };\n\n private getLabelFromValue = (value: string | null): string =>\n this.flatOptions.find((option) => option.value === value)?.label ?? \"\";\n\n // Construct the string that will be shown in the select input or button\n private getLabelString = (): string => {\n if (Array.isArray(this.value)) {\n return this.value.map(this.getLabelFromValue).filter(Boolean).join(\", \");\n }\n return (\n this.getLabelFromValue(this.value) ||\n (this.searchable ? \"\" : this.placeholder)\n );\n };\n\n private handleClick = (event: MouseEvent) => {\n if (event.detail !== 0) {\n this.menu?.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement?.focus();\n this.handleClick(event);\n }\n };\n\n private handleBlur = ({ relatedTarget }: FocusEvent) => {\n const target = relatedTarget as HTMLElement;\n if (\n this.el.contains(target) ||\n this.el.shadowRoot?.contains(target) ||\n this.menu?.contains(target) ||\n target === this.clearButton\n ) {\n return;\n }\n\n this.open = false;\n this.handleFocusIndicatorDisplay();\n\n if (this.searchable) {\n this.searchableSelectInputValue = \"\";\n }\n this.icBlur.emit();\n };\n\n private handleTimeoutBlur = (event: CustomEvent<{ ev: FocusEvent }>) => {\n this.handleBlur(event.detail.ev);\n };\n\n private handleFocus = () => {\n this.icFocus.emit();\n };\n\n private handleClear = () => {\n this.clearTimer();\n this.loading = false;\n this.value = null;\n this.searchableSelectInputValue = \"\";\n\n this.icClear.emit();\n\n this.setFocus();\n };\n\n private setTextColor = () => {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.className =\n this.nativeSelectElement.selectedIndex === 0\n ? \"placeholder\"\n : \"select-option-selected\";\n }\n };\n\n private handleNativeSelectChange = () => {\n if (this.nativeSelectElement) {\n this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.icChange.emit({ value: this.nativeSelectElement.value });\n }\n this.setTextColor();\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator =\n this.el.shadowRoot?.querySelector(\".focus-indicator\");\n\n if (focusIndicator) {\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!(event.key === \" \" && this.pressedCharacters.length > 0)) {\n if (this.open) {\n this.menu?.handleMenuKeyDown(event);\n } else {\n this.menu?.handleKeyboardOpen(event);\n }\n }\n\n if (\n !this.multiple &&\n !this.searchable &&\n !this.selectOnEnter &&\n /^[a-zA-Z0-9 ]$/.test(event.key)\n ) {\n this.handleCharacterKeyDown(event.key);\n }\n };\n\n private handleCharacterKeyDown = (key: string) => {\n // Only close menu when space is pressed if not being used alongside character keys to quickly select options\n if (this.open && key === \" \" && this.pressedCharacters.length === 0) {\n this.open = false;\n }\n\n if (key.length !== 1 || this.searchable) {\n this.pressedCharacters = \"\";\n return;\n }\n\n window.clearTimeout(this.characterKeyPressTimer);\n this.characterKeyPressTimer = window.setTimeout(\n () => (this.pressedCharacters = \"\"),\n 1000\n );\n\n if (key !== \" \" || !!this.pressedCharacters) {\n this.pressedCharacters += key;\n const filteredOptions = this.getFilteredOptions(\n this.pressedCharacters,\n \"start\",\n false,\n false\n );\n\n if (filteredOptions.length > 0) {\n const firstOption = filteredOptions[0];\n if (\"children\" in firstOption) {\n this.value = firstOption.children[0].value;\n } else {\n this.value = firstOption.value;\n }\n }\n }\n };\n\n private handleNativeSelectKeyDown = (event: KeyboardEvent) => {\n this.handleKeyDown(event);\n };\n\n private handleSelectChange = (\n event: CustomEvent<IcOptionSelectEventDetail>\n ) => {\n const { value } = event.detail;\n if (!value || this.getLabelFromValue(value) === this.emptyOptionListText) {\n this.value = null;\n return;\n }\n\n if (this.multiple) {\n let valueArray = Array.isArray(this.value) ? [...this.value] : [];\n const index = valueArray.indexOf(value);\n\n if (index > -1) {\n valueArray.splice(index, 1);\n this.icOptionDeselect.emit({ value });\n } else {\n this.icOptionSelect.emit({ value });\n valueArray.push(value);\n valueArray = this.getValidatedValue(valueArray) as string[];\n }\n this.value = valueArray.length ? valueArray : null;\n } else {\n this.icOptionSelect.emit({ value });\n this.value = value;\n if (this.searchable) this.searchableSelectInputValue = \"\";\n }\n };\n\n private handleSelectAllChange = ({\n detail,\n }: CustomEvent<{ select: boolean }>) => {\n const allSelectableValues = this.flatOptions\n .filter((option) => !option.disabled)\n .map((option) => option.value);\n if (detail.select) {\n allSelectableValues\n .filter((value) => !((this.value ?? []) as string[]).includes(value))\n .forEach((value) => {\n this.icOptionSelect.emit({ value });\n });\n\n this.value = allSelectableValues;\n } else {\n (this.value as string[]).forEach((value) =>\n this.icOptionDeselect.emit({ value })\n );\n this.value = null;\n }\n };\n\n private handleFormReset = () => {\n this.value = this.initialValue;\n this.searchableSelectInputValue = \"\";\n if (this.searchable) {\n this.hiddenInputValue = this.initialValue as string;\n }\n };\n\n private handleRetry = () => {\n this.clearTimer();\n this.hasTimedOut = false;\n this.hasError = false;\n this.loading = true;\n this.icRetryLoad.emit({\n value: this.searchable\n ? this.searchableSelectInputValue\n : this.hiddenInputValue,\n });\n this.setFocus();\n };\n\n private handleSearchableSelectInput = (event: Event) => {\n this.updateSearchableSelectResultAriaLive();\n if (!this.multiple) {\n this.value = null;\n }\n\n this.searchableSelectInputValue =\n (event.target as HTMLInputElement).value ?? \"\";\n this.open = true;\n\n clearTimeout(this.debounceIcInput);\n this.debounceIcInput = window.setTimeout(\n () => this.icInput.emit({ value: this.searchableSelectInputValue }),\n this.currDebounce\n );\n };\n\n private hostMutationCallback = (mutationList: MutationRecord[]) => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (attributeName) {\n const attribute = this.el.getAttribute(attributeName);\n if (attribute && MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] = attribute;\n forceComponentUpdate = true;\n }\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private updateSelectButtonAriaLive = () => {\n const value_label = this.getLabelFromValue(this.value as string);\n this.selectButtonAriaLiveText = this.multiple\n ? `${this.value ? this.value.length : 0} of ${\n this.flatOptions.length\n } selected`\n : this.value\n ? value_label ?? `${value_label} selected`\n : \"\";\n };\n\n private updateSearchableSelectResultAriaLive = () => {\n this.selectInputAriaLiveText =\n this.getOptions()?.[0]?.label == this.emptyOptionListText\n ? this.emptyOptionListText\n : \"\";\n };\n\n private updateAriaActiveDescendant = (\n event: IcMenuCustomEvent<IcMenuOptionIdEventDetail>\n ) => {\n this.ariaActiveDescendant = event.detail.optionId;\n };\n\n private handleMenuChange = (event: CustomEvent<IcMenuChangeEventDetail>) => {\n this.open = event.detail.open;\n this.pressedCharacters = \"\";\n };\n\n private getDeduplicatedOptions = (\n flatOptions: IcSelectOptionFlat[]\n ): IcSelectOptionFlat[] => {\n const seen = new Set();\n return flatOptions.filter((option) => {\n if (option.value && seen.has(option.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${option.value}) which has been removed.`\n );\n return false;\n }\n if (option.value) seen.add(option.value);\n return true;\n });\n };\n\n private renderNativeOption = (option: IcSelectOptionBase) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === this.value}\n >\n {option.label}\n </option>\n );\n\n render() {\n const {\n disabled,\n searchable,\n size,\n fullWidth,\n theme,\n readonly,\n hideLabel,\n inputId,\n label,\n helperText,\n required,\n value,\n options,\n menuId,\n multiple,\n validationStatus,\n open,\n showClearButton,\n selectOnEnter,\n loading,\n searchableSelectInputValue,\n validationText,\n validationAriaLive,\n form,\n ariaActiveDescendant,\n placeholder,\n name,\n inheritedAttributes,\n selectInputAriaLiveText,\n selectButtonAriaLiveText,\n } = this;\n\n const hasValue = !!value;\n const hasInput = !!searchableSelectInputValue;\n const isClearable =\n !disabled &&\n ((searchable && (hasInput || hasValue)) ||\n (!searchable && hasValue && !loading && showClearButton));\n\n const showValidation = !!validationStatus && !disabled;\n\n const invalid = validationStatus === IcInformationStatus.Error;\n\n const describedBy = getInputDescribedByText(\n this.el,\n inputId,\n helperText !== \"\",\n showValidation\n ).trim();\n\n const menuOptions = this.getOptions();\n const noOptions =\n disabled ||\n (menuOptions.length === 1 &&\n (menuOptions[0].label === this.emptyOptionListText ||\n \"loading\" in menuOptions[0] ||\n \"timedOut\" in menuOptions[0]));\n\n renderHiddenInput(this.el, value as string, name || inputId, disabled);\n\n const ClearButton = () => (\n <ic-button\n ref={(el) => (this.clearButton = el)}\n id=\"clear-button\"\n aria-label={this.searchable ? \"Clear input\" : \"Clear selection\"}\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onBlur={this.handleBlur}\n size={size}\n variant=\"icon-tertiary\"\n ></ic-button>\n );\n\n const NativeSelect = () => (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={inputId}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid ? \"true\" : \"false\"}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onKeyDown={this.handleNativeSelectKeyDown}\n form={form}\n {...inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options.map((option) =>\n \"children\" in option ? (\n <optgroup label={option.label}>\n {option.children.map((child) =>\n this.renderNativeOption(child as IcSelectOptionBase)\n )}\n </optgroup>\n ) : (\n this.renderNativeOption(option as IcSelectOptionBase)\n )\n )}\n </select>\n );\n\n const SelectButton = () => (\n <div class=\"select-container\">\n <button\n class=\"select-input\"\n role=\"combobox\"\n ref={(el) => (this.selectElement = el)}\n id={inputId}\n aria-label={`${label}, ${\n (multiple && value\n ? `${value.length} of ${\n this.flatOptions.length\n } selected, ${this.getLabelString()}`\n : this.getLabelString()) || placeholder\n }`}\n onClick={this.handleClick}\n aria-describedby={describedBy}\n aria-invalid={invalid ? \"true\" : \"false\"}\n aria-haspopup=\"listbox\"\n aria-expanded={`${open}`}\n aria-controls={menuId}\n aria-required={`${required}`}\n disabled={disabled}\n onKeyDown={this.handleKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n aria-activedescendant={ariaActiveDescendant}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n \"with-clear-button\": !!isClearable,\n placeholder: !value,\n }}\n >\n {this.getLabelString()}\n </ic-typography>\n <div class=\"select-input-end\">\n {isClearable && <div class=\"divider\"></div>}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {isClearable && <ClearButton></ClearButton>}\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n class=\"aria-live-hidden-text\"\n >\n {selectButtonAriaLiveText}\n </div>\n </div>\n );\n\n const SelectInput = () => (\n <div class=\"searchable-select-container\">\n <input\n class={{\n \"value-text\": true,\n \"select-input\": true,\n \"with-clear-button\": !!searchableSelectInputValue,\n }}\n role=\"combobox\"\n autocomplete=\"off\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={`${open}`}\n aria-invalid={invalid ? \"true\" : \"false\"}\n aria-required={`${required}`}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={inputId}\n value={\n multiple\n ? \"\"\n : value\n ? this.getLabelString()\n : searchableSelectInputValue || undefined\n }\n disabled={disabled}\n placeholder={placeholder}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n form={form}\n ></input>\n {isClearable && (\n <div class=\"clear-button-container\">\n <ClearButton></ClearButton>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div aria-live=\"polite\" role=\"status\" class=\"aria-live-hidden-text\">\n {selectInputAriaLiveText}\n </div>\n </div>\n );\n\n const ReadOnly = () => (\n <ic-typography>\n <p>\n {this.getLabelString() === placeholder ? \"\" : this.getLabelString()}\n </p>\n </ic-typography>\n );\n\n return (\n <Host\n class={{\n \"ic-select-disabled\": disabled,\n \"ic-select-searchable\": searchable,\n [`ic-select-${size}`]: size !== \"medium\",\n \"ic-select-full-width\": fullWidth,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n >\n <slot name=\"helper-text\" slot=\"helper-text\"></slot>\n </ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": open }}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {isSlotUsed(this.el, \"icon\") &&\n !disabled &&\n (!readonly || !!value) && (\n <span\n slot=\"left-icon\"\n class={{\n readonly,\n \"has-value\": !!value,\n }}\n >\n <slot name=\"icon\" />\n </span>\n )}\n {isMobileOrTablet() && this.useNativeSelectOnMobile && !multiple ? (\n <NativeSelect />\n ) : readonly ? (\n <ReadOnly />\n ) : !searchable ? (\n <SelectButton />\n ) : (\n <SelectInput />\n )}\n </ic-input-component-container>\n {!(\n isMobileOrTablet() &&\n this.useNativeSelectOnMobile &&\n !multiple\n ) && (\n <ic-menu\n ref={(el) => (this.menu = el)}\n class={{ \"no-results\": noOptions }}\n inputEl={\n searchable ? this.searchableSelectElement : this.selectElement\n }\n allowMenuFocus={false}\n inputLabel={label}\n anchorEl={this.anchorEl}\n size={size}\n menuId={menuId}\n open={open}\n options={this.getOptions()}\n value={multiple ? (value as string[]) : (value as string)}\n fullWidth={fullWidth}\n selectOnEnter={selectOnEnter}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionSelect={this.handleSelectChange}\n onMenuOptionSelectAll={this.handleSelectAllChange}\n onTimeoutBlur={this.handleTimeoutBlur}\n onMenuOptionId={this.updateAriaActiveDescendant}\n onClick={this.setFocus}\n parentEl={this.el}\n activationType={\n searchable || multiple || selectOnEnter ? \"manual\" : \"automatic\"\n }\n onRetryButtonClicked={this.handleRetry}\n closeOnSelect={!multiple}\n multiSelect={multiple}\n searchableSelect={searchable}\n ></ic-menu>\n )}\n <ic-input-validation\n class={{\n \"menu-open\": open,\n }}\n ariaLiveMode={validationAriaLive}\n status={showValidation ? validationStatus : \"\"}\n message={showValidation ? validationText : \"\"}\n for={inputId}\n ></ic-input-validation>\n </ic-input-container>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ic-select.js","sourceRoot":"","sources":["../../../src/components/ic-select/ic-select.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,KAAK,EAEL,IAAI,EACJ,IAAI,EACJ,CAAC,EACD,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAOL,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,KAAK,MAAM,oBAAoB,CAAC;AAQvC,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,MAAM,kBAAkB,GAAG,CAAC,GAAG,iBAAiB,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAEvE;;;GAGG;AAQH,MAAM,OAAO,MAAM;IAPnB;QAQU,YAAO,GAAG,mBAAmB,QAAQ,EAAE,EAAE,CAAC;QAE1C,WAAM,GAAG,GAAG,IAAI,CAAC,OAAO,OAAO,CAAC;QAChC,wBAAmB,GAA4B,EAAE,CAAC;QAGlD,yBAAoB,GAA4B,IAAI,CAAC;QAGrD,iBAAY,GAAkB,IAAI,CAAC;QACnC,gBAAW,GAAY,KAAK,CAAC;QAE7B,kBAAa,GAAY,IAAI,CAAC;QAE9B,sBAAiB,GAAG,EAAE,CAAC;QAOtB,aAAQ,GAAY,KAAK,CAAC;QAC1B,+BAA0B,GAAW,EAAE,CAAC;QACxC,6BAAwB,GAAW,EAAE,CAAC;QACtC,4BAAuB,GAAW,EAAE,CAAC;QAE9C;;WAEG;QACsB,aAAQ,GAAG,KAAK,CAAC;QAO1C;;WAEG;QACK,yBAAoB,GAAG,KAAK,CAAC;QAErC;;WAEG;QACK,wBAAmB,GAAG,kBAAkB,CAAC;QAOjD;;WAEG;QACK,cAAS,GAAG,KAAK,CAAC;QAE1B;;WAEG;QACK,eAAU,GAAG,EAAE,CAAC;QAExB;;WAEG;QACK,cAAS,GAAG,KAAK,CAAC;QAE1B;;WAEG;QACK,gCAA2B,GAAG,KAAK,CAAC;QAE5C;;WAEG;QACK,+BAA0B,GAAG,KAAK,CAAC;QAO3C;;WAEG;QACK,sBAAiB,GAAG,eAAe,CAAC;QAE5C;;WAEG;QACK,iBAAY,GAAG,YAAY,CAAC;QAEpC;;WAEG;QACK,aAAQ,GAAG,KAAK,CAAC;QAEzB;;WAEG;QACK,SAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B;;WAEG;QACK,gBAAW,GAAG,kBAAkB,CAAC;QAEzC;;WAEG;QACK,aAAQ,GAAG,KAAK,CAAC;QAEzB;;WAEG;QACK,aAAQ,GAAG,KAAK,CAAC;QAEzB;;WAEG;QACK,eAAU,GAAG,KAAK,CAAC;QAE3B;;WAEG;QACK,wBAAmB,GAA2B,UAAU,CAAC;QAEjE;;WAEG;QACK,kBAAa,GAAG,KAAK,CAAC;QAE9B;;WAEG;QACK,oBAAe,GAAG,KAAK,CAAC;QAEhC;;WAEG;QACK,SAAI,GAAY,QAAQ,CAAC;QAOjC;;WAEG;QACK,UAAK,GAAgB,SAAS,CAAC;QAEvC;;WAEG;QACK,uBAAkB,GAAe,QAAQ,CAAC;QAElD;;WAEG;QACK,qBAAgB,GAA+B,EAAE,CAAC;QAE1D;;WAEG;QACK,mBAAc,GAAG,EAAE,CAAC;QAE5B;;WAEG;QACK,4BAAuB,GAAG,IAAI,CAAC;QAEvC;;WAEG;QACsB,YAAO,GAAG,KAAK,CAAC;QA+BzC;;WAEG;QACK,YAAO,GAAqB,EAAE,CAAC;QAC9B,gBAAW,GAAyB,EAAE,CAAC;QAiBhD;;WAEG;QACK,aAAQ,GAAG,CAAC,CAAC;QACZ,iBAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;QAQtC;;;;WAIG;QACsB,UAAK,GAA6B,IAAI,CAAC;QACvD,iBAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAoB1B,SAAI,GAAG,KAAK,CAAC;QAiGd,sBAAiB,GAAG,CAC1B,KAA+B,EACL,EAAE;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAE7D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE3C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK;oBAAE,OAAO,IAAI,CAAC;gBACxB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B;gBAC/E,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;gBACtF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC;QAYM,uBAAkB,GAAG,CAC3B,YAAoB,EACpB,mBAAyC,EACzC,2BAAoC,EACpC,0BAAmC,EACjB,EAAE;YACpB,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,MAA4B,EAAE,EAAE,CAC3D,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAE1E,OAAO,IAAI,CAAC,gBAAgB,CAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;;gBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,WAAW,EAAE,mCAAI,EAAE,CAAC;gBAChD,MAAM,WAAW,GAAG,MAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,WAAW,EAAE,mCAAI,EAAE,CAAC;gBAC5D,OAAO,CACL,KAAK,CAAC,KAAK,EAAE,mBAAmB,CAAC;oBACjC,CAAC,2BAA2B;wBAC1B,KAAK,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;oBAC1C,CAAC,0BAA0B,IAAI,KAAK,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAClE,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QAEM,eAAU,GAAG,GAAqB,EAAE;YAC1C,MAAM,OAAO,GACX,IAAI,CAAC,UAAU;gBACf,CAAC,IAAI,CAAC,oBAAoB;gBAC1B,IAAI,CAAC,0BAA0B;gBAC7B,CAAC,CAAC,IAAI,CAAC,kBAAkB,CACrB,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,0BAA0B,CAChC;gBACH,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE9C,IAAI,IAAI,CAAC,WAAW;gBAClB,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAExE,IAAI,IAAI,CAAC,OAAO;gBACd,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAElE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC;YAEvC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,OAAyB,EAAwB,EAAE,CAC3E,OAAO,CAAC,OAAO,CACb,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;YAClC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAG,KAAK,EAAE,IAAI,CAAC,KAAK,IAAK,KAAK,EAAG,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAyB,CACtC,CAAC;QAEI,qBAAgB,GAAG,CACzB,WAAiC,EACf,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;YACxD,MAAM,MAAM,GAAqB,EAAE,CAAC;YAEpC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;wBAC9C,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC;oBACD,MAAM,EAAE,KAAK,EAAE,CAAC,KAAc,MAAM,EAAf,IAAI,UAAK,MAAM,EAA9B,SAAqB,CAAS,CAAC;oBACrC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAA0B,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,KAAoB,EAAU,EAAE,eAC3D,OAAA,MAAA,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAA,EAAA,CAAC;QAEzE,wEAAwE;QAChE,mBAAc,GAAG,GAAW,EAAE;YACpC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,CACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAC1C,CAAC;QACJ,CAAC,CAAC;QAEM,gBAAW,GAAG,CAAC,KAAiB,EAAE,EAAE;;YAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAA,IAAI,CAAC,IAAI,0CAAE,eAAe,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEM,8BAAyB,GAAG,CAAC,KAAiB,EAAE,EAAE;;YACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAA,IAAI,CAAC,uBAAuB,0CAAE,KAAK,EAAE,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEM,eAAU,GAAG,CAAC,EAAE,aAAa,EAAc,EAAE,EAAE;;YACrD,MAAM,MAAM,GAAG,aAA4B,CAAC;YAC5C,IACE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;iBACxB,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;iBACpC,MAAA,IAAI,CAAC,IAAI,0CAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAC3B,MAAM,KAAK,IAAI,CAAC,WAAW,EAC3B,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAEnC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,KAAsC,EAAE,EAAE;YACrE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC;QAEM,gBAAW,GAAG,GAAG,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC;QAEM,gBAAW,GAAG,GAAG,EAAE;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;YAErC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC;QAEM,iBAAY,GAAG,GAAG,EAAE;YAC1B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,IAAI,CAAC,mBAAmB,CAAC,SAAS;oBAChC,IAAI,CAAC,mBAAmB,CAAC,aAAa,KAAK,CAAC;wBAC1C,CAAC,CAAC,aAAa;wBACf,CAAC,CAAC,wBAAwB,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;QAEM,6BAAwB,GAAG,GAAG,EAAE;YACtC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC;QAEM,gCAA2B,GAAG,GAAG,EAAE;;YACzC,MAAM,cAAc,GAClB,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAExD,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;;YAC/C,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,MAAA,IAAI,CAAC,IAAI,0CAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,MAAA,IAAI,CAAC,IAAI,0CAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,IACE,CAAC,IAAI,CAAC,QAAQ;gBACd,CAAC,IAAI,CAAC,UAAU;gBAChB,CAAC,IAAI,CAAC,aAAa;gBACnB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAChC,CAAC;gBACD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;QAEM,2BAAsB,GAAG,CAAC,GAAW,EAAE,EAAE;YAC/C,6GAA6G;YAC7G,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YACpB,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjD,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAC7C,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,EACnC,IAAI,CACL,CAAC;YAEF,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC;gBAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAC7C,IAAI,CAAC,iBAAiB,EACtB,OAAO,EACP,KAAK,EACL,KAAK,CACN,CAAC;gBAEF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;oBACvC,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;wBAC9B,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;4BACzB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAC7C,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,8BAAyB,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC3D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAC3B,KAA6C,EAC7C,EAAE;YACF,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAExC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;oBACf,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBACpC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAa,CAAC;gBAC9D,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,IAAI,CAAC,UAAU;oBAAE,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;QAEM,0BAAqB,GAAG,CAAC,EAC/B,MAAM,GAC2B,EAAE,EAAE;YACrC,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW;iBACzC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACpC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,mBAAmB;qBAChB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,CAAE,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,EAAA,CAAC;qBACpE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;gBAEL,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACL,IAAI,CAAC,KAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CACtC,CAAC;gBACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/B,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAsB,CAAC;YACtD,CAAC;QACH,CAAC,CAAC;QAEM,gBAAW,GAAG,GAAG,EAAE;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,KAAK,EAAE,IAAI,CAAC,UAAU;oBACpB,CAAC,CAAC,IAAI,CAAC,0BAA0B;oBACjC,CAAC,CAAC,IAAI,CAAC,gBAAgB;aAC1B,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC;QAEM,gCAA2B,GAAG,CAAC,KAAY,EAAE,EAAE;;YACrD,IAAI,CAAC,oCAAoC,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,IAAI,CAAC,0BAA0B;gBAC7B,MAAC,KAAK,CAAC,MAA2B,CAAC,KAAK,mCAAI,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAEjB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CACtC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC,EACnE,IAAI,CAAC,YAAY,CAClB,CAAC;QACJ,CAAC,CAAC;QAEM,yBAAoB,GAAG,CAAC,YAA8B,EAAE,EAAE;YAChE,IAAI,oBAAoB,GAAG,KAAK,CAAC;YACjC,YAAY,CAAC,OAAO,CAClB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;gBACpD,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;oBACtD,IAAI,SAAS,IAAI,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;wBAC5D,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;wBACpD,oBAAoB,GAAG,IAAI,CAAC;oBAC9B,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChC,oBAAoB,GAAG,yBAAyB,CAC9C,UAAU,EACV,YAAY,EACZ,MAAM,CACP,CAAC;gBACJ,CAAC;YACH,CAAC,CACF,CAAC;YACF,IAAI,oBAAoB,EAAE,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAEM,+BAA0B,GAAG,GAAG,EAAE;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;YACjE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ;gBAC3C,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OACnC,IAAI,CAAC,WAAW,CAAC,MACnB,WAAW;gBACb,CAAC,CAAC,IAAI,CAAC,KAAK;oBACZ,CAAC,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,GAAG,WAAW,WAAW;oBAC1C,CAAC,CAAC,EAAE,CAAC;QACT,CAAC,CAAC;QAEM,yCAAoC,GAAG,GAAG,EAAE;;YAClD,IAAI,CAAC,uBAAuB;gBAC1B,CAAA,MAAA,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAG,CAAC,CAAC,0CAAE,KAAK,KAAI,IAAI,CAAC,mBAAmB;oBACvD,CAAC,CAAC,IAAI,CAAC,mBAAmB;oBAC1B,CAAC,CAAC,EAAE,CAAC;QACX,CAAC,CAAC;QAEM,+BAA0B,GAAG,CACnC,KAAmD,EACnD,EAAE;YACF,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QACpD,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,KAA2C,EAAE,EAAE;YACzE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC9B,CAAC,CAAC;QAEM,2BAAsB,GAAG,CAC/B,WAAiC,EACX,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnC,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3C,OAAO,CAAC,IAAI,CACV,wBAAwB,IAAI,CAAC,KAAK,gDAAgD,MAAM,CAAC,KAAK,2BAA2B,CAC1H,CAAC;oBACF,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IAAI,MAAM,CAAC,KAAK;oBAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,MAA0B,EAAE,EAAE,CAAC,CAC3D,cACE,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,QAAQ,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAEpC,MAAM,CAAC,KAAK,CACN,CACV,CAAC;KAqVH;IA9kCC,oBAAoB;QAClB,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IA8ID,cAAc,CAAC,QAAiB;QAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,CAAC;gBACD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;oBACzC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAQD,qBAAqB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;aAC3C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,kDAAkD;aACnH,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;YAAC,OAAA,iCACZ,MAAM,KACT,KAAK,EAAE,MAAA,MAAM,CAAC,KAAK,mCAAI,MAAM,CAAC,KAAK,EACnC,KAAK,EAAE,MAAA,MAAM,CAAC,KAAK,mCAAI,MAAM,CAAC,KAAK,IACnC,CAAA;SAAA,CAAC,CAAC;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAQD,sBAAsB,CAAC,QAAgB;QACrC,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC/B,CAAC;IACH,CAAC;IAUD,mBAAmB,CAAC,QAAkC;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACnD,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;gBACtC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAM,IAAI,CAAC,KAAkB,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC;QAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAID,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAqDD;;OAEG;IAEH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACxC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,oBAAoB;;QAClB,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACvD,MAAA,IAAI,CAAC,oBAAoB,0CAAE,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,gBAAgB;QACd,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5E,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;YACzC,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAmBD,iBAAiB;QACf,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAE/B,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE5C,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC;IAyZD,MAAM;QACJ,MAAM,EACJ,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,KAAK,EACL,UAAU,EACV,QAAQ,EACR,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,IAAI,EACJ,eAAe,EACf,aAAa,EACb,OAAO,EACP,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,IAAI,EACJ,oBAAoB,EACpB,WAAW,EACX,IAAI,EACJ,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,GACzB,GAAG,IAAI,CAAC;QAET,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,0BAA0B,CAAC;QAC9C,MAAM,WAAW,GACf,CAAC,QAAQ;YACT,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;gBACrC,CAAC,CAAC,UAAU,IAAI,QAAQ,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC;QAE9D,MAAM,cAAc,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC;QAEvD,MAAM,OAAO,GAAG,gBAAgB,KAAK,mBAAmB,CAAC,KAAK,CAAC;QAE/D,MAAM,WAAW,GAAG,uBAAuB,CACzC,IAAI,CAAC,EAAE,EACP,OAAO,EACP,UAAU,KAAK,EAAE,EACjB,cAAc,CACf,CAAC,IAAI,EAAE,CAAC;QAET,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,SAAS,GACb,QAAQ;YACR,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBACvB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,mBAAmB;oBAChD,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC;oBAC3B,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAe,EAAE,IAAI,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEvE,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CACxB,kEACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,EACpC,EAAE,EAAC,cAAc,gBACL,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,EAC/D,KAAK,EAAC,cAAc,EACpB,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,IAAI,EAAE,IAAI,EACV,OAAO,EAAC,eAAe,GACZ,CACd,CAAC;QAEF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CACzB,6EACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,EAC5C,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EACvC,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,OAAO,gBACC,KAAK,sBACC,WAAW,kBACf,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EACxC,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,yBAAyB,EACzC,IAAI,EAAE,IAAI,IACN,mBAAmB;YAEvB,+DAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,QAAC,QAAQ,EAAE,CAAC,eAAe,IACjD,WAAW,CACL;YACR,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACtB,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CACxC,gBAAU,KAAK,EAAE,MAAM,CAAC,KAAK,IAC1B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,IAAI,CAAC,kBAAkB,CAAC,KAA2B,CAAC,CACrD,CACQ,CACZ,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,kBAAkB,CAAC,MAA4B,CAAC,CACtD,CACF,CACM,CACV,CAAC;QAEF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CACzB,4DAAK,KAAK,EAAC,kBAAkB;YAC3B,+DACE,KAAK,EAAC,cAAc,EACpB,IAAI,EAAC,UAAU,EACf,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,EACtC,EAAE,EAAE,OAAO,gBACC,GAAG,KAAK,KAClB,CAAC,QAAQ,IAAI,KAAK;oBAChB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,OACb,IAAI,CAAC,WAAW,CAAC,MACnB,cAAc,IAAI,CAAC,cAAc,EAAE,EAAE;oBACvC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,WAChC,EAAE,EACF,OAAO,EAAE,IAAI,CAAC,WAAW,sBACP,WAAW,kBACf,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,mBAC1B,SAAS,mBACR,GAAG,IAAI,EAAE,mBACT,MAAM,mBACN,GAAG,QAAQ,EAAE,EAC5B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,MAAM,EAAE,IAAI,CAAC,UAAU,2BACA,oBAAoB;gBAE3C,sEACE,OAAO,EAAC,MAAM,EACd,KAAK,EAAE;wBACL,YAAY,EAAE,IAAI;wBAClB,mBAAmB,EAAE,CAAC,CAAC,WAAW;wBAClC,WAAW,EAAE,CAAC,KAAK;qBACpB,IAEA,IAAI,CAAC,cAAc,EAAE,CACR;gBAChB,4DAAK,KAAK,EAAC,kBAAkB;oBAC1B,WAAW,IAAI,4DAAK,KAAK,EAAC,SAAS,GAAO;oBAC3C,6DACE,KAAK,EAAE;4BACL,aAAa,EAAE,IAAI;4BACnB,kBAAkB,EAAE,IAAI;yBACzB,EACD,SAAS,EAAE,MAAM,iBACL,MAAM,GAClB,CACE,CACC;YACR,WAAW,IAAI,EAAC,WAAW,sDAAe;YAC3C,yEACY,QAAQ,iBACN,MAAM,EAClB,KAAK,EAAC,uBAAuB,IAE5B,wBAAwB,CACrB,CACF,CACP,CAAC;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CACxB,4DAAK,KAAK,EAAC,6BAA6B;YACtC,8DACE,KAAK,EAAE;oBACL,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,IAAI;oBACpB,mBAAmB,EAAE,CAAC,CAAC,0BAA0B;iBAClD,EACD,IAAI,EAAC,UAAU,EACf,YAAY,EAAC,KAAK,gBACN,KAAK,sBACC,WAAW,2BACN,oBAAoB,uBACzB,MAAM,mBACT,GAAG,IAAI,EAAE,kBACV,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,mBACzB,GAAG,QAAQ,EAAE,mBACb,MAAM,EACrB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,EAChD,EAAE,EAAE,OAAO,EACX,KAAK,EACH,QAAQ;oBACN,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;wBACvB,CAAC,CAAC,0BAA0B,IAAI,SAAS,EAE7C,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,IAAI,CAAC,2BAA2B,EACzC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,IAAI,EAAE,IAAI,GACH;YACR,WAAW,IAAI,CACd,4DAAK,KAAK,EAAC,wBAAwB;gBACjC,EAAC,WAAW,sDAAe;gBAC3B,4DAAK,KAAK,EAAC,SAAS,GAAO,CACvB,CACP;YACD,6DACE,WAAW,EAAE,IAAI,CAAC,yBAAyB,EAC3C,KAAK,EAAE;oBACL,aAAa,EAAE,IAAI;oBACnB,kBAAkB,EAAE,IAAI;iBACzB,EACD,SAAS,EAAE,MAAM,iBACL,MAAM,GAClB;YACF,yEAAe,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,uBAAuB,IAChE,uBAAuB,CACpB,CACF,CACP,CAAC;QAEF,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CACrB;YACE,4DACG,IAAI,CAAC,cAAc,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CACjE,CACU,CACjB,CAAC;QAEF,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,oBAAoB,EAAE,QAAQ;gBAC9B,sBAAsB,EAAE,UAAU;gBAClC,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,IAAI,KAAK,QAAQ;gBACxC,sBAAsB,EAAE,SAAS;gBACjC,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,SAAS;aAC3C;YAED,2EAAoB,QAAQ,EAAE,QAAQ;gBACnC,CAAC,SAAS,IAAI,CACb,uEACE,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ;oBAElB,6DAAM,IAAI,EAAC,aAAa,EAAC,IAAI,EAAC,aAAa,GAAQ,CACpC,CAClB;gBACD,qFACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EACjC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAC5B,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB;oBAEjC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;wBAC1B,CAAC,QAAQ;wBACT,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CACxB,6DACE,IAAI,EAAC,WAAW,EAChB,KAAK,EAAE;4BACL,QAAQ;4BACR,WAAW,EAAE,CAAC,CAAC,KAAK;yBACrB;wBAED,6DAAM,IAAI,EAAC,MAAM,GAAG,CACf,CACR;oBACF,gBAAgB,EAAE,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CACjE,EAAC,YAAY,OAAG,CACjB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACb,EAAC,QAAQ,OAAG,CACb,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAChB,EAAC,YAAY,OAAG,CACjB,CAAC,CAAC,CAAC,CACF,EAAC,WAAW,OAAG,CAChB,CAC4B;gBAC9B,CAAC,CACA,gBAAgB,EAAE;oBAClB,IAAI,CAAC,uBAAuB;oBAC5B,CAAC,QAAQ,CACV,IAAI,CACH,gEACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAC7B,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,EAClC,OAAO,EACL,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAEhE,cAAc,EAAE,KAAK,EACrB,UAAU,EAAE,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAC1B,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAE,KAAkB,CAAC,CAAC,CAAE,KAAgB,EACzD,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,EACxC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAC3C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,aAAa,EAAE,IAAI,CAAC,iBAAiB,EACrC,cAAc,EAAE,IAAI,CAAC,0BAA0B,EAC/C,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,QAAQ,EAAE,IAAI,CAAC,EAAE,EACjB,cAAc,EACZ,UAAU,IAAI,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAElE,oBAAoB,EAAE,IAAI,CAAC,WAAW,EACtC,aAAa,EAAE,CAAC,QAAQ,EACxB,WAAW,EAAE,QAAQ,EACrB,gBAAgB,EAAE,UAAU,GACnB,CACZ;gBACD,4EACE,KAAK,EAAE;wBACL,WAAW,EAAE,IAAI;qBAClB,EACD,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC9C,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAC7C,GAAG,EAAE,OAAO,GACS,CACJ,CAChB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n State,\n Watch,\n forceUpdate,\n Method,\n} from \"@stencil/core\";\nimport {\n addFormResetListener,\n checkSlotInChildMutations,\n getInputDescribedByText,\n isMobileOrTablet,\n isSlotUsed,\n removeDisabledFalse,\n removeFormResetListener,\n renderHiddenInput,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcAriaLive,\n IcInformationStatusOrEmpty,\n IcSearchMatchPositions,\n IcMultiValueEventDetail,\n IcSizes,\n IcThemeMode,\n IcInformationStatus,\n} from \"../../utils/types\";\nimport {\n IcSelectOption,\n IcSelectOptionBase,\n IcSelectOptionFlat,\n IcSelectOptionGroup,\n} from \"./ic-select.types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport {\n IcMenuChangeEventDetail,\n IcMenuOptionIdEventDetail,\n IcOptionSelectEventDetail,\n} from \"../ic-menu/ic-menu.types\";\nimport { IcMenuCustomEvent } from \"../../components\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"tabindex\", \"title\"];\n\n/**\n * @slot helper-text - Content is set as the helper text for the select.\n * @slot icon - Content will be placed to the left of the select text input.\n */\n@Component({\n tag: \"ic-select\",\n styleUrl: \"ic-select.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Select {\n private inputId = `ic-select-input-${inputIds++}`;\n private menu?: HTMLIcMenuElement;\n private menuId = `${this.inputId}-menu`;\n private inheritedAttributes: { [k: string]: string } = {};\n private anchorEl?: HTMLElement;\n private nativeSelectElement?: HTMLSelectElement;\n private hostMutationObserver: MutationObserver | null = null;\n private clearButton?: HTMLIcButtonElement;\n private searchableSelectElement?: HTMLInputElement;\n private timeoutTimer: number | null = null;\n private hasTimedOut: boolean = false;\n private selectElement?: HTMLButtonElement;\n private initialRender: boolean = true;\n private characterKeyPressTimer?: number;\n private pressedCharacters = \"\";\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant?: string;\n @State() debounceIcInput?: number;\n @State() hiddenInputValue: string | null;\n @State() hasError: boolean = false;\n @State() searchableSelectInputValue: string = \"\";\n @State() selectButtonAriaLiveText: string = \"\";\n @State() selectInputAriaLiveText: string = \"\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled = false;\n\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the built in filtering will be disabled for a searchable variant. For example, if options will already be filtered from external source.\n */\n @Prop() disableAutoFiltering = false;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * The <form> element to associate the select with.\n */\n @Prop() form?: string;\n\n /**\n * If `true`, the select will fill the width of the container.\n */\n @Prop() fullWidth = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText = \"\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel = false;\n\n /**\n * If `true`, descriptions of options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeDescriptionsInSearch = false;\n\n /**\n * If `true`, group titles of grouped options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeGroupTitlesInSearch = false;\n\n /**\n * The label for the select.\n */\n @Prop() label!: string;\n\n /**\n * The message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel = \"Loading Error\";\n\n /**\n * The message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel = \"Loading...\";\n\n /**\n * If `true`, multiple options can be selected.\n */\n @Prop() multiple = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder = \"Select an option\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly = false;\n\n /**\n * If `true`, the select will require a value.\n */\n @Prop() required = false;\n\n /**\n * If `true`, a searchable variant of the select will be displayed which can be typed in to filter options. This functionality is only available on the single-select variant of the select component.\n */\n @Prop() searchable = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options. Only applies to built in filtering.\n */\n @Prop() searchMatchPosition: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown on the single select.\n */\n @Prop() selectOnEnter = false;\n\n /**\n * If `true`, a button which clears the select input when clicked will be displayed. The button will always appear on the searchable select.\n */\n @Prop() showClearButton = false;\n\n /**\n * The size of the select.\n */\n @Prop() size: IcSizes = \"medium\";\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * The value of the `aria-live` attribute on the validation message.\n */\n @Prop() validationAriaLive: IcAriaLive = \"polite\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message.\n */\n @Prop() validationText = \"\";\n\n /**\n * If `true` and on a mobile or tablet device, the native select element will be used instead of the custom select component for better usability.\n */\n @Prop() useNativeSelectOnMobile = true;\n\n /**\n * If `true`, the loading state will be triggered when fetching options asynchronously.\n */\n @Prop({ mutable: true }) loading = false;\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n this.hasTimedOut = false;\n\n if (newValue) {\n this.hasError = false;\n if (this.timeout) {\n if (this.timeoutTimer) {\n this.clearTimer();\n }\n this.timeoutTimer = window.setTimeout(() => {\n this.loading = false;\n this.hasTimedOut = true;\n forceUpdate(this);\n }, this.timeout);\n }\n } else {\n if (this.timeoutTimer) {\n this.clearTimer();\n }\n }\n }\n\n private clearTimer() {\n if (this.timeoutTimer) {\n clearTimeout(this.timeoutTimer);\n this.timeoutTimer = null;\n }\n }\n\n /**\n * The possible selection options.\n */\n @Prop() options: IcSelectOption[] = [];\n @State() flatOptions: IcSelectOptionFlat[] = [];\n @Watch(\"options\")\n optionsChangedHandler(): void {\n const flat = this.getFlatOptions(this.options)\n .filter((option) => option.value != null || option.label != null) // filter out options missing both value and label\n .map((option) => ({\n ...option,\n value: option.value ?? option.label, // if an option is missing a value, use the label as the value\n label: option.label ?? option.value, // vice versa\n }));\n this.flatOptions = this.getDeduplicatedOptions(flat);\n\n if (!this.initialRender) this.loading = false;\n this.clearTimer();\n this.updateSelectButtonAriaLive();\n }\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icInput` event after each keystroke.\n */\n @Prop() debounce = 0;\n @State() currDebounce = this.debounce;\n @Watch(\"debounce\")\n debounceChangedHandler(newValue: number): void {\n if (this.currDebounce !== newValue) {\n this.currDebounce = newValue;\n }\n }\n\n /**\n * The value of the select, reflected by the value of the currently selected option.\n * For the searchable variant, the value is also reflected by the user input.\n * For the multi-select variant, the value must be an array of option values.\n */\n @Prop({ mutable: true }) value: string | string[] | null = null;\n @State() initialValue = this.value;\n @Watch(\"value\")\n valueChangedHandler(newValue: string | string[] | null): void {\n const validated = this.getValidatedValue(newValue);\n\n const isEqual =\n Array.isArray(validated) && Array.isArray(this.value)\n ? validated.length === this.value.length &&\n validated.every((v, i) => v === (this.value as string[])[i])\n : validated === this.value;\n\n if (!isEqual) {\n this.value = validated;\n return;\n }\n\n this.updateSelectButtonAriaLive();\n this.icChange.emit({ value: this.value });\n }\n\n @State() open = false;\n @Watch(\"open\")\n openChangedHandler(): void {\n this.open ? this.icOpen.emit() : this.icClose.emit();\n if (!this.open) {\n this.ariaActiveDescendant = undefined;\n }\n this.handleFocusIndicatorDisplay();\n }\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() icBlur: EventEmitter<void>;\n\n /**\n * Emitted when the value changes.\n */\n @Event() icChange: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the clear or clear all button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * Emitted when the select options menu is closed.\n */\n @Event() icClose: EventEmitter<void>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() icFocus: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the select options menu is opened.\n */\n @Event() icOpen: EventEmitter<void>;\n\n /**\n * Emitted when an option is selected.\n * Selecting an option will also trigger an `icChange/onIcChange` due to the value being updated.\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when `multiple` is `true` and an option is deselected.\n */\n @Event() icOptionDeselect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the 'retry loading' button is clicked for a searchable variant.\n */\n @Event() icRetryLoad: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Sets focus on the select component.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.selectElement) {\n this.selectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n this.initialRender = false;\n }\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n this.clearTimer();\n }\n\n componentDidLoad(): void {\n forceUpdate(this);\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n }\n\n private getValidatedValue = (\n value: string | string[] | null\n ): string | string[] | null => {\n const validValues = this.flatOptions.map((opt) => opt.value);\n\n if (validValues.length === 0) return value;\n\n if (this.multiple) {\n if (!value) return null;\n const arr = Array.isArray(value) ? value : [value]; // Ensure value is an array\n const filtered = validValues.filter((v) => arr.includes(v)); // Keep only valid values\n return filtered.length > 0 ? filtered : null;\n } else {\n return validValues.includes(value as string) ? value : null;\n }\n };\n\n componentWillLoad(): void {\n this.optionsChangedHandler();\n this.value = this.getValidatedValue(this.value);\n this.initialValue = this.value;\n\n if (this.loading) this.loadingHandler(true);\n\n addFormResetListener(this.el, this.handleFormReset);\n }\n\n private getFilteredOptions = (\n searchString: string,\n searchMatchPosition: \"anywhere\" | \"start\",\n includeDescriptionsInSearch: boolean,\n includeGroupTitlesInSearch: boolean\n ): IcSelectOption[] => {\n const search = searchString.toLowerCase();\n const match = (text: string, method: \"anywhere\" | \"start\") =>\n method === \"anywhere\" ? text.includes(search) : text.startsWith(search);\n\n return this.unflattenOptions(\n this.flatOptions.filter((option) => {\n const label = option.label.toLowerCase();\n const group = option.group?.toLowerCase() ?? \"\";\n const description = option.description?.toLowerCase() ?? \"\";\n return (\n match(label, searchMatchPosition) ||\n (includeDescriptionsInSearch &&\n match(description, searchMatchPosition)) ||\n (includeGroupTitlesInSearch && match(group, searchMatchPosition))\n );\n })\n );\n };\n\n private getOptions = (): IcSelectOption[] => {\n const options =\n this.searchable &&\n !this.disableAutoFiltering &&\n this.searchableSelectInputValue\n ? this.getFilteredOptions(\n this.searchableSelectInputValue,\n this.searchMatchPosition,\n this.includeDescriptionsInSearch,\n this.includeGroupTitlesInSearch\n )\n : this.unflattenOptions(this.flatOptions);\n\n if (this.hasTimedOut)\n return [{ label: this.loadingErrorLabel, value: \"\", timedOut: true }];\n\n if (this.loading)\n return [{ label: this.loadingLabel, value: \"\", loading: true }];\n\n if (options.length > 0) return options;\n\n return [{ label: this.emptyOptionListText, value: \"\" }];\n };\n\n private getFlatOptions = (options: IcSelectOption[]): IcSelectOptionFlat[] =>\n options.flatMap(\n (item) =>\n (\"children\" in item && item.children\n ? [...item.children.map((child) => ({ group: item.label, ...child }))]\n : [item]) as IcSelectOptionFlat[]\n );\n\n private unflattenOptions = (\n flatOptions: IcSelectOptionFlat[]\n ): IcSelectOption[] => {\n const groupMap = new Map<string, IcSelectOptionGroup>();\n const result: IcSelectOption[] = [];\n\n for (const option of flatOptions) {\n if (option.group) {\n let group = groupMap.get(option.group);\n if (!group) {\n group = { label: option.group, children: [] };\n groupMap.set(option.group, group);\n result.push(group);\n }\n const { group: _, ...rest } = option;\n group.children.push(rest as IcSelectOptionBase);\n } else {\n result.push(option);\n }\n }\n return result;\n };\n\n private getLabelFromValue = (value: string | null): string =>\n this.flatOptions.find((option) => option.value === value)?.label ?? \"\";\n\n // Construct the string that will be shown in the select input or button\n private getLabelString = (): string => {\n if (Array.isArray(this.value)) {\n return this.value.map(this.getLabelFromValue).filter(Boolean).join(\", \");\n }\n return (\n this.getLabelFromValue(this.value) ||\n (this.searchable ? \"\" : this.placeholder)\n );\n };\n\n private handleClick = (event: MouseEvent) => {\n if (event.detail !== 0) {\n this.menu?.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement?.focus();\n this.handleClick(event);\n }\n };\n\n private handleBlur = ({ relatedTarget }: FocusEvent) => {\n const target = relatedTarget as HTMLElement;\n if (\n this.el.contains(target) ||\n this.el.shadowRoot?.contains(target) ||\n this.menu?.contains(target) ||\n target === this.clearButton\n ) {\n return;\n }\n\n this.open = false;\n this.handleFocusIndicatorDisplay();\n\n if (this.searchable) {\n this.searchableSelectInputValue = \"\";\n }\n this.icBlur.emit();\n };\n\n private handleTimeoutBlur = (event: CustomEvent<{ ev: FocusEvent }>) => {\n this.handleBlur(event.detail.ev);\n };\n\n private handleFocus = () => {\n this.icFocus.emit();\n };\n\n private handleClear = () => {\n this.clearTimer();\n this.loading = false;\n this.value = null;\n this.searchableSelectInputValue = \"\";\n\n this.icClear.emit();\n\n this.setFocus();\n };\n\n private setTextColor = () => {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.className =\n this.nativeSelectElement.selectedIndex === 0\n ? \"placeholder\"\n : \"select-option-selected\";\n }\n };\n\n private handleNativeSelectChange = () => {\n if (this.nativeSelectElement) {\n this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.icChange.emit({ value: this.nativeSelectElement.value });\n }\n this.setTextColor();\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator =\n this.el.shadowRoot?.querySelector(\".focus-indicator\");\n\n if (focusIndicator) {\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!(event.key === \" \" && this.pressedCharacters.length > 0)) {\n if (this.open) {\n this.menu?.handleMenuKeyDown(event);\n } else {\n this.menu?.handleKeyboardOpen(event);\n }\n }\n\n if (\n !this.multiple &&\n !this.searchable &&\n !this.selectOnEnter &&\n /^[a-zA-Z0-9 ]$/.test(event.key)\n ) {\n this.handleCharacterKeyDown(event.key);\n }\n };\n\n private handleCharacterKeyDown = (key: string) => {\n // Only close menu when space is pressed if not being used alongside character keys to quickly select options\n if (this.open && key === \" \" && this.pressedCharacters.length === 0) {\n this.open = false;\n }\n\n if (key.length !== 1 || this.searchable) {\n this.pressedCharacters = \"\";\n return;\n }\n\n window.clearTimeout(this.characterKeyPressTimer);\n this.characterKeyPressTimer = window.setTimeout(\n () => (this.pressedCharacters = \"\"),\n 1000\n );\n\n if (key !== \" \" || !!this.pressedCharacters) {\n this.pressedCharacters += key;\n const filteredOptions = this.getFilteredOptions(\n this.pressedCharacters,\n \"start\",\n false,\n false\n );\n\n if (filteredOptions.length > 0) {\n const firstOption = filteredOptions[0];\n if (\"children\" in firstOption) {\n if (firstOption.children) {\n this.value = firstOption.children[0].value;\n }\n } else {\n this.value = firstOption.value;\n }\n }\n }\n };\n\n private handleNativeSelectKeyDown = (event: KeyboardEvent) => {\n this.handleKeyDown(event);\n };\n\n private handleSelectChange = (\n event: CustomEvent<IcOptionSelectEventDetail>\n ) => {\n const { value } = event.detail;\n if (!value || this.getLabelFromValue(value) === this.emptyOptionListText) {\n this.value = null;\n return;\n }\n\n if (this.multiple) {\n let valueArray = Array.isArray(this.value) ? [...this.value] : [];\n const index = valueArray.indexOf(value);\n\n if (index > -1) {\n valueArray.splice(index, 1);\n this.icOptionDeselect.emit({ value });\n } else {\n this.icOptionSelect.emit({ value });\n valueArray.push(value);\n valueArray = this.getValidatedValue(valueArray) as string[];\n }\n this.value = valueArray.length ? valueArray : null;\n } else {\n this.icOptionSelect.emit({ value });\n this.value = value;\n if (this.searchable) this.searchableSelectInputValue = \"\";\n }\n };\n\n private handleSelectAllChange = ({\n detail,\n }: CustomEvent<{ select: boolean }>) => {\n const allSelectableValues = this.flatOptions\n .filter((option) => !option.disabled)\n .map((option) => option.value);\n if (detail.select) {\n allSelectableValues\n .filter((value) => !((this.value ?? []) as string[]).includes(value))\n .forEach((value) => {\n this.icOptionSelect.emit({ value });\n });\n\n this.value = allSelectableValues;\n } else {\n (this.value as string[]).forEach((value) =>\n this.icOptionDeselect.emit({ value })\n );\n this.value = null;\n }\n };\n\n private handleFormReset = () => {\n this.value = this.initialValue;\n this.searchableSelectInputValue = \"\";\n if (this.searchable) {\n this.hiddenInputValue = this.initialValue as string;\n }\n };\n\n private handleRetry = () => {\n this.clearTimer();\n this.hasTimedOut = false;\n this.hasError = false;\n this.loading = true;\n this.icRetryLoad.emit({\n value: this.searchable\n ? this.searchableSelectInputValue\n : this.hiddenInputValue,\n });\n this.setFocus();\n };\n\n private handleSearchableSelectInput = (event: Event) => {\n this.updateSearchableSelectResultAriaLive();\n if (!this.multiple) {\n this.value = null;\n }\n\n this.searchableSelectInputValue =\n (event.target as HTMLInputElement).value ?? \"\";\n this.open = true;\n\n clearTimeout(this.debounceIcInput);\n this.debounceIcInput = window.setTimeout(\n () => this.icInput.emit({ value: this.searchableSelectInputValue }),\n this.currDebounce\n );\n };\n\n private hostMutationCallback = (mutationList: MutationRecord[]) => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (attributeName) {\n const attribute = this.el.getAttribute(attributeName);\n if (attribute && MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] = attribute;\n forceComponentUpdate = true;\n }\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private updateSelectButtonAriaLive = () => {\n const value_label = this.getLabelFromValue(this.value as string);\n this.selectButtonAriaLiveText = this.multiple\n ? `${this.value ? this.value.length : 0} of ${\n this.flatOptions.length\n } selected`\n : this.value\n ? value_label ?? `${value_label} selected`\n : \"\";\n };\n\n private updateSearchableSelectResultAriaLive = () => {\n this.selectInputAriaLiveText =\n this.getOptions()?.[0]?.label == this.emptyOptionListText\n ? this.emptyOptionListText\n : \"\";\n };\n\n private updateAriaActiveDescendant = (\n event: IcMenuCustomEvent<IcMenuOptionIdEventDetail>\n ) => {\n this.ariaActiveDescendant = event.detail.optionId;\n };\n\n private handleMenuChange = (event: CustomEvent<IcMenuChangeEventDetail>) => {\n this.open = event.detail.open;\n this.pressedCharacters = \"\";\n };\n\n private getDeduplicatedOptions = (\n flatOptions: IcSelectOptionFlat[]\n ): IcSelectOptionFlat[] => {\n const seen = new Set();\n return flatOptions.filter((option) => {\n if (option.value && seen.has(option.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${option.value}) which has been removed.`\n );\n return false;\n }\n if (option.value) seen.add(option.value);\n return true;\n });\n };\n\n private renderNativeOption = (option: IcSelectOptionBase) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === this.value}\n >\n {option.label}\n </option>\n );\n\n render() {\n const {\n disabled,\n searchable,\n size,\n fullWidth,\n theme,\n readonly,\n hideLabel,\n inputId,\n label,\n helperText,\n required,\n value,\n options,\n menuId,\n multiple,\n validationStatus,\n open,\n showClearButton,\n selectOnEnter,\n loading,\n searchableSelectInputValue,\n validationText,\n validationAriaLive,\n form,\n ariaActiveDescendant,\n placeholder,\n name,\n inheritedAttributes,\n selectInputAriaLiveText,\n selectButtonAriaLiveText,\n } = this;\n\n const hasValue = !!value;\n const hasInput = !!searchableSelectInputValue;\n const isClearable =\n !disabled &&\n ((searchable && (hasInput || hasValue)) ||\n (!searchable && hasValue && !loading && showClearButton));\n\n const showValidation = !!validationStatus && !disabled;\n\n const invalid = validationStatus === IcInformationStatus.Error;\n\n const describedBy = getInputDescribedByText(\n this.el,\n inputId,\n helperText !== \"\",\n showValidation\n ).trim();\n\n const menuOptions = this.getOptions();\n const noOptions =\n disabled ||\n (menuOptions.length === 1 &&\n (menuOptions[0].label === this.emptyOptionListText ||\n \"loading\" in menuOptions[0] ||\n \"timedOut\" in menuOptions[0]));\n\n renderHiddenInput(this.el, value as string, name || inputId, disabled);\n\n const ClearButton = () => (\n <ic-button\n ref={(el) => (this.clearButton = el)}\n id=\"clear-button\"\n aria-label={this.searchable ? \"Clear input\" : \"Clear selection\"}\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onBlur={this.handleBlur}\n size={size}\n variant=\"icon-tertiary\"\n ></ic-button>\n );\n\n const NativeSelect = () => (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={inputId}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid ? \"true\" : \"false\"}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onKeyDown={this.handleNativeSelectKeyDown}\n form={form}\n {...inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options.map((option) =>\n \"children\" in option && option.children ? (\n <optgroup label={option.label}>\n {option.children.map((child) =>\n this.renderNativeOption(child as IcSelectOptionBase)\n )}\n </optgroup>\n ) : (\n this.renderNativeOption(option as IcSelectOptionBase)\n )\n )}\n </select>\n );\n\n const SelectButton = () => (\n <div class=\"select-container\">\n <button\n class=\"select-input\"\n role=\"combobox\"\n ref={(el) => (this.selectElement = el)}\n id={inputId}\n aria-label={`${label}, ${\n (multiple && value\n ? `${value.length} of ${\n this.flatOptions.length\n } selected, ${this.getLabelString()}`\n : this.getLabelString()) || placeholder\n }`}\n onClick={this.handleClick}\n aria-describedby={describedBy}\n aria-invalid={invalid ? \"true\" : \"false\"}\n aria-haspopup=\"listbox\"\n aria-expanded={`${open}`}\n aria-controls={menuId}\n aria-required={`${required}`}\n disabled={disabled}\n onKeyDown={this.handleKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n aria-activedescendant={ariaActiveDescendant}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n \"with-clear-button\": !!isClearable,\n placeholder: !value,\n }}\n >\n {this.getLabelString()}\n </ic-typography>\n <div class=\"select-input-end\">\n {isClearable && <div class=\"divider\"></div>}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {isClearable && <ClearButton></ClearButton>}\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n class=\"aria-live-hidden-text\"\n >\n {selectButtonAriaLiveText}\n </div>\n </div>\n );\n\n const SelectInput = () => (\n <div class=\"searchable-select-container\">\n <input\n class={{\n \"value-text\": true,\n \"select-input\": true,\n \"with-clear-button\": !!searchableSelectInputValue,\n }}\n role=\"combobox\"\n autocomplete=\"off\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={`${open}`}\n aria-invalid={invalid ? \"true\" : \"false\"}\n aria-required={`${required}`}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={inputId}\n value={\n multiple\n ? \"\"\n : value\n ? this.getLabelString()\n : searchableSelectInputValue || undefined\n }\n disabled={disabled}\n placeholder={placeholder}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n form={form}\n ></input>\n {isClearable && (\n <div class=\"clear-button-container\">\n <ClearButton></ClearButton>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div aria-live=\"polite\" role=\"status\" class=\"aria-live-hidden-text\">\n {selectInputAriaLiveText}\n </div>\n </div>\n );\n\n const ReadOnly = () => (\n <ic-typography>\n <p>\n {this.getLabelString() === placeholder ? \"\" : this.getLabelString()}\n </p>\n </ic-typography>\n );\n\n return (\n <Host\n class={{\n \"ic-select-disabled\": disabled,\n \"ic-select-searchable\": searchable,\n [`ic-select-${size}`]: size !== \"medium\",\n \"ic-select-full-width\": fullWidth,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n >\n <slot name=\"helper-text\" slot=\"helper-text\"></slot>\n </ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": open }}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {isSlotUsed(this.el, \"icon\") &&\n !disabled &&\n (!readonly || !!value) && (\n <span\n slot=\"left-icon\"\n class={{\n readonly,\n \"has-value\": !!value,\n }}\n >\n <slot name=\"icon\" />\n </span>\n )}\n {isMobileOrTablet() && this.useNativeSelectOnMobile && !multiple ? (\n <NativeSelect />\n ) : readonly ? (\n <ReadOnly />\n ) : !searchable ? (\n <SelectButton />\n ) : (\n <SelectInput />\n )}\n </ic-input-component-container>\n {!(\n isMobileOrTablet() &&\n this.useNativeSelectOnMobile &&\n !multiple\n ) && (\n <ic-menu\n ref={(el) => (this.menu = el)}\n class={{ \"no-results\": noOptions }}\n inputEl={\n searchable ? this.searchableSelectElement : this.selectElement\n }\n allowMenuFocus={false}\n inputLabel={label}\n anchorEl={this.anchorEl}\n size={size}\n menuId={menuId}\n open={open}\n options={this.getOptions()}\n value={multiple ? (value as string[]) : (value as string)}\n fullWidth={fullWidth}\n selectOnEnter={selectOnEnter}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionSelect={this.handleSelectChange}\n onMenuOptionSelectAll={this.handleSelectAllChange}\n onTimeoutBlur={this.handleTimeoutBlur}\n onMenuOptionId={this.updateAriaActiveDescendant}\n onClick={this.setFocus}\n parentEl={this.el}\n activationType={\n searchable || multiple || selectOnEnter ? \"manual\" : \"automatic\"\n }\n onRetryButtonClicked={this.handleRetry}\n closeOnSelect={!multiple}\n multiSelect={multiple}\n searchableSelect={searchable}\n ></ic-menu>\n )}\n <ic-input-validation\n class={{\n \"menu-open\": open,\n }}\n ariaLiveMode={validationAriaLive}\n status={showValidation ? validationStatus : \"\"}\n message={showValidation ? validationText : \"\"}\n for={inputId}\n ></ic-input-validation>\n </ic-input-container>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ic-select.types.js","sourceRoot":"","sources":["../../../src/components/ic-select/ic-select.types.ts"],"names":[],"mappings":"","sourcesContent":["// Compatible with IcMenuOption, but stricter\nexport type IcSelectOption =\n | IcSelectOptionBase\n | IcSelectOptionGroup\n | IcSelectOptionLoading\n | IcSelectOptionTimedOut;\n\ntype IcSelectOptionElement = {\n component: any;\n ariaLabel: string;\n};\n\nexport type IcSelectOptionBase = {\n label: string;\n value: string;\n description?: string;\n disabled?: boolean;\n recommended?: boolean;\n icon?: string;\n hideLabel?: boolean;\n htmlProps?: Record<string, string>;\n element?: IcSelectOptionElement;\n};\n\nexport type IcSelectOptionGroup = {\n label: string;\n children: IcSelectOptionBase[];\n};\n\ntype IcSelectOptionLoading = {\n label: string;\n value: \"\";\n loading: true;\n};\n\ntype IcSelectOptionTimedOut = {\n label: string;\n value: \"\";\n timedOut: true;\n};\n\nexport type IcSelectOptionFlat = {\n label: string;\n value: string;\n description?: string;\n disabled?: boolean;\n recommended?: boolean;\n icon?: string;\n hideLabel?: boolean;\n htmlProps?: Record<string, string>;\n element?: IcSelectOptionElement;\n group?: string;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ic-select.types.js","sourceRoot":"","sources":["../../../src/components/ic-select/ic-select.types.ts"],"names":[],"mappings":"","sourcesContent":["import { IcMenuOption } from \"../../components\";\n\n// Compatible with IcMenuOption, but stricter\nexport type IcSelectOption =\n | IcSelectOptionBase\n | IcSelectOptionGroup\n | IcSelectOptionLoading\n | IcSelectOptionTimedOut\n | IcMenuOption;\n\ntype IcSelectOptionElement = {\n component: any;\n ariaLabel: string;\n};\n\nexport type IcSelectOptionBase = {\n label: string;\n value: string;\n description?: string;\n disabled?: boolean;\n recommended?: boolean;\n icon?: string;\n hideLabel?: boolean;\n htmlProps?: Record<string, string>;\n element?: IcSelectOptionElement;\n};\n\nexport type IcSelectOptionGroup = {\n label: string;\n children: IcSelectOptionBase[];\n};\n\ntype IcSelectOptionLoading = {\n label: string;\n value: \"\";\n loading: true;\n};\n\ntype IcSelectOptionTimedOut = {\n label: string;\n value: \"\";\n timedOut: true;\n};\n\nexport type IcSelectOptionFlat = {\n label: string;\n value: string;\n description?: string;\n disabled?: boolean;\n recommended?: boolean;\n icon?: string;\n hideLabel?: boolean;\n htmlProps?: Record<string, string>;\n element?: IcSelectOptionElement;\n group?: string;\n};\n"]}
|
|
@@ -475,10 +475,13 @@ export const focusElement = (focusAttemptCount, focusedElementIndex, interactive
|
|
|
475
475
|
if (newFocusAttemptCount++ > interactiveElementList.length) {
|
|
476
476
|
return;
|
|
477
477
|
}
|
|
478
|
-
let newFocusedElementIndex = focusedElementIndex;
|
|
479
478
|
if (shouldSkipElement(element)) {
|
|
480
|
-
|
|
481
|
-
|
|
479
|
+
const nextIndex = shiftKey
|
|
480
|
+
? focusedElementIndex - 1
|
|
481
|
+
: focusedElementIndex + 1;
|
|
482
|
+
const newFocusedElementIndex = nextIndex < 0
|
|
483
|
+
? interactiveElementList.length - 1
|
|
484
|
+
: nextIndex % interactiveElementList.length;
|
|
482
485
|
return focusElement(newFocusAttemptCount, newFocusedElementIndex, interactiveElementList, shiftKey);
|
|
483
486
|
}
|
|
484
487
|
else {
|
|
@@ -494,73 +497,12 @@ export const focusElement = (focusAttemptCount, focusedElementIndex, interactive
|
|
|
494
497
|
default:
|
|
495
498
|
element.focus();
|
|
496
499
|
}
|
|
497
|
-
return { newFocusAttemptCount, newFocusedElementIndex };
|
|
498
|
-
}
|
|
499
|
-
};
|
|
500
|
-
/**
|
|
501
|
-
* Gets the index of the currently focused element. Used for focus trapping.
|
|
502
|
-
* @param el - host element of the component
|
|
503
|
-
* @param interactiveElementList - list of interactive elements
|
|
504
|
-
*/
|
|
505
|
-
export const getFocusedElementIndex = (el, interactiveElementList) => {
|
|
506
|
-
var _a;
|
|
507
|
-
for (let i = 0; i < interactiveElementList.length; i++) {
|
|
508
|
-
if (interactiveElementList[i] ===
|
|
509
|
-
(((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) || document.activeElement)) {
|
|
510
|
-
return i;
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
return null;
|
|
514
|
-
};
|
|
515
|
-
/**
|
|
516
|
-
* Gets the next focusable element index based on whether the shift key is pressed. Used for focus trapping.
|
|
517
|
-
* @param focusedElementIndex - current focused element index
|
|
518
|
-
* @param shiftKey - whether the shift key is pressed
|
|
519
|
-
*/
|
|
520
|
-
export const getFocusIndexBasedOnShiftKey = (focusedElementIndex, shiftKey) => (shiftKey ? (focusedElementIndex -= 1) : (focusedElementIndex += 1));
|
|
521
|
-
/**
|
|
522
|
-
* Gets the next focusable element index, looping back to the start or end if necessary. Used for focus trapping.
|
|
523
|
-
* @param focusedElementIndex - current focused element index
|
|
524
|
-
* @param interactiveElementList - list of interactive elements
|
|
525
|
-
*/
|
|
526
|
-
export const getLoopedNextFocusIndexIfLastElement = (focusedElementIndex, interactiveElementList) => {
|
|
527
|
-
if (focusedElementIndex > interactiveElementList.length - 1) {
|
|
528
|
-
return 0;
|
|
529
|
-
}
|
|
530
|
-
else if (focusedElementIndex < 0) {
|
|
531
|
-
return interactiveElementList.length - 1;
|
|
532
|
-
}
|
|
533
|
-
return focusedElementIndex;
|
|
534
|
-
};
|
|
535
|
-
/**
|
|
536
|
-
* Handles tab key press for focus trapping.
|
|
537
|
-
* @param el - host element of the component
|
|
538
|
-
* @param focusAttemptCount - number of focus attempts that have been made
|
|
539
|
-
* @param focusedElementIndex - current focused element index
|
|
540
|
-
* @param interactiveElementList - list of interactive elements
|
|
541
|
-
* @param shiftKey - whether the shift key is pressed
|
|
542
|
-
*/
|
|
543
|
-
export function handleFocusTrapTabKeyPress(el, focusAttemptCount, focusedElementIndex, interactiveElementList, shiftKey) {
|
|
544
|
-
var _a;
|
|
545
|
-
let newFocusAttemptCount = focusAttemptCount;
|
|
546
|
-
let newFocusedElementIndex = getFocusedElementIndex(el, interactiveElementList) || focusedElementIndex;
|
|
547
|
-
if (((_a = interactiveElementList[focusedElementIndex]) === null || _a === void 0 ? void 0 : _a.tagName) === IC_SEARCH_BAR) {
|
|
548
500
|
return {
|
|
549
501
|
newFocusAttemptCount,
|
|
550
|
-
newFocusedElementIndex,
|
|
551
|
-
preventDefault: false,
|
|
502
|
+
newFocusedElementIndex: focusedElementIndex,
|
|
552
503
|
};
|
|
553
504
|
}
|
|
554
|
-
|
|
555
|
-
newFocusedElementIndex = getLoopedNextFocusIndexIfLastElement(newFocusedElementIndex, interactiveElementList);
|
|
556
|
-
newFocusAttemptCount = 0;
|
|
557
|
-
const focusElementResult = focusElement(newFocusAttemptCount, newFocusedElementIndex, interactiveElementList, shiftKey);
|
|
558
|
-
if (focusElementResult) {
|
|
559
|
-
newFocusedElementIndex = focusElementResult.newFocusedElementIndex;
|
|
560
|
-
newFocusAttemptCount = focusElementResult.newFocusAttemptCount;
|
|
561
|
-
}
|
|
562
|
-
return { newFocusAttemptCount, newFocusedElementIndex, preventDefault: true };
|
|
563
|
-
}
|
|
505
|
+
};
|
|
564
506
|
/**
|
|
565
507
|
* Sets up listener and mutation observer to refresh interactive elements on slot changes. Used for focus trapping.
|
|
566
508
|
* @param contentWrapper - content wrapper element
|