@fundamental-ngx/platform 0.63.0-rc.20 → 0.63.0-rc.21
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/fesm2022/fundamental-ngx-platform-form.mjs +8 -6
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/types/fundamental-ngx-platform-form.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-search-field.mjs","sources":["../../../../libs/platform/search-field/search-field-mobile/search-field-mobile.interface.ts","../../../../libs/platform/search-field/search-field-mobile/search-field/search-field-mobile.component.ts","../../../../libs/platform/search-field/search-field-mobile/search-field/search-field-mobile.component.html","../../../../libs/platform/search-field/search-field.component.ts","../../../../libs/platform/search-field/search-field.component.html","../../../../libs/platform/search-field/search-field.module.ts","../../../../libs/platform/search-field/fundamental-ngx-platform-search-field.ts"],"sourcesContent":["import { InjectionToken, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const SEARCH_FIELD_COMPONENT = new InjectionToken<string[]>('SearchFieldMobileInterface');\n\nexport interface SearchFieldMobileInterface extends MobileMode {\n inputText: string;\n isOpenChange: Subject<boolean>;\n isOpen: boolean;\n\n dialogApprove(): void;\n dialogDismiss(): void;\n}\n\nexport interface SearchFieldChildContent {\n inputFieldTemplate: TemplateRef<any>;\n suggestionMenuTemplate: TemplateRef<any>;\n}\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarMiddleDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n SEARCH_FIELD_COMPONENT,\n SearchFieldChildContent,\n SearchFieldMobileInterface\n} from '../search-field-mobile.interface';\n\n@Component({\n selector: 'fdp-search-field-mobile',\n templateUrl: 'search-field-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n .fdp-search-field__mobile-dialog-header .fd-select__text-content {\n display: none;\n }\n `\n ],\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarMiddleDirective,\n BarElementDirective,\n NgTemplateOutlet,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n ButtonComponent,\n FdTranslatePipe,\n DialogCloseButtonComponent\n ]\n})\nexport class SearchFieldMobileComponent extends MobileModeBase<SearchFieldMobileInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n /** @hidden */\n childContent: SearchFieldChildContent | null = null;\n /** @hidden */\n _inShellbar = false;\n\n /** @hidden */\n constructor(@Inject(SEARCH_FIELD_COMPONENT) searchFieldComponent: SearchFieldMobileInterface) {\n super(searchFieldComponent, MobileModeControl.SEARCH_FIELD);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.listenChanges();\n }\n\n /** @hidden */\n listenChanges(): void {\n outputToObservable(this._component.isOpenChange)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => {\n if (!isOpen) {\n this._handleDismiss();\n\n return;\n }\n\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n });\n }\n\n /** @hidden */\n _handleDismiss(): void {\n this.dialogRef.close();\n this._component.dialogDismiss();\n }\n\n /** @hidden */\n _handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n container: 'body',\n minWidth: '100vw',\n minHeight: '100vh'\n });\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header [inShellbar]=\"_inShellbar\" class=\"fdp-search-field__mobile-dialog-header\">\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\" class=\"fdp-search-field__mobile-bar-element\">\n @if (childContent?.inputFieldTemplate) {\n <ng-template [ngTemplateOutlet]=\"childContent?.inputFieldTemplate!\"></ng-template>\n }\n @if (_inShellbar) {\n <button\n fd-button\n fdType=\"transparent\"\n (click)=\"_handleDismiss()\"\n [label]=\"('platformSearchField.cancelLabel' | fdTranslate)()\"\n ></button>\n } @else if (mobileConfig.hasCloseButton) {\n <button\n fd-dialog-close-button\n fdkInitialFocus\n [mobile]=\"true\"\n (click)=\"_handleDismiss()\"\n ></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @if (childContent?.suggestionMenuTemplate) {\n <ng-template [ngTemplateOutlet]=\"childContent?.suggestionMenuTemplate!\"></ng-template>\n }\n </fd-dialog-body>\n @if (mobileConfig.approveButtonText) {\n <fd-dialog-footer>\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"_handleApprove()\">\n </fd-button-bar>\n </fd-dialog-footer>\n }\n </fd-dialog>\n</ng-template>\n","import { CdkTrapFocus, FocusableOption, FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n model,\n OnDestroy,\n OnInit,\n output,\n Pipe,\n PipeTransform,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { isObservable, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport {\n AutoCompleteDirective,\n AutoCompleteEvent,\n ClickedDirective,\n destroyObservable,\n DynamicComponentService,\n KeyUtil,\n SearchHighlightPipe\n} from '@fundamental-ngx/cdk/utils';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { InfoLabelComponent } from '@fundamental-ngx/core/info-label';\nimport { ListComponent, ListItemComponent, ListModule } from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverComponent, PopoverModule } from '@fundamental-ngx/core/popover';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { Appearance, SearchComponent } from '@fundamental-ngx/core/shared';\nimport { FD_SHELLBAR_COMPONENT, FD_SHELLBAR_SEARCH_COMPONENT, Shellbar } from '@fundamental-ngx/core/shellbar';\nimport { TextComponent } from '@fundamental-ngx/core/text';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe, resolveTranslationSignalFn } from '@fundamental-ngx/i18n';\nimport { MenuComponent, MenuItemComponent, MenuTriggerDirective } from '@fundamental-ngx/platform/menu';\nimport { BaseComponent, SearchFieldDataSource } from '@fundamental-ngx/platform/shared';\nimport { SEARCH_FIELD_COMPONENT } from './search-field-mobile/search-field-mobile.interface';\nimport { SearchFieldMobileComponent } from './search-field-mobile/search-field/search-field-mobile.component';\n\nexport interface SearchInput {\n text: string;\n category: string | null;\n}\n\nexport interface SuggestionItem {\n value: string; // main text of the suggestion\n isHistorical?: string;\n data?: any;\n isGroupHeader?: boolean;\n children?: SuggestionItem[];\n searchInScopeText?: string;\n searchInScopeCounter?: number;\n searchInScopeCallback?: () => any;\n showMoreText?: string;\n showMoreCounter?: number;\n showMoreCallback?: () => any;\n}\n\nexport interface ValueLabelItem {\n value: string;\n label: string;\n}\n\nexport interface SearchResultsActionButton {\n glyph?: string;\n label?: string;\n id?: string;\n callback?: () => any;\n}\n\n@Directive({\n selector: '[fdpSearchFieldSuggestion]',\n host: {\n tabindex: '-1'\n },\n standalone: true\n})\nexport class SearchFieldSuggestionDirective implements FocusableOption {\n /** @hidden */\n constructor(public element: ElementRef) {}\n\n /** @hidden */\n focus(): void {\n this.element.nativeElement.focus();\n }\n}\n\nlet searchFieldIdCount = 0;\n\n@Component({\n selector: 'fdp-search-field',\n templateUrl: './search-field.component.html',\n styleUrl: './search-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n contentDensityObserverProviders(),\n {\n provide: FD_SHELLBAR_SEARCH_COMPONENT,\n useExisting: SearchFieldComponent\n }\n ],\n imports: [\n NgTemplateOutlet,\n MenuTriggerDirective,\n MenuComponent,\n MenuItemComponent,\n SelectComponent,\n OptionComponent,\n FormsModule,\n IconComponent,\n NgClass,\n SearchFieldSuggestionDirective,\n SearchHighlightPipe,\n FdTranslatePipe,\n PopoverModule,\n BarModule,\n TitleComponent,\n TextComponent,\n ListModule,\n InfoLabelComponent,\n ClickedDirective,\n AvatarComponent,\n ButtonComponent,\n AutoCompleteDirective,\n BusyIndicatorComponent,\n CdkTrapFocus,\n forwardRef(() => SuggestionMatchesPipe)\n ]\n})\nexport class SearchFieldComponent extends BaseComponent implements OnInit, OnDestroy, SearchComponent {\n /** Input change event. */\n readonly inputChange = output<SearchInput>();\n\n /** Search submit event. */\n readonly searchSubmit = output<SearchInput>();\n\n /** Cancel search event. */\n readonly cancelSearch = output<SearchInput>();\n\n /** Open mobile mode event. */\n readonly isOpenChange = output<boolean>();\n\n /** Event emitted when the advanced filter button is clicked. */\n readonly advancedFilterButtonClick = output<void>();\n\n /** @hidden */\n readonly categoryDropdown = viewChild<PopoverComponent>('categoryDropdown');\n\n /** @hidden */\n readonly categorySelectComponent = viewChild<SelectComponent>('categorySelectComponent');\n\n /** @hidden */\n readonly inputGroup = viewChild<ElementRef<HTMLElement>>('inputGroup');\n\n /** @hidden */\n readonly inputField = viewChild.required<ElementRef<HTMLElement>>('inputField');\n\n /** @hidden */\n readonly inputFieldTemplate = viewChild<TemplateRef<any>>('inputFieldTemplate');\n\n /** @hidden */\n readonly suggestionMenuTemplate = viewChild<TemplateRef<any>>('suggestionMenuTemplate');\n\n /** @hidden */\n readonly suggestionList = viewChild<ListComponent>('suggestionList');\n\n /** @hidden */\n readonly suggestionItems = viewChildren(SearchFieldSuggestionDirective);\n\n /** @hidden */\n readonly listItems = viewChildren(ListItemComponent);\n\n /** Type of component used to render the categories dropdown. */\n readonly categoryMode = model<'menu' | 'select'>('menu');\n\n /** Additional appearance configuration. */\n readonly appearance = model<Appearance>();\n\n /** Placeholder text for search input field. */\n readonly placeholder = input<string>('');\n\n /** Set Mobile Mode */\n readonly mobile = input(false, { transform: booleanAttribute });\n\n /** Search Field Mobile configuration */\n readonly mobileConfig = input<MobileModeConfig | undefined>(undefined);\n\n /** Whether display Refresh button */\n readonly disableRefresh = model<boolean>(false);\n\n /** Whether display search button */\n readonly disableSearch = input(false, { transform: booleanAttribute });\n\n /** List of string values to populate suggestion dropdown selection. */\n readonly suggestions = input<SuggestionItem[] | Observable<SuggestionItem[]>>([]);\n\n /** Datasource for suggestion list */\n readonly dataSource = input<SearchFieldDataSource<any> | undefined>(undefined);\n\n /** Initial input text. */\n readonly inputText = model<string>('');\n\n /** List of categories. */\n readonly categories = input<ValueLabelItem[]>([]);\n\n /** Current category, value should be present in categories array */\n readonly currentCategory = input<ValueLabelItem | undefined>(undefined);\n\n /** Set label for category dropdown button. */\n readonly categoryLabel = input<string>('Category');\n\n /** Hide display of category label */\n readonly hideCategoryLabel = input(false, { transform: booleanAttribute });\n\n /** Toggle \"loading\" mode. */\n readonly isLoading = input(false, { transform: booleanAttribute });\n\n /** Whether to always show search button. */\n readonly forceSearchButton = model<boolean>(false);\n\n /** Whether to disable the \"suggestions found\" live announcer. */\n readonly disableSuggestionsFoundAnnouncer = input(false, { transform: booleanAttribute });\n\n /** Whether to show the \"All\" option in the category select. */\n readonly showCategoryAllOption = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n get searchFieldValue(): SearchInput {\n return {\n text: this.inputText(),\n category: this._currentCategory()?.value || null\n };\n }\n\n /** Title of the initial suggestion, if a suggestion list is displayed. */\n readonly initialSuggestionTitle = input<string>('');\n\n /** Subline of the initial suggestion, if a suggestion list is displayed. */\n readonly initialSuggestionSubline = input<string>('');\n\n /** Title of the initial suggestion if the user has entered some text and there are no results to display, and an initial suggestion title should be shown. */\n readonly initialSuggestionEmptyTitle = input<string>('');\n\n /** Title of the initial suggestion if the user has entered some text and there are no results to display, and an initial suggestion subline should be shown. */\n readonly initialSuggestionEmptySubline = input<string>('');\n\n /** Subline of the initial suggestion, if a suggestion list is displayed. */\n readonly suggestionFooter = input<TemplateRef<any> | null>(null);\n\n /** Template to display when the search results list has no items to display. */\n readonly searchResultsEmptyTemplate = input<TemplateRef<any> | null>(null);\n\n /** Options to display when the user has entered a string into the input that returns no results. */\n readonly searchResultsEmptyDefaultSuggestions = input<SuggestionItem[] | null>(null);\n\n /** Whether to show the advanced filter button, which emits the event `advancedFilterButtonClick`. If this input is set to true, it will override any other category button settings. */\n readonly showAdvancedFilter = input<boolean>(false);\n\n /** Whether to allow empty searches when using a data source, meaning all results will be displayed when the search input is empty. */\n readonly allowEmptySearch = input<boolean>(false);\n\n /** Whether to display a suggestion item as selected after it has been clicked. */\n readonly enableSelection = input<boolean>(false);\n\n /** Whether to display the busy indicator over the suggestion list. */\n readonly suggestionsLoading = input<boolean>(false);\n\n /** Title for the busy indicator. */\n readonly busyIndicatorTitle = input<string>('');\n\n /** Aria value text for the busy indicator. */\n readonly busyIndicatorAriaValueText = input<string>('');\n\n /** @hidden Focus state */\n _isFocused = signal(false);\n\n /**\n * Signal list of suggestion items to populate dropdown menu.\n * @hidden\n */\n dropdownValues = signal<SuggestionItem[]>([]);\n\n /**\n * Currently set category.\n * @hidden\n */\n _currentCategory = signal<ValueLabelItem | null | undefined>(undefined);\n\n /**\n * Whether or not to show category dropdown. This is dependent on length of `categoryValues` property.\n * @hidden\n */\n _showCategoryDropdown = false;\n\n /** @hidden */\n _inputId = '';\n\n /** @hidden */\n _submitId = '';\n\n /** @hidden */\n _menuId = '';\n\n /** @hidden */\n _refreshId = '';\n\n /** @hidden */\n _clearId = '';\n\n /** @hidden */\n _popoverHeaderId = '';\n\n /** @hidden */\n _popoverBodyId = signal('');\n\n /** @hidden */\n isOpen = false;\n\n /** @hidden */\n _isRefresh = false;\n\n /** @hidden */\n _isSearchDone = false;\n\n /** @hidden */\n _isSuggestionMenuOpen = signal(false);\n\n /** @hidden */\n autoCompleteSuggestions: SuggestionItem[] = [];\n\n /** @hidden */\n _selectedSuggestionItem: SuggestionItem | null;\n\n /** @hidden */\n _autoCompleteMostRecentSuggestionItem: SuggestionItem;\n\n /** @hidden */\n _selectedSuggestionItemId = signal('');\n\n /** @hidden */\n _categorySelectDescription = signal('');\n\n /** @hidden */\n _actionButtonTabIndex = signal<-1 | 0>(-1);\n\n /** @hidden */\n protected readonly contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n protected readonly _shellbar: Shellbar | null = inject(FD_SHELLBAR_COMPONENT, { optional: true });\n\n /** @hidden */\n private _currentSearchSuggestionAnnouncementMessage = '';\n\n /** @hidden */\n private _suggestionkeyManager: FocusKeyManager<SearchFieldSuggestionDirective>;\n\n /** @hidden */\n private resolveTranslation = resolveTranslationSignalFn();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _dataSourceChanged$ = new Subject<void>();\n\n /** @hidden */\n private _mobileComponent: ComponentRef<SearchFieldMobileComponent>;\n\n /** @hidden */\n private _suggestionsSubscription: Subscription;\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n private readonly _liveAnnouncer: LiveAnnouncer,\n readonly _dynamicComponentService: DynamicComponentService\n ) {\n super();\n\n // Effect to handle suggestions changes\n effect(() => {\n const suggestionsValue = this.suggestions();\n if (Array.isArray(suggestionsValue)) {\n this.dropdownValues.set(suggestionsValue);\n } else if (isObservable(suggestionsValue)) {\n if (!this._suggestionsSubscription) {\n this._suggestionsSubscription = suggestionsValue\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((values) => {\n this.dropdownValues.set(values);\n });\n }\n } else {\n this.dropdownValues.set([]);\n }\n });\n\n // Effect to handle dataSource changes\n effect(() => {\n const ds = this.dataSource();\n if (ds) {\n this._initializeDataSource(ds);\n }\n });\n\n // Effect to handle categories changes\n effect(() => {\n const cats = this.categories();\n this._showCategoryDropdown = Array.isArray(cats) && cats.length > 0;\n });\n\n // Effect to handle currentCategory changes\n effect(() => {\n const currentCat = this.currentCategory();\n if (currentCat) {\n this.setCurrentCategory(currentCat);\n }\n });\n\n // Effect to handle mobile changes - only setup when actually needed\n effect(() => {\n const isMobile = this.mobile();\n if (isMobile) {\n // Defer to next tick to avoid running during construction\n queueMicrotask(() => {\n this._setUpMobileMode();\n });\n }\n });\n\n // Watch for changes to suggestionItems using an effect\n // Use afterNextRender to ensure view is initialized\n effect(() => {\n const items = this.suggestionItems();\n // Use queueMicrotask to defer execution after view initialization\n queueMicrotask(() => {\n if (items.length > 0) {\n this._resetKeyManager();\n }\n });\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n const baseId = 'fdp-search-field';\n this._inputId = `${baseId}-input-${searchFieldIdCount++}`;\n this._submitId = `${baseId}-submit-${searchFieldIdCount++}`;\n this._menuId = `${baseId}-menu-${searchFieldIdCount++}`;\n this._popoverHeaderId = `${baseId}-popover-header-${searchFieldIdCount++}`;\n this._popoverBodyId.set(`${baseId}-popover-body-${searchFieldIdCount++}`);\n\n this._isRefresh = true;\n\n if (this.dataSource() && this._shellbar) {\n this.onValueChange(this.inputText());\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._suggestionsSubscription?.unsubscribe();\n this._mobileComponent?.destroy();\n this._suggestionkeyManager?.destroy();\n }\n\n /**\n * Focuses the search input field.\n */\n focus(): void {\n this.inputField().nativeElement.focus();\n this.detectChanges();\n }\n\n /** Capturing onKeydown of input element */\n onKeydown(event: KeyboardEvent): void {\n if (!event) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW])) {\n if (event.altKey && this.categories().length > 0) {\n this.closeSuggestionMenu(false);\n this.categoryDropdown()?.open();\n this.categorySelectComponent()?.open();\n } else if (this._suggestionkeyManager) {\n this._suggestionkeyManager.onKeydown(event);\n }\n } else if (KeyUtil.isKeyCode(event, [ESCAPE])) {\n this.closeSuggestionMenu(true);\n }\n }\n\n /**\n * Capturing value change in input text field of combobox.\n * @hidden\n */\n onValueChange(event: string): void {\n if (!event) {\n event = '';\n }\n // when search result not changed but input text is changed.\n // again need to announce the result, so clear this message.\n setTimeout(() => (this._currentSearchSuggestionAnnouncementMessage = ''));\n this._isSearchDone = false;\n this._isRefresh = false;\n\n if (this.mobile() && !this._mobileComponent?.instance?.dialogRef?.isOpen()) {\n this.openMobileMode();\n }\n\n this.inputChange.emit(this.searchFieldValue);\n const inputStr: string = event.trim();\n if (inputStr.length === 0) {\n this._selectedSuggestionItem = null;\n this._selectedSuggestionItemId.set('');\n if (!this.allowEmptySearch()) {\n this.closeSuggestionMenu();\n }\n }\n\n const ds = this.dataSource();\n if (ds) {\n const match = new Map();\n match.set('keyword', inputStr);\n match.set('category', this._currentCategory()?.value || null);\n\n ds.match(match);\n }\n\n if (!this.mobile() && this._getSuggestionsLength() > 0) {\n this.openSuggestionMenu();\n }\n\n this._updateSearchAnnouncementText();\n }\n\n /**\n * Capturing item selection from dropdown menu of combobox.\n * @hidden\n */\n onItemClick(event: SuggestionItem | string, suggestionListItem?: ListItemComponent): void {\n if (typeof event === 'string') {\n this.inputText.set(event);\n } else if (event?.value) {\n if (event.searchInScopeText || event.searchInScopeCounter) {\n if (event.searchInScopeCallback) {\n this._performButtonClick(null, event.searchInScopeCallback);\n }\n return;\n } else if (event.showMoreText) {\n if (event.showMoreCallback) {\n this._performButtonClick(null, event.showMoreCallback);\n }\n return;\n }\n this.inputText.set(event.value);\n this._selectedSuggestionItem = event;\n if (suggestionListItem?.id) {\n this._selectedSuggestionItemId.set(suggestionListItem.id);\n }\n }\n this.inputChange.emit(this.searchFieldValue);\n this.searchSubmit.emit(this.searchFieldValue);\n this.closeSuggestionMenu();\n if (this.mobile()) {\n this.showDialog(false);\n }\n this._isSearchDone = true;\n this.detectChanges();\n }\n\n /**\n * Callback function which gets executed on keyboard enter of input text field.\n * @hidden\n */\n onSearchSubmit(event?: Event): void {\n event?.preventDefault();\n\n if (this.isLoading()) {\n this.cancelSearch.emit(this.searchFieldValue);\n return;\n }\n\n this.searchSubmit.emit(this.searchFieldValue);\n\n this._isRefresh = true;\n\n if (this.inputText()) {\n this._isSearchDone = true;\n }\n\n this.closeSuggestionMenu(false);\n (this.inputField().nativeElement as HTMLInputElement).setSelectionRange(-1, -1);\n }\n\n /**\n * Sets current category.\n * @hidden\n */\n setCurrentCategory(currentCategory: ValueLabelItem | null): void {\n this._currentCategory.set(\n currentCategory &&\n this.categories().find(\n (category: ValueLabelItem) =>\n category.label === currentCategory.label && category.value === currentCategory.value\n )\n );\n\n if (this._isSuggestionMenuOpen()) {\n this.onValueChange(this.inputText());\n }\n this.inputChange.emit(this.searchFieldValue);\n }\n\n /**\n * Open suggestion menu\n */\n openSuggestionMenu(): void {\n this._isSuggestionMenuOpen.set(true);\n this._resetKeyManager();\n }\n\n /** @hidden */\n openMobileMode(): void {\n if (this._shellbar) {\n this._mobileComponent.instance._inShellbar = true;\n }\n this.showDialog(true);\n }\n\n /** @hidden */\n dialogApprove(): void {\n this.onItemClick(this.inputText());\n }\n\n /** @hidden */\n dialogDismiss(): void {\n this.showDialog(false);\n }\n\n /** @hidden */\n showDialog(isOpen: boolean): void {\n if (!isOpen) {\n this.closeSuggestionMenu();\n }\n if (this._mobileComponent?.instance?.dialogRef?.isOpen() !== isOpen) {\n this.isOpen = isOpen;\n\n this.isOpenChange.emit(isOpen);\n }\n }\n\n /** @hidden */\n closeSuggestionMenu(focus = true): void {\n if (focus) {\n this.focus();\n }\n this._isSuggestionMenuOpen.set(false);\n }\n\n /** Resets the current category to its initial state. */\n resetCategory(): void {\n this._currentCategory.set(undefined);\n const selectComp = this.categorySelectComponent();\n if (selectComp) {\n selectComp.value = undefined;\n }\n }\n\n /** @hidden */\n clearTextInput(): void {\n this.inputText.set('');\n this.detectChanges();\n this.inputChange.emit(this.searchFieldValue);\n this.cancelSearch.emit(this.searchFieldValue);\n\n this._selectedSuggestionItem = null;\n this._selectedSuggestionItemId.set('');\n\n this._isRefresh = true;\n this._isSearchDone = false;\n\n if (!this.allowEmptySearch()) {\n this.closeSuggestionMenu(false);\n } else {\n const ds = this.dataSource();\n if (ds) {\n const match = new Map();\n match.set('keyword', '');\n match.set('category', this._currentCategory()?.value || null);\n\n ds.match(match);\n }\n\n this.openSuggestionMenu();\n }\n this.focus();\n }\n\n /** @hidden Method that handles complete event from auto complete directive, setting the new value, and closing popover */\n handleAutoComplete(event: AutoCompleteEvent): void {\n if (this._inputValueMatchesFirstSuggestion()) {\n this.inputText.set(event.term);\n this._selectedSuggestionItem = this._autoCompleteMostRecentSuggestionItem;\n this.onValueChange(this.inputText());\n this.onSearchSubmit();\n if (event.forceClose && this.inputText()) {\n this.closeSuggestionMenu();\n }\n }\n }\n\n /** @hidden */\n _categorySelectClicked(event: MouseEvent): void {\n if (this.mobile() && !this._mobileComponent?.instance?.dialogRef?.isOpen()) {\n event.preventDefault();\n // event.stopImmediatePropagation();\n this.openMobileMode();\n }\n }\n\n /** @hidden */\n _handleInputTabKey(event: Event): void {\n if (this._inputValueMatchesFirstSuggestion()) {\n event.preventDefault();\n this.handleAutoComplete({ term: this.inputText(), forceClose: false });\n (this.inputField().nativeElement as HTMLInputElement).setSelectionRange(-1, -1);\n }\n }\n\n /** @hidden */\n _inputValueMatchesFirstSuggestion(): boolean {\n const inputEl = this.inputField().nativeElement as HTMLInputElement;\n const listItemsArray = this.listItems();\n const firstListItem = listItemsArray[0];\n return firstListItem?.listTitle && inputEl.value === firstListItem.listTitle.elRef.nativeElement.innerText;\n }\n\n /** @hidden */\n _focusActionButton(event: Event, suggestion: ListItemComponent): void {\n event.preventDefault();\n event.stopPropagation();\n const suggestionEl = suggestion.elementRef.nativeElement;\n const firstButton = suggestionEl.querySelector('.fd-button') as HTMLElement;\n if (firstButton) {\n if (document.activeElement === suggestionEl) {\n this._actionButtonTabIndex.set(0);\n firstButton.focus();\n }\n }\n }\n\n /** @hidden */\n _focusParentListItem(event: Event, suggestion: ListItemComponent): void {\n event.preventDefault();\n event.stopPropagation();\n this._actionButtonTabIndex.set(-1);\n suggestion.elementRef?.nativeElement?.focus();\n }\n\n /** @hidden */\n _initializeDataSource(dataSource: SearchFieldDataSource<any>): void {\n this._dataSourceChanged$.next();\n dataSource\n .open()\n .pipe(takeUntil(merge(destroyObservable(this._destroyRef), this._dataSourceChanged$)))\n .subscribe((data) => {\n this.dropdownValues.set(data);\n });\n }\n\n /** @hidden helper function needed by template */\n _isString(suggestion: string | object): boolean {\n return typeof suggestion === 'string';\n }\n\n /** @hidden */\n _performButtonClick(event: Event | null, callbackFn: (() => any) | undefined): void {\n if (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n if (callbackFn) {\n callbackFn();\n }\n }\n\n /** @hidden */\n _searchResultIsHoveredOrFocusedOrMobile(suggestion: ListItemComponent): boolean {\n const suggestionEl = suggestion.elementRef.nativeElement;\n return (\n (this.mobile() && this._selectedSuggestionItem === null) ||\n document.activeElement === suggestionEl ||\n suggestionEl.contains(document.activeElement) ||\n suggestionEl.matches(':hover')\n );\n }\n\n /** @hidden */\n _advancedFilterButtonClicked(): void {\n this.advancedFilterButtonClick.emit();\n }\n\n /** @hidden */\n _onlyHeadersFiltered(suggestions: (SuggestionItem | undefined)[]): boolean {\n let retVal = true;\n for (let i = 0; i < suggestions.length && retVal; i++) {\n if (!suggestions[i]?.data || !suggestions[i]?.data?.isHeader) {\n retVal = false;\n }\n }\n\n return retVal;\n }\n\n /** @hidden */\n _inputFocus(): void {\n this._isFocused.set(true);\n if (this._shellbar && this.allowEmptySearch()) {\n this.openSuggestionMenu();\n }\n }\n\n /** @hidden */\n _handlePopoverKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, ESCAPE)) {\n this.focus();\n }\n }\n\n /** @hidden */\n _autoCompleteDisplayFn = (event: SuggestionItem): string => {\n this._autoCompleteMostRecentSuggestionItem = event;\n return event.value;\n };\n\n /** @hidden */\n private _resetKeyManager(): void {\n const items = this.suggestionItems();\n if (items.length > 0) {\n const keyManagerParam = [...items].sort(\n (a, b) => this._getDomRowOrderIndex(a) - this._getDomRowOrderIndex(b)\n );\n this._suggestionkeyManager?.destroy();\n this._suggestionkeyManager = new FocusKeyManager(keyManagerParam);\n\n this._setAriaOwns();\n }\n }\n\n /** @hidden */\n private _getDomRowOrderIndex(row: SearchFieldSuggestionDirective): number {\n const suggestionListRef = this.suggestionList();\n if (!suggestionListRef) {\n return -1;\n }\n const listItems = this.listItems();\n return listItems.findIndex((item) => item.elementRef.nativeElement === row.element.nativeElement);\n }\n\n /**\n * @hidden return count for matching suggestion with input text\n * @returns number\n */\n private _getSuggestionsLength(): number {\n let count = 0;\n const suggestions = this.dropdownValues();\n this.autoCompleteSuggestions = [];\n\n suggestions?.forEach((suggestion) => {\n const textToCheck = typeof suggestion === 'string' ? suggestion : suggestion?.value;\n if (this.inputText() && textToCheck.toLowerCase().indexOf(this.inputText()?.trim()?.toLowerCase()) > -1) {\n count++;\n }\n if (!suggestion?.children && suggestion?.value) {\n this.autoCompleteSuggestions.push(suggestion);\n } else if (suggestion?.children?.length) {\n suggestion.children.forEach((child) => {\n this.autoCompleteSuggestions.push(child);\n });\n }\n });\n\n this._setAriaOwns();\n return count;\n }\n\n /** @hidden */\n private _setAriaOwns(): void {\n this.detectChanges();\n const suggestionListRef = this.suggestionList();\n const parentListEl = suggestionListRef?.elementRef.nativeElement;\n if (!parentListEl) {\n return;\n }\n\n // Use the already-queried listItems instead of querySelectorAll\n const listItems = this.listItems();\n const listItemsMap = new Map<HTMLElement, string>();\n\n // Build a map of parent lists to their child IDs\n listItems.forEach((item) => {\n const itemEl = item.elementRef.nativeElement;\n if (itemEl.classList.contains('fd-list__item--suggestion')) {\n const parentList = itemEl.closest('.fd-list') as HTMLElement;\n if (parentList) {\n const existing = listItemsMap.get(parentList) || '';\n listItemsMap.set(parentList, existing + itemEl.id + ' ');\n }\n }\n });\n\n // Set aria-owns on each parent list\n listItemsMap.forEach((childIds, list) => {\n list.setAttribute('aria-owns', childIds.trim());\n const headerEl = list.querySelector('.fd-suggestion-header') as HTMLElement;\n const headerText = headerEl?.innerText;\n if (headerText) {\n list.setAttribute('aria-label', headerText);\n }\n });\n }\n\n /** @hidden */\n private async _updateSearchAnnouncementText(): Promise<void> {\n // create search suggestion message with count.\n const suggestionCount = this._getSuggestionsLength();\n const searchSuggestionMessage = this.resolveTranslation('platformSearchField.searchSuggestionMessage', {\n count: suggestionCount\n })();\n const searchSuggestionNavigateMessage = this.resolveTranslation(\n 'platformSearchField.searchSuggestionNavigateMessage'\n )();\n this._currentSearchSuggestionAnnouncementMessage =\n searchSuggestionMessage + (suggestionCount > 0 ? searchSuggestionNavigateMessage : '');\n if (this.inputText()?.length > 0) {\n await this._liveAnnouncer.announce(this._currentSearchSuggestionAnnouncementMessage);\n }\n }\n\n /** @hidden */\n private _setUpMobileMode(): void {\n if (this._mobileComponent) {\n this._mobileComponent.destroy();\n }\n\n const injector = Injector.create({\n providers: [{ provide: SEARCH_FIELD_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._mobileComponent = this._dynamicComponentService.createDynamicComponent(\n {\n inputFieldTemplate: this.inputFieldTemplate(),\n suggestionMenuTemplate: this.suggestionMenuTemplate()\n },\n SearchFieldMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n {\n injector\n }\n );\n }\n}\n\n@Pipe({\n name: 'suggestionMatches',\n standalone: true\n})\nexport class SuggestionMatchesPipe implements PipeTransform {\n /** @hidden */\n transform(suggestions: SuggestionItem[] | null | undefined, match: string): (SuggestionItem | undefined)[] {\n if (!suggestions) {\n suggestions = [];\n }\n if (!match) {\n match = '';\n }\n const processedMatch = match.trim().toLowerCase();\n return suggestions.filter((suggestion) => {\n const textToCheck = typeof suggestion === 'string' ? suggestion : suggestion.value;\n return textToCheck.toLowerCase().indexOf(processedMatch) > -1 || suggestion.isGroupHeader;\n });\n }\n}\n","@let suggestionsFiltered = dropdownValues() | suggestionMatches: inputText();\n<ng-template [ngTemplateOutlet]=\"mobile() ? mobileTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [focusAutoCapture]=\"false\"\n [isOpen]=\"_isSuggestionMenuOpen()\"\n (isOpenChange)=\"_isSuggestionMenuOpen.set($event)\"\n [triggers]=\"[]\"\n fillControlMode=\"equal\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"inputFieldTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body\n (keydown)=\"_handlePopoverKeydown($event)\"\n [style.display]=\"\n suggestionsFiltered.length > 0 ||\n initialSuggestionTitle() ||\n suggestionFooter() ||\n searchResultsEmptyTemplate() ||\n searchResultsEmptyDefaultSuggestions()?.length\n ? 'inherit'\n : 'none'\n \"\n [attr.aria-label]=\"('platformSearchField.suggestionsWrapperAriaLabel' | fdTranslate)()\"\n aria-modal=\"false\"\n [attr.aria-describedby]=\"_popoverHeaderId + ' ' + _menuId + ' ' + _selectedSuggestionItemId()\"\n [attr.id]=\"_popoverBodyId()\"\n >\n <fd-busy-indicator\n [block]=\"true\"\n [loading]=\"suggestionsLoading()\"\n [title]=\"suggestionsLoading() ? busyIndicatorTitle() : undefined\"\n [ariaValueText]=\"busyIndicatorAriaValueText()\"\n >\n @if (\n initialSuggestionTitle()!.length > 0 &&\n suggestionsFiltered.length > 0 &&\n !_selectedSuggestionItem &&\n !inputText()\n ) {\n <div fd-popover-body-header>\n <div\n fd-bar\n [initialSuggestionTitle]=\"true\"\n [barDesign]=\"initialSuggestionSubline() ? 'header-with-subheader' : 'header'\"\n [attr.id]=\"_popoverHeaderId\"\n >\n <div fd-bar-left>\n <span fd-title [twoLineClamp]=\"true\" [headerSize]=\"6\">\n {{ initialSuggestionTitle() }}\n </span>\n </div>\n </div>\n @if (initialSuggestionSubline()) {\n <div fd-bar [initialSuggestionSubline]=\"true\" barDesign=\"subheader\">\n <div fd-bar-left>\n <fd-text [subline]=\"true\" [text]=\"initialSuggestionSubline()\"></fd-text>\n </div>\n </div>\n }\n </div>\n } @else if (initialSuggestionEmptyTitle()!.length > 0 && suggestionsFiltered.length === 0) {\n <div fd-popover-body-header>\n <div\n fd-bar\n [initialSuggestionTitle]=\"true\"\n [barDesign]=\"initialSuggestionEmptySubline() ? 'header-with-subheader' : 'header'\"\n >\n <div fd-bar-left>\n <span fd-title [twoLineClamp]=\"true\" [headerSize]=\"6\">\n {{ initialSuggestionEmptyTitle() }}\n </span>\n </div>\n </div>\n @if (initialSuggestionEmptySubline()) {\n <div fd-bar [initialSuggestionSubline]=\"true\" barDesign=\"subheader\">\n <div fd-bar-left>\n <fd-text [subline]=\"true\" [text]=\"initialSuggestionEmptySubline()\"></fd-text>\n </div>\n </div>\n }\n </div>\n }\n <ng-template [ngTemplateOutlet]=\"suggestionMenuTemplate\"></ng-template>\n @if (suggestionsFiltered.length === 0 && searchResultsEmptyDefaultSuggestions()) {\n <ul fd-list [attr.id]=\"_menuId\" [searchResultsList]=\"true\" (keydown)=\"onKeydown($event)\">\n @for (defaultSuggestion of searchResultsEmptyDefaultSuggestions(); track defaultSuggestion) {\n <ng-template\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ filteredSuggestion: defaultSuggestion }\"\n ></ng-template>\n }\n </ul>\n }\n </fd-busy-indicator>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #mobileTemplate>\n <ng-template [ngTemplateOutlet]=\"inputFieldTemplate\"></ng-template>\n</ng-template>\n<ng-template #searchCategoryMenu>\n <button\n class=\"fdp-search-field__category-button fd-input-group__button fd-button fd-button--transparent fd-button--menu {{\n appearance()?.categoryButtonClass\n }}\"\n [fdpMenuTriggerFor]=\"categoryMenu\"\n >\n @if (!hideCategoryLabel()) {\n <span class=\"fdp-search-field__category-label\">\n {{ _currentCategory()?.label || categoryLabel() }}\n </span>\n }\n </button>\n <fdp-menu #categoryMenu>\n @if (showCategoryAllOption()) {\n <fdp-menu-item (itemSelect)=\"setCurrentCategory(null)\">{{\n ('platformSearchField.allButtonLabel' | fdTranslate)()\n }}</fdp-menu-item>\n }\n @for (category of categories(); track category) {\n <fdp-menu-item (itemSelect)=\"setCurrentCategory(category)\">{{ category.label }} </fdp-menu-item>\n }\n </fdp-menu>\n</ng-template>\n<ng-template #searchCategorySelect>\n <fd-select\n #categorySelectComponent\n [placeholder]=\"categoryLabel()\"\n [selectControlClass]=\"appearance()?.categoryButtonClass\"\n [selectDropdownButtonClass]=\"\n appearance()?.categoryDropdownButtonClass + (!!_currentCategory()?.value ? ' is-selected' : '')\n \"\n (valueChange)=\"setCurrentCategory($event)\"\n ariaHasPopup=\"dialog\"\n [ariaLabel]=\"_shellbar ? ('platformSearchField.selectScopeLabel' | fdTranslate)() : null\"\n [ariaDescription]=\"_shellbar ? ('platformSearchField.selectScopeLabel' | fdTranslate)() : ''\"\n [mobile]=\"mobile() && isOpen\"\n (click)=\"_categorySelectClicked($event)\"\n [mobileConfig]=\"{\n hasCloseButton: true,\n title: ('platformSearchField.selectStateMessageLabel' | fdTranslate)()\n }\"\n >\n <li fd-option (itemSelect)=\"setCurrentCategory(null)\">\n {{ ('platformSearchField.allButtonLabel' | fdTranslate)() }}\n </li>\n @for (category of categories(); track category) {\n <li fd-option [value]=\"category\">{{ category.label }}</li>\n }\n </fd-select>\n</ng-template>\n<ng-template #inputFieldTemplate>\n <div\n class=\"fdp-search-field\"\n [class.with-categories]=\"_showCategoryDropdown\"\n [class.is-loading]=\"isLoading()\"\n [class.hide-category-label]=\"hideCategoryLabel()\"\n >\n <div\n #inputGroup\n class=\"fdp-search-field__input-group fd-input-group {{ appearance()?.searchClass }}\"\n [class.is-focus]=\"_isFocused()\"\n >\n @if (showAdvancedFilter()) {\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.searchCategoryClass }}\"\n >\n <button\n (fdkClicked)=\"_advancedFilterButtonClicked()\"\n class=\"fdp-search-field__category-button fdp-search-field__advanced-filter-button fd-input-group__button fd-button fd-button--transparent fd-button--menu {{\n appearance()?.categoryButtonClass\n }}\"\n >\n <fd-icon glyph=\"filter\"></fd-icon>\n </button>\n </span>\n } @else if (_showCategoryDropdown) {\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.searchCategoryClass }}\"\n >\n <ng-template\n [ngTemplateOutlet]=\"categoryMode() === 'select' ? searchCategorySelect : searchCategoryMenu\"\n ></ng-template>\n </span>\n }\n <input\n #inputField\n fdkAutoComplete\n [options]=\"autoCompleteSuggestions\"\n [displayFn]=\"_autoCompleteDisplayFn\"\n [inputText]=\"inputText()\"\n (onComplete)=\"handleAutoComplete($event)\"\n type=\"search\"\n (focus)=\"_inputFocus()\"\n (blur)=\"_isFocused.set(false); (null)\"\n [attr.placeholder]=\"placeholder()\"\n class=\"fdp-search-field__input fd-input fd-input-group__input {{ appearance()?.searchFieldClass }}\"\n [attr.id]=\"_inputId\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.title]=\"ariaLabel || ('platformSearchField.searchInputLabel' | fdTranslate)()\"\n [attr.aria-label]=\"ariaLabel || ('platformSearchField.searchInputLabel' | fdTranslate)()\"\n [attr.aria-labelledby]=\"ariaLabel ? null : ariaLabelledBy\"\n [attr.aria-controls]=\"!!_popoverBodyId() ? _popoverBodyId() : null\"\n [attr.aria-expanded]=\"\n dropdownValues()?.length !== 0 ? (_isSuggestionMenuOpen() ? 'true' : 'false') : null\n \"\n [attr.aria-haspopup]=\"dropdownValues()?.length !== 0\"\n autocomplete=\"off\"\n aria-autocomplete=\"both\"\n (keydown)=\"onKeydown($event)\"\n (keydown.enter)=\"onSearchSubmit($event)\"\n (keydown.tab)=\"_handleInputTabKey($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onValueChange($event)\"\n (click)=\"mobile() && openMobileMode()\"\n />\n @if (inputText() && inputText().length > 0) {\n <span class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.addonClass }}\">\n <button\n tabindex=\"-1\"\n [attr.aria-hidden]=\"!mobile()\"\n [attr.title]=\"('platformSearchField.clearButtonTitle' | fdTranslate)()\"\n [attr.aria-label]=\"('platformSearchField.clearButtonTitle' | fdTranslate)()\"\n class=\"fdp-search-field__clear fd-button fd-button--transparent {{ appearance()?.buttonClass }}\"\n [class.fd-input-group__button]=\"!appearance()?.removeGroupButtonClass\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.id]=\"_clearId\"\n (click)=\"clearTextInput()\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </span>\n } @else {\n <!-- prevents width of search from changing when there is no text in the input -->\n <span class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.addonClass }}\"></span>\n }\n @if (forceSearchButton() || isLoading() || (!isLoading() && !_isSearchDone)) {\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.addonClass }} {{\n appearance()?.searchSubmitClass\n }}\"\n >\n @if (!disableSearch()) {\n <button\n tabindex=\"-1\"\n [attr.aria-hidden]=\"!mobile()\"\n [attr.title]=\"('platformSearchField.submitButtonTitle' | fdTranslate)()\"\n [attr.aria-label]=\"('platformSearchField.submitButtonTitle' | fdTranslate)()\"\n class=\"fdp-search-field__submit fd-button fd-button--transparent {{\n appearance()?.buttonClass\n }}\"\n [class.fd-input-group__button]=\"!appearance()?.removeGroupButtonClass\"\n [attr.id]=\"_submitId\"\n [attr.disabled]=\"disabled ? '' : null\"\n (click)=\"onSearchSubmit()\"\n >\n <fd-icon glyph=\"search\"></fd-icon>\n </button>\n }\n </span>\n }\n @if (!disableRefresh() && !isLoading() && (_isRefresh || _isSearchDone)) {\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.addonClass }} {{\n appearance()?.searchSubmitClass\n }}\"\n >\n <button\n [attr.aria-title]=\"('platformSearchField.synchronizeButtonTitle' | fdTranslate)()\"\n [attr.aria-label]=\"('platformSearchField.synchronizeButtonTitle' | fdTranslate)()\"\n class=\"fdp-search-field__loading fd-input-group__button fd-button fd-button--transparent {{\n appearance()?.buttonClass\n }}\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.id]=\"_refreshId\"\n (click)=\"onSearchSubmit()\"\n >\n <fd-icon glyph=\"synchronize\"></fd-icon>\n </button>\n </span>\n }\n @if (appearance()?.helperClass) {\n <div [ngClass]=\"appearance()?.helperClass\"></div>\n }\n </div>\n </div>\n</ng-template>\n<ng-template #suggestionMenuTemplate>\n @if (suggestionsFiltered?.length && !_onlyHeadersFiltered(suggestionsFiltered)) {\n <ul fd-list [attr.id]=\"_menuId\" [searchResultsList]=\"true\" (keydown)=\"onKeydown($event)\" #suggestionList>\n @for (filteredSuggestion of suggestionsFiltered; track filteredSuggestion) {\n @if (filteredSuggestion?.isGroupHeader) {\n <li role=\"group\">\n <ul\n fd-list\n [searchResultsList]=\"true\"\n [attr.aria-roledescription]=\"('platformSearchField.groupHeader' | fdTranslate)()\"\n >\n <li fd-list-group-header class=\"fd-suggestion-header\">\n <span fd-list-title>{{ filteredSuggestion?.value }}</span>\n </li>\n @for (\n childSuggestion of filteredSuggestion?.children | suggestionMatches: inputText();\n track childSuggestion\n ) {\n <ng-template\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ filteredSuggestion: childSuggestion }\"\n ></ng-template>\n }\n @if (filteredSuggestion?.searchInScopeText || filteredSuggestion?.showMoreText) {\n <ng-template\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ filteredSuggestion: filteredSuggestion }\"\n ></ng-template>\n }\n </ul>\n </li>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ filteredSuggestion: filteredSuggestion }\"\n ></ng-template>\n }\n }\n </ul>\n @if (suggestionFooter() && suggestionsFiltered.length > 0) {\n <div fd-popover-body-footer class=\"fdp-search-field__footer\">\n <div fd-bar barDesign=\"footer\">\n <ng-template [ngTemplateOutlet]=\"suggestionFooter()\"></ng-template>\n </div>\n </div>\n }\n } @else if (searchResultsEmptyTemplate()) {\n <div style=\"padding-top: 0.5rem; padding-bottom: 0.5rem\">\n <ng-template [ngTemplateOutlet]=\"searchResultsEmptyTemplate()\"></ng-template>\n </div>\n }\n</ng-template>\n\n<ng-template #suggestionItemTemplate let-filteredSuggestion=\"filteredSuggestion\">\n @let subline = filteredSuggestion?.data?.subline;\n <li\n fd-list-item\n [interactive]=\"true\"\n [suggestion]=\"true\"\n fdpSearchFieldSuggestion\n (keydown.enter)=\"onItemClick(filteredSuggestion, suggestionListItem); $event.preventDefault()\"\n (keyup.space)=\"onItemClick(filteredSuggestion, suggestionListItem); $event.stopPropagation()\"\n (keydown.f2)=\"_focusActionButton($event, suggestionListItem)\"\n (click)=\"onItemClick(filteredSuggestion, suggestionListItem)\"\n [byline]=\"!!subline\"\n #suggestionListItem\n (mouseenter)=\"_searchResultIsHoveredOrFocusedOrMobile(suggestionListItem)\"\n (mouseleave)=\"_searchResultIsHoveredOrFocusedOrMobile(suggestionListItem)\"\n [selected]=\"\n enableSelection() && filteredSuggestion === _selectedSuggestionItem && !filteredSuggestion.isGroupHeader\n \"\n [counter]=\"filteredSuggestion.searchInScopeCounter\"\n [counterRole]=\"'tooltip'\"\n [counterAriaLabel]=\"\n ('platformSearchField.counterLabel' | fdTranslate: { count: filteredSuggestion.searchInScopeCounter })()\n \"\n [ariaRole]=\"'option'\"\n >\n @let listIconGlyph = filteredSuggestion?.data?.listIconGlyph;\n @if (listIconGlyph) {\n <span fd-list-thumbnail>\n <i fd-list-icon [glyph]=\"listIconGlyph\"></i>\n </span>\n }\n @let avatarGlyph = filteredSuggestion?.data?.avatarGlyph;\n @let avatarImage = filteredSuggestion?.data?.avatarImage;\n @let avatarLabel = filteredSuggestion?.data?.avatarLabel;\n @if (avatarGlyph || avatarImage || avatarLabel) {\n <fd-avatar\n [circle]=\"true\"\n size=\"xs\"\n [glyph]=\"avatarGlyph\"\n [image]=\"avatarImage\"\n [label]=\"avatarLabel\"\n ></fd-avatar>\n }\n @let prefix = filteredSuggestion?.data?.prefix;\n @if (prefix) {\n <fd-info-label fd-list-info-label [label]=\"prefix\" color=\"10\"></fd-info-label>\n }\n <!-- previous API was built on suggestions only being strings, hence the need for the check. -->\n @if (_isString(filteredSuggestion)) {\n <!-- toString() below is for type safety -->\n <span\n fd-list-title\n [innerHTML]=\"filteredSuggestion?.toString() | highlight: inputText() : true : true\"\n ></span>\n } @else {\n @if (subline) {\n <div fd-list-content>\n <span\n fd-list-title\n [innerHTML]=\"filteredSuggestion?.value | highlight: inputText() : true : true\"\n ></span>\n <span fd-list-subline>\n {{ subline }}\n </span>\n </div>\n } @else {\n @if (filteredSuggestion.searchInScopeText) {\n <span fd-list-title class=\"fd-list__title--scope\">{{ filteredSuggestion.searchInScopeText }}</span>\n } @else if (filteredSuggestion?.showMoreText) {\n @let showMoreText =\n filteredSuggestion?.showMoreCounter\n ? filteredSuggestion?.showMoreText + ' (' + filteredSuggestion?.showMoreCounter + ')'\n : filteredSuggestion?.showMoreText;\n <span class=\"fdp-search-field__show-more\" [attr.aria-label]=\"showMoreText\">{{ showMoreText }}</span>\n } @else {\n <span\n fd-list-title\n [innerHTML]=\"filteredSuggestion?.value | highlight: inputText() : true : true\"\n ></span>\n }\n }\n\n @let showDeleteButton = filteredSuggestion?.data?.showDeleteButton;\n @let actionButtons = filteredSuggestion?.data?.actionButtons;\n @if (showDeleteButton || actionButtons?.length) {\n <div tabindex=\"-1\" [cdkTrapFocus]=\"_actionButtonTabIndex() === 0\">\n @if (actionButtons && actionButtons.length) {\n @for (button of actionButtons; track $index) {\n @if (button.id) {\n <button\n fd-button\n fdType=\"transparent\"\n [title]=\"button.actionButtonLabel\"\n [attr.aria-label]=\"button.actionButtonLabel\"\n [id]=\"button.actionButtonId\"\n [glyph]=\"button.actionButtonGlyph\"\n (fdkClicked)=\"_performButtonClick($event, button.actionButtonCallback)\"\n (keydown.f2)=\"_focusParentListItem($event, suggestionListItem)\"\n [attr.tabindex]=\"_actionButtonTabIndex()\"\n ></button>\n } @else {\n <button\n fd-button\n fdType=\"transparent\"\n [title]=\"button.actionButtonLabel\"\n [attr.aria-label]=\"button.actionButtonLabel\"\n [glyph]=\"button.actionButtonGlyph\"\n (fdkClicked)=\"_performButtonClick($event, button.actionButtonCallback)\"\n (keydown.f2)=\"_focusParentListItem($event, suggestionListItem)\"\n [attr.tabindex]=\"_actionButtonTabIndex()\"\n ></button>\n }\n }\n }\n\n @let deleteCallback = filteredSuggestion?.data?.deleteCallback;\n @if (showDeleteButton && _searchResultIsHoveredOrFocusedOrMobile(suggestionListItem)) {\n <button\n fd-button\n fdType=\"transparent\"\n [title]=\"('platformSearchField.deleteButtonTitle' | fdTranslate)()\"\n [ariaLabel]=\"('platformSearchField.deleteButtonAriaLabel' | fdTranslate)()\"\n glyph=\"decline\"\n (fdkClicked)=\"_performButtonClick($event, deleteCallback)\"\n (keydown.f2)=\"_focusParentListItem($event, suggestionListItem)\"\n [attr.tabindex]=\"_actionButtonTabIndex()\"\n ></button>\n }\n </div>\n }\n }\n </li>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\nimport { SearchFieldComponent, SearchFieldSuggestionDirective, SuggestionMatchesPipe } from './search-field.component';\n\nconst components = [SearchFieldComponent, SearchFieldSuggestionDirective, SuggestionMatchesPipe, ContentDensityModule];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformSearchFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKa,sBAAsB,GAAG,IAAI,cAAc,CAAW,4BAA4B;;ACuDzF,MAAO,0BAA2B,SAAQ,cAA0C,CAAA;;AAStF,IAAA,WAAA,CAA4C,oBAAgD,EAAA;AACxF,QAAA,KAAK,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,YAAY,CAAC;;QAN/D,IAAA,CAAA,YAAY,GAAmC,IAAI;;QAEnD,IAAA,CAAA,WAAW,GAAG,KAAK;IAKnB;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,EAAE;IACxB;;IAGA,aAAa,GAAA;AACT,QAAA,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY;AAC1C,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;YAClB,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,cAAc,EAAE;gBAErB;YACJ;YAEA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE;gBACvC,IAAI,CAAC,KAAK,EAAE;YAChB;AACJ,QAAA,CAAC,CAAC;IACV;;IAGA,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;IACnC;;IAGA,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;IACnC;;IAGQ,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC3D,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,eAAe,EAAE,IAAI;YACrB,GAAG,IAAI,CAAC,YAAY;AACpB,YAAA,sBAAsB,EAAE,KAAK;AAC7B,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;IACN;AA1DS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBASf,sBAAsB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGATjC,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5DvC,qkEAyCA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGQ,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,mBAAmB,kFACnB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGhB,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAD1B,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIV,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA7BtC,SAAS;+BACI,yBAAyB,EAAA,eAAA,EAElB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAQ5B;wBACL,eAAe;wBACf,qBAAqB;wBACrB,iBAAiB;wBACjB,kBAAkB;wBAClB,mBAAmB;wBACnB,gBAAgB;wBAChB,aAAa;wBACb,kBAAkB;wBAClB,mBAAmB;wBACnB,qBAAqB;wBACrB,kBAAkB;wBAClB,eAAe;wBACf,eAAe;wBACf;AACH,qBAAA,EAAA,QAAA,EAAA,qkEAAA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA;;0BAWY,MAAM;2BAAC,sBAAsB;;sBAPzC,SAAS;uBAAC,gBAAgB;;;MEyClB,8BAA8B,CAAA;;AAEvC,IAAA,WAAA,CAAmB,OAAmB,EAAA;QAAnB,IAAA,CAAA,OAAO,GAAP,OAAO;IAAe;;IAGzC,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;IACtC;8GAPS,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACF,wBAAA,QAAQ,EAAE;AACb,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAWD,IAAI,kBAAkB,GAAG,CAAC;AA2CpB,MAAO,oBAAqB,SAAQ,aAAa,CAAA;;AAkGnD,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO;AACH,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE;YACtB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,IAAI;SAC/C;IACL;;IA6IA,WAAA,CACW,UAAmC,EACzB,iBAAmC,EACnC,SAAmB,EACnB,cAA6B,EACrC,wBAAiD,EAAA;AAE1D,QAAA,KAAK,EAAE;QANA,IAAA,CAAA,UAAU,GAAV,UAAU;QACA,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,cAAc,GAAd,cAAc;QACtB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;;QAvP5B,IAAA,CAAA,WAAW,GAAG,MAAM,EAAe;;QAGnC,IAAA,CAAA,YAAY,GAAG,MAAM,EAAe;;QAGpC,IAAA,CAAA,YAAY,GAAG,MAAM,EAAe;;QAGpC,IAAA,CAAA,YAAY,GAAG,MAAM,EAAW;;QAGhC,IAAA,CAAA,yBAAyB,GAAG,MAAM,EAAQ;;AAG1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAmB,kBAAkB,4DAAC;;AAGlE,QAAA,IAAA,CAAA,uBAAuB,GAAG,SAAS,CAAkB,yBAAyB,mEAAC;;AAG/E,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAA0B,YAAY,sDAAC;;AAG7D,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAAC,QAAQ,CAA0B,YAAY,CAAC;;AAGtE,QAAA,IAAA,CAAA,kBAAkB,GAAG,SAAS,CAAmB,oBAAoB,8DAAC;;AAGtE,QAAA,IAAA,CAAA,sBAAsB,GAAG,SAAS,CAAmB,wBAAwB,kEAAC;;AAG9E,QAAA,IAAA,CAAA,cAAc,GAAG,SAAS,CAAgB,gBAAgB,0DAAC;;AAG3D,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,8BAA8B,2DAAC;;AAG9D,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,iBAAiB,qDAAC;;AAG3C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAoB,MAAM,wDAAC;;QAG/C,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAc;;AAGhC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;;QAG/B,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,mDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGtD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA+B,SAAS,wDAAC;;AAG7D,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAU,KAAK,0DAAC;;QAGtC,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,0DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAG7D,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAkD,EAAE,uDAAC;;AAGxE,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAyC,SAAS,sDAAC;;AAGrE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,qDAAC;;AAG7B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAmB,EAAE,sDAAC;;AAGxC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA6B,SAAS,2DAAC;;AAG9D,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,UAAU,yDAAC;;QAGzC,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,8DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGjE,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGzD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,6DAAC;;QAGzC,IAAA,CAAA,gCAAgC,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGhF,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC,KAAK,kEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAWrE,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAS,EAAE,kEAAC;;AAG1C,QAAA,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAS,EAAE,oEAAC;;AAG5C,QAAA,IAAA,CAAA,2BAA2B,GAAG,KAAK,CAAS,EAAE,uEAAC;;AAG/C,QAAA,IAAA,CAAA,6BAA6B,GAAG,KAAK,CAAS,EAAE,yEAAC;;AAGjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA0B,IAAI,4DAAC;;AAGvD,QAAA,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAA0B,IAAI,sEAAC;;AAGjE,QAAA,IAAA,CAAA,oCAAoC,GAAG,KAAK,CAA0B,IAAI,gFAAC;;AAG3E,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;;AAG1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,4DAAC;;AAGxC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK,2DAAC;;AAGvC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;;AAG1C,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAS,EAAE,8DAAC;;AAGtC,QAAA,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAAS,EAAE,sEAAC;;AAGvD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAE1B;;;AAGG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAmB,EAAE,0DAAC;AAE7C;;;AAGG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAoC,SAAS,4DAAC;AAEvE;;;AAGG;QACH,IAAA,CAAA,qBAAqB,GAAG,KAAK;;QAG7B,IAAA,CAAA,QAAQ,GAAG,EAAE;;QAGb,IAAA,CAAA,SAAS,GAAG,EAAE;;QAGd,IAAA,CAAA,OAAO,GAAG,EAAE;;QAGZ,IAAA,CAAA,UAAU,GAAG,EAAE;;QAGf,IAAA,CAAA,QAAQ,GAAG,EAAE;;QAGb,IAAA,CAAA,gBAAgB,GAAG,EAAE;;AAGrB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,EAAE,0DAAC;;QAG3B,IAAA,CAAA,MAAM,GAAG,KAAK;;QAGd,IAAA,CAAA,UAAU,GAAG,KAAK;;QAGlB,IAAA,CAAA,aAAa,GAAG,KAAK;;AAGrB,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,KAAK,iEAAC;;QAGrC,IAAA,CAAA,uBAAuB,GAAqB,EAAE;;AAS9C,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,EAAE,qEAAC;;AAGtC,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAC,EAAE,sEAAC;;AAGvC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAS,CAAC,CAAC,iEAAC;;AAGvB,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;;QAGvD,IAAA,CAAA,SAAS,GAAoB,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;QAGzF,IAAA,CAAA,2CAA2C,GAAG,EAAE;;QAMhD,IAAA,CAAA,kBAAkB,GAAG,0BAA0B,EAAE;;AAGxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;;AAud1D,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAC,KAAqB,KAAY;AACvD,YAAA,IAAI,CAAC,qCAAqC,GAAG,KAAK;YAClD,OAAO,KAAK,CAAC,KAAK;AACtB,QAAA,CAAC;;QAvcG,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC7C;AAAO,iBAAA,IAAI,YAAY,CAAC,gBAAgB,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;oBAChC,IAAI,CAAC,wBAAwB,GAAG;AAC3B,yBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,yBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AAClB,wBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;AACnC,oBAAA,CAAC,CAAC;gBACV;YACJ;iBAAO;AACH,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,EAAE;AACJ,gBAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAClC;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACvE,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;YACzC,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;YACvC;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE;YAC9B,IAAI,QAAQ,EAAE;;gBAEV,cAAc,CAAC,MAAK;oBAChB,IAAI,CAAC,gBAAgB,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;;YAEpC,cAAc,CAAC,MAAK;AAChB,gBAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAClB,IAAI,CAAC,gBAAgB,EAAE;gBAC3B;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;;IAGA,QAAQ,GAAA;QACJ,MAAM,MAAM,GAAG,kBAAkB;QACjC,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,OAAA,EAAU,kBAAkB,EAAE,CAAA,CAAE;QACzD,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,MAAM,CAAA,QAAA,EAAW,kBAAkB,EAAE,CAAA,CAAE;QAC3D,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,MAAM,CAAA,MAAA,EAAS,kBAAkB,EAAE,CAAA,CAAE;QACvD,IAAI,CAAC,gBAAgB,GAAG,CAAA,EAAG,MAAM,CAAA,gBAAA,EAAmB,kBAAkB,EAAE,CAAA,CAAE;AAC1E,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA,EAAG,MAAM,CAAA,cAAA,EAAiB,kBAAkB,EAAE,CAAA,CAAE,CAAC;AAEzE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QAEtB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC;IACJ;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE;AAC5C,QAAA,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE;AAChC,QAAA,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE;IACzC;AAEA;;AAEG;IACH,KAAK,GAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;QACvC,IAAI,CAAC,aAAa,EAAE;IACxB;;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC1B,IAAI,CAAC,KAAK,EAAE;YACR;QACJ;AAEA,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE;AAClD,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE;AAC/B,gBAAA,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE;YAC1C;AAAO,iBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACnC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC;YAC/C;QACJ;aAAO,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAClC;IACJ;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;QACvB,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG,EAAE;QACd;;;AAGA,QAAA,UAAU,CAAC,OAAO,IAAI,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;YACxE,IAAI,CAAC,cAAc,EAAE;QACzB;QAEA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC5C,QAAA,MAAM,QAAQ,GAAW,KAAK,CAAC,IAAI,EAAE;AACrC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AACnC,YAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC1B,IAAI,CAAC,mBAAmB,EAAE;YAC9B;QACJ;AAEA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;QAC5B,IAAI,EAAE,EAAE;AACJ,YAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACvB,YAAA,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC9B,YAAA,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC;AAE7D,YAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QACnB;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,kBAAkB,EAAE;QAC7B;QAEA,IAAI,CAAC,6BAA6B,EAAE;IACxC;AAEA;;;AAGG;IACH,WAAW,CAAC,KAA8B,EAAE,kBAAsC,EAAA;AAC9E,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;AAAO,aAAA,IAAI,KAAK,EAAE,KAAK,EAAE;YACrB,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,oBAAoB,EAAE;AACvD,gBAAA,IAAI,KAAK,CAAC,qBAAqB,EAAE;oBAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC;gBAC/D;gBACA;YACJ;AAAO,iBAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AAC3B,gBAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;oBACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC;gBAC1D;gBACA;YACJ;YACA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,YAAA,IAAI,kBAAkB,EAAE,EAAE,EAAE;gBACxB,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC7D;QACJ;QACA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC7C,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC1B;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,IAAI,CAAC,aAAa,EAAE;IACxB;AAEA;;;AAGG;AACH,IAAA,cAAc,CAAC,KAAa,EAAA;QACxB,KAAK,EAAE,cAAc,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC7C;QACJ;QAEA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAE7C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC7B;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,aAAkC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF;AAEA;;;AAGG;AACH,IAAA,kBAAkB,CAAC,eAAsC,EAAA;AACrD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACrB,eAAe;AACX,YAAA,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAClB,CAAC,QAAwB,KACrB,QAAQ,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAC3F,CACR;AAED,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC;QACA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAChD;AAEA;;AAEG;IACH,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,gBAAgB,EAAE;IAC3B;;IAGA,cAAc,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;QACrD;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACzB;;IAGA,aAAa,GAAA;QACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACtC;;IAGA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC1B;;AAGA,IAAA,UAAU,CAAC,MAAe,EAAA;QACtB,IAAI,CAAC,MAAM,EAAE;YACT,IAAI,CAAC,mBAAmB,EAAE;QAC9B;AACA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE;AACjE,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AAEpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC;IACJ;;IAGA,mBAAmB,CAAC,KAAK,GAAG,IAAI,EAAA;QAC5B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,KAAK,EAAE;QAChB;AACA,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;IACzC;;IAGA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,EAAE;QACjD,IAAI,UAAU,EAAE;AACZ,YAAA,UAAU,CAAC,KAAK,GAAG,SAAS;QAChC;IACJ;;IAGA,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAE7C,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AACnC,QAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;AAEtC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAE1B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QACnC;aAAO;AACH,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,EAAE;AACJ,gBAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACvB,gBAAA,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;AACxB,gBAAA,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC;AAE7D,gBAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YACnB;YAEA,IAAI,CAAC,kBAAkB,EAAE;QAC7B;QACA,IAAI,CAAC,KAAK,EAAE;IAChB;;AAGA,IAAA,kBAAkB,CAAC,KAAwB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,iCAAiC,EAAE,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,qCAAqC;YACzE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBACtC,IAAI,CAAC,mBAAmB,EAAE;YAC9B;QACJ;IACJ;;AAGA,IAAA,sBAAsB,CAAC,KAAiB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;YACxE,KAAK,CAAC,cAAc,EAAE;;YAEtB,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;;AAGA,IAAA,kBAAkB,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,iCAAiC,EAAE,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,UAAU,EAAE,CAAC,aAAkC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF;IACJ;;IAGA,iCAAiC,GAAA;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAiC;AACnE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE;AACvC,QAAA,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC;AACvC,QAAA,OAAO,aAAa,EAAE,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS;IAC9G;;IAGA,kBAAkB,CAAC,KAAY,EAAE,UAA6B,EAAA;QAC1D,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,aAAa;QACxD,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,YAAY,CAAgB;QAC3E,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,YAAY,EAAE;AACzC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjC,WAAW,CAAC,KAAK,EAAE;YACvB;QACJ;IACJ;;IAGA,oBAAoB,CAAC,KAAY,EAAE,UAA6B,EAAA;QAC5D,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE;IACjD;;AAGA,IAAA,qBAAqB,CAAC,UAAsC,EAAA;AACxD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;QAC/B;AACK,aAAA,IAAI;AACJ,aAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACpF,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAA,CAAC,CAAC;IACV;;AAGA,IAAA,SAAS,CAAC,UAA2B,EAAA;AACjC,QAAA,OAAO,OAAO,UAAU,KAAK,QAAQ;IACzC;;IAGA,mBAAmB,CAAC,KAAmB,EAAE,UAAmC,EAAA;QACxE,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QACpC;QACA,IAAI,UAAU,EAAE;AACZ,YAAA,UAAU,EAAE;QAChB;IACJ;;AAGA,IAAA,uCAAuC,CAAC,UAA6B,EAAA;AACjE,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,aAAa;AACxD,QAAA,QACI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI;YACvD,QAAQ,CAAC,aAAa,KAAK,YAAY;AACvC,YAAA,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC7C,YAAA,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC;IAEtC;;IAGA,4BAA4B,GAAA;AACxB,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE;IACzC;;AAGA,IAAA,oBAAoB,CAAC,WAA2C,EAAA;QAC5D,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1D,MAAM,GAAG,KAAK;YAClB;QACJ;AAEA,QAAA,OAAO,MAAM;IACjB;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3C,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;;AAGA,IAAA,qBAAqB,CAAC,KAAoB,EAAA;QACtC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YAClC,IAAI,CAAC,KAAK,EAAE;QAChB;IACJ;;IASQ,gBAAgB,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,YAAA,MAAM,eAAe,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CACxE;AACD,YAAA,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE;YACrC,IAAI,CAAC,qBAAqB,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC;YAEjE,IAAI,CAAC,YAAY,EAAE;QACvB;IACJ;;AAGQ,IAAA,oBAAoB,CAAC,GAAmC,EAAA;AAC5D,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE;QAC/C,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO,CAAC,CAAC;QACb;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IACrG;AAEA;;;AAGG;IACK,qBAAqB,GAAA;QACzB,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE;AAEjC,QAAA,WAAW,EAAE,OAAO,CAAC,CAAC,UAAU,KAAI;AAChC,YAAA,MAAM,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,EAAE,KAAK;YACnF,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACrG,gBAAA,KAAK,EAAE;YACX;YACA,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,UAAU,EAAE,KAAK,EAAE;AAC5C,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC;YACjD;AAAO,iBAAA,IAAI,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACrC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAClC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,OAAO,KAAK;IAChB;;IAGQ,YAAY,GAAA;QAChB,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE;AAC/C,QAAA,MAAM,YAAY,GAAG,iBAAiB,EAAE,UAAU,CAAC,aAAa;QAChE,IAAI,CAAC,YAAY,EAAE;YACf;QACJ;;AAGA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB;;AAGnD,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACvB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;YAC5C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE;gBACxD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAgB;gBAC5D,IAAI,UAAU,EAAE;oBACZ,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACnD,oBAAA,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC;gBAC5D;YACJ;AACJ,QAAA,CAAC,CAAC;;QAGF,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAI;YACpC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAgB;AAC3E,YAAA,MAAM,UAAU,GAAG,QAAQ,EAAE,SAAS;YACtC,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;YAC/C;AACJ,QAAA,CAAC,CAAC;IACN;;AAGQ,IAAA,MAAM,6BAA6B,GAAA;;AAEvC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACpD,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,6CAA6C,EAAE;AACnG,YAAA,KAAK,EAAE;AACV,SAAA,CAAC,EAAE;QACJ,MAAM,+BAA+B,GAAG,IAAI,CAAC,kBAAkB,CAC3D,qDAAqD,CACxD,EAAE;AACH,QAAA,IAAI,CAAC,2CAA2C;AAC5C,YAAA,uBAAuB,IAAI,eAAe,GAAG,CAAC,GAAG,+BAA+B,GAAG,EAAE,CAAC;QAC1F,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,2CAA2C,CAAC;QACxF;IACJ;;IAGQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;QACnC;AAEA,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAChE,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CACxE;AACI,YAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC7C,YAAA,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;AACtD,SAAA,EACD,0BAA0B,EAC1B;YACI,YAAY,EAAE,IAAI,CAAC;SACtB,EACD;YACI;AACH,SAAA,CACJ;IACL;8GAv0BS,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gCAAA,EAAA,EAAA,iBAAA,EAAA,kCAAA,EAAA,UAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,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,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,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,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oCAAA,EAAA,EAAA,iBAAA,EAAA,sCAAA,EAAA,UAAA,EAAA,sCAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,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,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAnClB;AACP,YAAA,+BAA+B,EAAE;AACjC,YAAA;AACI,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,WAAW,EAAE;AAChB;SACJ,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,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAmEuC,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAGpC,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrMvD,gswBA2dA,0ioGD1VQ,gBAAgB,CAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAChB,oBAAoB,CAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACpB,aAAa,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACb,iBAAiB,CAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACjB,eAAe,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACf,eAAe,CAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACf,WAAW,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACX,aAAa,CAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACb,OAAO,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAlCF,8BAA8B,CAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAsCnC,aAAa,iyCACb,SAAS,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACT,cAAc,CAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACd,aAAa,CAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACb,UAAU,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACV,kBAAkB,CAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAClB,gBAAgB,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAChB,eAAe,yZACf,eAAe,CAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACf,qBAAqB,CAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACrB,sBAAsB,CAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,eAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACtB,YAAY,CAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAbZ,mBAAmB,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACnB,eAAe,CAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MA81BV,qBAAqB,CAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FA90BrB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAzChC,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACP,wBAAA,+BAA+B,EAAE;AACjC,wBAAA;AACI,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,WAAW,EAAA;AACd;qBACJ,EAAA,OAAA,EACQ;wBACL,gBAAgB;wBAChB,oBAAoB;wBACpB,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,eAAe;wBACf,WAAW;wBACX,aAAa;wBACb,OAAO;wBACP,8BAA8B;wBAC9B,mBAAmB;wBACnB,eAAe;wBACf,aAAa;wBACb,SAAS;wBACT,cAAc;wBACd,aAAa;wBACb,UAAU;wBACV,kBAAkB;wBAClB,gBAAgB;wBAChB,eAAe;wBACf,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,YAAY;AACZ,wBAAA,UAAU,CAAC,MAAM,qBAAqB;AACzC,qBAAA,EAAA,QAAA,EAAA,gswBAAA,EAAA,MAAA,EAAA,CAAA,89nGAAA,CAAA,EAAA;AAmBuD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAGZ,yBAAyB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAG9B,YAAY,oEAGH,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAGpB,oBAAoB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAGhB,wBAAwB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAGnC,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAG3B,8BAA8B,2FAGpC,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,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,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,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,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,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,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,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,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;MAqyB1C,qBAAqB,CAAA;;IAE9B,SAAS,CAAC,WAAgD,EAAE,KAAa,EAAA;QACrE,IAAI,CAAC,WAAW,EAAE;YACd,WAAW,GAAG,EAAE;QACpB;QACA,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG,EAAE;QACd;QACA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACjD,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,KAAI;AACrC,YAAA,MAAM,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,KAAK;AAClF,YAAA,OAAO,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,aAAa;AAC7F,QAAA,CAAC,CAAC;IACN;8GAdS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AEn+BD,MAAM,UAAU,GAAG,CAAC,oBAAoB,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,oBAAoB,CAAC;AAEtH;;;AAGG;MAKU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,OAAA,EAAA,CAVlB,oBAAoB,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAAjG,oBAAoB,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAUxG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,OAAA,EAAA,CAVlB,oBAAoB,EAAyD,oBAAoB,EAApB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FAUxG,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AACxB,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU;AAC1B,iBAAA;;;ACfD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-search-field.mjs","sources":["../../../../libs/platform/search-field/search-field-mobile/search-field-mobile.interface.ts","../../../../libs/platform/search-field/search-field-mobile/search-field/search-field-mobile.component.ts","../../../../libs/platform/search-field/search-field-mobile/search-field/search-field-mobile.component.html","../../../../libs/platform/search-field/search-field.component.ts","../../../../libs/platform/search-field/search-field.component.html","../../../../libs/platform/search-field/search-field.module.ts","../../../../libs/platform/search-field/fundamental-ngx-platform-search-field.ts"],"sourcesContent":["import { InjectionToken, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const SEARCH_FIELD_COMPONENT = new InjectionToken<string[]>('SearchFieldMobileInterface');\n\nexport interface SearchFieldMobileInterface extends MobileMode {\n inputText: string;\n isOpenChange: Subject<boolean>;\n isOpen: boolean;\n\n dialogApprove(): void;\n dialogDismiss(): void;\n}\n\nexport interface SearchFieldChildContent {\n inputFieldTemplate: TemplateRef<any>;\n suggestionMenuTemplate: TemplateRef<any>;\n}\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarMiddleDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport {\n SEARCH_FIELD_COMPONENT,\n SearchFieldChildContent,\n SearchFieldMobileInterface\n} from '../search-field-mobile.interface';\n\n@Component({\n selector: 'fdp-search-field-mobile',\n templateUrl: 'search-field-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n .fdp-search-field__mobile-dialog-header .fd-select__text-content {\n display: none;\n }\n `\n ],\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarMiddleDirective,\n BarElementDirective,\n NgTemplateOutlet,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n ButtonComponent,\n FdTranslatePipe,\n DialogCloseButtonComponent\n ]\n})\nexport class SearchFieldMobileComponent extends MobileModeBase<SearchFieldMobileInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n /** @hidden */\n childContent: SearchFieldChildContent | null = null;\n /** @hidden */\n _inShellbar = false;\n\n /** @hidden */\n constructor(@Inject(SEARCH_FIELD_COMPONENT) searchFieldComponent: SearchFieldMobileInterface) {\n super(searchFieldComponent, MobileModeControl.SEARCH_FIELD);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.listenChanges();\n }\n\n /** @hidden */\n listenChanges(): void {\n outputToObservable(this._component.isOpenChange)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => {\n if (!isOpen) {\n this._handleDismiss();\n\n return;\n }\n\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n });\n }\n\n /** @hidden */\n _handleDismiss(): void {\n this.dialogRef.close();\n this._component.dialogDismiss();\n }\n\n /** @hidden */\n _handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n container: 'body',\n minWidth: '100vw',\n minHeight: '100vh'\n });\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header [inShellbar]=\"_inShellbar\" class=\"fdp-search-field__mobile-dialog-header\">\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\" class=\"fdp-search-field__mobile-bar-element\">\n @if (childContent?.inputFieldTemplate) {\n <ng-template [ngTemplateOutlet]=\"childContent?.inputFieldTemplate!\"></ng-template>\n }\n @if (_inShellbar) {\n <button\n fd-button\n fdType=\"transparent\"\n (click)=\"_handleDismiss()\"\n [label]=\"('platformSearchField.cancelLabel' | fdTranslate)()\"\n ></button>\n } @else if (mobileConfig.hasCloseButton) {\n <button\n fd-dialog-close-button\n fdkInitialFocus\n [mobile]=\"true\"\n (click)=\"_handleDismiss()\"\n ></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @if (childContent?.suggestionMenuTemplate) {\n <ng-template [ngTemplateOutlet]=\"childContent?.suggestionMenuTemplate!\"></ng-template>\n }\n </fd-dialog-body>\n @if (mobileConfig.approveButtonText) {\n <fd-dialog-footer>\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"_handleApprove()\">\n </fd-button-bar>\n </fd-dialog-footer>\n }\n </fd-dialog>\n</ng-template>\n","import { CdkTrapFocus, FocusableOption, FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n model,\n OnDestroy,\n OnInit,\n output,\n Pipe,\n PipeTransform,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { isObservable, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport {\n AutoCompleteDirective,\n AutoCompleteEvent,\n ClickedDirective,\n destroyObservable,\n DynamicComponentService,\n KeyUtil,\n SearchHighlightPipe\n} from '@fundamental-ngx/cdk/utils';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { InfoLabelComponent } from '@fundamental-ngx/core/info-label';\nimport { ListComponent, ListItemComponent, ListModule } from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverComponent, PopoverModule } from '@fundamental-ngx/core/popover';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { Appearance, SearchComponent } from '@fundamental-ngx/core/shared';\nimport { FD_SHELLBAR_COMPONENT, FD_SHELLBAR_SEARCH_COMPONENT, Shellbar } from '@fundamental-ngx/core/shellbar';\nimport { TextComponent } from '@fundamental-ngx/core/text';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe, resolveTranslationSignalFn } from '@fundamental-ngx/i18n';\nimport { MenuComponent, MenuItemComponent, MenuTriggerDirective } from '@fundamental-ngx/platform/menu';\nimport { BaseComponent, SearchFieldDataSource } from '@fundamental-ngx/platform/shared';\nimport { SEARCH_FIELD_COMPONENT } from './search-field-mobile/search-field-mobile.interface';\nimport { SearchFieldMobileComponent } from './search-field-mobile/search-field/search-field-mobile.component';\n\nexport interface SearchInput {\n text: string;\n category: string | null;\n}\n\nexport interface SuggestionItem {\n value: string; // main text of the suggestion\n isHistorical?: string;\n data?: any;\n isGroupHeader?: boolean;\n children?: SuggestionItem[];\n searchInScopeText?: string;\n searchInScopeCounter?: number;\n searchInScopeCallback?: () => any;\n showMoreText?: string;\n showMoreCounter?: number;\n showMoreCallback?: () => any;\n}\n\nexport interface ValueLabelItem {\n value: string;\n label: string;\n}\n\nexport interface SearchResultsActionButton {\n glyph?: string;\n label?: string;\n id?: string;\n callback?: () => any;\n}\n\n@Directive({\n selector: '[fdpSearchFieldSuggestion]',\n host: {\n tabindex: '-1'\n },\n standalone: true\n})\nexport class SearchFieldSuggestionDirective implements FocusableOption {\n /** @hidden */\n constructor(public element: ElementRef) {}\n\n /** @hidden */\n focus(): void {\n this.element.nativeElement.focus();\n }\n}\n\nlet searchFieldIdCount = 0;\n\n@Component({\n selector: 'fdp-search-field',\n templateUrl: './search-field.component.html',\n styleUrl: './search-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n contentDensityObserverProviders(),\n {\n provide: FD_SHELLBAR_SEARCH_COMPONENT,\n useExisting: SearchFieldComponent\n }\n ],\n imports: [\n NgTemplateOutlet,\n MenuTriggerDirective,\n MenuComponent,\n MenuItemComponent,\n SelectComponent,\n OptionComponent,\n FormsModule,\n IconComponent,\n NgClass,\n SearchFieldSuggestionDirective,\n SearchHighlightPipe,\n FdTranslatePipe,\n PopoverModule,\n BarModule,\n TitleComponent,\n TextComponent,\n ListModule,\n InfoLabelComponent,\n ClickedDirective,\n AvatarComponent,\n ButtonComponent,\n AutoCompleteDirective,\n BusyIndicatorComponent,\n CdkTrapFocus,\n forwardRef(() => SuggestionMatchesPipe)\n ]\n})\nexport class SearchFieldComponent extends BaseComponent implements OnInit, OnDestroy, SearchComponent {\n /** Input change event. */\n readonly inputChange = output<SearchInput>();\n\n /** Search submit event. */\n readonly searchSubmit = output<SearchInput>();\n\n /** Cancel search event. */\n readonly cancelSearch = output<SearchInput>();\n\n /** Open mobile mode event. */\n readonly isOpenChange = output<boolean>();\n\n /** Event emitted when the advanced filter button is clicked. */\n readonly advancedFilterButtonClick = output<void>();\n\n /** @hidden */\n readonly categoryDropdown = viewChild<PopoverComponent>('categoryDropdown');\n\n /** @hidden */\n readonly categorySelectComponent = viewChild<SelectComponent>('categorySelectComponent');\n\n /** @hidden */\n readonly inputGroup = viewChild<ElementRef<HTMLElement>>('inputGroup');\n\n /** @hidden */\n readonly inputField = viewChild.required<ElementRef<HTMLElement>>('inputField');\n\n /** @hidden */\n readonly inputFieldTemplate = viewChild<TemplateRef<any>>('inputFieldTemplate');\n\n /** @hidden */\n readonly suggestionMenuTemplate = viewChild<TemplateRef<any>>('suggestionMenuTemplate');\n\n /** @hidden */\n readonly suggestionList = viewChild<ListComponent>('suggestionList');\n\n /** @hidden */\n readonly suggestionItems = viewChildren(SearchFieldSuggestionDirective);\n\n /** @hidden */\n readonly listItems = viewChildren(ListItemComponent);\n\n /** Type of component used to render the categories dropdown. */\n readonly categoryMode = model<'menu' | 'select'>('menu');\n\n /** Additional appearance configuration. */\n readonly appearance = model<Appearance>();\n\n /** Placeholder text for search input field. */\n readonly placeholder = input<string>('');\n\n /** Set Mobile Mode */\n readonly mobile = input(false, { transform: booleanAttribute });\n\n /** Search Field Mobile configuration */\n readonly mobileConfig = input<MobileModeConfig | undefined>(undefined);\n\n /** Whether display Refresh button */\n readonly disableRefresh = model<boolean>(false);\n\n /** Whether display search button */\n readonly disableSearch = input(false, { transform: booleanAttribute });\n\n /** List of string values to populate suggestion dropdown selection. */\n readonly suggestions = input<SuggestionItem[] | Observable<SuggestionItem[]>>([]);\n\n /** Datasource for suggestion list */\n readonly dataSource = input<SearchFieldDataSource<any> | undefined>(undefined);\n\n /** Initial input text. */\n readonly inputText = model<string>('');\n\n /** List of categories. */\n readonly categories = input<ValueLabelItem[]>([]);\n\n /** Current category, value should be present in categories array */\n readonly currentCategory = input<ValueLabelItem | undefined>(undefined);\n\n /** Set label for category dropdown button. */\n readonly categoryLabel = input<string>('Category');\n\n /** Hide display of category label */\n readonly hideCategoryLabel = input(false, { transform: booleanAttribute });\n\n /** Toggle \"loading\" mode. */\n readonly isLoading = input(false, { transform: booleanAttribute });\n\n /** Whether to always show search button. */\n readonly forceSearchButton = model<boolean>(false);\n\n /** Whether to disable the \"suggestions found\" live announcer. */\n readonly disableSuggestionsFoundAnnouncer = input(false, { transform: booleanAttribute });\n\n /** Whether to show the \"All\" option in the category select. */\n readonly showCategoryAllOption = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n get searchFieldValue(): SearchInput {\n return {\n text: this.inputText(),\n category: this._currentCategory()?.value || null\n };\n }\n\n /** Title of the initial suggestion, if a suggestion list is displayed. */\n readonly initialSuggestionTitle = input<string>('');\n\n /** Subline of the initial suggestion, if a suggestion list is displayed. */\n readonly initialSuggestionSubline = input<string>('');\n\n /** Title of the initial suggestion if the user has entered some text and there are no results to display, and an initial suggestion title should be shown. */\n readonly initialSuggestionEmptyTitle = input<string>('');\n\n /** Title of the initial suggestion if the user has entered some text and there are no results to display, and an initial suggestion subline should be shown. */\n readonly initialSuggestionEmptySubline = input<string>('');\n\n /** Subline of the initial suggestion, if a suggestion list is displayed. */\n readonly suggestionFooter = input<TemplateRef<any> | null>(null);\n\n /** Template to display when the search results list has no items to display. */\n readonly searchResultsEmptyTemplate = input<TemplateRef<any> | null>(null);\n\n /** Options to display when the user has entered a string into the input that returns no results. */\n readonly searchResultsEmptyDefaultSuggestions = input<SuggestionItem[] | null>(null);\n\n /** Whether to show the advanced filter button, which emits the event `advancedFilterButtonClick`. If this input is set to true, it will override any other category button settings. */\n readonly showAdvancedFilter = input<boolean>(false);\n\n /** Whether to allow empty searches when using a data source, meaning all results will be displayed when the search input is empty. */\n readonly allowEmptySearch = input<boolean>(false);\n\n /** Whether to display a suggestion item as selected after it has been clicked. */\n readonly enableSelection = input<boolean>(false);\n\n /** Whether to display the busy indicator over the suggestion list. */\n readonly suggestionsLoading = input<boolean>(false);\n\n /** Title for the busy indicator. */\n readonly busyIndicatorTitle = input<string>('');\n\n /** Aria value text for the busy indicator. */\n readonly busyIndicatorAriaValueText = input<string>('');\n\n /** @hidden Focus state */\n _isFocused = signal(false);\n\n /**\n * Signal list of suggestion items to populate dropdown menu.\n * @hidden\n */\n dropdownValues = signal<SuggestionItem[]>([]);\n\n /**\n * Currently set category.\n * @hidden\n */\n _currentCategory = signal<ValueLabelItem | null | undefined>(undefined);\n\n /**\n * Whether or not to show category dropdown. This is dependent on length of `categoryValues` property.\n * @hidden\n */\n _showCategoryDropdown = false;\n\n /** @hidden */\n _inputId = '';\n\n /** @hidden */\n _submitId = '';\n\n /** @hidden */\n _menuId = '';\n\n /** @hidden */\n _refreshId = '';\n\n /** @hidden */\n _clearId = '';\n\n /** @hidden */\n _popoverHeaderId = '';\n\n /** @hidden */\n _popoverBodyId = signal('');\n\n /** @hidden */\n isOpen = false;\n\n /** @hidden */\n _isRefresh = false;\n\n /** @hidden */\n _isSearchDone = false;\n\n /** @hidden */\n _isSuggestionMenuOpen = signal(false);\n\n /** @hidden */\n autoCompleteSuggestions: SuggestionItem[] = [];\n\n /** @hidden */\n _selectedSuggestionItem: SuggestionItem | null;\n\n /** @hidden */\n _autoCompleteMostRecentSuggestionItem: SuggestionItem;\n\n /** @hidden */\n _selectedSuggestionItemId = signal('');\n\n /** @hidden */\n _categorySelectDescription = signal('');\n\n /** @hidden */\n _actionButtonTabIndex = signal<-1 | 0>(-1);\n\n /** @hidden */\n protected readonly contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n protected readonly _shellbar: Shellbar | null = inject(FD_SHELLBAR_COMPONENT, { optional: true });\n\n /** @hidden */\n private _currentSearchSuggestionAnnouncementMessage = '';\n\n /** @hidden */\n private _suggestionkeyManager: FocusKeyManager<SearchFieldSuggestionDirective>;\n\n /** @hidden */\n private resolveTranslation = resolveTranslationSignalFn();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _dataSourceChanged$ = new Subject<void>();\n\n /** @hidden */\n private _mobileComponent: ComponentRef<SearchFieldMobileComponent>;\n\n /** @hidden */\n private _suggestionsSubscription: Subscription;\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n private readonly _liveAnnouncer: LiveAnnouncer,\n readonly _dynamicComponentService: DynamicComponentService\n ) {\n super();\n\n // Effect to handle suggestions changes\n effect(() => {\n const suggestionsValue = this.suggestions();\n if (Array.isArray(suggestionsValue)) {\n this.dropdownValues.set(suggestionsValue);\n } else if (isObservable(suggestionsValue)) {\n if (!this._suggestionsSubscription) {\n this._suggestionsSubscription = suggestionsValue\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((values) => {\n this.dropdownValues.set(values);\n });\n }\n } else {\n this.dropdownValues.set([]);\n }\n });\n\n // Effect to handle dataSource changes\n effect(() => {\n const ds = this.dataSource();\n if (ds) {\n this._initializeDataSource(ds);\n }\n });\n\n // Effect to handle categories changes\n effect(() => {\n const cats = this.categories();\n this._showCategoryDropdown = Array.isArray(cats) && cats.length > 0;\n });\n\n // Effect to handle currentCategory changes\n effect(() => {\n const currentCat = this.currentCategory();\n if (currentCat) {\n this.setCurrentCategory(currentCat);\n }\n });\n\n // Effect to handle mobile changes - only setup when actually needed\n effect(() => {\n const isMobile = this.mobile();\n if (isMobile) {\n // Defer to next tick to avoid running during construction\n queueMicrotask(() => {\n this._setUpMobileMode();\n });\n }\n });\n\n // Watch for changes to suggestionItems using an effect\n // Use afterNextRender to ensure view is initialized\n effect(() => {\n const items = this.suggestionItems();\n // Use queueMicrotask to defer execution after view initialization\n queueMicrotask(() => {\n if (items.length > 0) {\n this._resetKeyManager();\n }\n });\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n const baseId = 'fdp-search-field';\n this._inputId = `${baseId}-input-${searchFieldIdCount++}`;\n this._submitId = `${baseId}-submit-${searchFieldIdCount++}`;\n this._menuId = `${baseId}-menu-${searchFieldIdCount++}`;\n this._popoverHeaderId = `${baseId}-popover-header-${searchFieldIdCount++}`;\n this._popoverBodyId.set(`${baseId}-popover-body-${searchFieldIdCount++}`);\n\n this._isRefresh = true;\n\n if (this.dataSource() && this._shellbar) {\n this.onValueChange(this.inputText());\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._suggestionsSubscription?.unsubscribe();\n this._mobileComponent?.destroy();\n this._suggestionkeyManager?.destroy();\n }\n\n /**\n * Focuses the search input field.\n */\n focus(): void {\n this.inputField().nativeElement.focus();\n this.detectChanges();\n }\n\n /** Capturing onKeydown of input element */\n onKeydown(event: KeyboardEvent): void {\n if (!event) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW])) {\n if (event.altKey && this.categories().length > 0) {\n this.closeSuggestionMenu(false);\n this.categoryDropdown()?.open();\n this.categorySelectComponent()?.open();\n } else if (this._suggestionkeyManager) {\n this._suggestionkeyManager.onKeydown(event);\n }\n } else if (KeyUtil.isKeyCode(event, [ESCAPE])) {\n this.closeSuggestionMenu(true);\n }\n }\n\n /**\n * Capturing value change in input text field of combobox.\n * @hidden\n */\n onValueChange(event: string): void {\n if (!event) {\n event = '';\n }\n // when search result not changed but input text is changed.\n // again need to announce the result, so clear this message.\n setTimeout(() => (this._currentSearchSuggestionAnnouncementMessage = ''));\n this._isSearchDone = false;\n this._isRefresh = false;\n\n if (this.mobile() && !this._mobileComponent?.instance?.dialogRef?.isOpen()) {\n this.openMobileMode();\n }\n\n this.inputChange.emit(this.searchFieldValue);\n const inputStr: string = event.trim();\n if (inputStr.length === 0) {\n this._selectedSuggestionItem = null;\n this._selectedSuggestionItemId.set('');\n if (!this.allowEmptySearch()) {\n this.closeSuggestionMenu();\n }\n }\n\n const ds = this.dataSource();\n if (ds) {\n const match = new Map();\n match.set('keyword', inputStr);\n match.set('category', this._currentCategory()?.value || null);\n\n ds.match(match);\n }\n\n if (!this.mobile() && this._getSuggestionsLength() > 0) {\n this.openSuggestionMenu();\n }\n\n this._updateSearchAnnouncementText();\n }\n\n /**\n * Capturing item selection from dropdown menu of combobox.\n * @hidden\n */\n onItemClick(event: SuggestionItem | string, suggestionListItem?: ListItemComponent): void {\n if (typeof event === 'string') {\n this.inputText.set(event);\n } else if (event?.value) {\n if (event.searchInScopeText || event.searchInScopeCounter) {\n if (event.searchInScopeCallback) {\n this._performButtonClick(null, event.searchInScopeCallback);\n }\n return;\n } else if (event.showMoreText) {\n if (event.showMoreCallback) {\n this._performButtonClick(null, event.showMoreCallback);\n }\n return;\n }\n this.inputText.set(event.value);\n this._selectedSuggestionItem = event;\n if (suggestionListItem?.id) {\n this._selectedSuggestionItemId.set(suggestionListItem.id);\n }\n }\n this.inputChange.emit(this.searchFieldValue);\n this.searchSubmit.emit(this.searchFieldValue);\n this.closeSuggestionMenu();\n if (this.mobile()) {\n this.showDialog(false);\n }\n this._isSearchDone = true;\n this.detectChanges();\n }\n\n /**\n * Callback function which gets executed on keyboard enter of input text field.\n * @hidden\n */\n onSearchSubmit(event?: Event): void {\n event?.preventDefault();\n\n if (this.isLoading()) {\n this.cancelSearch.emit(this.searchFieldValue);\n return;\n }\n\n this.searchSubmit.emit(this.searchFieldValue);\n\n this._isRefresh = true;\n\n if (this.inputText()) {\n this._isSearchDone = true;\n }\n\n this.closeSuggestionMenu(false);\n (this.inputField().nativeElement as HTMLInputElement).setSelectionRange(-1, -1);\n }\n\n /**\n * Sets current category.\n * @hidden\n */\n setCurrentCategory(currentCategory: ValueLabelItem | null): void {\n this._currentCategory.set(\n currentCategory &&\n this.categories().find(\n (category: ValueLabelItem) =>\n category.label === currentCategory.label && category.value === currentCategory.value\n )\n );\n\n if (this._isSuggestionMenuOpen()) {\n this.onValueChange(this.inputText());\n }\n this.inputChange.emit(this.searchFieldValue);\n }\n\n /**\n * Open suggestion menu\n */\n openSuggestionMenu(): void {\n this._isSuggestionMenuOpen.set(true);\n this._resetKeyManager();\n }\n\n /** @hidden */\n openMobileMode(): void {\n if (this._shellbar) {\n this._mobileComponent.instance._inShellbar = true;\n }\n this.showDialog(true);\n }\n\n /** @hidden */\n dialogApprove(): void {\n this.onItemClick(this.inputText());\n }\n\n /** @hidden */\n dialogDismiss(): void {\n this.showDialog(false);\n }\n\n /** @hidden */\n showDialog(isOpen: boolean): void {\n if (!isOpen) {\n this.closeSuggestionMenu();\n }\n if (this._mobileComponent?.instance?.dialogRef?.isOpen() !== isOpen) {\n this.isOpen = isOpen;\n\n this.isOpenChange.emit(isOpen);\n }\n }\n\n /** @hidden */\n closeSuggestionMenu(focus = true): void {\n if (focus) {\n this.focus();\n }\n this._isSuggestionMenuOpen.set(false);\n }\n\n /** Resets the current category to its initial state. */\n resetCategory(): void {\n this._currentCategory.set(undefined);\n const selectComp = this.categorySelectComponent();\n if (selectComp) {\n selectComp.value = undefined;\n }\n }\n\n /** @hidden */\n clearTextInput(): void {\n this.inputText.set('');\n this.detectChanges();\n this.inputChange.emit(this.searchFieldValue);\n this.cancelSearch.emit(this.searchFieldValue);\n\n this._selectedSuggestionItem = null;\n this._selectedSuggestionItemId.set('');\n\n this._isRefresh = true;\n this._isSearchDone = false;\n\n if (!this.allowEmptySearch()) {\n this.closeSuggestionMenu(false);\n } else {\n const ds = this.dataSource();\n if (ds) {\n const match = new Map();\n match.set('keyword', '');\n match.set('category', this._currentCategory()?.value || null);\n\n ds.match(match);\n }\n\n this.openSuggestionMenu();\n }\n this.focus();\n }\n\n /** @hidden Method that handles complete event from auto complete directive, setting the new value, and closing popover */\n handleAutoComplete(event: AutoCompleteEvent): void {\n if (this._inputValueMatchesFirstSuggestion()) {\n this.inputText.set(event.term);\n this._selectedSuggestionItem = this._autoCompleteMostRecentSuggestionItem;\n this.onValueChange(this.inputText());\n this.onSearchSubmit();\n if (event.forceClose && this.inputText()) {\n this.closeSuggestionMenu();\n }\n }\n }\n\n /** @hidden */\n _categorySelectClicked(event: MouseEvent): void {\n if (this.mobile() && !this._mobileComponent?.instance?.dialogRef?.isOpen()) {\n event.preventDefault();\n // event.stopImmediatePropagation();\n this.openMobileMode();\n }\n }\n\n /** @hidden */\n _handleInputTabKey(event: Event): void {\n if (this._inputValueMatchesFirstSuggestion()) {\n event.preventDefault();\n this.handleAutoComplete({ term: this.inputText(), forceClose: false });\n (this.inputField().nativeElement as HTMLInputElement).setSelectionRange(-1, -1);\n }\n }\n\n /** @hidden */\n _inputValueMatchesFirstSuggestion(): boolean {\n const inputEl = this.inputField().nativeElement as HTMLInputElement;\n const listItemsArray = this.listItems();\n const firstListItem = listItemsArray[0];\n return firstListItem?.listTitle && inputEl.value === firstListItem.listTitle.elRef.nativeElement.innerText;\n }\n\n /** @hidden */\n _focusActionButton(event: Event, suggestion: ListItemComponent): void {\n event.preventDefault();\n event.stopPropagation();\n const suggestionEl = suggestion.elementRef.nativeElement;\n const firstButton = suggestionEl.querySelector('.fd-button') as HTMLElement;\n if (firstButton) {\n if (document.activeElement === suggestionEl) {\n this._actionButtonTabIndex.set(0);\n firstButton.focus();\n }\n }\n }\n\n /** @hidden */\n _focusParentListItem(event: Event, suggestion: ListItemComponent): void {\n event.preventDefault();\n event.stopPropagation();\n this._actionButtonTabIndex.set(-1);\n suggestion.elementRef?.nativeElement?.focus();\n }\n\n /** @hidden */\n _initializeDataSource(dataSource: SearchFieldDataSource<any>): void {\n this._dataSourceChanged$.next();\n dataSource\n .open()\n .pipe(takeUntil(merge(destroyObservable(this._destroyRef), this._dataSourceChanged$)))\n .subscribe((data) => {\n this.dropdownValues.set(data);\n });\n }\n\n /** @hidden helper function needed by template */\n _isString(suggestion: string | object): boolean {\n return typeof suggestion === 'string';\n }\n\n /** @hidden */\n _performButtonClick(event: Event | null, callbackFn: (() => any) | undefined): void {\n if (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n if (callbackFn) {\n callbackFn();\n }\n }\n\n /** @hidden */\n _searchResultIsHoveredOrFocusedOrMobile(suggestion: ListItemComponent): boolean {\n const suggestionEl = suggestion.elementRef.nativeElement;\n return (\n (this.mobile() && this._selectedSuggestionItem === null) ||\n document.activeElement === suggestionEl ||\n suggestionEl.contains(document.activeElement) ||\n suggestionEl.matches(':hover')\n );\n }\n\n /** @hidden */\n _advancedFilterButtonClicked(): void {\n this.advancedFilterButtonClick.emit();\n }\n\n /** @hidden */\n _onlyHeadersFiltered(suggestions: (SuggestionItem | undefined)[]): boolean {\n let retVal = true;\n for (let i = 0; i < suggestions.length && retVal; i++) {\n if (!suggestions[i]?.data || !suggestions[i]?.data?.isHeader) {\n retVal = false;\n }\n }\n\n return retVal;\n }\n\n /** @hidden */\n _inputFocus(): void {\n this._isFocused.set(true);\n if (this._shellbar && this.allowEmptySearch()) {\n this.openSuggestionMenu();\n }\n }\n\n /** @hidden */\n _handlePopoverKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, ESCAPE)) {\n this.focus();\n }\n }\n\n /** @hidden */\n _autoCompleteDisplayFn = (event: SuggestionItem): string => {\n this._autoCompleteMostRecentSuggestionItem = event;\n return event.value;\n };\n\n /** @hidden */\n private _resetKeyManager(): void {\n const items = this.suggestionItems();\n if (items.length > 0) {\n const keyManagerParam = [...items].sort(\n (a, b) => this._getDomRowOrderIndex(a) - this._getDomRowOrderIndex(b)\n );\n this._suggestionkeyManager?.destroy();\n this._suggestionkeyManager = new FocusKeyManager(keyManagerParam);\n\n this._setAriaOwns();\n }\n }\n\n /** @hidden */\n private _getDomRowOrderIndex(row: SearchFieldSuggestionDirective): number {\n const suggestionListRef = this.suggestionList();\n if (!suggestionListRef) {\n return -1;\n }\n const listItems = this.listItems();\n return listItems.findIndex((item) => item.elementRef.nativeElement === row.element.nativeElement);\n }\n\n /**\n * @hidden return count for matching suggestion with input text\n * @returns number\n */\n private _getSuggestionsLength(): number {\n let count = 0;\n const suggestions = this.dropdownValues();\n this.autoCompleteSuggestions = [];\n\n suggestions?.forEach((suggestion) => {\n const textToCheck = typeof suggestion === 'string' ? suggestion : suggestion?.value;\n if (this.inputText() && textToCheck.toLowerCase().indexOf(this.inputText()?.trim()?.toLowerCase()) > -1) {\n count++;\n }\n if (!suggestion?.children && suggestion?.value) {\n this.autoCompleteSuggestions.push(suggestion);\n } else if (suggestion?.children?.length) {\n suggestion.children.forEach((child) => {\n this.autoCompleteSuggestions.push(child);\n });\n }\n });\n\n this._setAriaOwns();\n return count;\n }\n\n /** @hidden */\n private _setAriaOwns(): void {\n this.detectChanges();\n const suggestionListRef = this.suggestionList();\n const parentListEl = suggestionListRef?.elementRef.nativeElement;\n if (!parentListEl) {\n return;\n }\n\n // Use the already-queried listItems instead of querySelectorAll\n const listItems = this.listItems();\n const listItemsMap = new Map<HTMLElement, string>();\n\n // Build a map of parent lists to their child IDs\n listItems.forEach((item) => {\n const itemEl = item.elementRef.nativeElement;\n if (itemEl.classList.contains('fd-list__item--suggestion')) {\n const parentList = itemEl.closest('.fd-list') as HTMLElement;\n if (parentList) {\n const existing = listItemsMap.get(parentList) || '';\n listItemsMap.set(parentList, existing + itemEl.id + ' ');\n }\n }\n });\n\n // Set aria-owns on each parent list\n listItemsMap.forEach((childIds, list) => {\n list.setAttribute('aria-owns', childIds.trim());\n const headerEl = list.querySelector('.fd-suggestion-header') as HTMLElement;\n const headerText = headerEl?.innerText;\n if (headerText) {\n list.setAttribute('aria-label', headerText);\n }\n });\n }\n\n /** @hidden */\n private async _updateSearchAnnouncementText(): Promise<void> {\n // create search suggestion message with count.\n const suggestionCount = this._getSuggestionsLength();\n const searchSuggestionMessage = this.resolveTranslation('platformSearchField.searchSuggestionMessage', {\n count: suggestionCount\n })();\n const searchSuggestionNavigateMessage = this.resolveTranslation(\n 'platformSearchField.searchSuggestionNavigateMessage'\n )();\n this._currentSearchSuggestionAnnouncementMessage =\n searchSuggestionMessage + (suggestionCount > 0 ? searchSuggestionNavigateMessage : '');\n if (this.inputText()?.length > 0) {\n await this._liveAnnouncer.announce(this._currentSearchSuggestionAnnouncementMessage);\n }\n }\n\n /** @hidden */\n private _setUpMobileMode(): void {\n if (this._mobileComponent) {\n this._mobileComponent.destroy();\n }\n\n const injector = Injector.create({\n providers: [{ provide: SEARCH_FIELD_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._mobileComponent = this._dynamicComponentService.createDynamicComponent(\n {\n inputFieldTemplate: this.inputFieldTemplate(),\n suggestionMenuTemplate: this.suggestionMenuTemplate()\n },\n SearchFieldMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n {\n injector\n }\n );\n }\n}\n\n@Pipe({\n name: 'suggestionMatches',\n standalone: true\n})\nexport class SuggestionMatchesPipe implements PipeTransform {\n /** @hidden */\n transform(suggestions: SuggestionItem[] | null | undefined, match: string): (SuggestionItem | undefined)[] {\n if (!suggestions) {\n suggestions = [];\n }\n if (!match) {\n match = '';\n }\n const processedMatch = match.trim().toLowerCase();\n return suggestions.filter((suggestion) => {\n const textToCheck = typeof suggestion === 'string' ? suggestion : suggestion.value;\n return textToCheck.toLowerCase().indexOf(processedMatch) > -1 || suggestion.isGroupHeader;\n });\n }\n}\n","@let suggestionsFiltered = dropdownValues() | suggestionMatches: inputText();\n<ng-template [ngTemplateOutlet]=\"mobile() ? mobileTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [focusAutoCapture]=\"false\"\n [isOpen]=\"_isSuggestionMenuOpen()\"\n (isOpenChange)=\"_isSuggestionMenuOpen.set($event)\"\n [triggers]=\"[]\"\n fillControlMode=\"equal\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"inputFieldTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body\n (keydown)=\"_handlePopoverKeydown($event)\"\n [style.display]=\"\n suggestionsFiltered.length > 0 ||\n initialSuggestionTitle() ||\n suggestionFooter() ||\n searchResultsEmptyTemplate() ||\n searchResultsEmptyDefaultSuggestions()?.length\n ? 'inherit'\n : 'none'\n \"\n [attr.aria-label]=\"('platformSearchField.suggestionsWrapperAriaLabel' | fdTranslate)()\"\n aria-modal=\"false\"\n [attr.aria-describedby]=\"_popoverHeaderId + ' ' + _menuId + ' ' + _selectedSuggestionItemId()\"\n [attr.id]=\"_popoverBodyId()\"\n >\n <fd-busy-indicator\n [block]=\"true\"\n [loading]=\"suggestionsLoading()\"\n [title]=\"suggestionsLoading() ? busyIndicatorTitle() : undefined\"\n [ariaValueText]=\"busyIndicatorAriaValueText()\"\n >\n @if (\n initialSuggestionTitle()!.length > 0 &&\n suggestionsFiltered.length > 0 &&\n !_selectedSuggestionItem &&\n !inputText()\n ) {\n <div fd-popover-body-header>\n <div\n fd-bar\n [initialSuggestionTitle]=\"true\"\n [barDesign]=\"initialSuggestionSubline() ? 'header-with-subheader' : 'header'\"\n [attr.id]=\"_popoverHeaderId\"\n >\n <div fd-bar-left>\n <span fd-title [twoLineClamp]=\"true\" [headerSize]=\"6\">\n {{ initialSuggestionTitle() }}\n </span>\n </div>\n </div>\n @if (initialSuggestionSubline()) {\n <div fd-bar [initialSuggestionSubline]=\"true\" barDesign=\"subheader\">\n <div fd-bar-left>\n <fd-text [subline]=\"true\" [text]=\"initialSuggestionSubline()\"></fd-text>\n </div>\n </div>\n }\n </div>\n } @else if (initialSuggestionEmptyTitle()!.length > 0 && suggestionsFiltered.length === 0) {\n <div fd-popover-body-header>\n <div\n fd-bar\n [initialSuggestionTitle]=\"true\"\n [barDesign]=\"initialSuggestionEmptySubline() ? 'header-with-subheader' : 'header'\"\n >\n <div fd-bar-left>\n <span fd-title [twoLineClamp]=\"true\" [headerSize]=\"6\">\n {{ initialSuggestionEmptyTitle() }}\n </span>\n </div>\n </div>\n @if (initialSuggestionEmptySubline()) {\n <div fd-bar [initialSuggestionSubline]=\"true\" barDesign=\"subheader\">\n <div fd-bar-left>\n <fd-text [subline]=\"true\" [text]=\"initialSuggestionEmptySubline()\"></fd-text>\n </div>\n </div>\n }\n </div>\n }\n <ng-template [ngTemplateOutlet]=\"suggestionMenuTemplate\"></ng-template>\n @if (suggestionsFiltered.length === 0 && searchResultsEmptyDefaultSuggestions()) {\n <ul fd-list [attr.id]=\"_menuId\" [searchResultsList]=\"true\" (keydown)=\"onKeydown($event)\">\n @for (defaultSuggestion of searchResultsEmptyDefaultSuggestions(); track defaultSuggestion) {\n <ng-template\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ filteredSuggestion: defaultSuggestion }\"\n ></ng-template>\n }\n </ul>\n }\n </fd-busy-indicator>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #mobileTemplate>\n <ng-template [ngTemplateOutlet]=\"inputFieldTemplate\"></ng-template>\n</ng-template>\n<ng-template #searchCategoryMenu>\n <button\n class=\"fdp-search-field__category-button fd-input-group__button fd-button fd-button--transparent fd-button--menu {{\n appearance()?.categoryButtonClass\n }}\"\n [fdpMenuTriggerFor]=\"categoryMenu\"\n >\n @if (!hideCategoryLabel()) {\n <span class=\"fdp-search-field__category-label\">\n {{ _currentCategory()?.label || categoryLabel() }}\n </span>\n }\n </button>\n <fdp-menu #categoryMenu>\n @if (showCategoryAllOption()) {\n <fdp-menu-item (itemSelect)=\"setCurrentCategory(null)\">{{\n ('platformSearchField.allButtonLabel' | fdTranslate)()\n }}</fdp-menu-item>\n }\n @for (category of categories(); track category) {\n <fdp-menu-item (itemSelect)=\"setCurrentCategory(category)\">{{ category.label }} </fdp-menu-item>\n }\n </fdp-menu>\n</ng-template>\n<ng-template #searchCategorySelect>\n <fd-select\n #categorySelectComponent\n [placeholder]=\"categoryLabel()\"\n [selectControlClass]=\"appearance()?.categoryButtonClass\"\n [selectDropdownButtonClass]=\"\n appearance()?.categoryDropdownButtonClass + (!!_currentCategory()?.value ? ' is-selected' : '')\n \"\n (valueChange)=\"setCurrentCategory($event)\"\n ariaHasPopup=\"dialog\"\n [ariaLabel]=\"_shellbar ? ('platformSearchField.selectScopeLabel' | fdTranslate)() : null\"\n [ariaDescription]=\"_shellbar ? ('platformSearchField.selectScopeLabel' | fdTranslate)() : ''\"\n [mobile]=\"mobile() && isOpen\"\n (click)=\"_categorySelectClicked($event)\"\n [mobileConfig]=\"{\n hasCloseButton: true,\n title: ('platformSearchField.selectStateMessageLabel' | fdTranslate)()\n }\"\n >\n <li fd-option (itemSelect)=\"setCurrentCategory(null)\">\n {{ ('platformSearchField.allButtonLabel' | fdTranslate)() }}\n </li>\n @for (category of categories(); track category) {\n <li fd-option [value]=\"category\">{{ category.label }}</li>\n }\n </fd-select>\n</ng-template>\n<ng-template #inputFieldTemplate>\n <div\n class=\"fdp-search-field\"\n [class.with-categories]=\"_showCategoryDropdown\"\n [class.is-loading]=\"isLoading()\"\n [class.hide-category-label]=\"hideCategoryLabel()\"\n >\n <div\n #inputGroup\n class=\"fdp-search-field__input-group fd-input-group {{ appearance()?.searchClass }}\"\n [class.is-focus]=\"_isFocused()\"\n >\n @if (showAdvancedFilter()) {\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.searchCategoryClass }}\"\n >\n <button\n (fdkClicked)=\"_advancedFilterButtonClicked()\"\n class=\"fdp-search-field__category-button fdp-search-field__advanced-filter-button fd-input-group__button fd-button fd-button--transparent fd-button--menu {{\n appearance()?.categoryButtonClass\n }}\"\n >\n <fd-icon glyph=\"filter\"></fd-icon>\n </button>\n </span>\n } @else if (_showCategoryDropdown) {\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.searchCategoryClass }}\"\n >\n <ng-template\n [ngTemplateOutlet]=\"categoryMode() === 'select' ? searchCategorySelect : searchCategoryMenu\"\n ></ng-template>\n </span>\n }\n <input\n #inputField\n fdkAutoComplete\n [options]=\"autoCompleteSuggestions\"\n [displayFn]=\"_autoCompleteDisplayFn\"\n [inputText]=\"inputText()\"\n (onComplete)=\"handleAutoComplete($event)\"\n type=\"search\"\n (focus)=\"_inputFocus()\"\n (blur)=\"_isFocused.set(false); (null)\"\n [attr.placeholder]=\"placeholder()\"\n class=\"fdp-search-field__input fd-input fd-input-group__input {{ appearance()?.searchFieldClass }}\"\n [attr.id]=\"_inputId\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.title]=\"ariaLabel || ('platformSearchField.searchInputLabel' | fdTranslate)()\"\n [attr.aria-label]=\"ariaLabel || ('platformSearchField.searchInputLabel' | fdTranslate)()\"\n [attr.aria-labelledby]=\"ariaLabel ? null : ariaLabelledBy\"\n [attr.aria-controls]=\"!!_popoverBodyId() ? _popoverBodyId() : null\"\n [attr.aria-expanded]=\"\n dropdownValues()?.length !== 0 ? (_isSuggestionMenuOpen() ? 'true' : 'false') : null\n \"\n [attr.aria-haspopup]=\"dropdownValues()?.length !== 0\"\n autocomplete=\"off\"\n aria-autocomplete=\"both\"\n (keydown)=\"onKeydown($event)\"\n (keydown.enter)=\"onSearchSubmit($event)\"\n (keydown.tab)=\"_handleInputTabKey($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onValueChange($event)\"\n (click)=\"mobile() && openMobileMode()\"\n />\n @if (inputText() && inputText().length > 0) {\n <span class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.addonClass }}\">\n <button\n tabindex=\"-1\"\n [attr.aria-hidden]=\"!mobile()\"\n [attr.title]=\"('platformSearchField.clearButtonTitle' | fdTranslate)()\"\n [attr.aria-label]=\"('platformSearchField.clearButtonTitle' | fdTranslate)()\"\n class=\"fdp-search-field__clear fd-button fd-button--transparent {{ appearance()?.buttonClass }}\"\n [class.fd-input-group__button]=\"!appearance()?.removeGroupButtonClass\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.id]=\"_clearId\"\n (click)=\"clearTextInput()\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </span>\n } @else {\n <!-- prevents width of search from changing when there is no text in the input -->\n <span class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.addonClass }}\"></span>\n }\n @if (forceSearchButton() || isLoading() || (!isLoading() && !_isSearchDone)) {\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.addonClass }} {{\n appearance()?.searchSubmitClass\n }}\"\n >\n @if (!disableSearch()) {\n <button\n tabindex=\"-1\"\n [attr.aria-hidden]=\"!mobile()\"\n [attr.title]=\"('platformSearchField.submitButtonTitle' | fdTranslate)()\"\n [attr.aria-label]=\"('platformSearchField.submitButtonTitle' | fdTranslate)()\"\n class=\"fdp-search-field__submit fd-button fd-button--transparent {{\n appearance()?.buttonClass\n }}\"\n [class.fd-input-group__button]=\"!appearance()?.removeGroupButtonClass\"\n [attr.id]=\"_submitId\"\n [attr.disabled]=\"disabled ? '' : null\"\n (click)=\"onSearchSubmit()\"\n >\n <fd-icon glyph=\"search\"></fd-icon>\n </button>\n }\n </span>\n }\n @if (!disableRefresh() && !isLoading() && (_isRefresh || _isSearchDone)) {\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance()?.addonClass }} {{\n appearance()?.searchSubmitClass\n }}\"\n >\n <button\n [attr.aria-title]=\"('platformSearchField.synchronizeButtonTitle' | fdTranslate)()\"\n [attr.aria-label]=\"('platformSearchField.synchronizeButtonTitle' | fdTranslate)()\"\n class=\"fdp-search-field__loading fd-input-group__button fd-button fd-button--transparent {{\n appearance()?.buttonClass\n }}\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.id]=\"_refreshId\"\n (click)=\"onSearchSubmit()\"\n >\n <fd-icon glyph=\"synchronize\"></fd-icon>\n </button>\n </span>\n }\n @if (appearance()?.helperClass) {\n <div [ngClass]=\"appearance()?.helperClass\"></div>\n }\n </div>\n </div>\n</ng-template>\n<ng-template #suggestionMenuTemplate>\n @if (suggestionsFiltered?.length && !_onlyHeadersFiltered(suggestionsFiltered)) {\n <ul fd-list [attr.id]=\"_menuId\" [searchResultsList]=\"true\" (keydown)=\"onKeydown($event)\" #suggestionList>\n @for (filteredSuggestion of suggestionsFiltered; track filteredSuggestion) {\n @if (filteredSuggestion?.isGroupHeader) {\n <li role=\"group\">\n <ul\n fd-list\n [searchResultsList]=\"true\"\n [attr.aria-roledescription]=\"('platformSearchField.groupHeader' | fdTranslate)()\"\n >\n <li fd-list-group-header class=\"fd-suggestion-header\">\n <span fd-list-title>{{ filteredSuggestion?.value }}</span>\n </li>\n @for (\n childSuggestion of filteredSuggestion?.children | suggestionMatches: inputText();\n track childSuggestion\n ) {\n <ng-template\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ filteredSuggestion: childSuggestion }\"\n ></ng-template>\n }\n @if (filteredSuggestion?.searchInScopeText || filteredSuggestion?.showMoreText) {\n <ng-template\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ filteredSuggestion: filteredSuggestion }\"\n ></ng-template>\n }\n </ul>\n </li>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ filteredSuggestion: filteredSuggestion }\"\n ></ng-template>\n }\n }\n </ul>\n @if (suggestionFooter() && suggestionsFiltered.length > 0) {\n <div fd-popover-body-footer class=\"fdp-search-field__footer\">\n <div fd-bar barDesign=\"footer\">\n <ng-template [ngTemplateOutlet]=\"suggestionFooter()\"></ng-template>\n </div>\n </div>\n }\n } @else if (searchResultsEmptyTemplate()) {\n <div style=\"padding-top: 0.5rem; padding-bottom: 0.5rem\">\n <ng-template [ngTemplateOutlet]=\"searchResultsEmptyTemplate()\"></ng-template>\n </div>\n }\n</ng-template>\n\n<ng-template #suggestionItemTemplate let-filteredSuggestion=\"filteredSuggestion\">\n @let subline = filteredSuggestion?.data?.subline;\n <li\n fd-list-item\n [interactive]=\"true\"\n [suggestion]=\"true\"\n fdpSearchFieldSuggestion\n (keydown.enter)=\"onItemClick(filteredSuggestion, suggestionListItem); $event.preventDefault()\"\n (keyup.space)=\"onItemClick(filteredSuggestion, suggestionListItem); $event.stopPropagation()\"\n (keydown.f2)=\"_focusActionButton($event, suggestionListItem)\"\n (click)=\"onItemClick(filteredSuggestion, suggestionListItem)\"\n [byline]=\"!!subline\"\n #suggestionListItem\n (mouseenter)=\"_searchResultIsHoveredOrFocusedOrMobile(suggestionListItem)\"\n (mouseleave)=\"_searchResultIsHoveredOrFocusedOrMobile(suggestionListItem)\"\n [selected]=\"\n enableSelection() && filteredSuggestion === _selectedSuggestionItem && !filteredSuggestion.isGroupHeader\n \"\n [counter]=\"filteredSuggestion.searchInScopeCounter\"\n [counterRole]=\"'tooltip'\"\n [counterAriaLabel]=\"\n ('platformSearchField.counterLabel' | fdTranslate: { count: filteredSuggestion.searchInScopeCounter })()\n \"\n [ariaRole]=\"'option'\"\n >\n @let listIconGlyph = filteredSuggestion?.data?.listIconGlyph;\n @if (listIconGlyph) {\n <span fd-list-thumbnail>\n <i fd-list-icon [glyph]=\"listIconGlyph\"></i>\n </span>\n }\n @let avatarGlyph = filteredSuggestion?.data?.avatarGlyph;\n @let avatarImage = filteredSuggestion?.data?.avatarImage;\n @let avatarLabel = filteredSuggestion?.data?.avatarLabel;\n @if (avatarGlyph || avatarImage || avatarLabel) {\n <fd-avatar\n [circle]=\"true\"\n size=\"xs\"\n [glyph]=\"avatarGlyph\"\n [image]=\"avatarImage\"\n [label]=\"avatarLabel\"\n ></fd-avatar>\n }\n @let prefix = filteredSuggestion?.data?.prefix;\n @if (prefix) {\n <fd-info-label fd-list-info-label [label]=\"prefix\" color=\"10\"></fd-info-label>\n }\n <!-- previous API was built on suggestions only being strings, hence the need for the check. -->\n @if (_isString(filteredSuggestion)) {\n <!-- toString() below is for type safety -->\n <span\n fd-list-title\n [innerHTML]=\"filteredSuggestion?.toString() | highlight: inputText() : true : true\"\n ></span>\n } @else {\n @if (subline) {\n <div fd-list-content>\n <span\n fd-list-title\n [innerHTML]=\"filteredSuggestion?.value | highlight: inputText() : true : true\"\n ></span>\n <span fd-list-subline>\n {{ subline }}\n </span>\n </div>\n } @else {\n @if (filteredSuggestion.searchInScopeText) {\n <span fd-list-title class=\"fd-list__title--scope\">{{ filteredSuggestion.searchInScopeText }}</span>\n } @else if (filteredSuggestion?.showMoreText) {\n @let showMoreText =\n filteredSuggestion?.showMoreCounter\n ? filteredSuggestion?.showMoreText + ' (' + filteredSuggestion?.showMoreCounter + ')'\n : filteredSuggestion?.showMoreText;\n <span class=\"fdp-search-field__show-more\" [attr.aria-label]=\"showMoreText\">{{ showMoreText }}</span>\n } @else {\n <span\n fd-list-title\n [innerHTML]=\"filteredSuggestion?.value | highlight: inputText() : true : true\"\n ></span>\n }\n }\n\n @let showDeleteButton = filteredSuggestion?.data?.showDeleteButton;\n @let actionButtons = filteredSuggestion?.data?.actionButtons;\n @if (showDeleteButton || actionButtons?.length) {\n <div tabindex=\"-1\" [cdkTrapFocus]=\"_actionButtonTabIndex() === 0\">\n @if (actionButtons && actionButtons.length) {\n @for (button of actionButtons; track $index) {\n @if (button.id) {\n <button\n fd-button\n fdType=\"transparent\"\n [title]=\"button.actionButtonLabel\"\n [attr.aria-label]=\"button.actionButtonLabel\"\n [id]=\"button.actionButtonId\"\n [glyph]=\"button.actionButtonGlyph\"\n (fdkClicked)=\"_performButtonClick($event, button.actionButtonCallback)\"\n (keydown.f2)=\"_focusParentListItem($event, suggestionListItem)\"\n [attr.tabindex]=\"_actionButtonTabIndex()\"\n ></button>\n } @else {\n <button\n fd-button\n fdType=\"transparent\"\n [title]=\"button.actionButtonLabel\"\n [attr.aria-label]=\"button.actionButtonLabel\"\n [glyph]=\"button.actionButtonGlyph\"\n (fdkClicked)=\"_performButtonClick($event, button.actionButtonCallback)\"\n (keydown.f2)=\"_focusParentListItem($event, suggestionListItem)\"\n [attr.tabindex]=\"_actionButtonTabIndex()\"\n ></button>\n }\n }\n }\n\n @let deleteCallback = filteredSuggestion?.data?.deleteCallback;\n @if (showDeleteButton && _searchResultIsHoveredOrFocusedOrMobile(suggestionListItem)) {\n <button\n fd-button\n fdType=\"transparent\"\n [title]=\"('platformSearchField.deleteButtonTitle' | fdTranslate)()\"\n [ariaLabel]=\"('platformSearchField.deleteButtonAriaLabel' | fdTranslate)()\"\n glyph=\"decline\"\n (fdkClicked)=\"_performButtonClick($event, deleteCallback)\"\n (keydown.f2)=\"_focusParentListItem($event, suggestionListItem)\"\n [attr.tabindex]=\"_actionButtonTabIndex()\"\n ></button>\n }\n </div>\n }\n }\n </li>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\nimport { SearchFieldComponent, SearchFieldSuggestionDirective, SuggestionMatchesPipe } from './search-field.component';\n\nconst components = [SearchFieldComponent, SearchFieldSuggestionDirective, SuggestionMatchesPipe, ContentDensityModule];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformSearchFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|