@eui/ecl 23.0.0-alpha.10 → 23.0.0-alpha.11
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/assets/i18n-ecl/bg.json +13 -2
- package/assets/i18n-ecl/cs.json +13 -2
- package/assets/i18n-ecl/da.json +13 -2
- package/assets/i18n-ecl/de.json +13 -2
- package/assets/i18n-ecl/el.json +13 -2
- package/assets/i18n-ecl/en.json +13 -2
- package/assets/i18n-ecl/es.json +13 -2
- package/assets/i18n-ecl/et.json +13 -2
- package/assets/i18n-ecl/fi.json +13 -2
- package/assets/i18n-ecl/fr.json +13 -2
- package/assets/i18n-ecl/ga.json +13 -2
- package/assets/i18n-ecl/hr.json +13 -2
- package/assets/i18n-ecl/hu.json +13 -2
- package/assets/i18n-ecl/it.json +13 -2
- package/assets/i18n-ecl/lt.json +13 -2
- package/assets/i18n-ecl/lv.json +13 -2
- package/assets/i18n-ecl/mt.json +13 -2
- package/assets/i18n-ecl/nl.json +13 -2
- package/assets/i18n-ecl/pl.json +13 -2
- package/assets/i18n-ecl/pt.json +13 -2
- package/assets/i18n-ecl/ro.json +13 -2
- package/assets/i18n-ecl/sk.json +13 -2
- package/assets/i18n-ecl/sl.json +13 -2
- package/assets/i18n-ecl/sv.json +13 -2
- package/components/ecl-highlighted-search/package.json +4 -0
- package/components/ecl-story-card/package.json +4 -0
- package/docs/changelog.html +10 -0
- package/docs/classes/EclBaseEvent.html +3 -0
- package/docs/classes/EclHighlightedSearchEvent.html +443 -0
- package/docs/components/EclAccordionSummaryComponent.html +2 -79
- package/docs/components/EclAddToCalendarComponent.html +2 -2
- package/docs/components/EclAnimatedNumbersComponent.html +2 -2
- package/docs/components/EclAnimatedNumbersItemComponent.html +2 -2
- package/docs/components/EclAppComponent.html +2 -2
- package/docs/components/EclBannerComponent.html +2 -2
- package/docs/components/EclBlockquoteComponent.html +2 -2
- package/docs/components/EclBreadcrumbComponent.html +2 -2
- package/docs/components/EclBreadcrumbSegmentComponent.html +2 -2
- package/docs/components/EclButtonComponent.html +2 -2
- package/docs/components/EclCardBodyComponent.html +2 -2
- package/docs/components/EclCardComponent.html +2 -2
- package/docs/components/EclCarouselComponent.html +2 -2
- package/docs/components/EclCarouselItemComponent.html +2 -2
- package/docs/components/EclCategoryFilterComponent.html +2 -2
- package/docs/components/EclCategoryFilterItemComponent.html +2 -2
- package/docs/components/EclCategoryFilterListComponent.html +2 -2
- package/docs/components/EclCheckboxHelpComponent.html +2 -2
- package/docs/components/EclCheckboxLabelComponent.html +2 -2
- package/docs/components/EclContentBlockComponent.html +2 -2
- package/docs/components/EclContentItemComponent.html +2 -2
- package/docs/components/EclDateBlockComponent.html +2 -2
- package/docs/components/EclDescriptionListDefinitionComponent.html +2 -2
- package/docs/components/EclExpandableComponent.html +2 -2
- package/docs/components/EclFactFiguresComponent.html +2 -2
- package/docs/components/EclFactFiguresItemComponent.html +2 -2
- package/docs/components/EclFactFiguresViewAllComponent.html +2 -2
- package/docs/components/EclFeaturedComponent.html +2 -2
- package/docs/components/EclFeaturedItemComponent.html +2 -2
- package/docs/components/EclFeaturedItemDescriptionComponent.html +2 -2
- package/docs/components/EclFileComponent.html +234 -110
- package/docs/components/EclFileItemComponent.html +13 -250
- package/docs/components/EclFileItemsComponent.html +34 -313
- package/docs/components/{EclFileTaxonomyComponent.html → EclFileListsComponent.html} +16 -107
- package/docs/components/EclFormGroupComponent.html +2 -2
- package/docs/components/EclFormLabelComponent.html +2 -2
- package/docs/components/EclGalleryComponent.html +2 -2
- package/docs/components/EclGalleryFooterComponent.html +2 -2
- package/docs/components/EclGalleryItemComponent.html +3 -3
- package/docs/components/EclHighlightBoxComponent.html +2 -2
- package/docs/components/EclHighlightedSearchComponent.html +1042 -0
- package/docs/components/EclIconComponent.html +5 -2
- package/docs/components/EclIndicatorComponent-1.html +2 -2
- package/docs/components/EclIndicatorComponent.html +2 -2
- package/docs/components/EclInpageNavigationComponent.html +2 -2
- package/docs/components/EclInpageNavigationItemComponent.html +2 -2
- package/docs/components/EclLayoutWrapperComponent.html +6 -109
- package/docs/components/EclListIllustrationComponent.html +2 -2
- package/docs/components/EclListIllustrationItemComponent.html +2 -2
- package/docs/components/EclLoadingIndicatorComponent.html +2 -2
- package/docs/components/EclMediaContainerComponent.html +2 -2
- package/docs/components/EclMegaMenuComponent.html +2 -2
- package/docs/components/EclMegaMenuFeaturedComponent.html +2 -2
- package/docs/components/EclMegaMenuInfoComponent.html +2 -2
- package/docs/components/EclMegaMenuItemComponent.html +2 -2
- package/docs/components/EclMegaMenuSubitemComponent.html +2 -2
- package/docs/components/EclMenuComponent.html +2 -2
- package/docs/components/EclMenuItemComponent.html +2 -2
- package/docs/components/EclMenuMegaComponent.html +2 -2
- package/docs/components/EclMenuMegaItemComponent.html +2 -2
- package/docs/components/EclModalBodyComponent.html +2 -2
- package/docs/components/EclModalComponent.html +2 -2
- package/docs/components/EclModalFooterComponent.html +2 -2
- package/docs/components/EclModalHeaderComponent.html +2 -2
- package/docs/components/EclMultiselectComponent.html +2 -2
- package/docs/components/EclMultiselectDropdownComponent.html +13 -98
- package/docs/components/EclMultiselectInputComponent.html +2 -2
- package/docs/components/EclMultiselectOptgroupComponent.html +2 -2
- package/docs/components/EclMultiselectOptionComponent.html +2 -2
- package/docs/components/EclNavigationListComponent.html +2 -2
- package/docs/components/EclNavigationListItemComponent.html +2 -2
- package/docs/components/EclNewsTickerComponent.html +2 -2
- package/docs/components/EclNewsTickerItemComponent.html +2 -2
- package/docs/components/EclNotificationComponent.html +2 -2
- package/docs/components/EclPageHeaderComponent.html +2 -2
- package/docs/components/EclPageHeaderDescriptionContainerComponent.html +2 -2
- package/docs/components/EclPageHeaderExpandableComponent.html +2 -2
- package/docs/components/EclPageHeaderNextComponent.html +2 -2
- package/docs/components/EclPageHeaderSectionComponent.html +2 -2
- package/docs/components/EclPageHeaderSectionInfoComponent.html +2 -2
- package/docs/components/EclPageSummaryComponent.html +2 -2
- package/docs/components/EclPaginationComponent.html +2 -2
- package/docs/components/EclPaginationItemComponent.html +2 -2
- package/docs/components/EclPopoverComponent.html +2 -2
- package/docs/components/EclQuizCardComponent.html +2 -2
- package/docs/components/EclQuizComponent.html +3 -3
- package/docs/components/EclRadioHelpComponent.html +2 -2
- package/docs/components/EclRadioLabelComponent.html +2 -2
- package/docs/components/EclRangeBubbleComponent.html +2 -2
- package/docs/components/EclRangeValueComponent.html +2 -2
- package/docs/components/EclRatingFieldComponent.html +2 -2
- package/docs/components/EclSearchFormComponent.html +2 -2
- package/docs/components/EclSelectContainerComponent.html +2 -2
- package/docs/components/EclSiteFooterComponent.html +2 -2
- package/docs/components/EclSiteFooterCoownerComponent.html +2 -2
- package/docs/components/EclSiteFooterCoreComponent.html +2 -2
- package/docs/components/EclSiteFooterFeedbackComponent.html +2 -2
- package/docs/components/EclSiteFooterFixedContentEUComponent.html +2 -2
- package/docs/components/EclSiteFooterRowCommonComponent.html +2 -2
- package/docs/components/EclSiteHeaderActionComponent.html +2 -2
- package/docs/components/EclSiteHeaderBannerTopComponent.html +2 -2
- package/docs/components/EclSiteHeaderComponent.html +2 -2
- package/docs/components/EclSiteHeaderCustomActionComponent.html +2 -2
- package/docs/components/EclSiteHeaderEnvironmentComponent.html +2 -2
- package/docs/components/EclSiteHeaderLanguageComponent.html +2 -2
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +2 -2
- package/docs/components/EclSiteHeaderLoginComponent.html +2 -2
- package/docs/components/EclSiteHeaderNotificationComponent.html +2 -2
- package/docs/components/EclSiteHeaderSearchComponent.html +2 -2
- package/docs/components/EclSloganTickerComponent.html +2 -2
- package/docs/components/EclSocialMediaFollowComponent.html +2 -2
- package/docs/components/EclSocialMediaFollowItemComponent.html +2 -2
- package/docs/components/EclSplashPageComponent.html +2 -2
- package/docs/components/EclSplashPageLanguageCategoryComponent.html +2 -2
- package/docs/components/EclSplashPageLanguageContainerComponent.html +2 -2
- package/docs/components/EclSplashPageLanguageLinkComponent.html +2 -2
- package/docs/components/EclSpotlightComponent.html +2 -2
- package/docs/components/EclSpotlightLinkComponent.html +2 -2
- package/docs/components/EclStickyContainerComponent.html +2 -2
- package/docs/components/EclStoryCardComponent.html +908 -0
- package/docs/components/EclStoryCardGridDetailsComponent.html +946 -0
- package/docs/components/EclStoryCardItemComponent.html +916 -0
- package/docs/components/EclTabComponent.html +2 -2
- package/docs/components/EclTabLabelComponent.html +2 -2
- package/docs/components/EclTableSortButtonComponent.html +2 -2
- package/docs/components/EclTabsComponent.html +2 -2
- package/docs/components/EclTagComponent.html +2 -2
- package/docs/components/EclTextMediaComponent.html +2 -2
- package/docs/components/EclTimelineComponent.html +2 -2
- package/docs/components/EclTimelineItemComponent.html +2 -2
- package/docs/components/EclTimelineItemTogglerComponent.html +2 -2
- package/docs/directives/ECLBaseDirective.html +4 -4
- package/docs/directives/EclAccordionDirective.html +33 -36
- package/docs/directives/EclFileDownloadDirective.html +0 -116
- package/docs/directives/EclFileImageDirective.html +0 -116
- package/docs/directives/EclFileMetaDirective.html +488 -0
- package/docs/directives/EclFilePictureDirective.html +0 -95
- package/docs/directives/EclFilePreviewDirective.html +1 -199
- package/docs/directives/EclFileTitleDirective.html +0 -146
- package/docs/directives/EclFileTranslationDownloadDirective.html +0 -116
- package/docs/directives/EclHighlightedSearchSuggestionsDirective.html +394 -0
- package/docs/directives/EclLayoutItemDirective.html +0 -32
- package/docs/directives/EclStoryCardLinkDirective.html +491 -0
- package/docs/directives/EclStoryCardListDirective.html +491 -0
- package/docs/directives/EclStoryCardPictureDirective.html +497 -0
- package/docs/interfaces/EclStoryCardSelectionEvent.html +317 -0
- package/docs/js/menu-wc.js +34 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EclAccordionDirective.md +1 -0
- package/docs/json/EclFileComponent.md +43 -7
- package/docs/json/EclFileItemComponent.md +6 -6
- package/docs/json/EclFileItemsComponent.md +6 -6
- package/docs/json/EclFileListsComponent.md +15 -0
- package/docs/json/EclFileMetaDirective.md +16 -0
- package/docs/json/EclFilePreviewDirective.md +1 -1
- package/docs/json/EclFileTitleDirective.md +0 -1
- package/docs/json/EclHighlightedSearchComponent.md +46 -0
- package/docs/json/EclHighlightedSearchSuggestionsDirective.md +13 -0
- package/docs/json/EclLayoutWrapperComponent.md +2 -2
- package/docs/json/EclStoryCardComponent.md +43 -0
- package/docs/json/EclStoryCardGridDetailsComponent.md +39 -0
- package/docs/json/EclStoryCardItemComponent.md +35 -0
- package/docs/json/EclStoryCardLinkDirective.md +19 -0
- package/docs/json/EclStoryCardListDirective.md +19 -0
- package/docs/json/EclStoryCardPictureDirective.md +22 -0
- package/docs/json/documentation.json +5287 -2643
- package/docs/llms.txt +242 -60
- package/docs/miscellaneous/variables.html +112 -1
- package/docs/overview.html +4 -4
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs +46 -15
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file.mjs +284 -275
- package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs +193 -0
- package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs.map +1 -0
- package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs +10 -11
- package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +26 -36
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-quiz.mjs +36 -2
- package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-story-card.mjs +505 -0
- package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -0
- package/package.json +9 -1
- package/types/eui-ecl-components-ecl-accordion.d.ts +23 -5
- package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file.d.ts +131 -116
- package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-highlighted-search.d.ts +104 -0
- package/types/eui-ecl-components-ecl-highlighted-search.d.ts.map +1 -0
- package/types/eui-ecl-components-ecl-layout-wrapper.d.ts +6 -8
- package/types/eui-ecl-components-ecl-layout-wrapper.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-multiselect.d.ts +2 -1
- package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-quiz.d.ts +11 -0
- package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-story-card.d.ts +256 -0
- package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -0
- package/docs/json/EclFileTaxonomyComponent.md +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-multiselect.mjs","sources":["../../components/ecl-multiselect/boldText.pipe.ts","../../components/ecl-multiselect/events/ecl-multiselect-main-input-click.event.ts","../../components/ecl-multiselect/events/ecl-multiselect-option.event.ts","../../components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.ts","../../components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.html","../../components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.ts","../../components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.html","../../components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.ts","../../components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.html","../../components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.ts","../../components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.html","../../components/ecl-multiselect/ecl-multiselect-option.directive.ts","../../components/ecl-multiselect/ecl-multiselect.component.ts","../../components/ecl-multiselect/ecl-multiselect.component.html","../../components/ecl-multiselect/index.ts","../../components/ecl-multiselect/eui-ecl-components-ecl-multiselect.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'boldText',\n})\nexport class BoldTextPipe implements PipeTransform {\n private BOLD_TAG_OPEN = '<b>';\n\n transform(value: string, keyword: string): string {\n if (keyword !== '') {\n return this.replace(value, keyword);\n } else {\n if (value.indexOf(this.BOLD_TAG_OPEN) > -1) {\n return this.clearBoldText(value);\n } else {\n return value;\n }\n }\n }\n\n replace(str: string, keyword: string): string {\n const re = new RegExp(keyword, 'gi');\n return str.replace(re, '<b>$&</b>');\n }\n\n clearBoldText(str: string): string {\n return str.replace(/<[/]?b>/g, '');\n }\n}\n","export class EclMultiselectMainInputClickEvent {\n constructor(public event: Event) {}\n}","import { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\n\nexport class EclMultiselectOptionClickEvent {\n constructor(public multiselectOption: EclMultiselectOption) {}\n}\n\nexport class EclMultiselectOptionKeydownEvent {\n constructor(\n public multiselectOption: EclMultiselectOption,\n public keyboardEvent: KeyboardEvent,\n ) {}\n}","import { Component, ElementRef, HostBinding, Renderer2, booleanAttribute, computed, inject, input, signal, output, viewChild } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { EclMultiselectMainInputClickEvent } from '../events';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Component representing the main input of a multiselect component.\n * Handles displaying selected items, opening the dropdown, and managing accessibility.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectInput]',\n templateUrl: './ecl-multiselect-input.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n host: {\n '[class.ecl-select__container--disabled]': 'isDisabled()',\n '[class.ecl-select__container--invalid]': 'isInvalid()',\n },\n})\nexport class EclMultiselectInputComponent extends ECLBaseDirective {\n\n /**\n * Size modifier for the multiselect input (e.g., 's', 'm', 'l').\n */\n eclSize = input('m');\n\n /**\n * Unique ID for the counter element.\n */\n counterId = signal(crypto.randomUUID());\n\n /**\n * Label for the selections counter, read by screen readers.\n */\n counterLabel = input('ecl.multiselect.SELECTED');\n\n /**\n * ID of the toggle button element (used for accessibility).\n */\n toggleId = input<string>('');\n\n /**\n * Label for the toggle button (optional).\n */\n toggleLabel = input<string | undefined>(undefined);\n\n /**\n * Marks the component as disabled.\n */\n isDisabled = input(false, { transform: booleanAttribute });\n\n /**\n * Marks the component as being in an invalid state.\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * CSS classes for the component, including size and inherited classes.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-select__container'),\n `ecl-select__container--${this.eclSize()}`,\n ].join(' ').trim();\n }\n\n /**\n * Placeholder text for the input when no items are selected.\n */\n inputPlaceholder = input('');\n\n /**\n * Array of currently selected item labels.\n */\n selectedItems = input<string[]>([]);\n\n /**\n * Indicates that the dropdown is currently expanded.\n */\n isDropdownExpanded = input(false, { transform: booleanAttribute });\n\n /**\n * ARIA controls attribute for accessibility.\n */\n ariaControls = input<string | undefined>(undefined);\n\n /**\n * ARIA describedby attribute for accessibility.\n */\n ariaDescribedby = input<string | undefined>(undefined);\n\n /**\n * Computed ARIA describedby combining the input value with the counter ID.\n */\n ariaDescribedbyFull = computed(() => {\n const describedby = this.ariaDescribedby();\n const counter = this.counterId();\n return [describedby, counter].filter(Boolean).join(' ') || undefined;\n });\n\n /**\n * Reference to the internal input element.\n */\n readonly inputMultiselect = viewChild<ElementRef>('inputMultiselect');\n\n /**\n * Event emitted when the input is clicked.\n */\n readonly mainInputClick = output<EclMultiselectMainInputClickEvent>();\n\n /**\n * Event emitted when a key is pressed on the input.\n */\n readonly mainInputKeydown = output<Event>();\n\n private readonly ICON_SIZE_FOR_EC_THEME_ON = 'xs';\n private readonly ICON_SIZE_FOR_EU_THEME_ON = 's';\n private eclThemeService = inject(EclThemeService);\n private renderer = inject(Renderer2);\n\n /**\n * Returns the label text shown inside the button.\n */\n buttonText = computed(() => {\n const items = this.selectedItems();\n return items.length === 0 ? this.inputPlaceholder() : items.join(',');\n });\n\n /**\n * Returns the count of selected items.\n */\n selectedItemsCount = computed(() => this.selectedItems().length);\n\n /**\n * Displays a count badge when items are selected.\n */\n isShowCounter = computed(() => this.selectedItems().length > 0);\n\n /**\n * Indicates that the dropdown is expanded (active).\n */\n isActive = computed(() => this.isDropdownExpanded());\n\n /**\n * Returns icon size depending on the theme.\n */\n get sizeIcon(): string {\n if (this.eclThemeService.isECTheme()) {\n return this.ICON_SIZE_FOR_EC_THEME_ON;\n } else {\n return this.ICON_SIZE_FOR_EU_THEME_ON;\n }\n }\n\n /**\n * Handles click on the input container. Emits custom event with original DOM event.\n */\n onClick(evt: Event): void {\n this.mainInputClick.emit(new EclMultiselectMainInputClickEvent(evt));\n }\n\n /**\n * Handles keydown events on the input.\n * Only emits event on ArrowDown, Enter, or Space keys.\n */\n onKeydown(evt: KeyboardEvent): void {\n switch (evt.key) {\n case KeyCode.ARROW_DOWN:\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n {\n this.mainInputKeydown.emit(evt);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Focuses the multiselect input element.\n */\n onFocus(): void {\n this.renderer.selectRootElement(this.inputMultiselect().nativeElement, true).focus();\n }\n}\n","<div [class.ecl-select-multiple-selections-counter--visible]=\"isShowCounter()\"\n class=\"ecl-select-multiple-selections-counter\" [id]=\"counterId()\">\n <div class=\"ecl-select-multiple-selections-counter__label\">{{ counterLabel() | translate }}</div>\n <span>{{ selectedItemsCount() }}</span>\n</div>\n<button\n class=\"ecl-select ecl-select__multiple-toggle\"\n [class.ecl-select--active]=\"isActive()\"\n #inputMultiselect\n type=\"button\"\n [id]=\"toggleId()\"\n [attr.aria-expanded]=\"isDropdownExpanded()\"\n [attr.aria-controls]=\"ariaControls()\"\n [attr.disabled]=\"isDisabled() ? true : undefined\"\n [attr.aria-describedby]=\"ariaDescribedbyFull()\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onClick($event)\"> {{ buttonText() }}\n</button>\n<div class=\"ecl-select__icon\">\n <button eclButton isIconOnly variant=\"tertiary\" tabindex=\"-1\">\n <span eclButtonLabel>\n {{ toggleLabel() || 'ecl.multiselect.TOGGLE.DROPDOWN' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" [size]=\"sizeIcon\" transform=\"rotate-180\"></ecl-icon>\n </button>\n</div>\n","import {\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n booleanAttribute,\n inject,\n output,\n viewChild,\n} from '@angular/core';\nimport { EclCheckboxDirective, EUI_ECL_CHECKBOX } from '@eui/ecl/components/ecl-checkbox';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject } from 'rxjs';\nimport { BoldTextPipe } from '../boldText.pipe';\nimport {\n EclMultiselectOptionClickEvent,\n EclMultiselectOptionKeydownEvent,\n} from '../events/ecl-multiselect-option.event';\nimport { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\n\n/**\n * Component representing a single selectable option in the multiselect dropdown.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectOption]',\n templateUrl: './ecl-multiselect-option.component.html',\n imports: [BoldTextPipe, ...EUI_ECL_CHECKBOX],\n hostDirectives: [EclCheckboxDirective],\n})\nexport class EclMultiselectOptionComponent extends ECLBaseDirective implements EclMultiselectOption, OnChanges, OnDestroy, OnInit {\n\n readonly eclCheckboxInput = viewChild<ElementRef>('checkboxInput');\n\n keyword = '';\n\n @Input()\n set value(value: string) {\n this._value = value;\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Display label for the option.\n */\n @Input() label: string;\n\n changes = new Subject();\n\n /**\n * Disables the option when true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.ecl-checkbox--disabled')\n @HostBinding('attr.disabled')\n disabled = false;\n\n /**\n * Emits when the option is clicked.\n */\n readonly optionClick = output<EclMultiselectOptionClickEvent>();\n\n /**\n * Emits when a key is pressed while focused on the option.\n */\n readonly optionKeydown = output<EclMultiselectOptionKeydownEvent>();\n\n @HostBinding('style.display') protected display = 'flex';\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-checkbox')].join(' ').trim();\n }\n\n /**\n * Indicates whether the option is selected.\n */\n @Input()\n get isChecked(): boolean {\n return this._checked;\n }\n\n set isChecked(value: boolean) {\n this._checked = value;\n }\n\n private _id = '';\n private _checked = false;\n private _value = '';\n private renderer = inject(Renderer2);\n\n /**\n * Returns the unique identifier for the option.\n */\n get id(): string {\n return this._id;\n }\n\n /**\n * Indicates whether the option is active (visible and not disabled).\n */\n get isActive(): boolean {\n return this.display === 'flex' && !this.disabled;\n }\n\n ngOnChanges(): void {\n this.changes.next(this.label);\n }\n\n ngOnInit(): void {\n this._id = this.createId();\n }\n\n ngOnDestroy(): void {\n this.changes.complete();\n }\n\n /**\n * Toggles the selected state and emits the optionClick event.\n */\n onOptionClick(): void {\n this.isChecked = !this.isChecked;\n this.optionClick.emit(new EclMultiselectOptionClickEvent(this));\n }\n\n /**\n * Emits the optionKeydown event when a key is pressed.\n */\n onOptionKeydown(evt: KeyboardEvent): void {\n this.optionKeydown.emit(new EclMultiselectOptionKeydownEvent(this, evt));\n }\n\n /**\n * Focuses the checkbox input.\n */\n onFocus(): void {\n this.renderer.selectRootElement(this.eclCheckboxInput().nativeElement, true).focus();\n }\n\n /**\n * Makes the option visible.\n */\n show(): void {\n this.display = 'flex';\n }\n\n /**\n * Hides the option from view.\n */\n hide(): void {\n this.display = 'none';\n }\n\n /**\n * Sets the keyword for search highlighting.\n */\n highlightSearchText(keyword: string): void {\n this.keyword = keyword;\n const re = new RegExp(keyword, 'gi');\n const res = this.label.replace(re, '<b>$&</b>');\n }\n\n private createId(): string {\n return crypto.randomUUID();\n }\n}\n","<input\n eclCheckboxInput\n type=\"checkbox\"\n [id]=\"id\"\n [value]=\"value\"\n (click)=\"onOptionClick()\"\n (keydown)=\"onOptionKeydown($event)\"\n [checked]=\"isChecked\"\n [disabled]=\"disabled\"\n #checkboxInput />\n<label [for]=\"id\" eclCheckboxLabel><span [innerHTML]=\"label | boldText: keyword\"></span></label>\n","import { Component, HostBinding, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing an option group (fieldset) in a multiselect component.\n * Used to group related options under a common label.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fieldset[eclMultiselectOptgroup]',\n templateUrl: './ecl-multiselect-optgroup.component.html',\n})\nexport class EclMultiselectOptgroupComponent extends ECLBaseDirective {\n\n /**\n * The visible label for the option group.\n */\n readonly label = input<string>(undefined);\n\n /**\n * Returns the computed CSS classes for the optgroup container.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select__multiple-group')].join(' ').trim();\n }\n}\n","<legend class=\"ecl-select__multiple-group__title\">{{ label() }}</legend>\n<ng-content></ng-content>\n","import { booleanAttribute, Component, computed, DoCheck, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, OnDestroy, OnInit, Output, QueryList, Renderer2, signal, ViewChildren, AfterViewInit, inject, input, viewChild } from '@angular/core';\nimport { ControlValueAccessor, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMultiselectInputComponent } from '../ecl-multiselect-input/ecl-multiselect-input.component';\nimport { EclMultiselectOptionDirective } from '../ecl-multiselect-option.directive';\nimport { EclMultiselectOptionComponent } from '../ecl-multiselect-option/ecl-multiselect-option.component';\nimport { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\nimport { EclMultiselectMainInputClickEvent, EclMultiselectOptionClickEvent, EclMultiselectOptionKeydownEvent } from '../events';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclMultiselectOptgroupComponent } from '../ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nimport { EUI_ECL_CHECKBOX } from '@eui/ecl/components/ecl-checkbox';\n\n/**\n * Component that renders a dropdown-style multiselect UI element.\n * Used internally by the `EclMultiselectComponent`.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectDropdown]',\n templateUrl: 'ecl-multiselect-dropdown.component.html',\n imports: [\n ...EUI_ECL_BUTTON, EclMultiselectOptionComponent, EclMultiselectOptgroupComponent,\n EclMultiselectInputComponent, ...EUI_ECL_CHECKBOX, TranslatePipe,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclMultiselectDropdownComponent),\n multi: true,\n },\n ],\n})\nexport class EclMultiselectDropdownComponent extends ECLBaseDirective implements OnInit, ControlValueAccessor, DoCheck, OnDestroy, AfterViewInit {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n readonly eclMultiselectInput = viewChild<EclMultiselectInputComponent>('eclMultiselectInput');\n readonly selectAllCheckbox = viewChild<ElementRef>('selectAllCheckbox');\n readonly closeBtn = viewChild('closeBtn', { read: ElementRef });\n readonly clearAllBtn = viewChild('clearAllBtn', { read: ElementRef });\n @ViewChildren(EclMultiselectOptionComponent) multiOptionComponents: QueryList<EclMultiselectOptionComponent>;\n\n /**\n * Emits the list of selected values whenever the selection changes.\n */\n @Output() eclChange = new EventEmitter<string[]>();\n\n /**\n * Marks the component as visually invalid.\n */\n @Input({ transform: booleanAttribute })\n get isInvalid(): boolean | undefined {\n return this._isInvalid;\n }\n set isInvalid(value: boolean | undefined) {\n this._isInvalid = value;\n }\n\n /**\n * Adds the ECL base CSS class for multiselect dropdowns.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select__multiple')].join(' ').trim();\n }\n\n /**\n * Placeholder for the main multiselect input.\n */\n @Input() mainInputPlaceholder = 'Select an item';\n\n /**\n * Placeholder for the search field input.\n */\n readonly searchFieldPlaceholder = input('Enter filter keyword');\n\n /**\n * Size of the multiselect dropdown (e.g., 'm', 'l').\n */\n @Input() eclSize = 'm';\n\n /**\n * Disables the component when true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('attr.disabled')\n get disabled(): boolean | undefined {\n return this._disabled || undefined;\n }\n set disabled(value: boolean | undefined) {\n this._disabled = value;\n }\n\n /**\n * Optional ARIA description used for accessibility purposes.\n */\n ariaDescribedby: string | undefined = undefined;\n\n /**\n * Label displayed for the toggle button to assist screen readers.\n */\n toggleLabel: string | undefined = undefined;\n\n /**\n * Enables the search box in the dropdown interface.\n */\n hasSearchBox = true;\n\n /**\n * Displays the \"Select all\" checkbox above the list of options.\n */\n hasSelectAll = true;\n\n /**\n * When true, the Apply button acts as a submit button (type=\"submit\") instead of a regular button.\n */\n isSubmitOnApply = false;\n\n /**\n * Label for the selections counter, read by screen readers.\n */\n counterLabel = 'ecl.multiselect.SELECTED';\n\n /**\n * Optional identifier used for the dropdown element.\n */\n id = '';\n\n /**\n * Indicates that the \"no results found\" message should be displayed.\n */\n isShowNoResultsFound = false;\n\n /**\n * Controls the visibility of the multiselect dropdown.\n */\n isShowMultiselectDropdown = false;\n\n /**\n * List of option directives currently rendered in the dropdown.\n */\n multiOptionDirectives: EclMultiselectOptionDirective[] = [];\n\n /**\n * Reactive form group managing internal form state.\n */\n form: FormGroup;\n\n /**\n * Total number of options available in the dropdown list.\n */\n optionsCount = 0;\n\n protected dropdownId = '';\n protected isSelectAllDisabled: boolean | null = null;\n protected selectAllId = '';\n protected toggleId = '';\n private _disabled = false;\n private _isInvalid = false;\n private _selectedItems = signal<EclMultiselectOption[]>([]);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private isWriteValueCalled = false;\n private values = [];\n private elRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n constructor() {\n super();\n }\n\n ngDoCheck(): void {\n this.optionsCount = this.getAvailableOptions() ? this.getAvailableOptions().length : 0;\n }\n\n ngOnInit(): void {\n this.selectAllId = this.getSelectAllId();\n this.dropdownId = this.getDropdownId();\n this.toggleId = this.getToggleId();\n setTimeout(() => {\n this.modifyParentLabelForAttribute();\n });\n }\n\n ngAfterViewInit(): void {\n this.multiOptionComponents.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isWriteValueCalled) {\n this.resetComponent();\n this.writeValues(this.values);\n this.isWriteValueCalled = false;\n } else {\n this.initSelectedOptions();\n }\n this.optionsCount = this.getAvailableOptions() ? this.getAvailableOptions().length : 0;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Writes a new value to the component from the outside (e.g., form model).\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public writeValue(values: any): void {\n if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {\n this.resetComponent();\n this.writeValues(values);\n } else {\n this.values = values;\n this.isWriteValueCalled = true;\n }\n }\n\n /**\n * Registers a callback function to be called when the value changes.\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the component is touched.\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnTouched(fn: any): void {\n this.propagateTouched = fn;\n }\n\n /**\n * Enables or disables the component.\n * Required by ControlValueAccessor.\n */\n public setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n }\n\n @HostListener('document:keyup.escape')\n onEscapeKey(): void {\n this.hideMultiselectDropdown();\n }\n\n @HostListener('document:click', ['$event'])\n onKeyUp(event: MouseEvent): void {\n if (!this.elRef.nativeElement.contains(event.target)) {\n this.hideMultiselectDropdown();\n }\n }\n\n /**\n * Gets labels of currently selected options.\n */\n selectedItems = computed(() => this._selectedItems().map((item) => item.label));\n\n /**\n * Indicates if any options are currently selected.\n */\n isItemsSelected = computed(() => this._selectedItems().length > 0);\n\n /**\n * Controls the visibility of the multiselect toolbar.\n */\n isShowToolbar = computed(() => this._selectedItems().length > 0);\n\n initSelectedOptions(): void {\n const items: EclMultiselectOption[] = [];\n this.multiOptionComponents\n .filter((elem) => elem.isChecked)\n .forEach((item) => {\n items.push(item);\n });\n this._selectedItems.set(items);\n }\n\n onClickClearAll(evt: Event): void {\n evt.stopPropagation();\n this.unselectAllActiveOptions();\n this.eclChange.emit([]);\n this.propagateChange([]);\n }\n\n onEnterClear(evt: Event): void {\n this.onClickClearAll(evt);\n this.eclMultiselectInput().onFocus();\n }\n\n onClickClose(evt: Event): void {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n if (this.isSubmitOnApply) {\n const form = this.elRef.nativeElement.closest('form');\n if (form) {\n form.requestSubmit();\n }\n }\n }\n\n onArrowUpClose(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n currentOptions[currentOptions.length - 1].onFocus();\n }\n\n onArrowDownClose(evt: Event): void {\n evt.preventDefault();\n this.renderer.selectRootElement(this.clearAllBtn().nativeElement, true).focus();\n }\n\n onTabClose(evt: Event): void {\n if (!(evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.renderer.selectRootElement(this.clearAllBtn().nativeElement, true).focus();\n }\n }\n\n onArrowUpClear(evt: Event): void {\n evt.preventDefault();\n this.renderer.selectRootElement(this.closeBtn().nativeElement, true).focus();\n }\n\n onArrowDownClear(evt: Event): void {\n evt.preventDefault();\n this.eclMultiselectInput().onFocus();\n }\n\n onTabClear(evt: Event): void {\n if (!(evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n this.eclMultiselectInput().onFocus();\n }\n }\n\n onEnterSearch(evt: Event): void {\n evt.preventDefault();\n }\n\n onArrowDownSearch(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n if (this.hasSelectAll) {\n this.renderer.selectRootElement(this.selectAllCheckbox().nativeElement, true).focus();\n } else {\n currentOptions[0].onFocus();\n }\n }\n\n onArrowUpSearch(evt: Event): void {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n this.eclMultiselectInput().onFocus();\n }\n\n onKeydownMainInput(evt: Event): void {\n evt.preventDefault();\n this.showMultiselectDropdown();\n if (this.hasSearchBox) {\n setTimeout(() => this.renderer.selectRootElement(this.searchInput().nativeElement, true).focus());\n } else {\n this.onArrowDownSearch(evt);\n }\n }\n\n onClickMainInput(evt: EclMultiselectMainInputClickEvent): void {\n evt.event.preventDefault();\n this.toggleDropdown();\n }\n\n onArrowDownSelectAll(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n if (currentOptions.length > 0) {\n currentOptions[0].onFocus();\n }\n }\n\n onArrowUpSelectAll(evt: Event): void {\n evt.preventDefault();\n if (this.hasSearchBox) {\n this.renderer.selectRootElement(this.searchInput().nativeElement, true).focus();\n } else {\n this.onArrowUpSearch(evt);\n }\n }\n\n onEnterSelectAll(evt: Event): void {\n evt.preventDefault();\n (evt.target as HTMLInputElement).click();\n }\n\n /**\n * Handles search input, filters options, and updates their visibility.\n */\n onSearch(input: EventTarget): void {\n const keyword = (input as HTMLInputElement).value;\n let isMatchFound = false;\n if (keyword === '') {\n this.enableSelectAll();\n isMatchFound = true;\n this.multiOptionComponents.forEach((item) => {\n item.highlightSearchText('');\n item.show();\n });\n } else {\n this.multiOptionComponents.forEach((item) => {\n if (item.label.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {\n item.hide();\n } else {\n isMatchFound = true;\n item.highlightSearchText(keyword.toLowerCase());\n item.show();\n }\n });\n this.disableSelectAll();\n }\n if (!isMatchFound) {\n this.showNoResultsFound();\n } else {\n this.hideNoResultsFound();\n }\n }\n\n /**\n * Toggles all visible options based on the \"Select All\" checkbox.\n */\n onSelectAll(): void {\n if (this.selectAllCheckbox().nativeElement.checked) {\n this.selectAllActiveOptions();\n } else {\n this.unselectAllActiveOptions();\n }\n this.propagateTouched();\n this.eclChange.emit(this._selectedItems().map((item) => item.value));\n this.propagateChange(this._selectedItems().map((item) => item.value));\n }\n\n /**\n * Handles keyboard interaction on option items.\n * Supports arrow keys, tab, escape, and enter.\n */\n onKeydownOption(evt: EclMultiselectOptionKeydownEvent): void {\n switch (evt.keyboardEvent.key) {\n case KeyCode.ARROW_DOWN: {\n this.onArrowDownAndTabOption(evt.keyboardEvent, evt.multiselectOption);\n break;\n }\n case KeyCode.ARROW_UP: {\n this.onArrowUpOption(evt.keyboardEvent, evt.multiselectOption);\n break;\n }\n case KeyCode.ESCAPE: {\n this.hideMultiselectDropdown();\n break;\n }\n case KeyCode.ENTER: {\n (evt.keyboardEvent.target as HTMLInputElement).click();\n break;\n }\n case KeyCode.TAB: {\n if (!evt.keyboardEvent.shiftKey) {\n this.onArrowDownAndTabOption(evt.keyboardEvent, evt.multiselectOption);\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Triggered when a single option is clicked/selected.\n * Updates selected items, emits changes.\n */\n onOptionSelected(evt: EclMultiselectOptionClickEvent): void {\n const selectAllCheckbox = this.selectAllCheckbox();\n if (selectAllCheckbox && selectAllCheckbox.nativeElement.checked) {\n this.renderer.setProperty(selectAllCheckbox.nativeElement, 'checked', false);\n }\n const currOption = evt.multiselectOption;\n if (currOption.isChecked) {\n this._selectedItems.update((items) => [...items, currOption]);\n } else {\n this._selectedItems.update((items) => items.filter((item) => item !== currOption));\n }\n this.propagateChange(this._selectedItems().map((item) => item.value));\n this.propagateTouched();\n this.eclChange.emit(this._selectedItems().map((item) => item.value));\n }\n\n private selectAllActiveOptions(): void {\n const newItems: EclMultiselectOption[] = [...this._selectedItems()];\n this.getActiveOptions().forEach((item) => {\n if (!item.isChecked) {\n item.isChecked = true;\n newItems.push(item);\n }\n });\n this._selectedItems.set(newItems);\n }\n\n private unselectAllActiveOptions(): void {\n const selectAllCheckbox = this.selectAllCheckbox();\n if (selectAllCheckbox) {\n this.renderer.setProperty(selectAllCheckbox.nativeElement, 'checked', false);\n }\n this._selectedItems.set([]);\n this.getAvailableOptions().forEach((item) => {\n item.isChecked = false;\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private propagateChange = (_: any): void => {\n /* empty */\n };\n\n private propagateTouched = (): void => {\n /* empty */\n };\n\n private showMultiselectDropdown(): void {\n this.isShowMultiselectDropdown = true;\n }\n\n private hideMultiselectDropdown(): void {\n this.isShowMultiselectDropdown = false;\n }\n\n private disableSelectAll(): void {\n this.isSelectAllDisabled = true;\n }\n\n private enableSelectAll(): void {\n this.isSelectAllDisabled = null;\n }\n\n private showNoResultsFound(): void {\n this.isShowNoResultsFound = true;\n }\n\n private hideNoResultsFound(): void {\n this.isShowNoResultsFound = false;\n }\n\n private resetComponent(): void {\n this.multiOptionComponents.forEach((item) => {\n item.isChecked = false;\n });\n const selectAllCheckbox = this.selectAllCheckbox();\n if (selectAllCheckbox) {\n this.renderer.setProperty(selectAllCheckbox.nativeElement, 'checked', false);\n }\n this._selectedItems.set([]);\n }\n\n private writeValues(values: string[]): void {\n if (values) {\n const newItems: EclMultiselectOption[] = [...this._selectedItems()];\n if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {\n this.multiOptionComponents\n .filter((item) => values.includes(item.value) && !item.disabled)\n .forEach((el) => {\n el.isChecked = true;\n newItems.push(el);\n });\n }\n this._selectedItems.set(newItems);\n }\n }\n\n private toggleDropdown(): void {\n this.isShowMultiselectDropdown = !this.isShowMultiselectDropdown;\n }\n\n private onArrowDownAndTabOption(evt: KeyboardEvent, option: EclMultiselectOption): void {\n (evt as KeyboardEvent).preventDefault();\n const index = this.getOptionIndexByIdFromActiveOptions(option.id);\n const currentOptions = this.getActiveOptions();\n const closeBtn = this.closeBtn();\n if (index !== currentOptions.length - 1) {\n const nextSiblingCheckbox = currentOptions[index + 1];\n nextSiblingCheckbox.onFocus();\n } else if (closeBtn) {\n this.renderer.selectRootElement(closeBtn.nativeElement, true).focus();\n }\n }\n\n private onArrowUpOption(evt: KeyboardEvent, option: EclMultiselectOption): void {\n (evt as KeyboardEvent).preventDefault();\n const index = this.getOptionIndexByIdFromActiveOptions(option.id);\n const selectAllCheckbox = this.selectAllCheckbox();\n if (index !== 0) {\n const prevSiblingCheckbox = this.getActiveOptions()[index - 1];\n prevSiblingCheckbox.onFocus();\n } else if (!this.hasSelectAll || selectAllCheckbox.nativeElement.disabled) {\n if (this.hasSearchBox) {\n this.renderer.selectRootElement(this.searchInput().nativeElement, true).focus();\n } else {\n this.onArrowUpSearch(evt);\n }\n } else {\n this.renderer.selectRootElement(selectAllCheckbox.nativeElement, true).focus();\n }\n }\n\n private getActiveOptions(): EclMultiselectOptionComponent[] {\n return this.multiOptionComponents ? this.multiOptionComponents.filter((item) => item.isActive) : [];\n }\n\n private getAvailableOptions(): EclMultiselectOptionComponent[] {\n return this.multiOptionComponents ? this.multiOptionComponents.filter((item) => !item.disabled) : [];\n }\n\n private getOptionIndexByIdFromActiveOptions(id: string): number {\n return this.getActiveOptions().findIndex((option) => option.id === id);\n }\n\n private getSelectAllId(): string {\n return crypto.randomUUID();\n }\n\n private getDropdownId(): string {\n return this.id !== '' ? `${this.id}-dropdown` : crypto.randomUUID();\n }\n\n private getToggleId(): string {\n return this.id !== '' ? `${this.id}-toggle` : crypto.randomUUID();\n }\n\n private modifyParentLabelForAttribute(): void {\n const form = this.renderer.parentNode(this.elRef.nativeElement);\n const label = form?.querySelector('.ecl-form-label');\n if (label) {\n this.renderer.setAttribute(label, 'for', this.toggleId);\n }\n }\n}\n","<div eclMultiselectInput #eclMultiselectInput [inputPlaceholder]=\"mainInputPlaceholder\" [selectedItems]=\"selectedItems()\"\n (mainInputClick)=\"onClickMainInput($event)\" (mainInputKeydown)=\"onKeydownMainInput($event)\" [isDisabled]=\"disabled\"\n [ariaDescribedby]=\"ariaDescribedby\" [toggleLabel]=\"toggleLabel\" [ariaControls]=\"dropdownId\" [isInvalid]=\"isInvalid\"\n [isDropdownExpanded]=\"isShowMultiselectDropdown\" [eclSize]=\"eclSize\" [toggleId]=\"toggleId\" [counterLabel]=\"counterLabel\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\"\n [id]=\"dropdownId\">\n @if(hasSearchBox) {\n <input class=\"ecl-text-input\" type=\"search\" #searchInput [placeholder]=\"searchFieldPlaceholder()\"\n (input)=\"onSearch($event.target)\" (keydown.enter)=\"onEnterSearch($event)\" [attr.aria-label]=\"searchFieldPlaceholder\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\" (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n }\n @if(hasSelectAll) {\n <div eclCheckbox [isDisabled]=\"isSelectAllDisabled\" class=\"ecl-select__multiple-all\">\n <input eclCheckboxInput #selectAllCheckbox [id]=\"selectAllId\" type=\"checkbox\" [attr.disabled]=\"isSelectAllDisabled\"\n (click)=\"onSelectAll()\" (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" (keydown.enter)=\"onEnterSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }})\n </label>\n </div>\n }\n <div class=\"ecl-select__multiple-options\" aria-live=\"polite\">\n @for (item of multiOptionDirectives; track item.label()) {\n @if (item.isOptGroup()) {\n <fieldset eclMultiselectOptgroup [label]=\"item.label()\">\n @for (elem of item.eclOptionItems(); track elem.label()) {\n <div\n eclMultiselectOption\n [value]=\"elem.value()\"\n [label]=\"elem.label()\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n </fieldset>\n } @else if (!item.isOptGroup()) {\n <div\n eclMultiselectOption\n [value]=\"item.value()\"\n [label]=\"item.label()\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n }\n\n\n @if (isShowNoResultsFound) {\n <div class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n }\n\n </div>\n @if (isShowToolbar()) {\n <div class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n type=\"button\"\n (keydown.arrowup)=\"onArrowUpClose($event)\"\n (keydown.arrowDown)=\"onArrowDownClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.APPLY' | translate }}\n </button>\n <button\n eclButton\n variant=\"tertiary\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpClear($event)\"\n (keydown.arrowDown)=\"onArrowDownClear($event)\"\n (keydown.tab)=\"onTabClear($event)\"\n (keydown.enter)=\"onEnterClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n </div>\n }\n</div>\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, HostBinding, Input, forwardRef, inject, input, contentChildren } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive used to decorate <option> and <optgroup> elements within a multiselect.\n * Adds support for value, label, disabled, selected states and styling.\n */\n@Directive({\n selector: 'optgroup[eclMultiselectOptgroup], option[eclMultiselectOption]',\n})\nexport class EclMultiselectOptionDirective extends ECLBaseDirective {\n\n /**\n * Nested option directives (used for optgroups).\n */\n readonly eclOptionItems = contentChildren(forwardRef(() => EclMultiselectOptionDirective));\n\n /**\n * Value assigned to the option.\n */\n readonly value = input<string>(undefined);\n\n /**\n * Label displayed for the option.\n */\n readonly label = input<string>(undefined);\n\n /**\n * Emits whenever the option's state changes (used internally).\n */\n changes = new Subject();\n\n /**\n * Indicates that the option is disabled.\n */\n @Input()\n @HostBinding('attr.disabled')\n get disabled(): boolean {\n return this._disabled || null;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n /**\n * Indicates that the option is selected.\n */\n @Input()\n @HostBinding('attr.selected')\n get selected(): boolean {\n return this._selected || null;\n }\n set selected(value) {\n this._selected = coerceBooleanProperty(value);\n }\n private _selected = false;\n private elRef = inject(ElementRef);\n\n /**\n * Applies ECL checkbox styling class to the option.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-checkbox')].join(' ').trim();\n }\n\n /**\n * Returns true if this directive is applied to an <optgroup> element.\n */\n isOptGroup(): boolean {\n return this.elRef.nativeElement.nodeName === 'OPTGROUP';\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, DoCheck, ElementRef, HostBinding, Injector, Input, IterableDiffer, IterableDiffers, OnDestroy, OnInit, PLATFORM_ID, Renderer2, ViewContainerRef, ViewEncapsulation, afterNextRender, booleanAttribute, forwardRef, inject, output, input, contentChildren } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMultiselectDropdownComponent } from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nimport { EclMultiselectOptionDirective } from './ecl-multiselect-option.directive';\n\n/**\n * Component representing a custom multiselect input using the ECL design system.\n *\n * Should be used on a native <select> element to enhance it with ECL multiselect behavior.\n * Replaces the original element with a custom dropdown rendered dynamically.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'select[eclMultiselect]',\n templateUrl: 'ecl-multiselect.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclMultiselectComponent),\n multi: true,\n },\n ],\n})\nexport class EclMultiselectComponent extends ECLBaseDirective implements DoCheck, OnInit, OnDestroy {\n injector = inject(Injector);\n\n /**\n * List of option directives projected into the component.\n */\n readonly eclOptionItems = contentChildren(forwardRef(() => EclMultiselectOptionDirective));\n\n /**\n * Defines the `aria-describedby` attribute for accessibility.\n */\n readonly ariaDescribedby = input<string | undefined>(undefined);\n\n /**\n * Sets the `id` attribute of the multiselect component.\n */\n readonly id = input<string | undefined>(undefined);\n\n /**\n * Label used for the toggle button that expands or collapses the dropdown.\n */\n readonly toggleLabel = input<string | undefined>(undefined);\n\n /**\n * Marks the multiselect as invalid.\n */\n @Input({ transform: booleanAttribute })\n get isInvalid(): boolean | undefined {\n return this._isInvalid;\n }\n set isInvalid(value: boolean | undefined) {\n this._isInvalid = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.isInvalid = value;\n }\n }\n\n /**\n * Disables the multiselect component when set to true.\n */\n @Input()\n @HostBinding('attr.disabled')\n set disabled(value: BooleanInput) {\n if (this.multiselectComponent) {\n this.multiselectComponent.disabled = coerceBooleanProperty(value);\n }\n this._disabled = coerceBooleanProperty(value);\n }\n get disabled(): boolean | undefined {\n return this._disabled || undefined;\n }\n\n /**\n * CSS classes applied to the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select')].join(' ').trim();\n }\n\n /**\n * Emits an array of selected option values when the selection changes.\n */\n readonly eclChange = output<string[]>();\n\n /**\n * Enables the search box within the dropdown.\n */\n @Input({ transform: booleanAttribute })\n set hasSearchBox(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.hasSearchBox = coerceBooleanProperty(value);\n }\n this._hasSearchBox = coerceBooleanProperty(value);\n }\n\n /**\n * Displays the \"Select all\" option in the dropdown.\n */\n @Input({ transform: booleanAttribute })\n set hasSelectAll(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.hasSelectAll = coerceBooleanProperty(value);\n }\n this._hasSelectAll = coerceBooleanProperty(value);\n }\n\n /**\n * When true, the Apply button in the dropdown acts as a submit button (type=\"submit\").\n */\n @Input({ transform: booleanAttribute })\n set isSubmitOnApply(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.isSubmitOnApply = coerceBooleanProperty(value);\n }\n this._isSubmitOnApply = coerceBooleanProperty(value);\n }\n\n /**\n * Placeholder text to show in the multiselect input field when no options are selected.\n */\n @Input()\n set eclPlaceholder(value: string) {\n this._eclPlaceholder = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.mainInputPlaceholder = value;\n }\n }\n get eclPlaceholder(): string {\n return this._eclPlaceholder;\n }\n\n /**\n * Multiselect size: 's' | 'm' | 'l'. Default is 'm'.\n */\n readonly eclSize = input('m');\n\n /**\n * Label for the selections counter, read by screen readers.\n * Accepts a translation key or plain text. Default: 'ecl.multiselect.SELECTED'.\n */\n @Input()\n set counterLabel(value: string) {\n this._counterLabel = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.counterLabel = value;\n }\n }\n\n private readonly SELECT_CONTAINER_CLASS = 'ecl-select__container';\n private readonly SELECT_CONTAINER_HIDDEN_CLASS = 'ecl-select__container--hidden';\n private _disabled = false;\n private _hasSelectAll = true;\n private _hasSearchBox = true;\n private _isSubmitOnApply = false;\n private _counterLabel = 'ecl.multiselect.SELECTED';\n private _isInvalid = false;\n private _eclPlaceholder = 'Select item';\n private differ: IterableDiffer<EclMultiselectOptionDirective>;\n private multiselectComponent: EclMultiselectDropdownComponent;\n private hostEl: HTMLSelectElement;\n private hostParentEl: HTMLElement;\n private hostWrapperEl: HTMLElement;\n private multiselectComponentHtml: HTMLDivElement;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private el = inject(ElementRef);\n private viewContainerRef = inject(ViewContainerRef);\n private differs = inject(IterableDiffers);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.attachOptions();\n if (this.hostParentEl != null) {\n this.hideOriginalSelectComponent();\n this.renderer.insertBefore(this.hostParentEl, this.multiselectComponentHtml, this.hostWrapperEl);\n this.setAriaLabelledBy();\n }\n });\n }\n\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclOptionItems());\n\n if (diff) {\n if (this.multiselectComponent) {\n this.multiselectComponent.multiOptionDirectives = Array.from(this.eclOptionItems());\n }\n }\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.hostEl = this.getHostElement();\n this.hostParentEl = this.getHostParentElement(this.hostEl);\n this.hostWrapperEl = this.createHostWrapperContainer();\n this.multiselectComponentHtml = this.createMultiselectComponent();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private hideOriginalSelectComponent(): void {\n this.hostParentEl.replaceChild(this.hostWrapperEl, this.hostEl);\n this.hostWrapperEl.appendChild(this.hostEl);\n this.renderer.addClass(this.hostWrapperEl, this.SELECT_CONTAINER_HIDDEN_CLASS);\n this.renderer.setAttribute(this.hostWrapperEl, 'tabindex', '-1');\n this.renderer.setAttribute(this.hostEl, 'tabindex', '-1');\n }\n\n private createHostWrapperContainer(): HTMLElement {\n const wrapperContainer = this.renderer.createElement('div');\n this.renderer.addClass(wrapperContainer, this.SELECT_CONTAINER_CLASS);\n this.renderer.addClass(wrapperContainer, `${this.SELECT_CONTAINER_CLASS}--${this.eclSize()}`);\n return wrapperContainer;\n }\n\n private getHostElement(): HTMLSelectElement {\n return this.el.nativeElement;\n }\n\n private getHostParentElement(hostEl: HTMLSelectElement): HTMLElement {\n return hostEl.parentElement;\n }\n\n private createMultiselectComponent(): HTMLDivElement {\n const ngControl = this.injector.get(NgControl, undefined, { optional: true });\n const multiselect = this.viewContainerRef.createComponent(EclMultiselectDropdownComponent);\n this.multiselectComponent = multiselect.instance;\n this.multiselectComponent.eclChange.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.eclChange.emit(evt);\n });\n this.multiselectComponent.mainInputPlaceholder = this.eclPlaceholder;\n\n const ariaDescribedby = this.ariaDescribedby();\n if (ariaDescribedby !== undefined) {\n this.multiselectComponent.ariaDescribedby = ariaDescribedby;\n }\n const toggleLabel = this.toggleLabel();\n if (toggleLabel !== undefined) {\n this.multiselectComponent.toggleLabel = toggleLabel;\n }\n const id = this.id();\n if (id !== undefined) {\n this.multiselectComponent.id = id;\n }\n this.multiselectComponent.eclSize = this.eclSize();\n if (ngControl) {\n ngControl.valueAccessor = this.multiselectComponent;\n }\n multiselect.instance.disabled = this.disabled;\n multiselect.instance.isInvalid = this.isInvalid;\n multiselect.instance.hasSearchBox = this._hasSearchBox;\n multiselect.instance.hasSelectAll = this._hasSelectAll;\n multiselect.instance.isSubmitOnApply = this._isSubmitOnApply;\n multiselect.instance.counterLabel = this._counterLabel;\n return (multiselect.location as ElementRef<HTMLDivElement>).nativeElement;\n }\n\n private setAriaLabelledBy(): void {\n const hostSelect: HTMLElement = this.el.nativeElement;\n const formGroup = hostSelect.closest('.ecl-form-group') as HTMLElement | null;\n if (!formGroup) return;\n\n const label = formGroup.querySelector('.ecl-form-label') as HTMLElement | null;\n if (!label) return;\n\n if (!label.id) {\n const newLabelId = `ecl-select-label-${crypto.randomUUID()}`;\n this.renderer.setAttribute(label, 'id', newLabelId);\n }\n\n if (!hostSelect.id) {\n const newSelectId = `ecl-select-input-${crypto.randomUUID()}`;\n this.renderer.setAttribute(hostSelect, 'id', newSelectId);\n }\n\n const labelledBy = `${label.id} ${hostSelect.id}`.trim();\n this.renderer.setAttribute(hostSelect, 'aria-labelledby', labelledBy);\n }\n\n private attachOptions(): void {\n setTimeout(() => {\n this.multiselectComponent.multiOptionDirectives = Array.from(this.eclOptionItems());\n });\n }\n}\n","<ng-content></ng-content>\n","import { BoldTextPipe } from './boldText.pipe';\nimport { EclMultiselectDropdownComponent } from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nimport { EclMultiselectInputComponent } from './ecl-multiselect-input/ecl-multiselect-input.component';\nimport { EclMultiselectOptgroupComponent } from './ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nimport { EclMultiselectOptionDirective } from './ecl-multiselect-option.directive';\nimport { EclMultiselectOptionComponent } from './ecl-multiselect-option/ecl-multiselect-option.component';\nimport { EclMultiselectComponent } from './ecl-multiselect.component';\n\nexport * from './ecl-multiselect.component';\nexport * from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nexport * from './ecl-multiselect-input/ecl-multiselect-input.component';\nexport * from './ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nexport * from './ecl-multiselect-option/ecl-multiselect-option.component';\nexport * from './ecl-multiselect-option.directive';\nexport * from './models/ecl-multiselect-option.model';\nexport * from './events/index';\nexport * from './boldText.pipe';\n\nexport const EUI_ECL_MULTISELECT = [\n EclMultiselectComponent,\n EclMultiselectOptionDirective,\n EclMultiselectOptionComponent,\n EclMultiselectInputComponent,\n EclMultiselectDropdownComponent,\n EclMultiselectOptgroupComponent,\n BoldTextPipe,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;MAKa,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;QAIY,IAAA,CAAA,aAAa,GAAG,KAAK;AAsBhC,IAAA;IApBG,SAAS,CAAC,KAAa,EAAE,OAAe,EAAA;AACpC,QAAA,IAAI,OAAO,KAAK,EAAE,EAAE;YAChB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;QACvC;aAAO;AACH,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE;AACxC,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACpC;iBAAO;AACH,gBAAA,OAAO,KAAK;YAChB;QACJ;IACJ;IAEA,OAAO,CAAC,GAAW,EAAE,OAAe,EAAA;QAChC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;QACpC,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC;IACvC;AAEA,IAAA,aAAa,CAAC,GAAW,EAAA;QACrB,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IACtC;8GAtBS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,UAAU;AACnB,iBAAA;;;MCJY,iCAAiC,CAAA;AAC1C,IAAA,WAAA,CAAmB,KAAY,EAAA;QAAZ,IAAA,CAAA,KAAK,GAAL,KAAK;IAAU;AACrC;;MCAY,8BAA8B,CAAA;AACvC,IAAA,WAAA,CAAmB,iBAAuC,EAAA;QAAvC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAyB;AAChE;MAEY,gCAAgC,CAAA;IACzC,WAAA,CACW,iBAAuC,EACvC,aAA4B,EAAA;QAD5B,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,aAAa,GAAb,aAAa;IACrB;AACN;;ACFD;;;AAGG;AAWG,MAAO,4BAA6B,SAAQ,gBAAgB,CAAA;AAVlE,IAAA,WAAA,GAAA;;AAYI;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,GAAG;oFAAC;AAEpB;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;sFAAC;AAEvC;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,0BAA0B;yFAAC;AAEhD;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE;qFAAC;AAE5B;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,SAAS;wFAAC;AAElD;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAazD;;AAEG;QACH,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,EAAE;6FAAC;AAE5B;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAW,EAAE;0FAAC;AAEnC;;AAEG;QACH,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAC,KAAK,0FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAElE;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,KAAK,CAAqB,SAAS;yFAAC;AAEnD;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK,CAAqB,SAAS;4FAAC;AAEtD;;AAEG;AACH,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE;AAC1C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,YAAA,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS;QACxE,CAAC;gGAAC;AAEF;;AAEG;QACM,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAa,kBAAkB;6FAAC;AAErE;;AAEG;QACM,IAAA,CAAA,cAAc,GAAG,MAAM,EAAqC;AAErE;;AAEG;QACM,IAAA,CAAA,gBAAgB,GAAG,MAAM,EAAS;QAE1B,IAAA,CAAA,yBAAyB,GAAG,IAAI;QAChC,IAAA,CAAA,yBAAyB,GAAG,GAAG;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAEpC;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACvB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;YAClC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACzE,CAAC;uFAAC;AAEF;;AAEG;QACH,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM;+FAAC;AAEhE;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC;0FAAC;AAE/D;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE;qFAAC;AA6CvD,IAAA;AAnIG;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;QACV,OAAO;AACH,YAAA,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC;AAC5C,YAAA,CAAA,uBAAA,EAA0B,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;AAC7C,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IACtB;AA+EA;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE;YAClC,OAAO,IAAI,CAAC,yBAAyB;QACzC;aAAO;YACH,OAAO,IAAI,CAAC,yBAAyB;QACzC;IACJ;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,GAAU,EAAA;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,iCAAiC,CAAC,GAAG,CAAC,CAAC;IACxE;AAEA;;;AAGG;AACH,IAAA,SAAS,CAAC,GAAkB,EAAA;AACxB,QAAA,QAAQ,GAAG,CAAC,GAAG;YACX,KAAK,OAAO,CAAC,UAAU;YACvB,KAAK,OAAO,CAAC,KAAK;YAClB,KAAK,OAAO,CAAC,KAAK;gBAClB;AACI,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC/B;gBACJ;YACA,SAAS;gBACL;YACJ;;IAER;AAEA;;AAEG;IACH,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;IACxF;8GAvKS,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uCAAA,EAAA,cAAA,EAAA,sCAAA,EAAA,aAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBzC,+nCA0BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDTc,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAMd,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAVxC,SAAS;+BAEI,0BAA0B,EAAA,OAAA,EAE3B,CAAC,aAAa,EAAE,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC,EAAA,IAAA,EACtD;AACF,wBAAA,yCAAyC,EAAE,cAAc;AACzD,wBAAA,wCAAwC,EAAE,aAAa;AAC1D,qBAAA,EAAA,QAAA,EAAA,+nCAAA,EAAA;;sBA0CA,WAAW;uBAAC,OAAO;omBA6C8B,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEpFxE;;AAEG;AAQG,MAAO,6BAA8B,SAAQ,gBAAgB,CAAA;AAPnE,IAAA,WAAA,GAAA;;QASa,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAa,eAAe;6FAAC;QAElE,IAAA,CAAA,OAAO,GAAG,EAAE;AAgBZ,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAE;AAEvB;;AAEG;QAIH,IAAA,CAAA,QAAQ,GAAG,KAAK;AAEhB;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,MAAM,EAAkC;AAE/D;;AAEG;QACM,IAAA,CAAA,aAAa,GAAG,MAAM,EAAoC;QAE3B,IAAA,CAAA,OAAO,GAAG,MAAM;QAmBhD,IAAA,CAAA,GAAG,GAAG,EAAE;QACR,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,MAAM,GAAG,EAAE;AACX,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AA4EvC,IAAA;IApIG,IACI,KAAK,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACvB;AAEA,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM;IACtB;AA6BA,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IACjE;AAEA;;AAEG;AACH,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,IAAI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACzB;AAOA;;AAEG;AACH,IAAA,IAAI,EAAE,GAAA;QACF,OAAO,IAAI,CAAC,GAAG;IACnB;AAEA;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;IACpD;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC9B;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAC3B;AAEA;;AAEG;IACH,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACnE;AAEA;;AAEG;AACH,IAAA,eAAe,CAAC,GAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,gCAAgC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5E;AAEA;;AAEG;IACH,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;IACxF;AAEA;;AAEG;IACH,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;IACzB;AAEA;;AAEG;IACH,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;IACzB;AAEA;;AAEG;AACH,IAAA,mBAAmB,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC;IACnD;IAEQ,QAAQ,GAAA;AACZ,QAAA,OAAO,MAAM,CAAC,UAAU,EAAE;IAC9B;8GAzIS,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAyBlB,gBAAgB,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DxC,kWAWA,8RDoBc,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGb,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;+BAEI,2BAA2B,EAAA,OAAA,EAE5B,CAAC,YAAY,EAAE,GAAG,gBAAgB,CAAC,EAAA,cAAA,EAC5B,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,kWAAA,EAAA;8EAIY,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA;sBAIhE;;sBAYA;;sBAOA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,8BAA8B;;sBAC1C,WAAW;uBAAC,eAAe;;sBAa3B,WAAW;uBAAC,eAAe;;sBAE3B,WAAW;uBAAC,OAAO;;sBAQnB;;;AEjFL;;;AAGG;AAMG,MAAO,+BAAgC,SAAQ,gBAAgB,CAAA;AALrE,IAAA,WAAA,GAAA;;AAOI;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,SAAS;kFAAC;AAS5C,IAAA;AAPG;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC/E;8GAbS,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,6SCZ5C,yGAEA,EAAA,CAAA,CAAA;;2FDUa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;+BAEI,kCAAkC,EAAA,QAAA,EAAA,yGAAA,EAAA;;sBAa3C,WAAW;uBAAC,OAAO;;;AEPxB;;;AAGG;AAiBG,MAAO,+BAAgC,SAAQ,gBAAgB,CAAA;AAcjE;;AAEG;AACH,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU;IAC1B;IACA,IAAI,SAAS,CAAC,KAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IAC3B;AAEA;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IACzE;AAiBA;;AAEG;AACH,IAAA,IAEI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,SAAS;IACtC;IACA,IAAI,QAAQ,CAAC,KAA0B,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;AA2EA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QApIF,IAAA,CAAA,WAAW,GAAG,SAAS,CAAa,aAAa;wFAAC;QAClD,IAAA,CAAA,mBAAmB,GAAG,SAAS,CAA+B,qBAAqB;gGAAC;QACpF,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAa,mBAAmB;8FAAC;QAC9D,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,UAAU,gFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;QACtD,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,aAAa,mFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;AAGrE;;AAEG;AACO,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAY;AAqBlD;;AAEG;QACM,IAAA,CAAA,oBAAoB,GAAG,gBAAgB;AAEhD;;AAEG;QACM,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAC,sBAAsB;mGAAC;AAE/D;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,GAAG;AActB;;AAEG;QACH,IAAA,CAAA,eAAe,GAAuB,SAAS;AAE/C;;AAEG;QACH,IAAA,CAAA,WAAW,GAAuB,SAAS;AAE3C;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,IAAI;AAEnB;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,IAAI;AAEnB;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,KAAK;AAEvB;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,0BAA0B;AAEzC;;AAEG;QACH,IAAA,CAAA,EAAE,GAAG,EAAE;AAEP;;AAEG;QACH,IAAA,CAAA,oBAAoB,GAAG,KAAK;AAE5B;;AAEG;QACH,IAAA,CAAA,yBAAyB,GAAG,KAAK;AAEjC;;AAEG;QACH,IAAA,CAAA,qBAAqB,GAAoC,EAAE;AAO3D;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,CAAC;QAEN,IAAA,CAAA,UAAU,GAAG,EAAE;QACf,IAAA,CAAA,mBAAmB,GAAmB,IAAI;QAC1C,IAAA,CAAA,WAAW,GAAG,EAAE;QAChB,IAAA,CAAA,QAAQ,GAAG,EAAE;QACf,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,cAAc,GAAG,MAAM,CAAyB,EAAE;2FAAC;AACnD,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW;QACnD,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAC1B,IAAA,CAAA,MAAM,GAAG,EAAE;AACX,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AA0FpC;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;0FAAC;AAE/E;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;4FAAC;AAElE;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;0FAAC;;AA2PxD,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,CAAM,KAAU;;AAE3C,QAAA,CAAC;QAEO,IAAA,CAAA,gBAAgB,GAAG,MAAW;;AAEtC,QAAA,CAAC;IApWD;IAEA,SAAS,GAAA;QACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,GAAG,CAAC;IAC1F;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,6BAA6B,EAAE;AACxC,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC7E,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,gBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;YACnC;iBAAO;gBACH,IAAI,CAAC,mBAAmB,EAAE;YAC9B;YACA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,GAAG,CAAC;AAC1F,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC/B;AAEA;;;AAGG;;AAEI,IAAA,UAAU,CAAC,MAAW,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;YACrE,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5B;aAAO;AACH,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAClC;IACJ;AAEA;;;AAGG;;AAEI,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC7B;AAEA;;;AAGG;;AAEI,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC9B;AAEA;;;AAGG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU;IAC/B;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,uBAAuB,EAAE;IAClC;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAClD,IAAI,CAAC,uBAAuB,EAAE;QAClC;IACJ;IAiBA,mBAAmB,GAAA;QACf,MAAM,KAAK,GAA2B,EAAE;AACxC,QAAA,IAAI,CAAC;aACA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS;AAC/B,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;AACd,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,QAAA,CAAC,CAAC;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IAClC;AAEA,IAAA,eAAe,CAAC,GAAU,EAAA;QACtB,GAAG,CAAC,eAAe,EAAE;QACrB,IAAI,CAAC,wBAAwB,EAAE;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5B;AAEA,IAAA,YAAY,CAAC,GAAU,EAAA;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE;IACxC;AAEA,IAAA,YAAY,CAAC,GAAU,EAAA;QACnB,GAAG,CAAC,cAAc,EAAE;QACpB,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;YACrD,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,aAAa,EAAE;YACxB;QACJ;IACJ;AAEA,IAAA,cAAc,CAAC,GAAU,EAAA;QACrB,GAAG,CAAC,cAAc,EAAE;AACpB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC9C,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE;IACvD;AAEA,IAAA,gBAAgB,CAAC,GAAU,EAAA;QACvB,GAAG,CAAC,cAAc,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;IACnF;AAEA,IAAA,UAAU,CAAC,GAAU,EAAA;AACjB,QAAA,IAAI,CAAE,GAAqB,CAAC,QAAQ,EAAE;YAClC,GAAG,CAAC,cAAc,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;QACnF;IACJ;AAEA,IAAA,cAAc,CAAC,GAAU,EAAA;QACrB,GAAG,CAAC,cAAc,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;IAChF;AAEA,IAAA,gBAAgB,CAAC,GAAU,EAAA;QACvB,GAAG,CAAC,cAAc,EAAE;AACpB,QAAA,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE;IACxC;AAEA,IAAA,UAAU,CAAC,GAAU,EAAA;AACjB,QAAA,IAAI,CAAE,GAAqB,CAAC,QAAQ,EAAE;YAClC,GAAG,CAAC,cAAc,EAAE;YACpB,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE;QACxC;IACJ;AAEA,IAAA,aAAa,CAAC,GAAU,EAAA;QACpB,GAAG,CAAC,cAAc,EAAE;IACxB;AAEA,IAAA,iBAAiB,CAAC,GAAU,EAAA;QACxB,GAAG,CAAC,cAAc,EAAE;AACpB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC9C,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;QACzF;aAAO;AACH,YAAA,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;QAC/B;IACJ;AAEA,IAAA,eAAe,CAAC,GAAU,EAAA;QACtB,GAAG,CAAC,cAAc,EAAE;QACpB,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE;IACxC;AAEA,IAAA,kBAAkB,CAAC,GAAU,EAAA;QACzB,GAAG,CAAC,cAAc,EAAE;QACpB,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACrG;aAAQ;AACJ,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAC/B;IACJ;AAEA,IAAA,gBAAgB,CAAC,GAAsC,EAAA;AACnD,QAAA,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE;QAC1B,IAAI,CAAC,cAAc,EAAE;IACzB;AAEA,IAAA,oBAAoB,CAAC,GAAU,EAAA;QAC3B,GAAG,CAAC,cAAc,EAAE;AACpB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC9C,QAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;QAC/B;IACJ;AAEA,IAAA,kBAAkB,CAAC,GAAU,EAAA;QACzB,GAAG,CAAC,cAAc,EAAE;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;QACnF;aAAO;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;QAC7B;IACJ;AAEA,IAAA,gBAAgB,CAAC,GAAU,EAAA;QACvB,GAAG,CAAC,cAAc,EAAE;AACnB,QAAA,GAAG,CAAC,MAA2B,CAAC,KAAK,EAAE;IAC5C;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAkB,EAAA;AACvB,QAAA,MAAM,OAAO,GAAI,KAA0B,CAAC,KAAK;QACjD,IAAI,YAAY,GAAG,KAAK;AACxB,QAAA,IAAI,OAAO,KAAK,EAAE,EAAE;YAChB,IAAI,CAAC,eAAe,EAAE;YACtB,YAAY,GAAG,IAAI;YACnB,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,EAAE;AACf,YAAA,CAAC,CAAC;QACN;aAAO;YACH,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxC,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE;oBAC7D,IAAI,CAAC,IAAI,EAAE;gBACf;qBAAO;oBACH,YAAY,GAAG,IAAI;oBACnB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBAC/C,IAAI,CAAC,IAAI,EAAE;gBACf;AACJ,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,gBAAgB,EAAE;QAC3B;QACA,IAAI,CAAC,YAAY,EAAE;YACf,IAAI,CAAC,kBAAkB,EAAE;QAC7B;aAAO;YACH,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;AAEA;;AAEG;IACH,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,sBAAsB,EAAE;QACjC;aAAO;YACH,IAAI,CAAC,wBAAwB,EAAE;QACnC;QACA,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE;AAEA;;;AAGG;AACH,IAAA,eAAe,CAAC,GAAqC,EAAA;AACjD,QAAA,QAAQ,GAAG,CAAC,aAAa,CAAC,GAAG;AACzB,YAAA,KAAK,OAAO,CAAC,UAAU,EAAE;gBACrB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,iBAAiB,CAAC;gBACtE;YACJ;AACA,YAAA,KAAK,OAAO,CAAC,QAAQ,EAAE;gBACnB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,iBAAiB,CAAC;gBAC9D;YACJ;AACA,YAAA,KAAK,OAAO,CAAC,MAAM,EAAE;gBACjB,IAAI,CAAC,uBAAuB,EAAE;gBAC9B;YACJ;AACA,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;AACf,gBAAA,GAAG,CAAC,aAAa,CAAC,MAA2B,CAAC,KAAK,EAAE;gBACtD;YACJ;AACA,YAAA,KAAK,OAAO,CAAC,GAAG,EAAE;AACd,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAC7B,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,iBAAiB,CAAC;gBAC1E;gBACA;YACJ;YACA,SAAS;gBACL;YACJ;;IAER;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,GAAmC,EAAA;AAChD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAClD,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE;AAC9D,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC;QAChF;AACA,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB;AACxC,QAAA,IAAI,UAAU,CAAC,SAAS,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,EAAE,UAAU,CAAC,CAAC;QACjE;aAAO;YACH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,UAAU,CAAC,CAAC;QACtF;QACA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE;IAEQ,sBAAsB,GAAA;QAC1B,MAAM,QAAQ,GAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC;IAEQ,wBAAwB,GAAA;AAC5B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAClD,IAAI,iBAAiB,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC;QAChF;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAC1B,QAAA,CAAC,CAAC;IACN;IAWQ,uBAAuB,GAAA;AAC3B,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI;IACzC;IAEQ,uBAAuB,GAAA;AAC3B,QAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK;IAC1C;IAEQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACnC;IAEQ,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACnC;IAEQ,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;IACpC;IAEQ,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;IACrC;IAEQ,cAAc,GAAA;QAClB,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAC1B,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAClD,IAAI,iBAAiB,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC;QAChF;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B;AAEQ,IAAA,WAAW,CAAC,MAAgB,EAAA;QAChC,IAAI,MAAM,EAAE;YACR,MAAM,QAAQ,GAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACnE,YAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;AACrE,gBAAA,IAAI,CAAC;AACA,qBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;AAC9D,qBAAA,OAAO,CAAC,CAAC,EAAE,KAAI;AACZ,oBAAA,EAAE,CAAC,SAAS,GAAG,IAAI;AACnB,oBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,gBAAA,CAAC,CAAC;YACV;AACA,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrC;IACJ;IAEQ,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,yBAAyB,GAAG,CAAC,IAAI,CAAC,yBAAyB;IACpE;IAEQ,uBAAuB,CAAC,GAAkB,EAAE,MAA4B,EAAA;QAC3E,GAAqB,CAAC,cAAc,EAAE;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,EAAE,CAAC;AACjE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC9C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,KAAK,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,MAAM,mBAAmB,GAAG,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;YACrD,mBAAmB,CAAC,OAAO,EAAE;QACjC;aAAO,IAAI,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;QACzE;IACJ;IAEQ,eAAe,CAAC,GAAkB,EAAE,MAA4B,EAAA;QACnE,GAAqB,CAAC,cAAc,EAAE;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,EAAE,CAAC;AACjE,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAClD,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACb,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9D,mBAAmB,CAAC,OAAO,EAAE;QACjC;aAAO,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE;AACvE,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;YACnF;iBAAO;AACH,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;YAC7B;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;QAClF;IACJ;IAEQ,gBAAgB,GAAA;QACpB,OAAO,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;IACvG;IAEQ,mBAAmB,GAAA;QACvB,OAAO,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;IACxG;AAEQ,IAAA,mCAAmC,CAAC,EAAU,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IAC1E;IAEQ,cAAc,GAAA;AAClB,QAAA,OAAO,MAAM,CAAC,UAAU,EAAE;IAC9B;IAEQ,aAAa,GAAA;QACjB,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,SAAA,CAAW,GAAG,MAAM,CAAC,UAAU,EAAE;IACvE;IAEQ,WAAW,GAAA;QACf,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,OAAA,CAAS,GAAG,MAAM,CAAC,UAAU,EAAE;IACrE;IAEQ,6BAA6B,GAAA;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,EAAE,aAAa,CAAC,iBAAiB,CAAC;QACpD,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC3D;IACJ;8GAhmBS,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAiBpB,gBAAgB,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAkChB,gBAAgB,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EA3DzB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,+BAA+B,CAAC;AAC9D,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAOiD,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACJ,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,SAAA,EACpD,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1C/C,66IAsFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED9D2B,6BAA6B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,+BAA+B,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjF,4BAA4B,qqBAAuB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAU3D,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAhB3C,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAE9B;AACL,wBAAA,GAAG,cAAc,EAAE,6BAA6B,EAAE,+BAA+B;AACjF,wBAAA,4BAA4B,EAAE,GAAG,gBAAgB,EAAE,aAAa;qBACnE,EAAA,SAAA,EACU;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qCAAqC,CAAC;AAC9D,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,66IAAA,EAAA;AAI4C,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,aAAa,6EACa,qBAAqB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACzC,mBAAmB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACxC,UAAU,OAAE,EAAE,IAAI,EAAE,UAAU,EAAE,mEAC7B,aAAa,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA;sBACnE,YAAY;uBAAC,6BAA6B;;sBAK1C;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC,WAAW;uBAAC,OAAO;;sBAQnB;;sBAUA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,eAAe;;sBA6J3B,YAAY;uBAAC,uBAAuB;;sBAKpC,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AEpP9C;;;AAGG;AAIG,MAAO,6BAA8B,SAAQ,gBAAgB,CAAA;AAHnE,IAAA,WAAA,GAAA;;AAKI;;AAEG;QACM,IAAA,CAAA,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,6BAA6B,CAAC;2FAAC;AAE1F;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,SAAS;kFAAC;AAEzC;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,SAAS;kFAAC;AAEzC;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAE;QAaf,IAAA,CAAA,SAAS,GAAG,KAAK;QAajB,IAAA,CAAA,SAAS,GAAG,KAAK;AACjB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAgBrC,IAAA;AAzCG;;AAEG;AACH,IAAA,IAEI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI;IACjC;IACA,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACjD;AAGA;;AAEG;AACH,IAAA,IAEI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI;IACjC;IACA,IAAI,QAAQ,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACjD;AAIA;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IACjE;AAEA;;AAEG;IACH,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,KAAK,UAAU;IAC3D;8GA9DS,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,uyBAKqB,6BAA6B,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAL/E,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gEAAgE;AAC7E,iBAAA;AAM6C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,6BAA6B,CAAC,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;sBAoBxF;;sBACA,WAAW;uBAAC,eAAe;;sBAY3B;;sBACA,WAAW;uBAAC,eAAe;;sBAa3B,WAAW;uBAAC,OAAO;;;ACvDxB;;;;;AAKG;AAcG,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;AAuBzD;;AAEG;AACH,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU;IAC1B;IACA,IAAI,SAAS,CAAC,KAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,KAAK;QAC/C;IACJ;AAEA;;AAEG;IACH,IAEI,QAAQ,CAAC,KAAmB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC;QACrE;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACjD;AACA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,SAAS;IACtC;AAEA;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC/D;AAOA;;AAEG;IACH,IACI,YAAY,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;QACzE;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACrD;AAEA;;AAEG;IACH,IACI,YAAY,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;QACzE;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACrD;AAEA;;AAEG;IACH,IACI,eAAe,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC5E;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACxD;AAEA;;AAEG;IACH,IACI,cAAc,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,GAAG,KAAK;QAC1D;IACJ;AACA,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,IAAI,CAAC,eAAe;IAC/B;AAOA;;;AAGG;IACH,IACI,YAAY,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK;QAClD;IACJ;AAwBA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAvJX,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B;;AAEG;QACM,IAAA,CAAA,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,6BAA6B,CAAC;2FAAC;AAE1F;;AAEG;QACM,IAAA,CAAA,eAAe,GAAG,KAAK,CAAqB,SAAS;4FAAC;AAE/D;;AAEG;QACM,IAAA,CAAA,EAAE,GAAG,KAAK,CAAqB,SAAS;+EAAC;AAElD;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,SAAS;wFAAC;AAuC3D;;AAEG;QACM,IAAA,CAAA,SAAS,GAAG,MAAM,EAAY;AAiDvC;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,GAAG;oFAAC;QAcZ,IAAA,CAAA,sBAAsB,GAAG,uBAAuB;QAChD,IAAA,CAAA,6BAA6B,GAAG,+BAA+B;QACxE,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,aAAa,GAAG,IAAI;QACpB,IAAA,CAAA,aAAa,GAAG,IAAI;QACpB,IAAA,CAAA,gBAAgB,GAAG,KAAK;QACxB,IAAA,CAAA,aAAa,GAAG,0BAA0B;QAC1C,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,eAAe,GAAG,aAAa;AAO/B,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW;AACnD,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAIpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QAC5C,eAAe,CAAC,MAAK;YACjB,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;gBAC3B,IAAI,CAAC,2BAA2B,EAAE;AAClC,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,aAAa,CAAC;gBAChG,IAAI,CAAC,iBAAiB,EAAE;YAC5B;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,SAAS,GAAA;AACL,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAEpD,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,gBAAA,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvF;QACJ;IACJ;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACtD,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,0BAA0B,EAAE;QACrE;IACJ;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC/B;IAEQ,2BAA2B,GAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,6BAA6B,CAAC;AAC9E,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC;IAC7D;IAEQ,0BAA0B,GAAA;QAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC;AACrE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAA,EAAG,IAAI,CAAC,sBAAsB,KAAK,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;AAC7F,QAAA,OAAO,gBAAgB;IAC3B;IAEQ,cAAc,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa;IAChC;AAEQ,IAAA,oBAAoB,CAAC,MAAyB,EAAA;QAClD,OAAO,MAAM,CAAC,aAAa;IAC/B;IAEQ,0BAA0B,GAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,+BAA+B,CAAC;AAC1F,QAAA,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,QAAQ;QAChD,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACjF,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc;AAEpE,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,GAAG,eAAe;QAC/D;AACA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,WAAW;QACvD;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE;AACpB,QAAA,IAAI,EAAE,KAAK,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE;QACrC;QACA,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAClD,IAAI,SAAS,EAAE;AACX,YAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB;QACvD;QACA,WAAW,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC7C,WAAW,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QAC/C,WAAW,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;QACtD,WAAW,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;QACtD,WAAW,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB;QAC5D,WAAW,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;AACtD,QAAA,OAAQ,WAAW,CAAC,QAAuC,CAAC,aAAa;IAC7E;IAEQ,iBAAiB,GAAA;AACrB,QAAA,MAAM,UAAU,GAAgB,IAAI,CAAC,EAAE,CAAC,aAAa;QACrD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAuB;AAC7E,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAuB;AAC9E,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;YACX,MAAM,UAAU,GAAG,CAAA,iBAAA,EAAoB,MAAM,CAAC,UAAU,EAAE,EAAE;YAC5D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC;QACvD;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;YAChB,MAAM,WAAW,GAAG,CAAA,iBAAA,EAAoB,MAAM,CAAC,UAAU,EAAE,EAAE;YAC7D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC;QAC7D;AAEA,QAAA,MAAM,UAAU,GAAG,CAAA,EAAG,KAAK,CAAC,EAAE,CAAA,CAAA,EAAI,UAAU,CAAC,EAAE,CAAA,CAAE,CAAC,IAAI,EAAE;QACxD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC;IACzE;IAEQ,aAAa,GAAA;QACjB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACvF,QAAA,CAAC,CAAC;IACN;8GA/QS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EA0BZ,gBAAgB,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EA0ChB,gBAAgB,0IAWhB,gBAAgB,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAWhB,gBAAgB,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAlGzB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAQ0D,6BAA6B,qEClC5F,6BACA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD2Ba,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,aAAA,EAEnB,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA;AAQyC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,6BAA6B,CAAC,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA;sBAoBxF,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAcrC;;sBACA,WAAW;uBAAC,eAAe;;sBAc3B,WAAW;uBAAC,OAAO;;sBAanB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC;;sBAoBA;;;AEnIE,MAAM,mBAAmB,GAAG;IAC/B,uBAAuB;IACvB,6BAA6B;IAC7B,6BAA6B;IAC7B,4BAA4B;IAC5B,+BAA+B;IAC/B,+BAA+B;IAC/B,YAAY;;;ACzBhB;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-multiselect.mjs","sources":["../../components/ecl-multiselect/boldText.pipe.ts","../../components/ecl-multiselect/events/ecl-multiselect-main-input-click.event.ts","../../components/ecl-multiselect/events/ecl-multiselect-option.event.ts","../../components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.ts","../../components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.html","../../components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.ts","../../components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.html","../../components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.ts","../../components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.html","../../components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.ts","../../components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.html","../../components/ecl-multiselect/ecl-multiselect-option.directive.ts","../../components/ecl-multiselect/ecl-multiselect.component.ts","../../components/ecl-multiselect/ecl-multiselect.component.html","../../components/ecl-multiselect/index.ts","../../components/ecl-multiselect/eui-ecl-components-ecl-multiselect.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'boldText',\n})\nexport class BoldTextPipe implements PipeTransform {\n private BOLD_TAG_OPEN = '<b>';\n\n transform(value: string, keyword: string): string {\n if (keyword !== '') {\n return this.replace(value, keyword);\n } else {\n if (value.indexOf(this.BOLD_TAG_OPEN) > -1) {\n return this.clearBoldText(value);\n } else {\n return value;\n }\n }\n }\n\n replace(str: string, keyword: string): string {\n const re = new RegExp(keyword, 'gi');\n return str.replace(re, '<b>$&</b>');\n }\n\n clearBoldText(str: string): string {\n return str.replace(/<[/]?b>/g, '');\n }\n}\n","export class EclMultiselectMainInputClickEvent {\n constructor(public event: Event) {}\n}","import { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\n\nexport class EclMultiselectOptionClickEvent {\n constructor(public multiselectOption: EclMultiselectOption) {}\n}\n\nexport class EclMultiselectOptionKeydownEvent {\n constructor(\n public multiselectOption: EclMultiselectOption,\n public keyboardEvent: KeyboardEvent,\n ) {}\n}","import { Component, ElementRef, HostBinding, Renderer2, booleanAttribute, computed, inject, input, signal, output, viewChild } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { EclMultiselectMainInputClickEvent } from '../events';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Component representing the main input of a multiselect component.\n * Handles displaying selected items, opening the dropdown, and managing accessibility.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectInput]',\n templateUrl: './ecl-multiselect-input.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n host: {\n '[class.ecl-select__container--disabled]': 'isDisabled()',\n '[class.ecl-select__container--invalid]': 'isInvalid()',\n },\n})\nexport class EclMultiselectInputComponent extends ECLBaseDirective {\n\n /**\n * Size modifier for the multiselect input (e.g., 's', 'm', 'l').\n */\n eclSize = input('m');\n\n /**\n * Unique ID for the counter element.\n */\n counterId = signal(crypto.randomUUID());\n\n /**\n * Label for the selections counter, read by screen readers.\n */\n counterLabel = input('ecl.multiselect.SELECTED');\n\n /**\n * ID of the toggle button element (used for accessibility).\n */\n toggleId = input<string>('');\n\n /**\n * Label for the toggle button (optional).\n */\n toggleLabel = input<string | undefined>(undefined);\n\n /**\n * Marks the component as disabled.\n */\n isDisabled = input(false, { transform: booleanAttribute });\n\n /**\n * Marks the component as being in an invalid state.\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * CSS classes for the component, including size and inherited classes.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-select__container'),\n `ecl-select__container--${this.eclSize()}`,\n ].join(' ').trim();\n }\n\n /**\n * Placeholder text for the input when no items are selected.\n */\n inputPlaceholder = input('');\n\n /**\n * Array of currently selected item labels.\n */\n selectedItems = input<string[]>([]);\n\n /**\n * Indicates that the dropdown is currently expanded.\n */\n isDropdownExpanded = input(false, { transform: booleanAttribute });\n\n /**\n * ARIA controls attribute for accessibility.\n */\n ariaControls = input<string | undefined>(undefined);\n\n /**\n * ARIA describedby attribute for accessibility.\n */\n ariaDescribedby = input<string | undefined>(undefined);\n\n /**\n * Computed ARIA describedby combining the input value with the counter ID.\n */\n ariaDescribedbyFull = computed(() => {\n const describedby = this.ariaDescribedby();\n const counter = this.counterId();\n return [describedby, counter].filter(Boolean).join(' ') || undefined;\n });\n\n /**\n * Reference to the internal input element.\n */\n readonly inputMultiselect = viewChild<ElementRef>('inputMultiselect');\n\n /**\n * Event emitted when the input is clicked.\n */\n readonly mainInputClick = output<EclMultiselectMainInputClickEvent>();\n\n /**\n * Event emitted when a key is pressed on the input.\n */\n readonly mainInputKeydown = output<Event>();\n\n private readonly ICON_SIZE_FOR_EC_THEME_ON = 'xs';\n private readonly ICON_SIZE_FOR_EU_THEME_ON = 's';\n private eclThemeService = inject(EclThemeService);\n private renderer = inject(Renderer2);\n\n /**\n * Returns the label text shown inside the button.\n */\n buttonText = computed(() => {\n const items = this.selectedItems();\n return items.length === 0 ? this.inputPlaceholder() : items.join(',');\n });\n\n /**\n * Returns the count of selected items.\n */\n selectedItemsCount = computed(() => this.selectedItems().length);\n\n /**\n * Displays a count badge when items are selected.\n */\n isShowCounter = computed(() => this.selectedItems().length > 0);\n\n /**\n * Indicates that the dropdown is expanded (active).\n */\n isActive = computed(() => this.isDropdownExpanded());\n\n /**\n * Returns icon size depending on the theme.\n */\n get sizeIcon(): string {\n if (this.eclThemeService.isECTheme()) {\n return this.ICON_SIZE_FOR_EC_THEME_ON;\n } else {\n return this.ICON_SIZE_FOR_EU_THEME_ON;\n }\n }\n\n /**\n * Handles click on the input container. Emits custom event with original DOM event.\n */\n onClick(evt: Event): void {\n this.mainInputClick.emit(new EclMultiselectMainInputClickEvent(evt));\n }\n\n /**\n * Handles keydown events on the input.\n * Only emits event on ArrowDown, Enter, or Space keys.\n */\n onKeydown(evt: KeyboardEvent): void {\n switch (evt.key) {\n case KeyCode.ARROW_DOWN:\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n {\n this.mainInputKeydown.emit(evt);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Focuses the multiselect input element.\n */\n onFocus(): void {\n this.renderer.selectRootElement(this.inputMultiselect().nativeElement, true).focus();\n }\n}\n","<div [class.ecl-select-multiple-selections-counter--visible]=\"isShowCounter()\"\n class=\"ecl-select-multiple-selections-counter\" [id]=\"counterId()\">\n <div class=\"ecl-select-multiple-selections-counter__label\">{{ counterLabel() | translate }}</div>\n <span>{{ selectedItemsCount() }}</span>\n</div>\n<button\n class=\"ecl-select ecl-select__multiple-toggle\"\n [class.ecl-select--active]=\"isActive()\"\n #inputMultiselect\n type=\"button\"\n [id]=\"toggleId()\"\n [attr.aria-expanded]=\"isDropdownExpanded()\"\n [attr.aria-controls]=\"ariaControls()\"\n [attr.disabled]=\"isDisabled() ? true : undefined\"\n [attr.aria-describedby]=\"ariaDescribedbyFull()\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onClick($event)\"> {{ buttonText() }}\n</button>\n<div class=\"ecl-select__icon\">\n <button eclButton isIconOnly variant=\"tertiary\" tabindex=\"-1\">\n <span eclButtonLabel>\n {{ toggleLabel() || 'ecl.multiselect.TOGGLE.DROPDOWN' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" [size]=\"sizeIcon\" transform=\"rotate-180\"></ecl-icon>\n </button>\n</div>\n","import {\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n booleanAttribute,\n inject,\n output,\n viewChild,\n} from '@angular/core';\nimport { EclCheckboxDirective, EUI_ECL_CHECKBOX } from '@eui/ecl/components/ecl-checkbox';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject } from 'rxjs';\nimport { BoldTextPipe } from '../boldText.pipe';\nimport {\n EclMultiselectOptionClickEvent,\n EclMultiselectOptionKeydownEvent,\n} from '../events/ecl-multiselect-option.event';\nimport { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\n\n/**\n * Component representing a single selectable option in the multiselect dropdown.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectOption]',\n templateUrl: './ecl-multiselect-option.component.html',\n imports: [BoldTextPipe, ...EUI_ECL_CHECKBOX],\n hostDirectives: [EclCheckboxDirective],\n})\nexport class EclMultiselectOptionComponent extends ECLBaseDirective implements EclMultiselectOption, OnChanges, OnDestroy, OnInit {\n\n readonly eclCheckboxInput = viewChild<ElementRef>('checkboxInput');\n\n keyword = '';\n\n @Input()\n set value(value: string) {\n this._value = value;\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Display label for the option.\n */\n @Input() label: string;\n\n changes = new Subject();\n\n /**\n * Disables the option when true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.ecl-checkbox--disabled')\n @HostBinding('attr.disabled')\n disabled = false;\n\n /**\n * Emits when the option is clicked.\n */\n readonly optionClick = output<EclMultiselectOptionClickEvent>();\n\n /**\n * Emits when a key is pressed while focused on the option.\n */\n readonly optionKeydown = output<EclMultiselectOptionKeydownEvent>();\n\n @HostBinding('style.display') protected display = 'flex';\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-checkbox')].join(' ').trim();\n }\n\n /**\n * Indicates whether the option is selected.\n */\n @Input()\n get isChecked(): boolean {\n return this._checked;\n }\n\n set isChecked(value: boolean) {\n this._checked = value;\n }\n\n private _id = '';\n private _checked = false;\n private _value = '';\n private renderer = inject(Renderer2);\n\n /**\n * Returns the unique identifier for the option.\n */\n get id(): string {\n return this._id;\n }\n\n /**\n * Indicates whether the option is active (visible and not disabled).\n */\n get isActive(): boolean {\n return this.display === 'flex' && !this.disabled;\n }\n\n ngOnChanges(): void {\n this.changes.next(this.label);\n }\n\n ngOnInit(): void {\n this._id = this.createId();\n }\n\n ngOnDestroy(): void {\n this.changes.complete();\n }\n\n /**\n * Toggles the selected state and emits the optionClick event.\n */\n onOptionClick(): void {\n this.isChecked = !this.isChecked;\n this.optionClick.emit(new EclMultiselectOptionClickEvent(this));\n }\n\n /**\n * Emits the optionKeydown event when a key is pressed.\n */\n onOptionKeydown(evt: KeyboardEvent): void {\n this.optionKeydown.emit(new EclMultiselectOptionKeydownEvent(this, evt));\n }\n\n /**\n * Focuses the checkbox input.\n */\n onFocus(): void {\n this.renderer.selectRootElement(this.eclCheckboxInput().nativeElement, true).focus();\n }\n\n /**\n * Makes the option visible.\n */\n show(): void {\n this.display = 'flex';\n }\n\n /**\n * Hides the option from view.\n */\n hide(): void {\n this.display = 'none';\n }\n\n /**\n * Sets the keyword for search highlighting.\n */\n highlightSearchText(keyword: string): void {\n this.keyword = keyword;\n const re = new RegExp(keyword, 'gi');\n const res = this.label.replace(re, '<b>$&</b>');\n }\n\n private createId(): string {\n return crypto.randomUUID();\n }\n}\n","<input\n eclCheckboxInput\n type=\"checkbox\"\n [id]=\"id\"\n [value]=\"value\"\n (click)=\"onOptionClick()\"\n (keydown)=\"onOptionKeydown($event)\"\n [checked]=\"isChecked\"\n [disabled]=\"disabled\"\n #checkboxInput />\n<label [for]=\"id\" eclCheckboxLabel><span [innerHTML]=\"label | boldText: keyword\"></span></label>\n","import { Component, HostBinding, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing an option group (fieldset) in a multiselect component.\n * Used to group related options under a common label.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fieldset[eclMultiselectOptgroup]',\n templateUrl: './ecl-multiselect-optgroup.component.html',\n})\nexport class EclMultiselectOptgroupComponent extends ECLBaseDirective {\n\n /**\n * The visible label for the option group.\n */\n readonly label = input<string>(undefined);\n\n /**\n * Returns the computed CSS classes for the optgroup container.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select__multiple-group')].join(' ').trim();\n }\n}\n","<legend class=\"ecl-select__multiple-group__title\">{{ label() }}</legend>\n<ng-content></ng-content>\n","import { booleanAttribute, Component, computed, DoCheck, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnDestroy, OnInit, Output, QueryList, Renderer2, signal, ViewChild, ViewChildren, AfterViewInit, inject, input, viewChild } from '@angular/core';\nimport { ControlValueAccessor, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMultiselectInputComponent } from '../ecl-multiselect-input/ecl-multiselect-input.component';\nimport { EclMultiselectOptionDirective } from '../ecl-multiselect-option.directive';\nimport { EclMultiselectOptionComponent } from '../ecl-multiselect-option/ecl-multiselect-option.component';\nimport { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\nimport { EclMultiselectMainInputClickEvent, EclMultiselectOptionClickEvent, EclMultiselectOptionKeydownEvent } from '../events';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclMultiselectOptgroupComponent } from '../ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nimport { EUI_ECL_CHECKBOX } from '@eui/ecl/components/ecl-checkbox';\n\n/**\n * Component that renders a dropdown-style multiselect UI element.\n * Used internally by the `EclMultiselectComponent`.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectDropdown]',\n templateUrl: 'ecl-multiselect-dropdown.component.html',\n imports: [\n ...EUI_ECL_BUTTON, EclMultiselectOptionComponent, EclMultiselectOptgroupComponent,\n EclMultiselectInputComponent, ...EUI_ECL_CHECKBOX, TranslatePipe,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclMultiselectDropdownComponent),\n multi: true,\n },\n ],\n host: {\n '(keyup.escape)': 'onEscapeKey()',\n '(document:click)': 'onKeyUp($event)',\n '[attr.disabled]': 'disabled || undefined',\n },\n})\nexport class EclMultiselectDropdownComponent extends ECLBaseDirective implements OnInit, ControlValueAccessor, DoCheck, OnDestroy, AfterViewInit {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n readonly eclMultiselectInput = viewChild<EclMultiselectInputComponent>('eclMultiselectInput');\n readonly selectAllCheckbox = viewChild<ElementRef>('selectAllCheckbox');\n readonly closeBtn = viewChild('closeBtn', { read: ElementRef });\n readonly clearAllBtn = viewChild('clearAllBtn', { read: ElementRef });\n @ViewChildren(EclMultiselectOptionComponent) multiOptionComponents: QueryList<EclMultiselectOptionComponent>;\n\n /**\n * Emits the list of selected values whenever the selection changes.\n */\n @Output() eclChange = new EventEmitter<string[]>();\n\n /**\n * Marks the component as visually invalid.\n */\n @Input({ transform: booleanAttribute })\n get isInvalid(): boolean | undefined {\n return this._isInvalid;\n }\n set isInvalid(value: boolean | undefined) {\n this._isInvalid = value;\n }\n\n /**\n * Adds the ECL base CSS class for multiselect dropdowns.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select__multiple')].join(' ').trim();\n }\n\n /**\n * Placeholder for the main multiselect input.\n */\n @Input() mainInputPlaceholder = 'Select an item';\n\n /**\n * Placeholder for the search field input.\n */\n readonly searchFieldPlaceholder = input('Enter filter keyword');\n\n /**\n * Size of the multiselect dropdown (e.g., 'm', 'l').\n */\n @Input() eclSize = 'm';\n\n /**\n * Disables the component when true.\n */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean | undefined {\n return this._disabled || undefined;\n }\n set disabled(value: boolean | undefined) {\n this._disabled = value;\n }\n\n /**\n * Optional ARIA description used for accessibility purposes.\n */\n ariaDescribedby: string | undefined = undefined;\n\n /**\n * Label displayed for the toggle button to assist screen readers.\n */\n toggleLabel: string | undefined = undefined;\n\n /**\n * Enables the search box in the dropdown interface.\n */\n hasSearchBox = true;\n\n /**\n * Displays the \"Select all\" checkbox above the list of options.\n */\n hasSelectAll = true;\n\n /**\n * When true, the Apply button acts as a submit button (type=\"submit\") instead of a regular button.\n */\n isSubmitOnApply = signal(false);\n\n /**\n * Label for the selections counter, read by screen readers.\n */\n counterLabel = 'ecl.multiselect.SELECTED';\n\n /**\n * Optional identifier used for the dropdown element.\n */\n id = '';\n\n /**\n * Indicates that the \"no results found\" message should be displayed.\n */\n isShowNoResultsFound = false;\n\n /**\n * Controls the visibility of the multiselect dropdown.\n */\n isShowMultiselectDropdown = false;\n\n /**\n * List of option directives currently rendered in the dropdown.\n */\n multiOptionDirectives: EclMultiselectOptionDirective[] = [];\n\n /**\n * Reactive form group managing internal form state.\n */\n form: FormGroup;\n\n /**\n * Total number of options available in the dropdown list.\n */\n optionsCount = 0;\n\n protected dropdownId = '';\n protected isSelectAllDisabled: boolean | null = null;\n protected selectAllId = '';\n protected toggleId = '';\n private _disabled = false;\n private _isInvalid = false;\n private _selectedItems = signal<EclMultiselectOption[]>([]);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private isWriteValueCalled = false;\n private values = [];\n private elRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n constructor() {\n super();\n }\n\n ngDoCheck(): void {\n this.optionsCount = this.getAvailableOptions() ? this.getAvailableOptions().length : 0;\n }\n\n ngOnInit(): void {\n this.selectAllId = this.getSelectAllId();\n this.dropdownId = this.getDropdownId();\n this.toggleId = this.getToggleId();\n setTimeout(() => {\n this.modifyParentLabelForAttribute();\n });\n }\n\n ngAfterViewInit(): void {\n this.multiOptionComponents.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isWriteValueCalled) {\n this.resetComponent();\n this.writeValues(this.values);\n this.isWriteValueCalled = false;\n } else {\n this.initSelectedOptions();\n }\n this.optionsCount = this.getAvailableOptions() ? this.getAvailableOptions().length : 0;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Writes a new value to the component from the outside (e.g., form model).\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public writeValue(values: any): void {\n if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {\n this.resetComponent();\n this.writeValues(values);\n } else {\n this.values = values;\n this.isWriteValueCalled = true;\n }\n }\n\n /**\n * Registers a callback function to be called when the value changes.\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the component is touched.\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnTouched(fn: any): void {\n this.propagateTouched = fn;\n }\n\n /**\n * Enables or disables the component.\n * Required by ControlValueAccessor.\n */\n public setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n }\n\n onEscapeKey(): void {\n this.hideMultiselectDropdown();\n this.eclMultiselectInput()?.onFocus();\n }\n\n onKeyUp(event: MouseEvent): void {\n if (!this.elRef.nativeElement.contains(event.target)) {\n this.hideMultiselectDropdown();\n }\n }\n\n /**\n * Gets labels of currently selected options.\n */\n selectedItems = computed(() => this._selectedItems().map((item) => item.label));\n\n /**\n * Indicates if any options are currently selected.\n */\n isItemsSelected = computed(() => this._selectedItems().length > 0);\n\n /**\n * Controls the visibility of the multiselect toolbar.\n * Always visible when isSubmitOnApply is true so the user can submit the form.\n */\n isShowToolbar = computed(() => this.isSubmitOnApply() || this._selectedItems().length > 0);\n\n initSelectedOptions(): void {\n const items: EclMultiselectOption[] = [];\n this.multiOptionComponents\n .filter((elem) => elem.isChecked)\n .forEach((item) => {\n items.push(item);\n });\n this._selectedItems.set(items);\n }\n\n onClickClearAll(evt: Event): void {\n evt.stopPropagation();\n this.unselectAllActiveOptions();\n this.eclChange.emit([]);\n this.propagateChange([]);\n }\n\n onEnterClear(evt: Event): void {\n this.onClickClearAll(evt);\n this.eclMultiselectInput()?.onFocus();\n }\n\n onClickClose(evt: Event): void {\n if (!this.isSubmitOnApply()) {\n evt.preventDefault();\n }\n this.hideMultiselectDropdown();\n }\n\n onArrowUpClose(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n currentOptions[currentOptions.length - 1].onFocus();\n }\n\n onArrowDownClose(evt: Event): void {\n evt.preventDefault();\n this.renderer.selectRootElement(this.clearAllBtn().nativeElement, true).focus();\n }\n\n onTabClose(evt: Event): void {\n if (!(evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.renderer.selectRootElement(this.clearAllBtn()?.nativeElement, true).focus();\n }\n }\n\n onArrowUpClear(evt: Event): void {\n evt.preventDefault();\n this.renderer.selectRootElement(this.closeBtn()?.nativeElement, true).focus();\n }\n\n onArrowDownClear(evt: Event): void {\n evt.preventDefault();\n this.eclMultiselectInput().onFocus();\n }\n\n onTabClear(evt: Event): void {\n if (!(evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n this.eclMultiselectInput().onFocus();\n }\n }\n\n onEnterSearch(evt: Event): void {\n evt.preventDefault();\n }\n\n onArrowDownSearch(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n if (this.hasSelectAll) {\n this.renderer.selectRootElement(this.selectAllCheckbox()?.nativeElement, true).focus();\n } else {\n currentOptions[0].onFocus();\n }\n }\n\n onArrowUpSearch(evt: Event): void {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n this.eclMultiselectInput().onFocus();\n }\n\n onKeydownMainInput(evt: Event): void {\n evt.preventDefault();\n this.showMultiselectDropdown();\n if (this.hasSearchBox) {\n setTimeout(() => this.renderer.selectRootElement(this.searchInput()?.nativeElement, true).focus());\n } else {\n this.onArrowDownSearch(evt);\n }\n }\n\n onClickMainInput(evt: EclMultiselectMainInputClickEvent): void {\n evt.event.preventDefault();\n this.toggleDropdown();\n }\n\n onArrowDownSelectAll(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n if (currentOptions.length > 0) {\n currentOptions[0].onFocus();\n }\n }\n\n onArrowUpSelectAll(evt: Event): void {\n evt.preventDefault();\n if (this.hasSearchBox) {\n this.renderer.selectRootElement(this.searchInput()?.nativeElement, true).focus();\n } else {\n this.onArrowUpSearch(evt);\n }\n }\n\n onEnterSelectAll(evt: Event): void {\n evt.preventDefault();\n (evt.target as HTMLInputElement).click();\n }\n\n /**\n * Handles search input, filters options, and updates their visibility.\n */\n onSearch(input: EventTarget): void {\n const keyword = (input as HTMLInputElement).value;\n let isMatchFound = false;\n if (keyword === '') {\n this.enableSelectAll();\n isMatchFound = true;\n this.multiOptionComponents.forEach((item) => {\n item.highlightSearchText('');\n item.show();\n });\n } else {\n this.multiOptionComponents.forEach((item) => {\n if (item.label.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {\n item.hide();\n } else {\n isMatchFound = true;\n item.highlightSearchText(keyword.toLowerCase());\n item.show();\n }\n });\n this.disableSelectAll();\n }\n if (!isMatchFound) {\n this.showNoResultsFound();\n } else {\n this.hideNoResultsFound();\n }\n }\n\n /**\n * Toggles all visible options based on the \"Select All\" checkbox.\n */\n onSelectAll(): void {\n if (this.selectAllCheckbox()?.nativeElement.checked) {\n this.selectAllActiveOptions();\n } else {\n this.unselectAllActiveOptions();\n }\n this.propagateTouched();\n this.eclChange.emit(this._selectedItems().map((item) => item.value));\n this.propagateChange(this._selectedItems().map((item) => item.value));\n }\n\n /**\n * Handles keyboard interaction on option items.\n * Supports arrow keys, tab, escape, and enter.\n */\n onKeydownOption(evt: EclMultiselectOptionKeydownEvent): void {\n switch (evt.keyboardEvent.key) {\n case KeyCode.ARROW_DOWN: {\n this.onArrowDownAndTabOption(evt.keyboardEvent, evt.multiselectOption);\n break;\n }\n case KeyCode.ARROW_UP: {\n this.onArrowUpOption(evt.keyboardEvent, evt.multiselectOption);\n break;\n }\n case KeyCode.ENTER: {\n (evt.keyboardEvent.target as HTMLInputElement).click();\n break;\n }\n case KeyCode.TAB: {\n if (!evt.keyboardEvent.shiftKey) {\n this.onArrowDownAndTabOption(evt.keyboardEvent, evt.multiselectOption);\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Triggered when a single option is clicked/selected.\n * Updates selected items, emits changes.\n */\n onOptionSelected(evt: EclMultiselectOptionClickEvent): void {\n const selectAllCheckbox = this.selectAllCheckbox();\n if (selectAllCheckbox && selectAllCheckbox.nativeElement.checked) {\n this.renderer.setProperty(selectAllCheckbox.nativeElement, 'checked', false);\n }\n const currOption = evt.multiselectOption;\n if (currOption.isChecked) {\n this._selectedItems.update((items) => [...items, currOption]);\n } else {\n this._selectedItems.update((items) => items.filter((item) => item !== currOption));\n }\n this.propagateChange(this._selectedItems().map((item) => item.value));\n this.propagateTouched();\n this.eclChange.emit(this._selectedItems().map((item) => item.value));\n }\n\n private selectAllActiveOptions(): void {\n const newItems: EclMultiselectOption[] = [...this._selectedItems()];\n this.getActiveOptions().forEach((item) => {\n if (!item.isChecked) {\n item.isChecked = true;\n newItems.push(item);\n }\n });\n this._selectedItems.set(newItems);\n }\n\n private unselectAllActiveOptions(): void {\n const selectAllCheckbox = this.selectAllCheckbox();\n if (selectAllCheckbox) {\n this.renderer.setProperty(selectAllCheckbox.nativeElement, 'checked', false);\n }\n this._selectedItems.set([]);\n this.getAvailableOptions().forEach((item) => {\n item.isChecked = false;\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private propagateChange = (_: any): void => {\n /* empty */\n };\n\n private propagateTouched = (): void => {\n /* empty */\n };\n\n private showMultiselectDropdown(): void {\n this.isShowMultiselectDropdown = true;\n }\n\n private hideMultiselectDropdown(): void {\n this.isShowMultiselectDropdown = false;\n }\n\n private disableSelectAll(): void {\n this.isSelectAllDisabled = true;\n }\n\n private enableSelectAll(): void {\n this.isSelectAllDisabled = null;\n }\n\n private showNoResultsFound(): void {\n this.isShowNoResultsFound = true;\n }\n\n private hideNoResultsFound(): void {\n this.isShowNoResultsFound = false;\n }\n\n private resetComponent(): void {\n this.multiOptionComponents.forEach((item) => {\n item.isChecked = false;\n });\n const selectAllCheckbox = this.selectAllCheckbox();\n if (selectAllCheckbox) {\n this.renderer.setProperty(selectAllCheckbox.nativeElement, 'checked', false);\n }\n this._selectedItems.set([]);\n }\n\n private writeValues(values: string[]): void {\n if (values) {\n const newItems: EclMultiselectOption[] = [...this._selectedItems()];\n if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {\n this.multiOptionComponents\n .filter((item) => values.includes(item.value) && !item.disabled)\n .forEach((el) => {\n el.isChecked = true;\n newItems.push(el);\n });\n }\n this._selectedItems.set(newItems);\n }\n }\n\n private toggleDropdown(): void {\n this.isShowMultiselectDropdown = !this.isShowMultiselectDropdown;\n }\n\n private onArrowDownAndTabOption(evt: KeyboardEvent, option: EclMultiselectOption): void {\n (evt as KeyboardEvent).preventDefault();\n const index = this.getOptionIndexByIdFromActiveOptions(option.id);\n const currentOptions = this.getActiveOptions();\n const closeBtn = this.closeBtn();\n if (index !== currentOptions.length - 1) {\n const nextSiblingCheckbox = currentOptions[index + 1];\n nextSiblingCheckbox.onFocus();\n } else if (closeBtn) {\n this.renderer.selectRootElement(closeBtn.nativeElement, true).focus();\n }\n }\n\n private onArrowUpOption(evt: KeyboardEvent, option: EclMultiselectOption): void {\n (evt as KeyboardEvent).preventDefault();\n const index = this.getOptionIndexByIdFromActiveOptions(option.id);\n const selectAllCheckbox = this.selectAllCheckbox();\n if (index !== 0) {\n const prevSiblingCheckbox = this.getActiveOptions()[index - 1];\n prevSiblingCheckbox.onFocus();\n } else if (!this.hasSelectAll || selectAllCheckbox.nativeElement.disabled) {\n if (this.hasSearchBox) {\n this.renderer.selectRootElement(this.searchInput()?.nativeElement, true).focus();\n } else {\n this.onArrowUpSearch(evt);\n }\n } else {\n this.renderer.selectRootElement(selectAllCheckbox.nativeElement, true).focus();\n }\n }\n\n private getActiveOptions(): EclMultiselectOptionComponent[] {\n return this.multiOptionComponents ? this.multiOptionComponents.filter((item) => item.isActive) : [];\n }\n\n private getAvailableOptions(): EclMultiselectOptionComponent[] {\n return this.multiOptionComponents ? this.multiOptionComponents.filter((item) => !item.disabled) : [];\n }\n\n private getOptionIndexByIdFromActiveOptions(id: string): number {\n return this.getActiveOptions().findIndex((option) => option.id === id);\n }\n\n private getSelectAllId(): string {\n return crypto.randomUUID();\n }\n\n private getDropdownId(): string {\n return this.id !== '' ? `${this.id}-dropdown` : crypto.randomUUID();\n }\n\n private getToggleId(): string {\n return this.id !== '' ? `${this.id}-toggle` : crypto.randomUUID();\n }\n\n private modifyParentLabelForAttribute(): void {\n const form = this.renderer.parentNode(this.elRef.nativeElement);\n const label = form?.querySelector('.ecl-form-label');\n if (label) {\n this.renderer.setAttribute(label, 'for', this.toggleId);\n }\n }\n}\n","<div eclMultiselectInput #eclMultiselectInput [inputPlaceholder]=\"mainInputPlaceholder\" [selectedItems]=\"selectedItems()\"\n (mainInputClick)=\"onClickMainInput($event)\" (mainInputKeydown)=\"onKeydownMainInput($event)\" [isDisabled]=\"disabled\"\n [ariaDescribedby]=\"ariaDescribedby\" [toggleLabel]=\"toggleLabel\" [ariaControls]=\"dropdownId\" [isInvalid]=\"isInvalid\"\n [isDropdownExpanded]=\"isShowMultiselectDropdown\" [eclSize]=\"eclSize\" [toggleId]=\"toggleId\" [counterLabel]=\"counterLabel\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\"\n [id]=\"dropdownId\">\n @if(hasSearchBox) {\n <input class=\"ecl-text-input\" type=\"search\" #searchInput [placeholder]=\"searchFieldPlaceholder()\"\n (input)=\"onSearch($event.target)\" (keydown.enter)=\"onEnterSearch($event)\" [attr.aria-label]=\"searchFieldPlaceholder\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\" (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n }\n @if(hasSelectAll) {\n <div eclCheckbox [isDisabled]=\"isSelectAllDisabled\" class=\"ecl-select__multiple-all\">\n <input eclCheckboxInput #selectAllCheckbox [id]=\"selectAllId\" type=\"checkbox\" [attr.disabled]=\"isSelectAllDisabled\"\n (click)=\"onSelectAll()\" (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" (keydown.enter)=\"onEnterSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }})\n </label>\n </div>\n }\n <div class=\"ecl-select__multiple-options\" aria-live=\"polite\">\n @for (item of multiOptionDirectives; track item.label()) {\n @if (item.isOptGroup()) {\n <fieldset eclMultiselectOptgroup [label]=\"item.label()\">\n @for (elem of item.eclOptionItems(); track elem.label()) {\n <div\n eclMultiselectOption\n [value]=\"elem.value()\"\n [label]=\"elem.label()\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n </fieldset>\n } @else if (!item.isOptGroup()) {\n <div\n eclMultiselectOption\n [value]=\"item.value()\"\n [label]=\"item.label()\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n }\n\n\n @if (isShowNoResultsFound) {\n <div class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n }\n\n </div>\n @if (isShowToolbar()) {\n <div class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n [type]=\"isSubmitOnApply() ? 'submit' : 'button'\"\n (keydown.arrowup)=\"onArrowUpClose($event)\"\n (keydown.arrowDown)=\"onArrowDownClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.APPLY' | translate }}\n </button>\n <button\n eclButton\n variant=\"tertiary\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpClear($event)\"\n (keydown.arrowDown)=\"onArrowDownClear($event)\"\n (keydown.tab)=\"onTabClear($event)\"\n (keydown.enter)=\"onEnterClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n </div>\n }\n</div>\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, HostBinding, Input, forwardRef, inject, input, contentChildren } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive used to decorate <option> and <optgroup> elements within a multiselect.\n * Adds support for value, label, disabled, selected states and styling.\n */\n@Directive({\n selector: 'optgroup[eclMultiselectOptgroup], option[eclMultiselectOption]',\n})\nexport class EclMultiselectOptionDirective extends ECLBaseDirective {\n\n /**\n * Nested option directives (used for optgroups).\n */\n readonly eclOptionItems = contentChildren(forwardRef(() => EclMultiselectOptionDirective));\n\n /**\n * Value assigned to the option.\n */\n readonly value = input<string>(undefined);\n\n /**\n * Label displayed for the option.\n */\n readonly label = input<string>(undefined);\n\n /**\n * Emits whenever the option's state changes (used internally).\n */\n changes = new Subject();\n\n /**\n * Indicates that the option is disabled.\n */\n @Input()\n @HostBinding('attr.disabled')\n get disabled(): boolean {\n return this._disabled || null;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n /**\n * Indicates that the option is selected.\n */\n @Input()\n @HostBinding('attr.selected')\n get selected(): boolean {\n return this._selected || null;\n }\n set selected(value) {\n this._selected = coerceBooleanProperty(value);\n }\n private _selected = false;\n private elRef = inject(ElementRef);\n\n /**\n * Applies ECL checkbox styling class to the option.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-checkbox')].join(' ').trim();\n }\n\n /**\n * Returns true if this directive is applied to an <optgroup> element.\n */\n isOptGroup(): boolean {\n return this.elRef.nativeElement.nodeName === 'OPTGROUP';\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, DoCheck, ElementRef, HostBinding, Injector, Input, IterableDiffer, IterableDiffers, OnDestroy, OnInit, PLATFORM_ID, Renderer2, ViewContainerRef, ViewEncapsulation, afterNextRender, booleanAttribute, forwardRef, inject, output, input, contentChildren } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMultiselectDropdownComponent } from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nimport { EclMultiselectOptionDirective } from './ecl-multiselect-option.directive';\n\n/**\n * Component representing a custom multiselect input using the ECL design system.\n *\n * Should be used on a native <select> element to enhance it with ECL multiselect behavior.\n * Replaces the original element with a custom dropdown rendered dynamically.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'select[eclMultiselect]',\n templateUrl: 'ecl-multiselect.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclMultiselectComponent),\n multi: true,\n },\n ],\n})\nexport class EclMultiselectComponent extends ECLBaseDirective implements DoCheck, OnInit, OnDestroy {\n injector = inject(Injector);\n\n /**\n * List of option directives projected into the component.\n */\n readonly eclOptionItems = contentChildren(forwardRef(() => EclMultiselectOptionDirective));\n\n /**\n * Defines the `aria-describedby` attribute for accessibility.\n */\n readonly ariaDescribedby = input<string | undefined>(undefined);\n\n /**\n * Sets the `id` attribute of the multiselect component.\n */\n readonly id = input<string | undefined>(undefined);\n\n /**\n * Label used for the toggle button that expands or collapses the dropdown.\n */\n readonly toggleLabel = input<string | undefined>(undefined);\n\n /**\n * Marks the multiselect as invalid.\n */\n @Input({ transform: booleanAttribute })\n get isInvalid(): boolean | undefined {\n return this._isInvalid;\n }\n set isInvalid(value: boolean | undefined) {\n this._isInvalid = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.isInvalid = value;\n }\n }\n\n /**\n * Disables the multiselect component when set to true.\n */\n @Input()\n @HostBinding('attr.disabled')\n set disabled(value: BooleanInput) {\n if (this.multiselectComponent) {\n this.multiselectComponent.disabled = coerceBooleanProperty(value);\n }\n this._disabled = coerceBooleanProperty(value);\n }\n get disabled(): boolean | undefined {\n return this._disabled || undefined;\n }\n\n /**\n * CSS classes applied to the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select')].join(' ').trim();\n }\n\n /**\n * Emits an array of selected option values when the selection changes.\n */\n readonly eclChange = output<string[]>();\n\n /**\n * Enables the search box within the dropdown.\n */\n @Input({ transform: booleanAttribute })\n set hasSearchBox(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.hasSearchBox = coerceBooleanProperty(value);\n }\n this._hasSearchBox = coerceBooleanProperty(value);\n }\n\n /**\n * Displays the \"Select all\" option in the dropdown.\n */\n @Input({ transform: booleanAttribute })\n set hasSelectAll(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.hasSelectAll = coerceBooleanProperty(value);\n }\n this._hasSelectAll = coerceBooleanProperty(value);\n }\n\n /**\n * When true, the Apply button in the dropdown acts as a submit button (type=\"submit\").\n */\n @Input({ transform: booleanAttribute })\n set isSubmitOnApply(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.isSubmitOnApply.set(coerceBooleanProperty(value));\n }\n this._isSubmitOnApply = coerceBooleanProperty(value);\n }\n\n /**\n * Placeholder text to show in the multiselect input field when no options are selected.\n */\n @Input()\n set eclPlaceholder(value: string) {\n this._eclPlaceholder = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.mainInputPlaceholder = value;\n }\n }\n get eclPlaceholder(): string {\n return this._eclPlaceholder;\n }\n\n /**\n * Multiselect size: 's' | 'm' | 'l'. Default is 'm'.\n */\n readonly eclSize = input('m');\n\n /**\n * Label for the selections counter, read by screen readers.\n * Accepts a translation key or plain text. Default: 'ecl.multiselect.SELECTED'.\n */\n @Input()\n set counterLabel(value: string) {\n this._counterLabel = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.counterLabel = value;\n }\n }\n\n private readonly SELECT_CONTAINER_CLASS = 'ecl-select__container';\n private readonly SELECT_CONTAINER_HIDDEN_CLASS = 'ecl-select__container--hidden';\n private _disabled = false;\n private _hasSelectAll = true;\n private _hasSearchBox = true;\n private _isSubmitOnApply = false;\n private _counterLabel = 'ecl.multiselect.SELECTED';\n private _isInvalid = false;\n private _eclPlaceholder = 'Select item';\n private differ: IterableDiffer<EclMultiselectOptionDirective>;\n private multiselectComponent: EclMultiselectDropdownComponent;\n private hostEl: HTMLSelectElement;\n private hostParentEl: HTMLElement;\n private hostWrapperEl: HTMLElement;\n private multiselectComponentHtml: HTMLDivElement;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private el = inject(ElementRef);\n private viewContainerRef = inject(ViewContainerRef);\n private differs = inject(IterableDiffers);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.attachOptions();\n if (this.hostParentEl != null) {\n this.hideOriginalSelectComponent();\n this.renderer.insertBefore(this.hostParentEl, this.multiselectComponentHtml, this.hostWrapperEl);\n this.setAriaLabelledBy();\n }\n });\n }\n\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclOptionItems());\n\n if (diff) {\n if (this.multiselectComponent) {\n this.multiselectComponent.multiOptionDirectives = Array.from(this.eclOptionItems());\n }\n }\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.hostEl = this.getHostElement();\n this.hostParentEl = this.getHostParentElement(this.hostEl);\n this.hostWrapperEl = this.createHostWrapperContainer();\n this.multiselectComponentHtml = this.createMultiselectComponent();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private hideOriginalSelectComponent(): void {\n this.hostParentEl.replaceChild(this.hostWrapperEl, this.hostEl);\n this.hostWrapperEl.appendChild(this.hostEl);\n this.renderer.addClass(this.hostWrapperEl, this.SELECT_CONTAINER_HIDDEN_CLASS);\n this.renderer.setAttribute(this.hostWrapperEl, 'tabindex', '-1');\n this.renderer.setAttribute(this.hostEl, 'tabindex', '-1');\n }\n\n private createHostWrapperContainer(): HTMLElement {\n const wrapperContainer = this.renderer.createElement('div');\n this.renderer.addClass(wrapperContainer, this.SELECT_CONTAINER_CLASS);\n this.renderer.addClass(wrapperContainer, `${this.SELECT_CONTAINER_CLASS}--${this.eclSize()}`);\n return wrapperContainer;\n }\n\n private getHostElement(): HTMLSelectElement {\n return this.el.nativeElement;\n }\n\n private getHostParentElement(hostEl: HTMLSelectElement): HTMLElement {\n return hostEl.parentElement;\n }\n\n private createMultiselectComponent(): HTMLDivElement {\n const ngControl = this.injector.get(NgControl, undefined, { optional: true });\n const multiselect = this.viewContainerRef.createComponent(EclMultiselectDropdownComponent);\n this.multiselectComponent = multiselect.instance;\n this.multiselectComponent.eclChange.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.eclChange.emit(evt);\n });\n this.multiselectComponent.mainInputPlaceholder = this.eclPlaceholder;\n\n const ariaDescribedby = this.ariaDescribedby();\n if (ariaDescribedby !== undefined) {\n this.multiselectComponent.ariaDescribedby = ariaDescribedby;\n }\n const toggleLabel = this.toggleLabel();\n if (toggleLabel !== undefined) {\n this.multiselectComponent.toggleLabel = toggleLabel;\n }\n const id = this.id();\n if (id !== undefined) {\n this.multiselectComponent.id = id;\n }\n this.multiselectComponent.eclSize = this.eclSize();\n if (ngControl) {\n ngControl.valueAccessor = this.multiselectComponent;\n }\n multiselect.instance.disabled = this.disabled;\n multiselect.instance.isInvalid = this.isInvalid;\n multiselect.instance.hasSearchBox = this._hasSearchBox;\n multiselect.instance.hasSelectAll = this._hasSelectAll;\n multiselect.instance.isSubmitOnApply.set(this._isSubmitOnApply);\n multiselect.instance.counterLabel = this._counterLabel;\n return (multiselect.location as ElementRef<HTMLDivElement>).nativeElement;\n }\n\n private setAriaLabelledBy(): void {\n const hostSelect: HTMLElement = this.el.nativeElement;\n const formGroup = hostSelect.closest('.ecl-form-group') as HTMLElement | null;\n if (!formGroup) return;\n\n const label = formGroup.querySelector('.ecl-form-label') as HTMLElement | null;\n if (!label) return;\n\n if (!label.id) {\n const newLabelId = `ecl-select-label-${crypto.randomUUID()}`;\n this.renderer.setAttribute(label, 'id', newLabelId);\n }\n\n if (!hostSelect.id) {\n const newSelectId = `ecl-select-input-${crypto.randomUUID()}`;\n this.renderer.setAttribute(hostSelect, 'id', newSelectId);\n }\n\n const labelledBy = `${label.id} ${hostSelect.id}`.trim();\n this.renderer.setAttribute(hostSelect, 'aria-labelledby', labelledBy);\n }\n\n private attachOptions(): void {\n setTimeout(() => {\n this.multiselectComponent.multiOptionDirectives = Array.from(this.eclOptionItems());\n });\n }\n}\n","<ng-content></ng-content>\n","import { BoldTextPipe } from './boldText.pipe';\nimport { EclMultiselectDropdownComponent } from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nimport { EclMultiselectInputComponent } from './ecl-multiselect-input/ecl-multiselect-input.component';\nimport { EclMultiselectOptgroupComponent } from './ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nimport { EclMultiselectOptionDirective } from './ecl-multiselect-option.directive';\nimport { EclMultiselectOptionComponent } from './ecl-multiselect-option/ecl-multiselect-option.component';\nimport { EclMultiselectComponent } from './ecl-multiselect.component';\n\nexport * from './ecl-multiselect.component';\nexport * from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nexport * from './ecl-multiselect-input/ecl-multiselect-input.component';\nexport * from './ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nexport * from './ecl-multiselect-option/ecl-multiselect-option.component';\nexport * from './ecl-multiselect-option.directive';\nexport * from './models/ecl-multiselect-option.model';\nexport * from './events/index';\nexport * from './boldText.pipe';\n\nexport const EUI_ECL_MULTISELECT = [\n EclMultiselectComponent,\n EclMultiselectOptionDirective,\n EclMultiselectOptionComponent,\n EclMultiselectInputComponent,\n EclMultiselectDropdownComponent,\n EclMultiselectOptgroupComponent,\n BoldTextPipe,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -322,6 +322,15 @@ class EclQuizComponent extends ECLBaseDirective {
|
|
|
322
322
|
this.cd = inject(ChangeDetectorRef);
|
|
323
323
|
this.eclRtlService = inject(EclRtlService);
|
|
324
324
|
this.destroy$ = new Subject();
|
|
325
|
+
/** Whether any snap point groups multiple slides. */
|
|
326
|
+
this.hasGroupedSlides = signal(false, /* @ts-ignore */
|
|
327
|
+
...(ngDevMode ? [{ debugName: "hasGroupedSlides" }] : /* istanbul ignore next */ []));
|
|
328
|
+
/** Total number of individual slides (cards). */
|
|
329
|
+
this.totalSlides = signal(0, /* @ts-ignore */
|
|
330
|
+
...(ngDevMode ? [{ debugName: "totalSlides" }] : /* istanbul ignore next */ []));
|
|
331
|
+
/** Number of visible slides per snap. */
|
|
332
|
+
this.slidesPerSnap = signal(1, /* @ts-ignore */
|
|
333
|
+
...(ngDevMode ? [{ debugName: "slidesPerSnap" }] : /* istanbul ignore next */ []));
|
|
325
334
|
}
|
|
326
335
|
get cssClasses() {
|
|
327
336
|
return [
|
|
@@ -333,6 +342,24 @@ class EclQuizComponent extends ECLBaseDirective {
|
|
|
333
342
|
.join(' ')
|
|
334
343
|
.trim();
|
|
335
344
|
}
|
|
345
|
+
/** Returns the aria-label for a dot button at the given snap index. */
|
|
346
|
+
getDotAriaLabel(dotIndex) {
|
|
347
|
+
const totalSlidesCount = this.totalSlides();
|
|
348
|
+
const totalSnapsCount = this.totalSnaps();
|
|
349
|
+
if (this.hasGroupedSlides()) {
|
|
350
|
+
const visibleSlides = totalSlidesCount - (totalSnapsCount - 1);
|
|
351
|
+
const start = dotIndex + 1;
|
|
352
|
+
const end = Math.min(dotIndex + visibleSlides, totalSlidesCount);
|
|
353
|
+
return {
|
|
354
|
+
key: 'ecl.quiz.GO-TO-SLIDES',
|
|
355
|
+
params: { start, end, total: totalSlidesCount },
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
key: 'ecl.quiz.GO-TO-SLIDE',
|
|
360
|
+
params: { current: dotIndex + 1, total: totalSlidesCount },
|
|
361
|
+
};
|
|
362
|
+
}
|
|
336
363
|
/** Returns an array of indices for dot rendering. */
|
|
337
364
|
getDotIndices() {
|
|
338
365
|
return Array.from({ length: this.totalSnaps() }, (_, i) => i);
|
|
@@ -429,15 +456,22 @@ class EclQuizComponent extends ECLBaseDirective {
|
|
|
429
456
|
if (!this.emblaApi) {
|
|
430
457
|
return;
|
|
431
458
|
}
|
|
459
|
+
// Array of scroll-progress values (0 to 1), one per snap point.
|
|
460
|
+
// Its length equals the number of positions the carousel can settle on (i.e. total dots).
|
|
432
461
|
const snapList = this.emblaApi.scrollSnapList();
|
|
433
462
|
const selectedSnap = this.emblaApi.selectedScrollSnap();
|
|
434
463
|
const canScrollPrev = this.emblaApi.canScrollPrev();
|
|
435
464
|
const canScrollNext = this.emblaApi.canScrollNext();
|
|
465
|
+
// Number of individual slide elements in the carousel
|
|
466
|
+
const slideCount = this.emblaApi.slideNodes().length;
|
|
436
467
|
this.totalSnaps.set(snapList.length);
|
|
437
468
|
this.activeIndex.set(selectedSnap);
|
|
438
469
|
this.prevDisabled.set(!canScrollPrev);
|
|
439
470
|
this.nextDisabled.set(!canScrollNext);
|
|
440
471
|
this.showControls.set(canScrollPrev || canScrollNext);
|
|
472
|
+
this.totalSlides.set(slideCount);
|
|
473
|
+
this.hasGroupedSlides.set(slideCount > snapList.length);
|
|
474
|
+
this.slidesPerSnap.set(snapList.length > 0 ? slideCount - (snapList.length - 1) : 1);
|
|
441
475
|
this.updateCounter();
|
|
442
476
|
}
|
|
443
477
|
/** Update the counter text (mobile). */
|
|
@@ -600,7 +634,7 @@ class EclQuizComponent extends ECLBaseDirective {
|
|
|
600
634
|
});
|
|
601
635
|
}
|
|
602
636
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclQuizComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
603
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclQuizComponent, isStandalone: true, selector: "section[eclQuiz]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, eclTitle: { classPropertyName: "eclTitle", publicName: "eclTitle", isSignal: true, isRequired: false, transformFunction: null }, eclDescription: { classPropertyName: "eclDescription", publicName: "eclDescription", isSignal: true, isRequired: false, transformFunction: null }, isFullWidth: { classPropertyName: "isFullWidth", publicName: "isFullWidth", isSignal: true, isRequired: false, transformFunction: null }, hasBackground: { classPropertyName: "hasBackground", publicName: "hasBackground", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "class": "cssClasses" } }, queries: [{ propertyName: "cards", predicate: i0.forwardRef(() => EclQuizCardComponent), descendants: true }], viewQueries: [{ propertyName: "emblaRef", first: true, predicate: EmblaCarouselDirective, descendants: true, isSignal: true }, { propertyName: "dotButtons", predicate: ["dotButton"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (eclTitle() || eclDescription()) {\n<div class=\"ecl-quiz__header\">\n @if (eclTitle()) {\n <div class=\"ecl-quiz__title\">{{ eclTitle() }}</div>\n }\n @if (eclDescription()) {\n <div class=\"ecl-quiz__description\">{{ eclDescription() }}</div>\n }\n</div>\n}\n\n<div class=\"ecl-quiz__viewport\" data-ecl-quiz-slider\n role=\"region\"\n aria-label=\"Quiz slider\"\n aria-roledescription=\"carousel\"\n emblaCarousel\n [options]=\"emblaOptions\"\n [subscribeToEvents]=\"subscribeToEvents\"\n (emblaChange)=\"onEmblaChange($event)\">\n \n <ng-content></ng-content>\n</div>\n\n@if (showControls()) {\n<div class=\"ecl-quiz__pager\">\n <button\n class=\"ecl-quiz__prev\"\n [disabled]=\"prevDisabled()\"\n (click)=\"onPrevClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-270\"></ecl-icon>\n <span class=\"ecl-quiz__prev-label\">\n {{ 'ecl.quiz.PREVIOUS' | translate }}\n </span>\n </button>\n\n <div class=\"ecl-quiz__dots\">\n @for (dotIndex of getDotIndices(); track dotIndex) {\n <button\n #dotButton\n class=\"ecl-quiz__dot\"\n [class.ecl-quiz__dot--active]=\"dotIndex === activeIndex()\"\n [class.is-prev]=\"dotIndex === activeIndex() - 1\"\n [attr.aria-label]=\"
|
|
637
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclQuizComponent, isStandalone: true, selector: "section[eclQuiz]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, eclTitle: { classPropertyName: "eclTitle", publicName: "eclTitle", isSignal: true, isRequired: false, transformFunction: null }, eclDescription: { classPropertyName: "eclDescription", publicName: "eclDescription", isSignal: true, isRequired: false, transformFunction: null }, isFullWidth: { classPropertyName: "isFullWidth", publicName: "isFullWidth", isSignal: true, isRequired: false, transformFunction: null }, hasBackground: { classPropertyName: "hasBackground", publicName: "hasBackground", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "class": "cssClasses" } }, queries: [{ propertyName: "cards", predicate: i0.forwardRef(() => EclQuizCardComponent), descendants: true }], viewQueries: [{ propertyName: "emblaRef", first: true, predicate: EmblaCarouselDirective, descendants: true, isSignal: true }, { propertyName: "dotButtons", predicate: ["dotButton"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (eclTitle() || eclDescription()) {\n<div class=\"ecl-quiz__header\">\n @if (eclTitle()) {\n <div class=\"ecl-quiz__title\">{{ eclTitle() }}</div>\n }\n @if (eclDescription()) {\n <div class=\"ecl-quiz__description\">{{ eclDescription() }}</div>\n }\n</div>\n}\n\n<div class=\"ecl-quiz__viewport\" data-ecl-quiz-slider\n role=\"region\"\n aria-label=\"Quiz slider\"\n aria-roledescription=\"carousel\"\n emblaCarousel\n [options]=\"emblaOptions\"\n [subscribeToEvents]=\"subscribeToEvents\"\n (emblaChange)=\"onEmblaChange($event)\">\n \n <ng-content></ng-content>\n</div>\n\n@if (showControls()) {\n<div class=\"ecl-quiz__pager\">\n <button\n class=\"ecl-quiz__prev\"\n [disabled]=\"prevDisabled()\"\n (click)=\"onPrevClick()\"\n [attr.aria-label]=\"'ecl.quiz.SHOW-PREV-SLIDE' | translate\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-270\"></ecl-icon>\n <span class=\"ecl-quiz__prev-label\">\n {{ 'ecl.quiz.PREVIOUS' | translate }}\n </span>\n </button>\n\n <div class=\"ecl-quiz__dots\">\n @for (dotIndex of getDotIndices(); track dotIndex) {\n <button\n #dotButton\n class=\"ecl-quiz__dot\"\n [class.ecl-quiz__dot--active]=\"dotIndex === activeIndex()\"\n [class.is-prev]=\"dotIndex === activeIndex() - 1\"\n [attr.aria-label]=\"getDotAriaLabel(dotIndex).key | translate: getDotAriaLabel(dotIndex).params\"\n (click)=\"goTo(dotIndex)\">\n </button>\n }\n </div>\n\n <button\n class=\"ecl-quiz__next\"\n [disabled]=\"nextDisabled()\"\n (click)=\"onNextClick()\"\n [attr.aria-label]=\"'ecl.quiz.SHOW-NEXT-SLIDE' | translate\">\n <span class=\"ecl-quiz__next-label\">\n {{ 'ecl.quiz.NEXT' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-90\"></ecl-icon>\n </button>\n</div>\n\n<div class=\"ecl-quiz__counter\">{{ counterText() }}</div>\n}\n\n", dependencies: [{ kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "directive", type: EmblaCarouselDirective, selector: "[emblaCarousel]", inputs: ["options", "plugins", "subscribeToEvents", "eventsThrottleTime"], outputs: ["emblaChange"], exportAs: ["emblaCarousel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
604
638
|
}
|
|
605
639
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclQuizComponent, decorators: [{
|
|
606
640
|
type: Component,
|
|
@@ -611,7 +645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
611
645
|
TranslatePipe,
|
|
612
646
|
EclIconComponent,
|
|
613
647
|
EmblaCarouselDirective,
|
|
614
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (eclTitle() || eclDescription()) {\n<div class=\"ecl-quiz__header\">\n @if (eclTitle()) {\n <div class=\"ecl-quiz__title\">{{ eclTitle() }}</div>\n }\n @if (eclDescription()) {\n <div class=\"ecl-quiz__description\">{{ eclDescription() }}</div>\n }\n</div>\n}\n\n<div class=\"ecl-quiz__viewport\" data-ecl-quiz-slider\n role=\"region\"\n aria-label=\"Quiz slider\"\n aria-roledescription=\"carousel\"\n emblaCarousel\n [options]=\"emblaOptions\"\n [subscribeToEvents]=\"subscribeToEvents\"\n (emblaChange)=\"onEmblaChange($event)\">\n \n <ng-content></ng-content>\n</div>\n\n@if (showControls()) {\n<div class=\"ecl-quiz__pager\">\n <button\n class=\"ecl-quiz__prev\"\n [disabled]=\"prevDisabled()\"\n (click)=\"onPrevClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-270\"></ecl-icon>\n <span class=\"ecl-quiz__prev-label\">\n {{ 'ecl.quiz.PREVIOUS' | translate }}\n </span>\n </button>\n\n <div class=\"ecl-quiz__dots\">\n @for (dotIndex of getDotIndices(); track dotIndex) {\n <button\n #dotButton\n class=\"ecl-quiz__dot\"\n [class.ecl-quiz__dot--active]=\"dotIndex === activeIndex()\"\n [class.is-prev]=\"dotIndex === activeIndex() - 1\"\n [attr.aria-label]=\"
|
|
648
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (eclTitle() || eclDescription()) {\n<div class=\"ecl-quiz__header\">\n @if (eclTitle()) {\n <div class=\"ecl-quiz__title\">{{ eclTitle() }}</div>\n }\n @if (eclDescription()) {\n <div class=\"ecl-quiz__description\">{{ eclDescription() }}</div>\n }\n</div>\n}\n\n<div class=\"ecl-quiz__viewport\" data-ecl-quiz-slider\n role=\"region\"\n aria-label=\"Quiz slider\"\n aria-roledescription=\"carousel\"\n emblaCarousel\n [options]=\"emblaOptions\"\n [subscribeToEvents]=\"subscribeToEvents\"\n (emblaChange)=\"onEmblaChange($event)\">\n \n <ng-content></ng-content>\n</div>\n\n@if (showControls()) {\n<div class=\"ecl-quiz__pager\">\n <button\n class=\"ecl-quiz__prev\"\n [disabled]=\"prevDisabled()\"\n (click)=\"onPrevClick()\"\n [attr.aria-label]=\"'ecl.quiz.SHOW-PREV-SLIDE' | translate\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-270\"></ecl-icon>\n <span class=\"ecl-quiz__prev-label\">\n {{ 'ecl.quiz.PREVIOUS' | translate }}\n </span>\n </button>\n\n <div class=\"ecl-quiz__dots\">\n @for (dotIndex of getDotIndices(); track dotIndex) {\n <button\n #dotButton\n class=\"ecl-quiz__dot\"\n [class.ecl-quiz__dot--active]=\"dotIndex === activeIndex()\"\n [class.is-prev]=\"dotIndex === activeIndex() - 1\"\n [attr.aria-label]=\"getDotAriaLabel(dotIndex).key | translate: getDotAriaLabel(dotIndex).params\"\n (click)=\"goTo(dotIndex)\">\n </button>\n }\n </div>\n\n <button\n class=\"ecl-quiz__next\"\n [disabled]=\"nextDisabled()\"\n (click)=\"onNextClick()\"\n [attr.aria-label]=\"'ecl.quiz.SHOW-NEXT-SLIDE' | translate\">\n <span class=\"ecl-quiz__next-label\">\n {{ 'ecl.quiz.NEXT' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-90\"></ecl-icon>\n </button>\n</div>\n\n<div class=\"ecl-quiz__counter\">{{ counterText() }}</div>\n}\n\n" }]
|
|
615
649
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], eclTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "eclTitle", required: false }] }], eclDescription: [{ type: i0.Input, args: [{ isSignal: true, alias: "eclDescription", required: false }] }], isFullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFullWidth", required: false }] }], hasBackground: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackground", required: false }] }], cards: [{
|
|
616
650
|
type: ContentChildren,
|
|
617
651
|
args: [forwardRef(() => EclQuizCardComponent), { descendants: true }]
|