@fundamental-ngx/platform 0.52.2-rc.2 → 0.52.2-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/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +9 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +2 -2
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +3 -3
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +18 -4
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +4 -4
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +5 -6
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +2 -1
- package/esm2022/variant-management/variant-management.component.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-form.mjs +8 -3
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +25 -11
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -0
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/form/multi-combobox/commons/base-multi-combobox.d.ts +10 -3
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-icon-tab-bar.mjs","sources":["../../../../libs/platform/icon-tab-bar/constants.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-base.class.ts","../../../../libs/platform/icon-tab-bar/components/closable-icon-tab-bar.class.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.html","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.ts","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.ts","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.ts","../../../../libs/platform/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.ts","../../../../libs/platform/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.html","../../../../libs/platform/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.ts","../../../../libs/platform/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.html","../../../../libs/platform/icon-tab-bar/directives/icon-tab-bar-free-content.directive.ts","../../../../libs/platform/icon-tab-bar/icon-tab-bar.component.ts","../../../../libs/platform/icon-tab-bar/icon-tab-bar.component.html","../../../../libs/platform/icon-tab-bar/icon-tab-bar.module.ts","../../../../libs/platform/icon-tab-bar/fundamental-ngx-platform-icon-tab-bar.ts"],"sourcesContent":["export const UNIQUE_KEY_SEPARATOR = '.';\nexport const FLIPPER_SIZE = {\n width: 20,\n height: 44,\n verticalHeight: 20\n};\nexport const ICON_TAB_HIDDEN_CLASS_NAME = 'fd-icon-tab-bar__item--hidden';\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n isDevMode,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, OverflowListDirective } from '@fundamental-ngx/cdk/utils';\nimport { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../interfaces/tab-color-associations.interface';\nimport { TabDestinyMode } from '../types';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TextTypePopoverComponent } from './popovers/text-type-popover/text-type-popover.component';\n\n@Directive()\nexport abstract class IconTabBarBase implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n /**\n * @hidden\n * List of tab elements, that can receive focus.\n * There's a separate mapping function to get actual html element: `_getTabUIElementFocusable`\n */\n abstract _tabUIElements: QueryList<unknown>;\n /** @hidden */\n abstract _tabBarPopover: IconTabBarPopoverBase;\n\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n set tabs(value: IconTabBarItem[]) {\n this._tabs = value;\n }\n\n /** @hidden */\n get tabs(): IconTabBarItem[] {\n return this._tabs;\n }\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description densityMode setter triggers tabs to re-calculation overflowed tabs\n */\n @Input()\n set densityMode(value: TabDestinyMode) {\n // Skip first value && value doesn't equal to previous one\n if (this._densityMode && value !== this._densityMode) {\n this._triggerRecalculationVisibleItems();\n }\n this._densityMode = value;\n }\n\n /** Currently selected tab Unique ID. */\n @Input()\n selectedUid: string | undefined;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selected: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** Emits when selected tab Unique ID changes. */\n @Output()\n selectedUidChange = new EventEmitter<string | undefined>();\n\n /**\n * @description Reference to OverflowListDirective\n */\n @ViewChild(OverflowListDirective)\n overflowDirective: OverflowListDirective;\n\n /** Header element reference. */\n @ViewChild('tablist', { read: ElementRef })\n headerElement: ElementRef<HTMLElement>;\n\n /** @hidden */\n _extraTabs$ = signal<IconTabBarItem[]>([]);\n\n /** @hidden */\n _lastVisibleTabIndex: number;\n\n /** @hidden */\n _extraItems$ = signal(false);\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n colorAssociations = input<TabColorAssociations | undefined>();\n\n /** @hidden */\n readonly _inDynamicPage = !!inject(FD_DYNAMIC_PAGE, { optional: true });\n\n /** @hidden */\n protected readonly _cd = inject(ChangeDetectorRef);\n\n /** @Hidden */\n protected readonly _ngZone = inject(NgZone);\n\n /** @hidden */\n private _tabs: IconTabBarItem[] = [];\n\n /** @hidden */\n private _densityMode: TabDestinyMode;\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _destroyed = false;\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tabs && !changes.tabs.firstChange) {\n this._initTabs();\n this._triggerRecalculationVisibleItems();\n return;\n }\n if (changes.isRtl && !changes.isRtl.firstChange) {\n this._triggerRecalculationVisibleItems();\n }\n\n if (changes.selectedUid && !changes.selectedUid.firstChange) {\n this._handleSelectedUidChange();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initTabs();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._triggerRecalculationVisibleItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed = true;\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @param event\n */\n _selectItem(selectedItem: IconTabBarItem, event?: Event): void {\n event?.stopPropagation();\n this.selectedUid = selectedItem.uId;\n this.selectedUidChange.emit(this.selectedUid);\n selectedItem.badge = false;\n this.selected.emit(selectedItem);\n }\n\n /** @hidden */\n _keyDownHandler(\n event: KeyboardEvent,\n tab: IconTabBarItem | undefined,\n currentIndex: number,\n popover?: TextTypePopoverComponent\n ): void {\n if (tab && KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && tab?.subItems?.length) {\n popover?._openPopover();\n return;\n }\n this.isRtl ? this._focusPreviousItem(currentIndex) : this._focusNextItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextItem(currentIndex) : this._focusPreviousItem(currentIndex);\n }\n }\n\n /** @hidden focuses next tab */\n _focusNextItem(currentIndex: number): void {\n const nextIndex = currentIndex === this.tabs.length - 1 ? 0 : currentIndex + 1;\n this._focusItem(nextIndex);\n }\n\n /** @hidden focuses previous tab */\n _focusPreviousItem(currentIndex: number): void {\n if (currentIndex === 0) {\n // if current focused element is first, focus the last one. If tabs are overflowed, focus the last tab in the popover\n this._focusItem(this.tabs.length - 1, true);\n } else {\n this._focusItem(currentIndex - 1);\n }\n }\n\n /**\n * @hidden\n * @param tabIndex index of the tab to apply focus\n * @param focusLast whether to focus first or last item in the popover\n */\n _focusItem(tabIndex: number, focusLast = false): void {\n if (tabIndex > this._lastVisibleTabIndex) {\n this._tabBarPopover._openPopover(focusLast);\n } else {\n const itemToFocus = this._getTabUIElementFocusable(this._tabUIElements.get(tabIndex));\n itemToFocus?.focus();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n _selectExtraItem(selectedItem: IconTabBarItem): void {\n if (selectedItem.color) {\n selectedItem.cssClasses = [`fd-icon-tab-bar__item--${selectedItem.color}`];\n }\n\n this._selectItem(selectedItem);\n this._triggerRecalculationVisibleItems();\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n this._extraItems$.set(extraItems > 0);\n\n const tabs = [...this._tabs];\n const extraTabs: IconTabBarItem[] = [];\n const selected = tabs.find((tab) => tab.uId === this.selectedUid);\n\n this._lastVisibleTabIndex = this._getLastVisibleTabIndex(tabs.length, extraItems, selected);\n\n this._resetAndHideExtraTabs(tabs, extraTabs);\n\n this._extraTabs$.set(extraTabs);\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * Mapping function to resolve UI tab element to it's focusable part/descendant\n */\n protected _getTabUIElementFocusable(tabUIElement: unknown): Nullable<HTMLElement> {\n if (tabUIElement && typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n if ((<ElementRef>tabUIElement).nativeElement instanceof HTMLElement) {\n return (<ElementRef<HTMLElement>>tabUIElement).nativeElement;\n }\n }\n if (isDevMode()) {\n console.warn('Failed to get focusable tab element');\n }\n return null;\n }\n\n /**\n * @hidden\n * @description trigger recalculation items, need to do it asynchronously after dom was rerendered\n */\n protected _triggerRecalculationVisibleItems(): void {\n this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n if (this.overflowDirective && !this._destroyed) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n this._recalculateVisibleItems(extra);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n this._lastVisibleTabIndex = this.tabs.length - 1;\n\n if (this.selectedUid) {\n return;\n }\n\n const selectedItem = this._findActiveTabId(this.tabs) || this.tabs[0];\n this.selectedUid = selectedItem?.uId;\n\n if (!selectedItem) {\n return;\n }\n\n this.selectedUidChange.emit(this.selectedUid);\n this.selected.emit(selectedItem);\n }\n\n /**\n * @hidden\n * Resets and hides extra tabs.\n * @param tabs - The list of tab items.\n * @param extraTabs - The list of extra tab items.\n */\n private _resetAndHideExtraTabs(tabs: IconTabBarItem[], extraTabs: IconTabBarItem[]): void {\n tabs.forEach((item) => this._resetTab(item));\n this._hideExtraTabs(tabs, extraTabs);\n }\n\n /**\n * @hidden\n * Handles changes to the selected UID.\n */\n private _handleSelectedUidChange(): void {\n const isExtraTab = this._extraTabs$().find((tab) => tab.uId === this.selectedUid);\n const selected = this.tabs.find((tab) => tab.uId === this.selectedUid);\n if (isExtraTab) {\n this._selectExtraItem(isExtraTab);\n } else if (selected) {\n this._selectExtraItem(selected);\n }\n }\n\n /**\n * @hidden\n * Calculates the index of the last visible tab item.\n * @param totalTabs - The total number of tabs.\n * @param extraItems - The number of extra items.\n * @param selected - The currently selected tab item (optional).\n * @returns The index of the last visible tab item.\n */\n private _getLastVisibleTabIndex(totalTabs: number, extraItems: number, selected?: IconTabBarItem): number {\n if (selected && selected.index >= totalTabs - extraItems) {\n return totalTabs - extraItems - 2;\n } else {\n return totalTabs - extraItems - 1;\n }\n }\n\n /**\n * @hidden\n * Resets the visibility and CSS classes of a tab item.\n * @param tab - The tab item to reset.\n */\n private _resetTab(tab: IconTabBarItem): void {\n tab.hidden = false;\n tab.cssClasses = tab.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n /**\n * @hidden\n * Hides extra tabs and updates the extraTabs array with the hidden tabs.\n * @param tabs - The array of all tab items.\n * @param extraTabs - The array to store the hidden tab items.\n */\n private _hideExtraTabs(tabs: IconTabBarItem[], extraTabs: IconTabBarItem[]): void {\n for (let i = this._lastVisibleTabIndex + 1; i < tabs.length; i++) {\n const tab = tabs[i];\n if (tab.uId !== this.selectedUid) {\n extraTabs.push({ ...tab });\n tab.hidden = true;\n tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n }\n }\n\n /**\n * @hidden\n * Recursively finds the active tab item in a list of tabs.\n * @param tabs - The array of tab items.\n * @returns The active tab item, or undefined if no active tab is found.\n */\n private _findActiveTabId(tabs: IconTabBarItem[]): IconTabBarItem | undefined {\n let activeTab: IconTabBarItem | undefined;\n for (const tab of tabs) {\n if (tab.active) {\n activeTab = tab;\n break;\n } else if (tab.subItems) {\n activeTab = this._findActiveTabId(tab.subItems);\n if (activeTab) {\n break;\n }\n }\n }\n\n return activeTab;\n }\n}\n","import { BACKSPACE, DELETE } from '@angular/cdk/keycodes';\nimport { Directive, EventEmitter, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarBase } from './icon-tab-bar-base.class';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TextTypePopoverComponent } from './popovers/text-type-popover/text-type-popover.component';\n\n@Directive()\nexport abstract class ClosableIconTabBar extends IconTabBarBase {\n abstract _tabBarPopover: IconTabBarPopoverBase;\n /**\n * Event emits when user clicks on x button in tab.\n */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n _closeTab(itemIndex: string, checkPopover = false): void {\n const popoverPresent = !!this._tabBarPopover;\n const tab = this._getTabInfoFromMainList(itemIndex);\n\n if (!tab?.parent) {\n return;\n }\n\n tab.parent.splice(\n tab.parent.findIndex((item) => item.uId === itemIndex),\n 1\n );\n\n this.tabs = this._updateTabs(this.tabs);\n\n this._triggerRecalculationVisibleItems();\n this.closeTab.emit(tab.tab);\n\n if (!checkPopover) {\n return;\n }\n // Delay to ensure popover is recalculated.\n setTimeout(() => {\n // Popover has been removed, shift focus to the last item of the tab bar.\n if (popoverPresent && !this._tabBarPopover) {\n this._focusItem(this._lastVisibleTabIndex);\n }\n });\n }\n\n /** @hidden */\n _keyDownHandler(\n event: KeyboardEvent,\n tab: IconTabBarItem | undefined,\n currentIndex: number,\n popover?: TextTypePopoverComponent\n ): void {\n if (tab?.closable && KeyUtil.isKeyCode(event, [BACKSPACE, DELETE])) {\n event.preventDefault();\n this._closeTab(tab.uId);\n // Need to detect changes to trigger query list refresh.\n this._cd.detectChanges();\n\n // If last tab was closed, focus new last item, otherwhise set focus to the item that took place of removed one.\n const newFocusIndex = this.tabs.length - 1 < currentIndex ? this.tabs.length - 1 : currentIndex;\n\n this._focusItem(newFocusIndex);\n return;\n }\n super._keyDownHandler(event, tab, currentIndex, popover);\n }\n\n /**\n * @hidden\n * @param arr\n * @param parentUid\n * @description Update indexes, uIds, styles.\n */\n protected _updateTabs(arr: IconTabBarItem[], parentUid?: string, flatIndexRef = { value: 0 }): IconTabBarItem[] {\n return arr.map((item, index) => {\n item.index = index;\n item.uId = parentUid ? `${parentUid}${UNIQUE_KEY_SEPARATOR}${index}` : `${index}`;\n item.flatIndex = flatIndexRef.value++;\n item.parentUId = parentUid;\n if (!parentUid && item.color) {\n item.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n item.subItems = this._updateTabs(item.subItems, item.uId, flatIndexRef);\n }\n return { ...item };\n });\n }\n\n /**\n * @hidden\n * @param uid\n * @param arr\n * @returns {parent, tab}\n * @description Get tab reference inside main tab array and reference to parent array.\n */\n protected _getTabInfoFromMainList(\n uid: string,\n arr: any[] = this.tabs\n ): { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined {\n let result: { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined;\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n if (item.uId === uid) {\n result = { parent: arr, tab: item };\n break;\n } else if (Array.isArray(item.subItems)) {\n result = this._getTabInfoFromMainList(uid, item.subItems);\n if (result) {\n break;\n }\n }\n }\n return result;\n }\n}\n","import { BACKSPACE, DELETE, DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n input\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Directive()\nexport abstract class IconTabBarPopoverBase implements OnChanges {\n /** @hidden list of tab html elements, that can receive focus. Each item should have \"data-flatIndex\" attribute */\n abstract _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Reference to PopoverComponent\n */\n @ViewChild('popover')\n popover: PopoverComponent;\n\n /**\n * @description Sub items array\n */\n @Input()\n extraTabs: IconTabBarItem[];\n\n /**\n * @description Should we show separator between subItems\n */\n @Input()\n isSeparators = false;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selectedExtraItem: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** @description Emits when popover is closed and focus should be applied to first visible tab */\n @Output()\n focusFirstVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** @description Emits when popover is closed and focus should be applied to last visible tab */\n @Output()\n focusLastVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emits when user clicks on x button in tab. */\n @Output()\n closeTab = new EventEmitter<string>();\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n colorAssociations = input<TabColorAssociations | undefined>();\n\n /**\n * @hidden\n * @description state of popover\n */\n _isOpen = false;\n\n /** @hidden */\n constructor(protected _cd: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.extraTabs) {\n this._setStyles(this.extraTabs);\n }\n }\n\n /**\n * @hidden\n * @param focusLast whether to focus first or last item in the popover\n */\n _openPopover(focusLast = false): void {\n if (!this._isOpen) {\n this.popover.open();\n }\n if (focusLast) {\n this._tabExtraUIElements.get(this._tabExtraUIElements.length - 1)?.nativeElement.focus();\n }\n }\n\n /** @hidden */\n _focusPreviousPopoverItem(currentIndex: number): void {\n if (currentIndex === 0) {\n this.popover.close();\n this.focusLastVisibleItem.emit();\n } else {\n this._focusPopoverItem(currentIndex - 1);\n }\n }\n\n /** @hidden */\n _focusNextPopoverItem(currentIndex: number): void {\n if (currentIndex === this._tabExtraUIElements.length - 1) {\n this.popover.close();\n this.focusFirstVisibleItem.emit();\n } else {\n this._focusPopoverItem(currentIndex + 1);\n }\n }\n\n /** @hidden */\n _focusPopoverItem(index: number): void {\n const ordered = this._getOrderedTabExtraUIElements();\n ordered[index]?.focus();\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.selectedExtraItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _keyDownHandler(event: KeyboardEvent, tab: IconTabBarItem, currentIndex: number): void {\n if (tab?.closable && KeyUtil.isKeyCode(event, [BACKSPACE, DELETE])) {\n event.preventDefault();\n this.closeTab.emit(tab.uId);\n this._focusPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusPreviousPopoverItem(currentIndex) : this._focusNextPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextPopoverItem(currentIndex) : this._focusPreviousPopoverItem(currentIndex);\n }\n }\n\n /**\n * @hidden\n * @description Generate styles for subItems\n */\n protected _setStyles(items: IconTabBarItem[]): void {\n items.forEach((item) => {\n if (item.color) {\n item.cssClasses = [`fd-icon-tab-bar__list-item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n this._setStyles(item.subItems);\n }\n });\n }\n\n /** @hidden */\n private _getOrderedTabExtraUIElements(): HTMLElement[] {\n return this._tabExtraUIElements\n .toArray()\n .map((e) => ({\n flatIndex: parseInt(e.nativeElement.getAttribute('data-flatIndex')!, 10),\n nativeElement: e.nativeElement\n }))\n .sort(({ flatIndex: aFlatIndex }, { flatIndex: bFlatIndex }) => aFlatIndex - bFlatIndex)\n .map(({ nativeElement }) => nativeElement);\n }\n}\n","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-icon-tab-bar-popover',\n templateUrl: './icon-tab-bar-popover.component.html',\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconComponent,\n NgClass,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarPopoverComponent extends IconTabBarPopoverBase {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing position inside container left/right\n */\n @Input()\n leftSide = false;\n\n /**\n * @description Label for button\n */\n @Input()\n label = 'more';\n\n /** Whether to display labels for tab items */\n @Input()\n showItemLabel: boolean;\n}\n","<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\" tabindex=\"-1\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n @for (item of extraTabs; track item.uId; let idx = $index) {\n @if (isSeparators) {\n <li tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n }\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon | fdkAsyncOrSync\"></fd-icon>\n </span>\n </span>\n @if (showItemLabel && (item.label | fdkAsyncOrSync)) {\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{\n item.label | fdkAsyncOrSync\n }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ itemCounter }})\n </span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n</fd-popover>\n","import { SlicePipe } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-filter-type',\n templateUrl: './icon-tab-bar-filter-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarFilterTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n OverflowListItemDirective,\n IconComponent,\n IconTabBarPopoverComponent,\n SlicePipe,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarFilterTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /**\n * @description Boolean flag indicating to show total tab\n */\n @Input()\n showTotalTab = true;\n\n /** @hidden */\n _totalTab?: IconTabBarItem;\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n super._initTabs();\n this._totalTab = this.showTotalTab ? this.tabs[0] : undefined;\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (showTotalTab) {\n <li class=\"fd-icon-tab-bar__item\" role=\"presentation\" fdkOverflowListItem>\n <a\n (click)=\"_totalTab && _selectItem(_totalTab)\"\n (keydown)=\"_keyDownHandler($event, _totalTab, 0)\"\n [attr.aria-selected]=\"_totalTab?.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n tabindex=\"0\"\n #tabItem\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container fd-icon-tab-bar__container--filter\">\n @if (_totalTab?.counter) {\n <span class=\"fd-icon-tab-bar__filter-counter\">{{ _totalTab?.counter }}</span>\n }\n <span class=\"fd-icon-tab-bar__filter-label\">{{ _totalTab?.label | fdkAsyncOrSync }}</span>\n </div>\n </a>\n </li>\n }\n @for (item of tabs | slice: 1; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"showTotalTab ? -1 : idx > 0 ? -1 : 0\"\n (keydown)=\"_keyDownHandler($event, item, idx + (showTotalTab ? 1 : 0))\"\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.counter) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</div>\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent } from '@fundamental-ngx/core/icon';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-icon-type',\n templateUrl: './icon-tab-bar-icon-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarIconTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n OverflowListItemDirective,\n NgClass,\n IconComponent,\n ButtonComponent,\n IconTabBarPopoverComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarIconTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** Whether to display labels for tab items */\n @Input()\n showLabel: boolean;\n\n /** @hidden */\n readonly _defaultFontFamily = FD_DEFAULT_ICON_FONT_FAMILY;\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n >\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\" [font]=\"item.iconFont || _defaultFontFamily\"></fd-icon>\n </span>\n @if (item.counter && (!item.label || !showLabel)) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n @if (showLabel && item.label) {\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label }}</span>\n </div>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [showItemLabel]=\"showLabel\"\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { Component, ElementRef, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../../constants';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-process-type',\n templateUrl: './icon-tab-bar-process-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarProcessTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n IconTabBarPopoverComponent,\n OverflowListItemDirective,\n IconComponent,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarProcessTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** @hidden */\n _offsetOverflowDirective = 30;\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _nextSteps: IconTabBarItem[] = [];\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _prevSteps: IconTabBarItem[] = [];\n\n /** @hidden */\n _showLeftBtn = false;\n\n /** @hidden */\n _showRightBtn = false;\n\n /** @hidden */\n _anchorIndexForExtraBtnDirective: number;\n\n /** @hidden */\n private _firstVisibleTabIndex = 0;\n\n /** @hidden */\n private _currentStepIndex = 0;\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._currentStepIndex = selectedItem.index;\n super._selectItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n async _selectExtraItem(selectedItem: IconTabBarItem): Promise<void> {\n this._currentStepIndex = selectedItem.index;\n let amountOfPreviousSteps;\n let amountOfNextSteps;\n // We have to cases (strategy) for overflow extra tabs.\n // 1) When user click on step inside previous steps popover\n // 2) When user click on step inside next steps popover\n let isPreviousStepsStrategy: boolean;\n if (this._currentStepIndex > this._lastVisibleTabIndex) {\n amountOfNextSteps = this._nextSteps.length - (this._currentStepIndex - this._lastVisibleTabIndex);\n this._showRightBtn = amountOfNextSteps > 0;\n this._showLeftBtn = true;\n isPreviousStepsStrategy = false;\n } else {\n amountOfPreviousSteps = this._prevSteps.length - (this._firstVisibleTabIndex - this._currentStepIndex);\n this._showRightBtn = true;\n isPreviousStepsStrategy = true;\n this._showLeftBtn = amountOfPreviousSteps > 0;\n }\n this._selectItem(selectedItem);\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n if (this.overflowDirective) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n isPreviousStepsStrategy\n ? this.recalculateItemsByPrevArr(extra, amountOfPreviousSteps)\n : this._recalculateItemsByNextArr(extra, amountOfNextSteps);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n const amountOfPrevSteps = this._currentStepIndex > extraItems ? extraItems : this._currentStepIndex;\n this.recalculateItemsByPrevArr(extraItems, amountOfPrevSteps);\n }\n\n /** @hidden */\n private _clearExtraList(): void {\n this._nextSteps = [];\n this._prevSteps = [];\n this.tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfNextSteps\n * @description We fill the array of the next steps to the selected tab,\n * based on this we generate the array of the previous steps if it is necessary\n */\n private _recalculateItemsByNextArr(extraItems: number, amountOfNextSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const tabs = [...this.tabs];\n const visibleAmountOfItems = tabs.length - extraItems;\n for (let i = tabs.length - amountOfNextSteps; i < tabs.length; i++) {\n this._nextSteps.push(cloneDeep(tabs[i]));\n tabs[i].hidden = true;\n tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._showRightBtn = !!this._nextSteps.length;\n this._firstVisibleTabIndex = tabs.length - visibleAmountOfItems - this._nextSteps.length;\n this._lastVisibleTabIndex = tabs.length - amountOfNextSteps - 1;\n\n if (this._nextSteps.length === extraItems) {\n return;\n }\n\n let amountOfPrevSteps = extraItems - this._nextSteps.length;\n let nextIndex = this._firstVisibleTabIndex - 1;\n while (amountOfPrevSteps > 0) {\n this._prevSteps.push(cloneDeep(tabs[nextIndex]));\n tabs[nextIndex].hidden = true;\n tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n --nextIndex;\n --amountOfPrevSteps;\n }\n // Added +1 for left button\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showLeftBtn = !!this._prevSteps.length;\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfPreviousSteps\n * @description We fill the array of the previous steps to the selected tab,\n * based on this we generate the array of the next steps if it is necessary\n */\n private recalculateItemsByPrevArr(extraItems: number, amountOfPreviousSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const tabs = [...this.tabs];\n const visibleAmountOfItems = tabs.length - extraItems;\n for (let i = amountOfPreviousSteps - 1; i >= 0; i--) {\n this._prevSteps.push(cloneDeep(tabs[i]));\n tabs[i].hidden = true;\n tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._firstVisibleTabIndex = this._prevSteps.length;\n this._lastVisibleTabIndex = this._prevSteps.length + visibleAmountOfItems - 1;\n this._showLeftBtn = !!this._prevSteps.length;\n\n if (this._prevSteps.length === extraItems) {\n this._showRightBtn = false;\n return;\n }\n\n let amountOfNextSteps = extraItems - this._prevSteps.length;\n let nextIndex = this._prevSteps.length ? this._prevSteps.length + visibleAmountOfItems : visibleAmountOfItems;\n while (amountOfNextSteps > 0) {\n this._nextSteps.push(cloneDeep(tabs[nextIndex]));\n tabs[nextIndex].hidden = true;\n tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n ++nextIndex;\n --amountOfNextSteps;\n }\n // Add +1 for left btn\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showRightBtn = !!this._nextSteps.length;\n this._offsetOverflowDirective = this._nextSteps.length ? 70 : 0;\n this._cd.detectChanges();\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n [class.fd-icon-tab-bar__header--left-offset]=\"_showLeftBtn\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"_offsetOverflowDirective\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (_showLeftBtn) {\n <li\n role=\"presentation\"\n class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow fd-icon-tab-bar__item--overflow-left\"\n >\n <fdp-icon-tab-bar-popover\n [extraTabs]=\"_prevSteps\"\n [label]=\"_prevSteps.length.toString()\"\n [isSeparators]=\"true\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n role=\"tab\"\n >\n @if (item.icon) {\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</span>\n </div>\n } @else {\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label | fdkAsyncOrSync }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n @if (_lastVisibleTabIndex !== idx) {\n <span class=\"fd-icon-tab-bar__separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </span>\n }\n </li>\n }\n @if (_showRightBtn) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_nextSteps\"\n [isSeparators]=\"true\"\n [label]=\"_nextSteps.length.toString()\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n >\n </fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { DragRef, Point } from '@angular/cdk/drag-drop';\nimport { DestroyRef, Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FLIPPER_SIZE } from '../../constants';\nimport {\n ElementChord,\n IconTabBarDndItem,\n IconTabBarDndList,\n IconTabBarItem\n} from '../../interfaces/icon-tab-bar-item.interface';\n\nexport interface FdDnDEvent {\n draggableItem: IconTabBarItem;\n targetItem: IconTabBarItem;\n action: 'replace' | 'insert';\n}\n\n@Directive({\n selector: '[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]',\n standalone: true\n})\nexport class IconBarDndContainerDirective {\n /**\n * @description Defines if drag and drop feature should be enabled for list items\n */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /**\n * @description Event that is thrown, when the item is dropped\n */\n @Output()\n dropped = new EventEmitter<FdDnDEvent>();\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private dndItemDirectives: IconTabBarDndItem[] = [];\n\n /** @hidden */\n private _dndListDirectives: Set<IconTabBarDndList> = new Set<IconTabBarDndList>();\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _virtualSeparatorsCoordinates: ElementChord[] = [];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestSeparatorIndex: number | null = null;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n\n /**\n * @description Method called, when element is started to be dragged\n */\n dragStart(): void {\n /** Counting all of the elements's chords */\n this._elementsCoordinates = this.dndItemDirectives.map((item: IconTabBarDndItem) =>\n item.getElementCoordinates()\n );\n this._generateVirtualSeparators();\n }\n\n /**\n * @param mousePosition\n * @description Method called, when the item is being moved by 1 px\n */\n onMove(mousePosition: Point): void {\n let newClosestIndex: number | null = null;\n let newClosestSeparatorIndex: number | null = null;\n\n this._elementsCoordinates.find((element, index) => {\n /** Check if element can be replaced */\n if (newClosestIndex !== index) {\n const isMouseOnElement = this._isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n newClosestIndex = index;\n return true;\n }\n }\n });\n\n if (newClosestIndex !== null && newClosestIndex === this._closestItemIndex) {\n return;\n }\n\n if (this._closestItemIndex !== newClosestIndex) {\n this.dndItemDirectives[this._closestItemIndex]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex!]?.toggleSeparatorStyles();\n }\n\n this._closestItemIndex = newClosestIndex;\n\n if (newClosestIndex !== null) {\n this._closestSeparatorIndex = null;\n this.dndItemDirectives[newClosestIndex].toggleHoveredStyles(true);\n return;\n }\n\n // If we aren't on tab then check separator element.\n this._virtualSeparatorsCoordinates.find((element, index) => {\n const isMouseOnFlipper = this._isMouseOnFlipper(element, mousePosition);\n if (isMouseOnFlipper) {\n newClosestSeparatorIndex = index;\n return true;\n }\n });\n\n if (newClosestSeparatorIndex !== null && newClosestSeparatorIndex === this._closestSeparatorIndex) {\n return;\n }\n\n if (this._closestSeparatorIndex !== newClosestSeparatorIndex) {\n this.dndItemDirectives[this._closestItemIndex!]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex]?.toggleSeparatorStyles();\n }\n\n this._closestSeparatorIndex = newClosestSeparatorIndex;\n\n if (newClosestSeparatorIndex !== null) {\n this._closestItemIndex = null;\n this.dndItemDirectives[newClosestSeparatorIndex].toggleSeparatorStyles(true);\n return;\n }\n }\n\n /**\n * @param dragDir\n * @description Method called, when element is released\n */\n dragEnd(dragDir: IconTabBarDndItem): void {\n if (this._closestSeparatorIndex || this._closestSeparatorIndex === 0) {\n this.dndItemDirectives[this._closestSeparatorIndex].toggleSeparatorStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestSeparatorIndex].dndItemData,\n action: 'replace'\n });\n }\n if (this._closestItemIndex || this._closestItemIndex === 0) {\n this.dndItemDirectives[this._closestItemIndex].toggleHoveredStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestItemIndex].dndItemData,\n action: 'insert'\n });\n }\n /** Reset */\n this._elementsCoordinates = [];\n this._virtualSeparatorsCoordinates = [];\n this._closestItemIndex = null;\n this._closestSeparatorIndex = null;\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current container\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this.dndItemDirectives.push(dragItem);\n dragItem.moved.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((position: Point) => this.onMove(position));\n dragItem.started.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.dragStart());\n dragItem.released.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.dragEnd(dragItem));\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current container\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this.dndItemDirectives = this.dndItemDirectives.filter((item) => item !== dragItem);\n }\n\n /**\n * @param listDir\n * @description Register IconTabBarDndList to current container\n */\n registerDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.add(listDir);\n listDir.changeDraggableState(this._draggable);\n }\n\n /**\n * @param listDir\n * @description Remove registered IconTabBarDndList to current container\n */\n removeDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.delete(listDir);\n }\n\n /**\n * @description Generate virtual elements as separator between tabs\n */\n private _generateVirtualSeparators(): void {\n this._elementsCoordinates.forEach((item, index) => {\n const isVertical = this.dndItemDirectives[index].isVertical;\n this._virtualSeparatorsCoordinates.push({\n x: isVertical ? item.x : item.x - FLIPPER_SIZE.width,\n y: isVertical ? item.y + FLIPPER_SIZE.verticalHeight : item.y,\n width: isVertical ? item.width : FLIPPER_SIZE.width,\n height: isVertical ? FLIPPER_SIZE.verticalHeight : FLIPPER_SIZE.height\n });\n });\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n for (const list of this._dndListDirectives) {\n list.changeDraggableState(draggable);\n }\n }\n\n /** @hidden */\n private _isMouseOnFlipper(element: ElementChord, mousePosition: Point): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n\n /** @hidden */\n private _isMouseOnElement(element: ElementChord, mousePosition: Point, isVertical: boolean = false): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = isVertical ? element.y - FLIPPER_SIZE.verticalHeight / 2 : element.y;\n const endY = element.y + element.height - FLIPPER_SIZE.verticalHeight / 2;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n}\n\n/** @hidden */\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Input, OnDestroy, inject } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nimport { DragDrop, DragRef, DropListRef } from '@angular/cdk/drag-drop';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime } from 'rxjs/operators';\nimport { IconTabBarDndItem, IconTabBarDndList } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\n\n@Directive({\n selector: '[fdpIconBarDndList], [fdp-icon-bar-dnd-list]',\n standalone: true\n})\nexport class IconBarDndListDirective implements IconTabBarDndList, AfterViewInit, OnDestroy {\n /**\n * @description Direction in which the list is oriented.\n */\n @Input()\n dndOrientation: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * @description Is disabled autoscroll inside draggable list\n */\n @Input()\n dndAutoScroll = true;\n\n /** @hidden */\n private _dropListRef: DropListRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private readonly _dndItems$ = new ReplaySubject<void>(1);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _dragDrop: DragDrop,\n private _dndContainer: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._dropListRef = this._dragDrop.createDropList(this.elementRef.nativeElement);\n this._dropListRef.sortingDisabled = true;\n this._dropListRef.autoScrollDisabled = this.dndAutoScroll;\n this._dropListRef.disabled = true;\n this._dropListRef.withOrientation(this.dndOrientation);\n\n this._dndContainer.registerDndList(this);\n\n this._dndItems$\n .pipe(debounceTime(100), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._dropListRef.withItems(this._dragRefItems));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dropListRef.dispose();\n this._dndContainer.removeDndList(this);\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current list\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current list\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param draggable\n */\n changeDraggableState(draggable: boolean): void {\n this._dropListRef.disabled = !draggable;\n }\n}\n","import { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, DestroyRef, Directive, ElementRef, Input, OnDestroy, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ElementChord, IconTabBarDndItem, IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { IconBarDndListDirective } from './icon-bar-dnd-list.directive';\n\n@Directive({\n selector: '[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]',\n standalone: true\n})\nexport class IconBarDndItemDirective implements IconTabBarDndItem, AfterViewInit, OnDestroy {\n /**\n * @description Tab info\n */\n @Input()\n dndItemData: IconTabBarItem;\n\n /**\n * @description Classes for draggable preview\n */\n @Input()\n previewClass: string[] = ['fd-icon-tab-bar__item--dnd-preview'];\n\n /**\n * @description Classes for hovered state\n */\n @Input()\n dndHoveredClass: string[] = ['fd-icon-tab-bar__item--dnd-hovered'];\n\n /**\n * @description Classes for separator, when draggable element between two tabs\n */\n @Input()\n dndSeparatorClass: string[] = [\n 'fd-icon-tab-bar__item--dnd-separator',\n 'fd-icon-tab-bar__item--dnd-separator-vertical'\n ];\n\n /**\n * @description Event thrown when the element is moved by 1px\n */\n readonly moved = new Subject<Point>();\n\n /**\n * @description Event thrown when the element is released\n */\n readonly released = new Subject<void>();\n\n /**\n * @description Event thrown when the element is started to be dragged\n */\n readonly started = new Subject<void>();\n\n /** @hidden */\n isVertical = false;\n\n /**\n * @hidden\n * @description Drag reference, object created from DND CDK Service\n */\n dragRef: DragRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n protected _dragDrop: DragDrop,\n private _dndListDir: IconBarDndListDirective,\n private _dndContainerDir: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.isVertical = this._dndListDir?.dndOrientation === 'vertical';\n this._setCDKDrag();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dndListDir.removeDragItem(this);\n this._dndContainerDir.removeDragItem(this);\n this.dragRef.dispose();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.started.next();\n }\n\n /** @hidden */\n onCdkMove(position: Point): void {\n this.moved.next(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n this.released.next();\n }\n\n /** @hidden */\n getElementCoordinates(): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n\n /**\n * @description Add/delete separator classes\n */\n toggleSeparatorStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndSeparatorClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndSeparatorClass);\n }\n\n /**\n * @description Add/delete hovered state classes\n */\n toggleHoveredStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndHoveredClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndHoveredClass);\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this.dragRef = this._dragDrop.createDrag(this.elementRef);\n this.dragRef.previewClass = this.previewClass;\n\n this._dndListDir?.registerDragItem(this);\n this._dndContainerDir?.registerDragItem(this);\n\n this.dragRef.moved\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => this.onCdkMove(event.pointerPosition));\n\n this.dragRef.released.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.onCdkDragReleased());\n\n this.dragRef.started.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.onCdkDragStart());\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, input, ViewEncapsulation } from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-icon-tab-bar-text-type-tab-item]',\n standalone: true,\n imports: [AsyncOrSyncPipe],\n templateUrl: './icon-tab-bar-text-type-tab-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-icon-tab-bar__tab',\n role: 'tab'\n }\n})\nexport class IconTabBarTextTypeTabItemComponent {\n /** Tab item. */\n @Input()\n item: Nullable<IconTabBarItem>;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n colorAssociations = input<TabColorAssociations | undefined>();\n\n /** @hidden */\n get nativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hiddem */\n private readonly _elementRef = inject(ElementRef);\n}\n","@if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item?.label | fdkAsyncOrSync }}\n @if (item?.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n} @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item?.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item?.label | fdkAsyncOrSync }}</span>\n}\n@if (item?.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n}\n@if (item?.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport {\n PopoverBodyComponent,\n PopoverComponent,\n PopoverControlComponent,\n TriggerConfig\n} from '@fundamental-ngx/core/popover';\nimport { IconBarDndItemDirective } from '../../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarTextTypeTabItemComponent } from '../../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-text-type-popover',\n templateUrl: './text-type-popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconBarDndListDirective,\n NgTemplateOutlet,\n IconBarDndItemDirective,\n NgClass,\n ButtonComponent,\n IconComponent,\n IconTabBarTextTypeTabItemComponent\n ]\n})\nexport class TextTypePopoverComponent extends IconTabBarPopoverBase implements OnChanges {\n /** @hidden reference for html element, that opens dropdown and can receive focus */\n @ViewChild('dropdownTrigger', { read: ElementRef }) _dropdownTrigger: ElementRef<HTMLElement>;\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem', { read: ElementRef }) _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** Whether to render item as a multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Is extra items mode or subitems mode\n */\n @Input()\n isExtraItemsMode = false;\n\n /**\n * @description Parent tab need for subItems mode\n */\n @Input()\n parentTab: IconTabBarItem;\n\n /**\n * @description uId of selected subItem\n */\n @Input()\n selectedSubItemUid: Nullable<string>;\n\n /**\n * @description tabIndex of the particular item. Aplicable only for subitems mode\n */\n @Input()\n tabindex = -1;\n\n /**\n * @description Emits when some subTab is selected and isExtraItemsMode is disabled\n */\n @Output()\n selectedSubItem: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emits when root item is being selected. Applicable for multi-click variant only. */\n @Output()\n selectedItem = new EventEmitter<void>();\n\n /** @hidden */\n _containsSelected = false;\n\n /** @hidden */\n _popoverTriggers: TriggerConfig[] = [\n { trigger: 'click', openAction: true, closeAction: true, stopPropagation: true }\n ];\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (!this.isExtraItemsMode && changes.parentTab && this.parentTab.subItems) {\n this._setStyles(this.parentTab.subItems);\n }\n if (changes.selectedSubItemUid) {\n this._calculateIfContainsSelected();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.isExtraItemsMode ? this.selectedExtraItem.emit(selectedItem) : this.selectedSubItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _textPopoverKeyDownHandler(event: KeyboardEvent, tab: IconTabBarItem): void {\n // using relative index within popover (first popover tab should start from 0)\n const baseIndex = this.parentTab ? this.parentTab.flatIndex + 1 : this.extraTabs[0].flatIndex;\n const currentIndex = tab.flatIndex - baseIndex;\n super._keyDownHandler(event, tab, currentIndex);\n }\n\n /** @hidden */\n private _calculateIfContainsSelected(): void {\n this._containsSelected =\n (this.multiClick && this.parentTab.uId === this.selectedSubItemUid) ||\n (!!this.parentTab.subItems &&\n this._getChildren(this.parentTab.subItems).some(({ uId }) => uId === this.selectedSubItemUid));\n }\n\n /** @hidden */\n private _getChildren(items: IconTabBarItem[]): IconTabBarItem[] {\n return items.reduce((acc: IconTabBarItem[], item: IconTabBarItem) => {\n acc = acc.concat(item);\n if (item.subItems) {\n acc = acc.concat(this._getChildren(item.subItems));\n }\n return acc;\n }, []);\n }\n}\n","@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\" tabindex=\"-1\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (multiClick) {\n <a\n #dropdownTrigger\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"parentTab\"\n [attr.aria-selected]=\"_containsSelected\"\n [colorAssociations]=\"colorAssociations()\"\n [layoutMode]=\"layoutMode\"\n [attr.tabindex]=\"tabindex\"\n (click)=\"selectedItem.emit()\"\n >\n </a>\n}\n@if (!isExtraItemsMode && parentTab && parentTab.subItems?.length) {\n <fd-popover\n [class.fd-icon-tab-bar__popover]=\"multiClick\"\n placement=\"bottom-end\"\n [focusAutoCapture]=\"true\"\n [triggers]=\"_popoverTriggers\"\n [focusTrapped]=\"true\"\n #popover\n >\n <fd-popover-control>\n @if (multiClick) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button fd-button fdType=\"transparent\" tabindex=\"-1\" class=\"fd-icon-tab-bar__button\">\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </button>\n </div>\n } @else {\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n }\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations() && colorAssociations()?.[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n","import { Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass } from '@angular/common';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { UNIQUE_KEY_SEPARATOR } from '../../constants';\nimport { FdDnDEvent, IconBarDndContainerDirective } from '../../directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from '../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { TextTypePopoverComponent } from '../popovers/text-type-popover/text-type-popover.component';\nimport { IconTabBarTextTypeTabItemComponent } from '../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';\n\n/** @hidden */\ninterface DataForReordering {\n arr: IconTabBarItem[];\n item: IconTabBarItem;\n parentUid: string;\n}\n\n/** @hidden */\ntype TabItem = ElementRef<HTMLElement> | TextTypePopoverComponent;\n\n@Component({\n selector: 'fdp-icon-tab-bar-text-type',\n templateUrl: './icon-tab-bar-text-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarTextTypeComponent\n }\n ],\n imports: [\n IconBarDndContainerDirective,\n OverflowListDirective,\n IconBarDndListDirective,\n OverflowListItemDirective,\n IconBarDndItemDirective,\n NgClass,\n TextTypePopoverComponent,\n ButtonComponent,\n IconComponent,\n AsyncOrSyncPipe,\n IconTabBarTextTypeTabItemComponent\n ]\n})\nexport class IconTabBarTextTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<TabItem>;\n\n /** @hidden */\n @ViewChild('extraItemsPopover') _tabBarPopover: TextTypePopoverComponent;\n\n /**\n * @description Disable or enable reordering(drag and drop) feature.\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /** Whether to render icon tab item as multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Emits when user drops the tab.\n */\n @Output()\n reordered = new EventEmitter<IconTabBarItem[]>();\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectExtraItem(selectedItem: IconTabBarItem | undefined): void {\n // Check if the selected item is subItem\n // Then to find root tab, and pass it to the parent method.\n if (selectedItem?.uId.includes(UNIQUE_KEY_SEPARATOR)) {\n const rootTabUid = selectedItem.uId.split(UNIQUE_KEY_SEPARATOR)[0];\n selectedItem = this.tabs.find((tab) => tab.uId === rootTabUid);\n }\n if (!selectedItem) {\n return;\n }\n super._selectExtraItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param draggableItem\n * @param targetItem\n * @param action\n */\n _onDropped(event: FdDnDEvent): void {\n if (!this._canDrop(event)) {\n return;\n }\n\n const replacedParsedUidArr = event.targetItem.uId.split(UNIQUE_KEY_SEPARATOR);\n replacedParsedUidArr.length = replacedParsedUidArr.length - 1;\n const draggableParsedUidArr = event.draggableItem.uId.split(UNIQUE_KEY_SEPARATOR);\n draggableParsedUidArr.length = draggableParsedUidArr.length - 1;\n\n const tabInfoForNewList = this._getTabInfoFromMainList(event.targetItem.uId);\n const tabInfoForPrevList = this._getTabInfoFromMainList(event.draggableItem.uId);\n\n if (!tabInfoForNewList || !tabInfoForPrevList) {\n return;\n }\n\n const dataForAction = {\n replacedItemInfo: {\n arr: tabInfoForNewList.parent,\n item: tabInfoForNewList.tab,\n parentUid: replacedParsedUidArr.length ? replacedParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n },\n draggableItemInfo: {\n arr: tabInfoForPrevList.parent,\n item: tabInfoForPrevList.tab,\n parentUid: draggableParsedUidArr.length ? draggableParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n }\n };\n\n event.action === 'replace' ? this._replaceAsSibling(dataForAction) : this._insertItemAsChild(dataForAction);\n\n this.reordered.emit(this.tabs);\n }\n\n /** @hidden */\n protected _getTabUIElementFocusable(tabUIElement: Nullable<TabItem>): Nullable<HTMLElement> {\n if (!tabUIElement) {\n return tabUIElement;\n }\n if (typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n return tabUIElement.nativeElement;\n }\n return tabUIElement._dropdownTrigger.nativeElement;\n }\n\n /** @hidden */\n private _canDrop(event: FdDnDEvent): boolean {\n let parentUId: Nullable<string> =\n event.action === 'replace' ? event.targetItem.parentUId : event.targetItem.uId;\n while (parentUId) {\n if (parentUId === event.draggableItem.uId) {\n return false;\n }\n const nextSeparatorIdx = parentUId.lastIndexOf(UNIQUE_KEY_SEPARATOR);\n\n parentUId = nextSeparatorIdx > 0 ? parentUId.slice(0, nextSeparatorIdx) : null;\n }\n return true;\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab into another tab.\n */\n private _insertItemAsChild(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n // Remove draggable tab from previous list\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n if (!replacedItemInfo.item.subItems?.length) {\n replacedItemInfo.item.subItems = [];\n }\n // Add tab to subitem of the target tab\n replacedItemInfo.item.subItems.push(draggableItemInfo.item);\n this.tabs = this._updateTabs(this.tabs);\n this._triggerRecalculationVisibleItems();\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab between tabs\n */\n private _replaceAsSibling(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n const newIndex = replacedItemInfo?.item?.index || 0;\n replacedItemInfo.arr.splice(newIndex, 0, draggableItemInfo.item);\n this.tabs = this._updateTabs(this.tabs);\n this._triggerRecalculationVisibleItems();\n }\n}\n","<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--multi-click]=\"multiClick && item.subItems?.length\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length && !multiClick) {\n <a\n #tabItem\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"item\"\n [layoutMode]=\"layoutMode\"\n [colorAssociations]=\"colorAssociations()\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n </a>\n }\n @if (item.subItems?.length || multiClick) {\n <fdp-text-type-popover\n #tabItem\n #itemPopover\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [layoutMode]=\"layoutMode\"\n [multiClick]=\"multiClick\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx, itemPopover)\"\n (closeTab)=\"_closeTab($event)\"\n (selectedItem)=\"_selectItem(item)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { ReactiveTabConfig } from '../../interfaces/tab-config.interface';\nimport { SemanticColor } from '../../types';\n\nlet defaultIdIndex = 0;\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-icon-tab-bar-tab-content',\n standalone: true,\n host: { '[attr.id]': 'id()' }\n})\nexport class IconTabBarTabContentDirective implements HasElementRef {\n /** Tab ID */\n id = input<Nullable<string>>();\n\n /** Tab Unique ID. */\n uId = input<Nullable<string>>();\n\n /** Element reference. */\n readonly elementRef = inject(ElementRef);\n}\n\n@Component({\n selector: 'fdp-icon-tab-bar-tab',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon-tab-bar-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconTabBarTabComponent implements ReactiveTabConfig {\n /** Tab Label. */\n label = input<Nullable<string>>();\n\n /** Tab text color. */\n color = input<SemanticColor>('default');\n\n /** Tab icon. */\n icon = input<string>();\n\n /** Tab icon font family. */\n iconFont = input<IconFont>(FD_DEFAULT_ICON_FONT_FAMILY);\n\n /** Tab counter. */\n counter = input<Nullable<number>>();\n\n /** whether the tab is selected */\n active = input(false, { transform: booleanAttribute });\n\n /** if set to true, will show red circle in top-right corner of tab */\n badge = input(false, { transform: booleanAttribute });\n\n /** Whether the tab can be closed. */\n closable = input(false, { transform: booleanAttribute });\n\n /** Tab ID. */\n id = input(`fdp-icon-tab-bar-tab-${defaultIdIndex++}`);\n\n /** Content renderer. */\n readonly renderer = viewChild<TemplateRef<any>>('renderer');\n\n /** @hidden */\n readonly children = contentChildren(IconTabBarTabComponent);\n}\n","<ng-template #renderer>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fdpIconTabBarFreeContent]',\n standalone: true\n})\nexport class IconTabBarFreeContentDirective {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n ElementRef,\n HostBinding,\n inject,\n Input,\n input,\n model,\n OnInit,\n Optional,\n output,\n signal,\n viewChild,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentDensityService, Nullable, RtlService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';\nimport { IconFont } from '@fundamental-ngx/core/icon';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FD_TABLIST, TabList } from '@fundamental-ngx/core/shared';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, first } from 'rxjs/operators';\nimport { IconTabBarBase } from './components';\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport {\n IconTabBarTabComponent,\n IconTabBarTabContentDirective\n} from './components/icon-tab-bar-tab/icon-tab-bar-tab.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { UNIQUE_KEY_SEPARATOR } from './constants';\nimport { IconTabBarItem } from './interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from './interfaces/tab-color-associations.interface';\nimport { TabConfig } from './interfaces/tab-config.interface';\nimport { IconTabBarBackground, IconTabBarSize, TabDestinyMode, TabType } from './types';\n\n@Component({\n selector: 'fdp-icon-tab-bar',\n templateUrl: './icon-tab-bar.component.html',\n styleUrl: './icon-tab-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n providers: [\n {\n provide: FD_TABLIST,\n useExisting: IconTabBarComponent\n }\n ],\n imports: [\n NgTemplateOutlet,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarTextTypeComponent,\n ScrollbarDirective,\n ScrollSpyDirective,\n IconTabBarTabContentDirective\n ]\n})\nexport class IconTabBarComponent implements OnInit, TabList {\n /**\n * Whether to open tab content one under another without collapsing.\n * Works only for content-projected tab content.\n */\n @Input({ transform: booleanAttribute })\n stackContent = false;\n\n /** @description Type of tab bar view. */\n iconTabType = input<TabType>('text');\n\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n tabsConfig = model<TabConfig[]>();\n\n /** @description Destiny mode. */\n densityMode = model<TabDestinyMode>('inherit');\n\n /** @description Icon font */\n iconTabFont = input<IconFont>('SAP-icons');\n\n /** @description Disable or enable reordering(drag and drop) feature. (supported by text type only) */\n enableTabReordering = input(false);\n\n /** @description Boolean flag indicating to show total tab.(supported by filter type only) */\n showTotalTab = input(true);\n\n /** Whether to render icon tab item as multi-click variant. */\n multiClick = input(false);\n\n /** @description Layout type for tab (supported by text type only) */\n layoutMode = input<'row' | 'column'>('row');\n\n /** @description Icon tab bar background type. */\n iconTabBackground = input<IconTabBarBackground>('solid');\n\n /** @description Icon tab bar size. */\n iconTabSize = input<IconTabBarSize>();\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n colorAssociations = input<TabColorAssociations>();\n\n /**\n * Maximum height of the content.\n * Works only for content-projected tab content.\n */\n maxContentHeight = input('100%');\n\n /** @description Emits when some tab is selected. */\n iconTabSelected = output<IconTabBarItem>();\n\n /** @description Emits when user drop tab. */\n iconTabReordered = output<IconTabBarItem[]>();\n\n /** Event emitted when user clicks on x icon in tab. */\n closeTab = output<IconTabBarItem>();\n\n /** @hidden */\n children = contentChildren(IconTabBarTabComponent, { descendants: false });\n\n /** @hidden */\n _scrollbar = viewChild(ScrollbarDirective);\n\n /** @hidden */\n tabDirectives = viewChildren(IconTabBarTabContentDirective);\n\n @HostBinding('class.fd-tabs-custom')\n private get _customTabs(): boolean {\n return this._inDynamicPage;\n }\n\n /** @hidden */\n get headerContainer(): Nullable<ElementRef> {\n return this._iconTabBarCmp()?.headerElement;\n }\n\n /** @hidden */\n _cssClassForContainer: string[];\n\n /** @hidden */\n _disableScrollSpy = false;\n\n /** @hidden */\n _init = true;\n\n /** Scrollable element reference. */\n get scrollableElement(): Nullable<ElementRef> {\n return this._scrollbar()?.elementRef;\n }\n\n /** @hidden */\n readonly _selectedUid = signal<string | undefined>(undefined);\n\n /** @hidden */\n readonly _tabs$ = computed(() => this._generateTabBarItems(this._tabsConfig$()));\n\n /** @hidden */\n readonly _flatTabs$ = computed(() => this._generateFlatTabs(this._tabs$()));\n\n /** @hidden */\n readonly _tabRenderer$ = signal<IconTabBarItem | null>(null);\n\n /** @hidden */\n readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n readonly _tabsConfig$ = computed(() => {\n const tabConfig = this.tabsConfig();\n if (tabConfig) {\n return this.tabsConfig() as TabConfig[];\n }\n\n const children = this.children();\n if (!children) {\n return [];\n }\n return children.map((t) => this._generateTabConfig(t));\n });\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _inDynamicPage = !!inject(FD_DYNAMIC_PAGE, { optional: true });\n\n private readonly _iconTabBarCmp = viewChild<Nullable<IconTabBarBase>>(IconTabBarBase);\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._cssClassForContainer = this._generateContainerStyles();\n\n if (this.densityMode() === 'inherit') {\n this._contentDensityService?._contentDensityListener\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n .subscribe((density) => {\n this.densityMode.set(density);\n if (density !== 'compact') {\n this._cssClassForContainer = this._cssClassForContainer.filter(\n (cssClass) => cssClass !== 'fd-icon-tab-bar--compact'\n );\n } else {\n this._cssClassForContainer.push('fd-icon-tab-bar--compact');\n }\n this._cd.detectChanges();\n });\n }\n }\n\n /**\n * @hidden\n * @param event reordered array of IconTabBarItem\n */\n _onReorder(event: IconTabBarItem[]): void {\n this.iconTabReordered.emit(event);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._tabRenderer$.set(selectedItem);\n this.iconTabSelected.emit(selectedItem);\n\n if (this.stackContent) {\n this._scrollToPanel(this.tabDirectives().find((tab) => tab.uId() === selectedItem.uId)!);\n }\n }\n\n /** @hidden */\n _closeTab(item: IconTabBarItem): void {\n this.closeTab.emit(item);\n }\n\n /** Programmatically select tab. */\n selectTab(id: Nullable<string>): void {\n const selectedItem = this._flatTabs$().find((t) => t.id === id);\n if (!selectedItem) {\n return;\n }\n this._selectedUid.set(selectedItem.uId);\n this._selectItem(selectedItem);\n }\n\n /** @hidden */\n highlightActiveTab(id: Nullable<string>, scroll = false): void {\n if (this._disableScrollSpy) {\n return;\n }\n const activeTab = this.tabDirectives().find((tab) => tab.id() === id);\n this._selectedUid.set(activeTab?.uId() || undefined);\n if (scroll && activeTab) {\n this._scrollToPanel(activeTab);\n }\n }\n\n /**\n * @hidden\n * @returns array of css classes for icon-tab-bar container\n */\n private _generateContainerStyles(): string[] {\n const styles = [`fd-icon-tab-bar--${this.iconTabType()}`];\n const tabsConfig = this.tabsConfig();\n if (tabsConfig && this.iconTabType() === 'process' && tabsConfig[0].icon) {\n styles.push('fd-icon-tab-bar--icon');\n }\n if (this.iconTabBackground() !== 'solid') {\n styles.push(`fd-icon-tab-bar--${this.iconTabBackground()}`);\n }\n if (this.iconTabSize()) {\n styles.push(`fd-icon-tab-bar--${this.iconTabSize()!}`);\n }\n if (this.densityMode() === 'compact') {\n styles.push('fd-icon-tab-bar--compact');\n }\n if (this.layoutMode() === 'column') {\n styles.push('fd-icon-tab-bar--counters');\n }\n return styles;\n }\n\n private _generateTabConfig(tab: IconTabBarTabComponent): TabConfig {\n const tabConfig: TabConfig = {\n label: tab.label(),\n color: tab.color(),\n active: tab.active(),\n badge: tab.badge(),\n counter: tab.counter(),\n renderer: tab.renderer(),\n id: tab.id(),\n subItems: tab.children().map((c) => this._generateTabConfig(c))\n };\n\n return tabConfig;\n }\n\n /** @hidden */\n private _scrollToPanel(tabPanel: Nullable<IconTabBarTabContentDirective>): void {\n if (!tabPanel) {\n return;\n }\n const scrollbar = this._scrollbar();\n if (!scrollbar) {\n return;\n }\n const panelElement = tabPanel.elementRef.nativeElement;\n const containerElement = scrollbar.elementRef.nativeElement;\n const distanceToScroll = panelElement.offsetTop - containerElement.offsetTop;\n const maximumScrollTop = containerElement.scrollHeight - containerElement.clientHeight;\n const currentScrollPosition = Math.ceil(containerElement.scrollTop);\n\n if (!(currentScrollPosition === maximumScrollTop && distanceToScroll > maximumScrollTop)) {\n this._disableScrollSpy = true;\n fromEvent(containerElement, 'scroll')\n .pipe(debounceTime(100), first(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => (this._disableScrollSpy = false));\n scrollTop(containerElement, distanceToScroll);\n }\n }\n\n /**\n * @hidden\n * @description generate IconTabItems from TabConfig array\n */\n private _generateTabBarItems(\n config: TabConfig[],\n indexPrefix = '',\n flatIndexRef?: FlatIndex,\n parentUId?: string\n ): IconTabBarItem[] {\n flatIndexRef = flatIndexRef || { value: 0 };\n return config.map((item, index) => {\n const uId = `${indexPrefix}${index}`;\n if (!('color' in item)) {\n item.color = 'default';\n }\n const result: IconTabBarItem = {\n ...item,\n index,\n cssClasses: [],\n uId,\n hidden: false,\n parentUId,\n flatIndex: flatIndexRef!.value++,\n subItems: this._generateTabBarItems(\n item.subItems || [],\n `${uId}${UNIQUE_KEY_SEPARATOR}`,\n flatIndexRef,\n uId\n )\n };\n if (item.color) {\n result.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n return result;\n });\n }\n\n private _generateFlatTabs(tabs: IconTabBarItem[]): IconTabBarItem[] {\n const flatTabs = tabs.reduce((acc: IconTabBarItem[], tab) => {\n acc.push(tab);\n if (tab.subItems) {\n acc.push(...this._generateFlatTabs(tab.subItems));\n }\n return acc;\n }, []);\n\n return flatTabs;\n }\n}\n\n/** @hidden helper object that is used in tab generation functions to calculate their indexes not depending on level of nesting */\ninterface FlatIndex {\n value: number;\n}\n","<div class=\"fd-icon-tab-bar\" [class]=\"_cssClassForContainer\">\n @if (iconTabType() === 'text') {\n <ng-template [ngTemplateOutlet]=\"textType\"></ng-template>\n }\n @if (iconTabType() === 'icon' || iconTabType() === 'icon-only') {\n <ng-template [ngTemplateOutlet]=\"iconType\"></ng-template>\n }\n @if (iconTabType() === 'filter') {\n <ng-template [ngTemplateOutlet]=\"filterType\"></ng-template>\n }\n @if (iconTabType() === 'process') {\n <ng-template [ngTemplateOutlet]=\"processType\"></ng-template>\n }\n <div\n class=\"fd-icon-tab-bar__content\"\n fd-scrollbar\n (spyChange)=\"highlightActiveTab($event.id)\"\n [scrollSpyDisabled]=\"!stackContent || _disableScrollSpy\"\n fdScrollSpy\n [trackedTags]=\"['fdp-icon-tab-bar-tab-content']\"\n [style.max-height]=\"maxContentHeight()\"\n >\n @if (stackContent) {\n @for (tab of _flatTabs$(); track tab) {\n <fdp-icon-tab-bar-tab-content [id]=\"tab.id\" [uId]=\"tab.uId\" class=\"fd-icon-tab-bar__tab-content\">\n <ng-template [ngTemplateOutlet]=\"tab.renderer || null\"></ng-template>\n </fdp-icon-tab-bar-tab-content>\n }\n } @else {\n @if (_tabRenderer$(); as tabRenderer) {\n <fdp-icon-tab-bar-tab-content\n [id]=\"tabRenderer.id\"\n [uId]=\"tabRenderer.uId\"\n class=\"fd-icon-tab-bar__tab-content\"\n >\n <ng-template [ngTemplateOutlet]=\"tabRenderer.renderer || null\"></ng-template>\n </fdp-icon-tab-bar-tab-content>\n }\n }\n <ng-content select=\"[fdpIconTabBarFreeContent]\"></ng-content>\n </div>\n</div>\n<ng-template #processType>\n <fdp-icon-tab-bar-process-type\n [tabs]=\"_tabs$()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode()\"\n [colorAssociations]=\"colorAssociations()\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-process-type>\n</ng-template>\n<ng-template #filterType>\n <fdp-icon-tab-bar-filter-type\n [tabs]=\"_tabs$()\"\n [showTotalTab]=\"showTotalTab()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode()\"\n [colorAssociations]=\"colorAssociations()\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-filter-type>\n</ng-template>\n<ng-template #iconType>\n <fdp-icon-tab-bar-icon-type\n [showLabel]=\"iconTabType() === 'icon'\"\n [tabs]=\"_tabs$()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode()\"\n [colorAssociations]=\"colorAssociations()\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-icon-type>\n</ng-template>\n<ng-template #textType>\n <fdp-icon-tab-bar-text-type\n [tabs]=\"_tabs$()\"\n [multiClick]=\"multiClick()\"\n [layoutMode]=\"layoutMode()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode()\"\n [enableTabReordering]=\"enableTabReordering()\"\n [colorAssociations]=\"colorAssociations()\"\n (reordered)=\"_onReorder($event)\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-text-type>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport { IconTabBarTabComponent } from './components/icon-tab-bar-tab/icon-tab-bar-tab.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { IconTabBarPopoverComponent } from './components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\nimport { TextTypePopoverComponent } from './components/popovers/text-type-popover/text-type-popover.component';\nimport { IconBarDndContainerDirective } from './directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from './directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from './directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarFreeContentDirective } from './directives/icon-tab-bar-free-content.directive';\nimport { IconTabBarComponent } from './icon-tab-bar.component';\n\nconst components = [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective,\n IconTabBarTabComponent,\n IconTabBarFreeContentDirective\n];\n\nexport const FDP_ICON_TAB_BAR = [IconTabBarComponent, IconTabBarTabComponent, IconTabBarFreeContentDirective] as const;\n\n/**\n * @deprecated\n * Import `IconTabBarComponent` directly instead.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformIconTabBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.IconBarDndContainerDirective","i2.IconBarDndListDirective","i3.IconBarDndContainerDirective","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-icon-tab-bar.mjs","sources":["../../../../libs/platform/icon-tab-bar/constants.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-base.class.ts","../../../../libs/platform/icon-tab-bar/components/closable-icon-tab-bar.class.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.html","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.ts","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.ts","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.ts","../../../../libs/platform/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.ts","../../../../libs/platform/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.html","../../../../libs/platform/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.ts","../../../../libs/platform/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.html","../../../../libs/platform/icon-tab-bar/directives/icon-tab-bar-free-content.directive.ts","../../../../libs/platform/icon-tab-bar/icon-tab-bar.component.ts","../../../../libs/platform/icon-tab-bar/icon-tab-bar.component.html","../../../../libs/platform/icon-tab-bar/icon-tab-bar.module.ts","../../../../libs/platform/icon-tab-bar/fundamental-ngx-platform-icon-tab-bar.ts"],"sourcesContent":["export const UNIQUE_KEY_SEPARATOR = '.';\nexport const FLIPPER_SIZE = {\n width: 20,\n height: 44,\n verticalHeight: 20\n};\nexport const ICON_TAB_HIDDEN_CLASS_NAME = 'fd-icon-tab-bar__item--hidden';\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n isDevMode,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, OverflowListDirective } from '@fundamental-ngx/cdk/utils';\nimport { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../interfaces/tab-color-associations.interface';\nimport { TabDestinyMode } from '../types';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TextTypePopoverComponent } from './popovers/text-type-popover/text-type-popover.component';\n\n@Directive()\nexport abstract class IconTabBarBase implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n /**\n * @hidden\n * List of tab elements, that can receive focus.\n * There's a separate mapping function to get actual html element: `_getTabUIElementFocusable`\n */\n abstract _tabUIElements: QueryList<unknown>;\n /** @hidden */\n abstract _tabBarPopover: IconTabBarPopoverBase;\n\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n set tabs(value: IconTabBarItem[]) {\n this._tabs = value;\n }\n\n /** @hidden */\n get tabs(): IconTabBarItem[] {\n return this._tabs;\n }\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description densityMode setter triggers tabs to re-calculation overflowed tabs\n */\n @Input()\n set densityMode(value: TabDestinyMode) {\n // Skip first value && value doesn't equal to previous one\n if (this._densityMode && value !== this._densityMode) {\n this._triggerRecalculationVisibleItems();\n }\n this._densityMode = value;\n }\n\n /** Currently selected tab Unique ID. */\n @Input()\n selectedUid: string | undefined;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selected: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** Emits when selected tab Unique ID changes. */\n @Output()\n selectedUidChange = new EventEmitter<string | undefined>();\n\n /**\n * @description Reference to OverflowListDirective\n */\n @ViewChild(OverflowListDirective)\n overflowDirective: OverflowListDirective;\n\n /** Header element reference. */\n @ViewChild('tablist', { read: ElementRef })\n headerElement: ElementRef<HTMLElement>;\n\n /** @hidden */\n _extraTabs$ = signal<IconTabBarItem[]>([]);\n\n /** @hidden */\n _lastVisibleTabIndex: number;\n\n /** @hidden */\n _extraItems$ = signal(false);\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n colorAssociations = input<TabColorAssociations | undefined>();\n\n /** @hidden */\n readonly _inDynamicPage = !!inject(FD_DYNAMIC_PAGE, { optional: true });\n\n /** @hidden */\n protected readonly _cd = inject(ChangeDetectorRef);\n\n /** @Hidden */\n protected readonly _ngZone = inject(NgZone);\n\n /** @hidden */\n private _tabs: IconTabBarItem[] = [];\n\n /** @hidden */\n private _densityMode: TabDestinyMode;\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _destroyed = false;\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tabs && !changes.tabs.firstChange) {\n this._initTabs();\n this._triggerRecalculationVisibleItems();\n return;\n }\n if (changes.isRtl && !changes.isRtl.firstChange) {\n this._triggerRecalculationVisibleItems();\n }\n\n if (changes.selectedUid && !changes.selectedUid.firstChange) {\n this._handleSelectedUidChange();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initTabs();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._triggerRecalculationVisibleItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed = true;\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @param event\n */\n _selectItem(selectedItem: IconTabBarItem, event?: Event): void {\n event?.stopPropagation();\n this.selectedUid = selectedItem.uId;\n this.selectedUidChange.emit(this.selectedUid);\n selectedItem.badge = false;\n this.selected.emit(selectedItem);\n }\n\n /** @hidden */\n _keyDownHandler(\n event: KeyboardEvent,\n tab: IconTabBarItem | undefined,\n currentIndex: number,\n popover?: TextTypePopoverComponent\n ): void {\n if (tab && KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && tab?.subItems?.length) {\n popover?._openPopover();\n return;\n }\n this.isRtl ? this._focusPreviousItem(currentIndex) : this._focusNextItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextItem(currentIndex) : this._focusPreviousItem(currentIndex);\n }\n }\n\n /** @hidden focuses next tab */\n _focusNextItem(currentIndex: number): void {\n const nextIndex = currentIndex === this.tabs.length - 1 ? 0 : currentIndex + 1;\n this._focusItem(nextIndex);\n }\n\n /** @hidden focuses previous tab */\n _focusPreviousItem(currentIndex: number): void {\n if (currentIndex === 0) {\n // if current focused element is first, focus the last one. If tabs are overflowed, focus the last tab in the popover\n this._focusItem(this.tabs.length - 1, true);\n } else {\n this._focusItem(currentIndex - 1);\n }\n }\n\n /**\n * @hidden\n * @param tabIndex index of the tab to apply focus\n * @param focusLast whether to focus first or last item in the popover\n */\n _focusItem(tabIndex: number, focusLast = false): void {\n if (tabIndex > this._lastVisibleTabIndex) {\n this._tabBarPopover._openPopover(focusLast);\n } else {\n const itemToFocus = this._getTabUIElementFocusable(this._tabUIElements.get(tabIndex));\n itemToFocus?.focus();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n _selectExtraItem(selectedItem: IconTabBarItem): void {\n if (selectedItem.color) {\n selectedItem.cssClasses = [`fd-icon-tab-bar__item--${selectedItem.color}`];\n }\n\n this._selectItem(selectedItem);\n this._triggerRecalculationVisibleItems();\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n this._extraItems$.set(extraItems > 0);\n\n const tabs = [...this._tabs];\n const extraTabs: IconTabBarItem[] = [];\n const selected = tabs.find((tab) => tab.uId === this.selectedUid);\n\n this._lastVisibleTabIndex = this._getLastVisibleTabIndex(tabs.length, extraItems, selected);\n\n this._resetAndHideExtraTabs(tabs, extraTabs);\n\n this._extraTabs$.set(extraTabs);\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * Mapping function to resolve UI tab element to it's focusable part/descendant\n */\n protected _getTabUIElementFocusable(tabUIElement: unknown): Nullable<HTMLElement> {\n if (tabUIElement && typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n if ((<ElementRef>tabUIElement).nativeElement instanceof HTMLElement) {\n return (<ElementRef<HTMLElement>>tabUIElement).nativeElement;\n }\n }\n if (isDevMode()) {\n console.warn('Failed to get focusable tab element');\n }\n return null;\n }\n\n /**\n * @hidden\n * @description trigger recalculation items, need to do it asynchronously after dom was rerendered\n */\n protected _triggerRecalculationVisibleItems(): void {\n this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n if (this.overflowDirective && !this._destroyed) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n this._recalculateVisibleItems(extra);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n this._lastVisibleTabIndex = this.tabs.length - 1;\n\n if (this.selectedUid) {\n return;\n }\n\n const selectedItem = this._findActiveTabId(this.tabs) || this.tabs[0];\n this.selectedUid = selectedItem?.uId;\n\n if (!selectedItem) {\n return;\n }\n\n this.selectedUidChange.emit(this.selectedUid);\n this.selected.emit(selectedItem);\n }\n\n /**\n * @hidden\n * Resets and hides extra tabs.\n * @param tabs - The list of tab items.\n * @param extraTabs - The list of extra tab items.\n */\n private _resetAndHideExtraTabs(tabs: IconTabBarItem[], extraTabs: IconTabBarItem[]): void {\n tabs.forEach((item) => this._resetTab(item));\n this._hideExtraTabs(tabs, extraTabs);\n }\n\n /**\n * @hidden\n * Handles changes to the selected UID.\n */\n private _handleSelectedUidChange(): void {\n const isExtraTab = this._extraTabs$().find((tab) => tab.uId === this.selectedUid);\n const selected = this.tabs.find((tab) => tab.uId === this.selectedUid);\n if (isExtraTab) {\n this._selectExtraItem(isExtraTab);\n } else if (selected) {\n this._selectExtraItem(selected);\n }\n }\n\n /**\n * @hidden\n * Calculates the index of the last visible tab item.\n * @param totalTabs - The total number of tabs.\n * @param extraItems - The number of extra items.\n * @param selected - The currently selected tab item (optional).\n * @returns The index of the last visible tab item.\n */\n private _getLastVisibleTabIndex(totalTabs: number, extraItems: number, selected?: IconTabBarItem): number {\n if (selected && selected.index >= totalTabs - extraItems) {\n return totalTabs - extraItems - 2;\n } else {\n return totalTabs - extraItems - 1;\n }\n }\n\n /**\n * @hidden\n * Resets the visibility and CSS classes of a tab item.\n * @param tab - The tab item to reset.\n */\n private _resetTab(tab: IconTabBarItem): void {\n tab.hidden = false;\n tab.cssClasses = tab.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n /**\n * @hidden\n * Hides extra tabs and updates the extraTabs array with the hidden tabs.\n * @param tabs - The array of all tab items.\n * @param extraTabs - The array to store the hidden tab items.\n */\n private _hideExtraTabs(tabs: IconTabBarItem[], extraTabs: IconTabBarItem[]): void {\n for (let i = this._lastVisibleTabIndex + 1; i < tabs.length; i++) {\n const tab = tabs[i];\n if (tab && tab?.uId !== this.selectedUid) {\n extraTabs.push({ ...tab });\n tab.hidden = true;\n tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n }\n }\n\n /**\n * @hidden\n * Recursively finds the active tab item in a list of tabs.\n * @param tabs - The array of tab items.\n * @returns The active tab item, or undefined if no active tab is found.\n */\n private _findActiveTabId(tabs: IconTabBarItem[]): IconTabBarItem | undefined {\n let activeTab: IconTabBarItem | undefined;\n for (const tab of tabs) {\n if (tab.active) {\n activeTab = tab;\n break;\n } else if (tab.subItems) {\n activeTab = this._findActiveTabId(tab.subItems);\n if (activeTab) {\n break;\n }\n }\n }\n\n return activeTab;\n }\n}\n","import { BACKSPACE, DELETE } from '@angular/cdk/keycodes';\nimport { Directive, EventEmitter, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarBase } from './icon-tab-bar-base.class';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TextTypePopoverComponent } from './popovers/text-type-popover/text-type-popover.component';\n\n@Directive()\nexport abstract class ClosableIconTabBar extends IconTabBarBase {\n abstract _tabBarPopover: IconTabBarPopoverBase;\n /**\n * Event emits when user clicks on x button in tab.\n */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n _closeTab(itemIndex: string, checkPopover = false): void {\n const popoverPresent = !!this._tabBarPopover;\n const tab = this._getTabInfoFromMainList(itemIndex);\n\n if (!tab?.parent) {\n return;\n }\n\n tab.parent.splice(\n tab.parent.findIndex((item) => item.uId === itemIndex),\n 1\n );\n\n this.tabs = this._updateTabs(this.tabs);\n\n this._triggerRecalculationVisibleItems();\n this.closeTab.emit(tab.tab);\n\n if (!checkPopover) {\n return;\n }\n // Delay to ensure popover is recalculated.\n setTimeout(() => {\n // Popover has been removed, shift focus to the last item of the tab bar.\n if (popoverPresent && !this._tabBarPopover) {\n this._focusItem(this._lastVisibleTabIndex);\n }\n });\n }\n\n /** @hidden */\n _keyDownHandler(\n event: KeyboardEvent,\n tab: IconTabBarItem | undefined,\n currentIndex: number,\n popover?: TextTypePopoverComponent\n ): void {\n if (tab?.closable && KeyUtil.isKeyCode(event, [BACKSPACE, DELETE])) {\n event.preventDefault();\n this._closeTab(tab.uId);\n // Need to detect changes to trigger query list refresh.\n this._cd.detectChanges();\n\n // If last tab was closed, focus new last item, otherwhise set focus to the item that took place of removed one.\n const newFocusIndex = this.tabs.length - 1 < currentIndex ? this.tabs.length - 1 : currentIndex;\n\n this._focusItem(newFocusIndex);\n return;\n }\n super._keyDownHandler(event, tab, currentIndex, popover);\n }\n\n /**\n * @hidden\n * @param arr\n * @param parentUid\n * @description Update indexes, uIds, styles.\n */\n protected _updateTabs(arr: IconTabBarItem[], parentUid?: string, flatIndexRef = { value: 0 }): IconTabBarItem[] {\n return arr.map((item, index) => {\n item.index = index;\n item.uId = parentUid ? `${parentUid}${UNIQUE_KEY_SEPARATOR}${index}` : `${index}`;\n item.flatIndex = flatIndexRef.value++;\n item.parentUId = parentUid;\n if (!parentUid && item.color) {\n item.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n item.subItems = this._updateTabs(item.subItems, item.uId, flatIndexRef);\n }\n return { ...item };\n });\n }\n\n /**\n * @hidden\n * @param uid\n * @param arr\n * @returns {parent, tab}\n * @description Get tab reference inside main tab array and reference to parent array.\n */\n protected _getTabInfoFromMainList(\n uid: string,\n arr: any[] = this.tabs\n ): { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined {\n let result: { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined;\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n if (item.uId === uid) {\n result = { parent: arr, tab: item };\n break;\n } else if (Array.isArray(item.subItems)) {\n result = this._getTabInfoFromMainList(uid, item.subItems);\n if (result) {\n break;\n }\n }\n }\n return result;\n }\n}\n","import { BACKSPACE, DELETE, DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n input\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Directive()\nexport abstract class IconTabBarPopoverBase implements OnChanges {\n /** @hidden list of tab html elements, that can receive focus. Each item should have \"data-flatIndex\" attribute */\n abstract _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Reference to PopoverComponent\n */\n @ViewChild('popover')\n popover: PopoverComponent;\n\n /**\n * @description Sub items array\n */\n @Input()\n extraTabs: IconTabBarItem[];\n\n /**\n * @description Should we show separator between subItems\n */\n @Input()\n isSeparators = false;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selectedExtraItem: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** @description Emits when popover is closed and focus should be applied to first visible tab */\n @Output()\n focusFirstVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** @description Emits when popover is closed and focus should be applied to last visible tab */\n @Output()\n focusLastVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emits when user clicks on x button in tab. */\n @Output()\n closeTab = new EventEmitter<string>();\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n colorAssociations = input<TabColorAssociations | undefined>();\n\n /**\n * @hidden\n * @description state of popover\n */\n _isOpen = false;\n\n /** @hidden */\n constructor(protected _cd: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.extraTabs) {\n this._setStyles(this.extraTabs);\n }\n }\n\n /**\n * @hidden\n * @param focusLast whether to focus first or last item in the popover\n */\n _openPopover(focusLast = false): void {\n if (!this._isOpen) {\n this.popover.open();\n }\n if (focusLast) {\n this._tabExtraUIElements.get(this._tabExtraUIElements.length - 1)?.nativeElement.focus();\n }\n }\n\n /** @hidden */\n _focusPreviousPopoverItem(currentIndex: number): void {\n if (currentIndex === 0) {\n this.popover.close();\n this.focusLastVisibleItem.emit();\n } else {\n this._focusPopoverItem(currentIndex - 1);\n }\n }\n\n /** @hidden */\n _focusNextPopoverItem(currentIndex: number): void {\n if (currentIndex === this._tabExtraUIElements.length - 1) {\n this.popover.close();\n this.focusFirstVisibleItem.emit();\n } else {\n this._focusPopoverItem(currentIndex + 1);\n }\n }\n\n /** @hidden */\n _focusPopoverItem(index: number): void {\n const ordered = this._getOrderedTabExtraUIElements();\n ordered[index]?.focus();\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.selectedExtraItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _keyDownHandler(event: KeyboardEvent, tab: IconTabBarItem, currentIndex: number): void {\n if (tab?.closable && KeyUtil.isKeyCode(event, [BACKSPACE, DELETE])) {\n event.preventDefault();\n this.closeTab.emit(tab.uId);\n this._focusPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusPreviousPopoverItem(currentIndex) : this._focusNextPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextPopoverItem(currentIndex) : this._focusPreviousPopoverItem(currentIndex);\n }\n }\n\n /**\n * @hidden\n * @description Generate styles for subItems\n */\n protected _setStyles(items: IconTabBarItem[]): void {\n items.forEach((item) => {\n if (item.color) {\n item.cssClasses = [`fd-icon-tab-bar__list-item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n this._setStyles(item.subItems);\n }\n });\n }\n\n /** @hidden */\n private _getOrderedTabExtraUIElements(): HTMLElement[] {\n return this._tabExtraUIElements\n .toArray()\n .map((e) => ({\n flatIndex: parseInt(e.nativeElement.getAttribute('data-flatIndex')!, 10),\n nativeElement: e.nativeElement\n }))\n .sort(({ flatIndex: aFlatIndex }, { flatIndex: bFlatIndex }) => aFlatIndex - bFlatIndex)\n .map(({ nativeElement }) => nativeElement);\n }\n}\n","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-icon-tab-bar-popover',\n templateUrl: './icon-tab-bar-popover.component.html',\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconComponent,\n NgClass,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarPopoverComponent extends IconTabBarPopoverBase {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing position inside container left/right\n */\n @Input()\n leftSide = false;\n\n /**\n * @description Label for button\n */\n @Input()\n label = 'more';\n\n /** Whether to display labels for tab items */\n @Input()\n showItemLabel: boolean;\n}\n","<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\" tabindex=\"-1\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n @for (item of extraTabs; track item.uId; let idx = $index) {\n @if (isSeparators) {\n <li tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n }\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon | fdkAsyncOrSync\"></fd-icon>\n </span>\n </span>\n @if (showItemLabel && (item.label | fdkAsyncOrSync)) {\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{\n item.label | fdkAsyncOrSync\n }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ itemCounter }})\n </span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n</fd-popover>\n","import { SlicePipe } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-filter-type',\n templateUrl: './icon-tab-bar-filter-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarFilterTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n OverflowListItemDirective,\n IconComponent,\n IconTabBarPopoverComponent,\n SlicePipe,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarFilterTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /**\n * @description Boolean flag indicating to show total tab\n */\n @Input()\n showTotalTab = true;\n\n /** @hidden */\n _totalTab?: IconTabBarItem;\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n super._initTabs();\n this._totalTab = this.showTotalTab ? this.tabs[0] : undefined;\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (showTotalTab) {\n <li class=\"fd-icon-tab-bar__item\" role=\"presentation\" fdkOverflowListItem>\n <a\n (click)=\"_totalTab && _selectItem(_totalTab)\"\n (keydown)=\"_keyDownHandler($event, _totalTab, 0)\"\n [attr.aria-selected]=\"_totalTab?.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n tabindex=\"0\"\n #tabItem\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container fd-icon-tab-bar__container--filter\">\n @if (_totalTab?.counter) {\n <span class=\"fd-icon-tab-bar__filter-counter\">{{ _totalTab?.counter }}</span>\n }\n <span class=\"fd-icon-tab-bar__filter-label\">{{ _totalTab?.label | fdkAsyncOrSync }}</span>\n </div>\n </a>\n </li>\n }\n @for (item of tabs | slice: 1; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"showTotalTab ? -1 : idx > 0 ? -1 : 0\"\n (keydown)=\"_keyDownHandler($event, item, idx + (showTotalTab ? 1 : 0))\"\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.counter) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</div>\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent } from '@fundamental-ngx/core/icon';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-icon-type',\n templateUrl: './icon-tab-bar-icon-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarIconTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n OverflowListItemDirective,\n NgClass,\n IconComponent,\n ButtonComponent,\n IconTabBarPopoverComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarIconTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** Whether to display labels for tab items */\n @Input()\n showLabel: boolean;\n\n /** @hidden */\n readonly _defaultFontFamily = FD_DEFAULT_ICON_FONT_FAMILY;\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n >\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\" [font]=\"item.iconFont || _defaultFontFamily\"></fd-icon>\n </span>\n @if (item.counter && (!item.label || !showLabel)) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n @if (showLabel && item.label) {\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label }}</span>\n </div>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [showItemLabel]=\"showLabel\"\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { Component, ElementRef, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../../constants';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-process-type',\n templateUrl: './icon-tab-bar-process-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarProcessTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n IconTabBarPopoverComponent,\n OverflowListItemDirective,\n IconComponent,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarProcessTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** @hidden */\n _offsetOverflowDirective = 30;\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _nextSteps: IconTabBarItem[] = [];\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _prevSteps: IconTabBarItem[] = [];\n\n /** @hidden */\n _showLeftBtn = false;\n\n /** @hidden */\n _showRightBtn = false;\n\n /** @hidden */\n _anchorIndexForExtraBtnDirective: number;\n\n /** @hidden */\n private _firstVisibleTabIndex = 0;\n\n /** @hidden */\n private _currentStepIndex = 0;\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._currentStepIndex = selectedItem.index;\n super._selectItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n async _selectExtraItem(selectedItem: IconTabBarItem): Promise<void> {\n this._currentStepIndex = selectedItem.index;\n let amountOfPreviousSteps;\n let amountOfNextSteps;\n // We have to cases (strategy) for overflow extra tabs.\n // 1) When user click on step inside previous steps popover\n // 2) When user click on step inside next steps popover\n let isPreviousStepsStrategy: boolean;\n if (this._currentStepIndex > this._lastVisibleTabIndex) {\n amountOfNextSteps = this._nextSteps.length - (this._currentStepIndex - this._lastVisibleTabIndex);\n this._showRightBtn = amountOfNextSteps > 0;\n this._showLeftBtn = true;\n isPreviousStepsStrategy = false;\n } else {\n amountOfPreviousSteps = this._prevSteps.length - (this._firstVisibleTabIndex - this._currentStepIndex);\n this._showRightBtn = true;\n isPreviousStepsStrategy = true;\n this._showLeftBtn = amountOfPreviousSteps > 0;\n }\n this._selectItem(selectedItem);\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n if (this.overflowDirective) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n isPreviousStepsStrategy\n ? this.recalculateItemsByPrevArr(extra, amountOfPreviousSteps)\n : this._recalculateItemsByNextArr(extra, amountOfNextSteps);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n const amountOfPrevSteps = this._currentStepIndex > extraItems ? extraItems : this._currentStepIndex;\n this.recalculateItemsByPrevArr(extraItems, amountOfPrevSteps);\n }\n\n /** @hidden */\n private _clearExtraList(): void {\n this._nextSteps = [];\n this._prevSteps = [];\n this.tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfNextSteps\n * @description We fill the array of the next steps to the selected tab,\n * based on this we generate the array of the previous steps if it is necessary\n */\n private _recalculateItemsByNextArr(extraItems: number, amountOfNextSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const tabs = [...this.tabs];\n const visibleAmountOfItems = tabs.length - extraItems;\n for (let i = tabs.length - amountOfNextSteps; i < tabs.length; i++) {\n this._nextSteps.push(cloneDeep(tabs[i]));\n tabs[i].hidden = true;\n tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._showRightBtn = !!this._nextSteps.length;\n this._firstVisibleTabIndex = tabs.length - visibleAmountOfItems - this._nextSteps.length;\n this._lastVisibleTabIndex = tabs.length - amountOfNextSteps - 1;\n\n if (this._nextSteps.length === extraItems) {\n return;\n }\n\n let amountOfPrevSteps = extraItems - this._nextSteps.length;\n let nextIndex = this._firstVisibleTabIndex - 1;\n while (amountOfPrevSteps > 0) {\n this._prevSteps.push(cloneDeep(tabs[nextIndex]));\n tabs[nextIndex].hidden = true;\n tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n --nextIndex;\n --amountOfPrevSteps;\n }\n // Added +1 for left button\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showLeftBtn = !!this._prevSteps.length;\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfPreviousSteps\n * @description We fill the array of the previous steps to the selected tab,\n * based on this we generate the array of the next steps if it is necessary\n */\n private recalculateItemsByPrevArr(extraItems: number, amountOfPreviousSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const tabs = [...this.tabs];\n const visibleAmountOfItems = tabs.length - extraItems;\n for (let i = amountOfPreviousSteps - 1; i >= 0; i--) {\n this._prevSteps.push(cloneDeep(tabs[i]));\n tabs[i].hidden = true;\n tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._firstVisibleTabIndex = this._prevSteps.length;\n this._lastVisibleTabIndex = this._prevSteps.length + visibleAmountOfItems - 1;\n this._showLeftBtn = !!this._prevSteps.length;\n\n if (this._prevSteps.length === extraItems) {\n this._showRightBtn = false;\n return;\n }\n\n let amountOfNextSteps = extraItems - this._prevSteps.length;\n let nextIndex = this._prevSteps.length ? this._prevSteps.length + visibleAmountOfItems : visibleAmountOfItems;\n while (amountOfNextSteps > 0) {\n this._nextSteps.push(cloneDeep(tabs[nextIndex]));\n tabs[nextIndex].hidden = true;\n tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n ++nextIndex;\n --amountOfNextSteps;\n }\n // Add +1 for left btn\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showRightBtn = !!this._nextSteps.length;\n this._offsetOverflowDirective = this._nextSteps.length ? 70 : 0;\n this._cd.detectChanges();\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n [class.fd-icon-tab-bar__header--left-offset]=\"_showLeftBtn\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"_offsetOverflowDirective\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (_showLeftBtn) {\n <li\n role=\"presentation\"\n class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow fd-icon-tab-bar__item--overflow-left\"\n >\n <fdp-icon-tab-bar-popover\n [extraTabs]=\"_prevSteps\"\n [label]=\"_prevSteps.length.toString()\"\n [isSeparators]=\"true\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n role=\"tab\"\n >\n @if (item.icon) {\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</span>\n </div>\n } @else {\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label | fdkAsyncOrSync }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n @if (_lastVisibleTabIndex !== idx) {\n <span class=\"fd-icon-tab-bar__separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </span>\n }\n </li>\n }\n @if (_showRightBtn) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_nextSteps\"\n [isSeparators]=\"true\"\n [label]=\"_nextSteps.length.toString()\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n >\n </fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { DragRef, Point } from '@angular/cdk/drag-drop';\nimport { DestroyRef, Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FLIPPER_SIZE } from '../../constants';\nimport {\n ElementChord,\n IconTabBarDndItem,\n IconTabBarDndList,\n IconTabBarItem\n} from '../../interfaces/icon-tab-bar-item.interface';\n\nexport interface FdDnDEvent {\n draggableItem: IconTabBarItem;\n targetItem: IconTabBarItem;\n action: 'replace' | 'insert';\n}\n\n@Directive({\n selector: '[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]',\n standalone: true\n})\nexport class IconBarDndContainerDirective {\n /**\n * @description Defines if drag and drop feature should be enabled for list items\n */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /**\n * @description Event that is thrown, when the item is dropped\n */\n @Output()\n dropped = new EventEmitter<FdDnDEvent>();\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private dndItemDirectives: IconTabBarDndItem[] = [];\n\n /** @hidden */\n private _dndListDirectives: Set<IconTabBarDndList> = new Set<IconTabBarDndList>();\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _virtualSeparatorsCoordinates: ElementChord[] = [];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestSeparatorIndex: number | null = null;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n\n /**\n * @description Method called, when element is started to be dragged\n */\n dragStart(): void {\n /** Counting all of the elements's chords */\n this._elementsCoordinates = this.dndItemDirectives.map((item: IconTabBarDndItem) =>\n item.getElementCoordinates()\n );\n this._generateVirtualSeparators();\n }\n\n /**\n * @param mousePosition\n * @description Method called, when the item is being moved by 1 px\n */\n onMove(mousePosition: Point): void {\n let newClosestIndex: number | null = null;\n let newClosestSeparatorIndex: number | null = null;\n\n this._elementsCoordinates.find((element, index) => {\n /** Check if element can be replaced */\n if (newClosestIndex !== index) {\n const isMouseOnElement = this._isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n newClosestIndex = index;\n return true;\n }\n }\n });\n\n if (newClosestIndex !== null && newClosestIndex === this._closestItemIndex) {\n return;\n }\n\n if (this._closestItemIndex !== newClosestIndex) {\n this.dndItemDirectives[this._closestItemIndex]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex!]?.toggleSeparatorStyles();\n }\n\n this._closestItemIndex = newClosestIndex;\n\n if (newClosestIndex !== null) {\n this._closestSeparatorIndex = null;\n this.dndItemDirectives[newClosestIndex].toggleHoveredStyles(true);\n return;\n }\n\n // If we aren't on tab then check separator element.\n this._virtualSeparatorsCoordinates.find((element, index) => {\n const isMouseOnFlipper = this._isMouseOnFlipper(element, mousePosition);\n if (isMouseOnFlipper) {\n newClosestSeparatorIndex = index;\n return true;\n }\n });\n\n if (newClosestSeparatorIndex !== null && newClosestSeparatorIndex === this._closestSeparatorIndex) {\n return;\n }\n\n if (this._closestSeparatorIndex !== newClosestSeparatorIndex) {\n this.dndItemDirectives[this._closestItemIndex!]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex]?.toggleSeparatorStyles();\n }\n\n this._closestSeparatorIndex = newClosestSeparatorIndex;\n\n if (newClosestSeparatorIndex !== null) {\n this._closestItemIndex = null;\n this.dndItemDirectives[newClosestSeparatorIndex].toggleSeparatorStyles(true);\n return;\n }\n }\n\n /**\n * @param dragDir\n * @description Method called, when element is released\n */\n dragEnd(dragDir: IconTabBarDndItem): void {\n if (this._closestSeparatorIndex || this._closestSeparatorIndex === 0) {\n this.dndItemDirectives[this._closestSeparatorIndex].toggleSeparatorStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestSeparatorIndex].dndItemData,\n action: 'replace'\n });\n }\n if (this._closestItemIndex || this._closestItemIndex === 0) {\n this.dndItemDirectives[this._closestItemIndex].toggleHoveredStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestItemIndex].dndItemData,\n action: 'insert'\n });\n }\n /** Reset */\n this._elementsCoordinates = [];\n this._virtualSeparatorsCoordinates = [];\n this._closestItemIndex = null;\n this._closestSeparatorIndex = null;\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current container\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this.dndItemDirectives.push(dragItem);\n dragItem.moved.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((position: Point) => this.onMove(position));\n dragItem.started.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.dragStart());\n dragItem.released.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.dragEnd(dragItem));\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current container\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this.dndItemDirectives = this.dndItemDirectives.filter((item) => item !== dragItem);\n }\n\n /**\n * @param listDir\n * @description Register IconTabBarDndList to current container\n */\n registerDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.add(listDir);\n listDir.changeDraggableState(this._draggable);\n }\n\n /**\n * @param listDir\n * @description Remove registered IconTabBarDndList to current container\n */\n removeDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.delete(listDir);\n }\n\n /**\n * @description Generate virtual elements as separator between tabs\n */\n private _generateVirtualSeparators(): void {\n this._elementsCoordinates.forEach((item, index) => {\n const isVertical = this.dndItemDirectives[index].isVertical;\n this._virtualSeparatorsCoordinates.push({\n x: isVertical ? item.x : item.x - FLIPPER_SIZE.width,\n y: isVertical ? item.y + FLIPPER_SIZE.verticalHeight : item.y,\n width: isVertical ? item.width : FLIPPER_SIZE.width,\n height: isVertical ? FLIPPER_SIZE.verticalHeight : FLIPPER_SIZE.height\n });\n });\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n for (const list of this._dndListDirectives) {\n list.changeDraggableState(draggable);\n }\n }\n\n /** @hidden */\n private _isMouseOnFlipper(element: ElementChord, mousePosition: Point): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n\n /** @hidden */\n private _isMouseOnElement(element: ElementChord, mousePosition: Point, isVertical: boolean = false): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = isVertical ? element.y - FLIPPER_SIZE.verticalHeight / 2 : element.y;\n const endY = element.y + element.height - FLIPPER_SIZE.verticalHeight / 2;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n}\n\n/** @hidden */\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Input, OnDestroy, inject } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nimport { DragDrop, DragRef, DropListRef } from '@angular/cdk/drag-drop';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime } from 'rxjs/operators';\nimport { IconTabBarDndItem, IconTabBarDndList } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\n\n@Directive({\n selector: '[fdpIconBarDndList], [fdp-icon-bar-dnd-list]',\n standalone: true\n})\nexport class IconBarDndListDirective implements IconTabBarDndList, AfterViewInit, OnDestroy {\n /**\n * @description Direction in which the list is oriented.\n */\n @Input()\n dndOrientation: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * @description Is disabled autoscroll inside draggable list\n */\n @Input()\n dndAutoScroll = true;\n\n /** @hidden */\n private _dropListRef: DropListRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private readonly _dndItems$ = new ReplaySubject<void>(1);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _dragDrop: DragDrop,\n private _dndContainer: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._dropListRef = this._dragDrop.createDropList(this.elementRef.nativeElement);\n this._dropListRef.sortingDisabled = true;\n this._dropListRef.autoScrollDisabled = this.dndAutoScroll;\n this._dropListRef.disabled = true;\n this._dropListRef.withOrientation(this.dndOrientation);\n\n this._dndContainer.registerDndList(this);\n\n this._dndItems$\n .pipe(debounceTime(100), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._dropListRef.withItems(this._dragRefItems));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dropListRef.dispose();\n this._dndContainer.removeDndList(this);\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current list\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current list\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param draggable\n */\n changeDraggableState(draggable: boolean): void {\n this._dropListRef.disabled = !draggable;\n }\n}\n","import { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, DestroyRef, Directive, ElementRef, Input, OnDestroy, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ElementChord, IconTabBarDndItem, IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { IconBarDndListDirective } from './icon-bar-dnd-list.directive';\n\n@Directive({\n selector: '[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]',\n standalone: true\n})\nexport class IconBarDndItemDirective implements IconTabBarDndItem, AfterViewInit, OnDestroy {\n /**\n * @description Tab info\n */\n @Input()\n dndItemData: IconTabBarItem;\n\n /**\n * @description Classes for draggable preview\n */\n @Input()\n previewClass: string[] = ['fd-icon-tab-bar__item--dnd-preview'];\n\n /**\n * @description Classes for hovered state\n */\n @Input()\n dndHoveredClass: string[] = ['fd-icon-tab-bar__item--dnd-hovered'];\n\n /**\n * @description Classes for separator, when draggable element between two tabs\n */\n @Input()\n dndSeparatorClass: string[] = [\n 'fd-icon-tab-bar__item--dnd-separator',\n 'fd-icon-tab-bar__item--dnd-separator-vertical'\n ];\n\n /**\n * @description Event thrown when the element is moved by 1px\n */\n readonly moved = new Subject<Point>();\n\n /**\n * @description Event thrown when the element is released\n */\n readonly released = new Subject<void>();\n\n /**\n * @description Event thrown when the element is started to be dragged\n */\n readonly started = new Subject<void>();\n\n /** @hidden */\n isVertical = false;\n\n /**\n * @hidden\n * @description Drag reference, object created from DND CDK Service\n */\n dragRef: DragRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n protected _dragDrop: DragDrop,\n private _dndListDir: IconBarDndListDirective,\n private _dndContainerDir: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.isVertical = this._dndListDir?.dndOrientation === 'vertical';\n this._setCDKDrag();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dndListDir.removeDragItem(this);\n this._dndContainerDir.removeDragItem(this);\n this.dragRef.dispose();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.started.next();\n }\n\n /** @hidden */\n onCdkMove(position: Point): void {\n this.moved.next(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n this.released.next();\n }\n\n /** @hidden */\n getElementCoordinates(): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n\n /**\n * @description Add/delete separator classes\n */\n toggleSeparatorStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndSeparatorClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndSeparatorClass);\n }\n\n /**\n * @description Add/delete hovered state classes\n */\n toggleHoveredStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndHoveredClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndHoveredClass);\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this.dragRef = this._dragDrop.createDrag(this.elementRef);\n this.dragRef.previewClass = this.previewClass;\n\n this._dndListDir?.registerDragItem(this);\n this._dndContainerDir?.registerDragItem(this);\n\n this.dragRef.moved\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => this.onCdkMove(event.pointerPosition));\n\n this.dragRef.released.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.onCdkDragReleased());\n\n this.dragRef.started.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.onCdkDragStart());\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, input, ViewEncapsulation } from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-icon-tab-bar-text-type-tab-item]',\n standalone: true,\n imports: [AsyncOrSyncPipe],\n templateUrl: './icon-tab-bar-text-type-tab-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-icon-tab-bar__tab',\n role: 'tab'\n }\n})\nexport class IconTabBarTextTypeTabItemComponent {\n /** Tab item. */\n @Input()\n item: Nullable<IconTabBarItem>;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n colorAssociations = input<TabColorAssociations | undefined>();\n\n /** @hidden */\n get nativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hiddem */\n private readonly _elementRef = inject(ElementRef);\n}\n","@if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item?.label | fdkAsyncOrSync }}\n @if (item?.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n} @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item?.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item?.label | fdkAsyncOrSync }}</span>\n}\n@if (item?.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n}\n@if (item?.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ colorAssociations()?.[itemColor] || itemColor }}\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport {\n PopoverBodyComponent,\n PopoverComponent,\n PopoverControlComponent,\n TriggerConfig\n} from '@fundamental-ngx/core/popover';\nimport { IconBarDndItemDirective } from '../../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarTextTypeTabItemComponent } from '../../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-text-type-popover',\n templateUrl: './text-type-popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconBarDndListDirective,\n NgTemplateOutlet,\n IconBarDndItemDirective,\n NgClass,\n ButtonComponent,\n IconComponent,\n IconTabBarTextTypeTabItemComponent\n ]\n})\nexport class TextTypePopoverComponent extends IconTabBarPopoverBase implements OnChanges {\n /** @hidden reference for html element, that opens dropdown and can receive focus */\n @ViewChild('dropdownTrigger', { read: ElementRef }) _dropdownTrigger: ElementRef<HTMLElement>;\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem', { read: ElementRef }) _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** Whether to render item as a multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Is extra items mode or subitems mode\n */\n @Input()\n isExtraItemsMode = false;\n\n /**\n * @description Parent tab need for subItems mode\n */\n @Input()\n parentTab: IconTabBarItem;\n\n /**\n * @description uId of selected subItem\n */\n @Input()\n selectedSubItemUid: Nullable<string>;\n\n /**\n * @description tabIndex of the particular item. Aplicable only for subitems mode\n */\n @Input()\n tabindex = -1;\n\n /**\n * @description Emits when some subTab is selected and isExtraItemsMode is disabled\n */\n @Output()\n selectedSubItem: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emits when root item is being selected. Applicable for multi-click variant only. */\n @Output()\n selectedItem = new EventEmitter<void>();\n\n /** @hidden */\n _containsSelected = false;\n\n /** @hidden */\n _popoverTriggers: TriggerConfig[] = [\n { trigger: 'click', openAction: true, closeAction: true, stopPropagation: true }\n ];\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (!this.isExtraItemsMode && changes.parentTab && this.parentTab.subItems) {\n this._setStyles(this.parentTab.subItems);\n }\n if (changes.selectedSubItemUid) {\n this._calculateIfContainsSelected();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.isExtraItemsMode ? this.selectedExtraItem.emit(selectedItem) : this.selectedSubItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _textPopoverKeyDownHandler(event: KeyboardEvent, tab: IconTabBarItem): void {\n // using relative index within popover (first popover tab should start from 0)\n const baseIndex = this.parentTab ? this.parentTab.flatIndex + 1 : this.extraTabs[0].flatIndex;\n const currentIndex = tab.flatIndex - baseIndex;\n super._keyDownHandler(event, tab, currentIndex);\n }\n\n /** @hidden */\n private _calculateIfContainsSelected(): void {\n this._containsSelected =\n (this.multiClick && this.parentTab.uId === this.selectedSubItemUid) ||\n (!!this.parentTab.subItems &&\n this._getChildren(this.parentTab.subItems).some(({ uId }) => uId === this.selectedSubItemUid));\n }\n\n /** @hidden */\n private _getChildren(items: IconTabBarItem[]): IconTabBarItem[] {\n return items.reduce((acc: IconTabBarItem[], item: IconTabBarItem) => {\n acc = acc.concat(item);\n if (item.subItems) {\n acc = acc.concat(this._getChildren(item.subItems));\n }\n return acc;\n }, []);\n }\n}\n","@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\" tabindex=\"-1\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (multiClick) {\n <a\n #dropdownTrigger\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"parentTab\"\n [attr.aria-selected]=\"_containsSelected\"\n [colorAssociations]=\"colorAssociations()\"\n [layoutMode]=\"layoutMode\"\n [attr.tabindex]=\"tabindex\"\n (click)=\"selectedItem.emit()\"\n >\n </a>\n}\n@if (!isExtraItemsMode && parentTab && parentTab.subItems?.length) {\n <fd-popover\n [class.fd-icon-tab-bar__popover]=\"multiClick\"\n placement=\"bottom-end\"\n [focusAutoCapture]=\"true\"\n [triggers]=\"_popoverTriggers\"\n [focusTrapped]=\"true\"\n #popover\n >\n <fd-popover-control>\n @if (multiClick) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button fd-button fdType=\"transparent\" tabindex=\"-1\" class=\"fd-icon-tab-bar__button\">\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </button>\n </div>\n } @else {\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n }\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations() && colorAssociations()?.[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n","import { Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass } from '@angular/common';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { UNIQUE_KEY_SEPARATOR } from '../../constants';\nimport { FdDnDEvent, IconBarDndContainerDirective } from '../../directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from '../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { TextTypePopoverComponent } from '../popovers/text-type-popover/text-type-popover.component';\nimport { IconTabBarTextTypeTabItemComponent } from '../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';\n\n/** @hidden */\ninterface DataForReordering {\n arr: IconTabBarItem[];\n item: IconTabBarItem;\n parentUid: string;\n}\n\n/** @hidden */\ntype TabItem = ElementRef<HTMLElement> | TextTypePopoverComponent;\n\n@Component({\n selector: 'fdp-icon-tab-bar-text-type',\n templateUrl: './icon-tab-bar-text-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarTextTypeComponent\n }\n ],\n imports: [\n IconBarDndContainerDirective,\n OverflowListDirective,\n IconBarDndListDirective,\n OverflowListItemDirective,\n IconBarDndItemDirective,\n NgClass,\n TextTypePopoverComponent,\n ButtonComponent,\n IconComponent,\n AsyncOrSyncPipe,\n IconTabBarTextTypeTabItemComponent\n ]\n})\nexport class IconTabBarTextTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<TabItem>;\n\n /** @hidden */\n @ViewChild('extraItemsPopover') _tabBarPopover: TextTypePopoverComponent;\n\n /**\n * @description Disable or enable reordering(drag and drop) feature.\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /** Whether to render icon tab item as multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Emits when user drops the tab.\n */\n @Output()\n reordered = new EventEmitter<IconTabBarItem[]>();\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectExtraItem(selectedItem: IconTabBarItem | undefined): void {\n // Check if the selected item is subItem\n // Then to find root tab, and pass it to the parent method.\n if (selectedItem?.uId.includes(UNIQUE_KEY_SEPARATOR)) {\n const rootTabUid = selectedItem.uId.split(UNIQUE_KEY_SEPARATOR)[0];\n selectedItem = this.tabs.find((tab) => tab.uId === rootTabUid);\n }\n if (!selectedItem) {\n return;\n }\n super._selectExtraItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param draggableItem\n * @param targetItem\n * @param action\n */\n _onDropped(event: FdDnDEvent): void {\n if (!this._canDrop(event)) {\n return;\n }\n\n const replacedParsedUidArr = event.targetItem.uId.split(UNIQUE_KEY_SEPARATOR);\n replacedParsedUidArr.length = replacedParsedUidArr.length - 1;\n const draggableParsedUidArr = event.draggableItem.uId.split(UNIQUE_KEY_SEPARATOR);\n draggableParsedUidArr.length = draggableParsedUidArr.length - 1;\n\n const tabInfoForNewList = this._getTabInfoFromMainList(event.targetItem.uId);\n const tabInfoForPrevList = this._getTabInfoFromMainList(event.draggableItem.uId);\n\n if (!tabInfoForNewList || !tabInfoForPrevList) {\n return;\n }\n\n const dataForAction = {\n replacedItemInfo: {\n arr: tabInfoForNewList.parent,\n item: tabInfoForNewList.tab,\n parentUid: replacedParsedUidArr.length ? replacedParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n },\n draggableItemInfo: {\n arr: tabInfoForPrevList.parent,\n item: tabInfoForPrevList.tab,\n parentUid: draggableParsedUidArr.length ? draggableParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n }\n };\n\n event.action === 'replace' ? this._replaceAsSibling(dataForAction) : this._insertItemAsChild(dataForAction);\n\n this.reordered.emit(this.tabs);\n }\n\n /** @hidden */\n protected _getTabUIElementFocusable(tabUIElement: Nullable<TabItem>): Nullable<HTMLElement> {\n if (!tabUIElement) {\n return tabUIElement;\n }\n if (typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n return tabUIElement.nativeElement;\n }\n return tabUIElement._dropdownTrigger.nativeElement;\n }\n\n /** @hidden */\n private _canDrop(event: FdDnDEvent): boolean {\n let parentUId: Nullable<string> =\n event.action === 'replace' ? event.targetItem.parentUId : event.targetItem.uId;\n while (parentUId) {\n if (parentUId === event.draggableItem.uId) {\n return false;\n }\n const nextSeparatorIdx = parentUId.lastIndexOf(UNIQUE_KEY_SEPARATOR);\n\n parentUId = nextSeparatorIdx > 0 ? parentUId.slice(0, nextSeparatorIdx) : null;\n }\n return true;\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab into another tab.\n */\n private _insertItemAsChild(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n // Remove draggable tab from previous list\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n if (!replacedItemInfo.item.subItems?.length) {\n replacedItemInfo.item.subItems = [];\n }\n // Add tab to subitem of the target tab\n replacedItemInfo.item.subItems.push(draggableItemInfo.item);\n this.tabs = this._updateTabs(this.tabs);\n this._triggerRecalculationVisibleItems();\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab between tabs\n */\n private _replaceAsSibling(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n const newIndex = replacedItemInfo?.item?.index || 0;\n replacedItemInfo.arr.splice(newIndex, 0, draggableItemInfo.item);\n this.tabs = this._updateTabs(this.tabs);\n this._triggerRecalculationVisibleItems();\n }\n}\n","<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--multi-click]=\"multiClick && item.subItems?.length\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length && !multiClick) {\n <a\n #tabItem\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"item\"\n [layoutMode]=\"layoutMode\"\n [colorAssociations]=\"colorAssociations()\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n </a>\n }\n @if (item.subItems?.length || multiClick) {\n <fdp-text-type-popover\n #tabItem\n #itemPopover\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [layoutMode]=\"layoutMode\"\n [multiClick]=\"multiClick\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx, itemPopover)\"\n (closeTab)=\"_closeTab($event)\"\n (selectedItem)=\"_selectItem(item)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations()\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { ReactiveTabConfig } from '../../interfaces/tab-config.interface';\nimport { SemanticColor } from '../../types';\n\nlet defaultIdIndex = 0;\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-icon-tab-bar-tab-content',\n standalone: true,\n host: { '[attr.id]': 'id()' }\n})\nexport class IconTabBarTabContentDirective implements HasElementRef {\n /** Tab ID */\n id = input<Nullable<string>>();\n\n /** Tab Unique ID. */\n uId = input<Nullable<string>>();\n\n /** Element reference. */\n readonly elementRef = inject(ElementRef);\n}\n\n@Component({\n selector: 'fdp-icon-tab-bar-tab',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon-tab-bar-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconTabBarTabComponent implements ReactiveTabConfig {\n /** Tab Label. */\n label = input<Nullable<string>>();\n\n /** Tab text color. */\n color = input<SemanticColor>('default');\n\n /** Tab icon. */\n icon = input<string>();\n\n /** Tab icon font family. */\n iconFont = input<IconFont>(FD_DEFAULT_ICON_FONT_FAMILY);\n\n /** Tab counter. */\n counter = input<Nullable<number>>();\n\n /** whether the tab is selected */\n active = input(false, { transform: booleanAttribute });\n\n /** if set to true, will show red circle in top-right corner of tab */\n badge = input(false, { transform: booleanAttribute });\n\n /** Whether the tab can be closed. */\n closable = input(false, { transform: booleanAttribute });\n\n /** Tab ID. */\n id = input(`fdp-icon-tab-bar-tab-${defaultIdIndex++}`);\n\n /** Content renderer. */\n readonly renderer = viewChild<TemplateRef<any>>('renderer');\n\n /** @hidden */\n readonly children = contentChildren(IconTabBarTabComponent);\n}\n","<ng-template #renderer>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fdpIconTabBarFreeContent]',\n standalone: true\n})\nexport class IconTabBarFreeContentDirective {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n ElementRef,\n HostBinding,\n inject,\n Input,\n input,\n model,\n OnInit,\n Optional,\n output,\n signal,\n viewChild,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentDensityService, Nullable, RtlService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';\nimport { IconFont } from '@fundamental-ngx/core/icon';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FD_TABLIST, TabList } from '@fundamental-ngx/core/shared';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, first } from 'rxjs/operators';\nimport { IconTabBarBase } from './components';\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport {\n IconTabBarTabComponent,\n IconTabBarTabContentDirective\n} from './components/icon-tab-bar-tab/icon-tab-bar-tab.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { UNIQUE_KEY_SEPARATOR } from './constants';\nimport { IconTabBarItem } from './interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from './interfaces/tab-color-associations.interface';\nimport { TabConfig } from './interfaces/tab-config.interface';\nimport { IconTabBarBackground, IconTabBarSize, TabDestinyMode, TabType } from './types';\n\n@Component({\n selector: 'fdp-icon-tab-bar',\n templateUrl: './icon-tab-bar.component.html',\n styleUrl: './icon-tab-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n providers: [\n {\n provide: FD_TABLIST,\n useExisting: IconTabBarComponent\n }\n ],\n imports: [\n NgTemplateOutlet,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarTextTypeComponent,\n ScrollbarDirective,\n ScrollSpyDirective,\n IconTabBarTabContentDirective\n ]\n})\nexport class IconTabBarComponent implements OnInit, TabList {\n /**\n * Whether to open tab content one under another without collapsing.\n * Works only for content-projected tab content.\n */\n @Input({ transform: booleanAttribute })\n stackContent = false;\n\n /** @description Type of tab bar view. */\n iconTabType = input<TabType>('text');\n\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n tabsConfig = model<TabConfig[]>();\n\n /** @description Destiny mode. */\n densityMode = model<TabDestinyMode>('inherit');\n\n /** @description Icon font */\n iconTabFont = input<IconFont>('SAP-icons');\n\n /** @description Disable or enable reordering(drag and drop) feature. (supported by text type only) */\n enableTabReordering = input(false);\n\n /** @description Boolean flag indicating to show total tab.(supported by filter type only) */\n showTotalTab = input(true);\n\n /** Whether to render icon tab item as multi-click variant. */\n multiClick = input(false);\n\n /** @description Layout type for tab (supported by text type only) */\n layoutMode = input<'row' | 'column'>('row');\n\n /** @description Icon tab bar background type. */\n iconTabBackground = input<IconTabBarBackground>('solid');\n\n /** @description Icon tab bar size. */\n iconTabSize = input<IconTabBarSize>();\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n colorAssociations = input<TabColorAssociations>();\n\n /**\n * Maximum height of the content.\n * Works only for content-projected tab content.\n */\n maxContentHeight = input('100%');\n\n /** @description Emits when some tab is selected. */\n iconTabSelected = output<IconTabBarItem>();\n\n /** @description Emits when user drop tab. */\n iconTabReordered = output<IconTabBarItem[]>();\n\n /** Event emitted when user clicks on x icon in tab. */\n closeTab = output<IconTabBarItem>();\n\n /** @hidden */\n children = contentChildren(IconTabBarTabComponent, { descendants: false });\n\n /** @hidden */\n _scrollbar = viewChild(ScrollbarDirective);\n\n /** @hidden */\n tabDirectives = viewChildren(IconTabBarTabContentDirective);\n\n @HostBinding('class.fd-tabs-custom')\n private get _customTabs(): boolean {\n return this._inDynamicPage;\n }\n\n /** @hidden */\n get headerContainer(): Nullable<ElementRef> {\n return this._iconTabBarCmp()?.headerElement;\n }\n\n /** @hidden */\n _cssClassForContainer: string[];\n\n /** @hidden */\n _disableScrollSpy = false;\n\n /** @hidden */\n _init = true;\n\n /** Scrollable element reference. */\n get scrollableElement(): Nullable<ElementRef> {\n return this._scrollbar()?.elementRef;\n }\n\n /** @hidden */\n readonly _selectedUid = signal<string | undefined>(undefined);\n\n /** @hidden */\n readonly _tabs$ = computed(() => this._generateTabBarItems(this._tabsConfig$()));\n\n /** @hidden */\n readonly _flatTabs$ = computed(() => this._generateFlatTabs(this._tabs$()));\n\n /** @hidden */\n readonly _tabRenderer$ = signal<IconTabBarItem | null>(null);\n\n /** @hidden */\n readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n readonly _tabsConfig$ = computed(() => {\n const tabConfig = this.tabsConfig();\n if (tabConfig) {\n return this.tabsConfig() as TabConfig[];\n }\n\n const children = this.children();\n if (!children) {\n return [];\n }\n return children.map((t) => this._generateTabConfig(t));\n });\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _inDynamicPage = !!inject(FD_DYNAMIC_PAGE, { optional: true });\n\n private readonly _iconTabBarCmp = viewChild<Nullable<IconTabBarBase>>(IconTabBarBase);\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._cssClassForContainer = this._generateContainerStyles();\n\n if (this.densityMode() === 'inherit') {\n this._contentDensityService?._contentDensityListener\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n .subscribe((density) => {\n this.densityMode.set(density);\n if (density !== 'compact') {\n this._cssClassForContainer = this._cssClassForContainer.filter(\n (cssClass) => cssClass !== 'fd-icon-tab-bar--compact'\n );\n } else {\n this._cssClassForContainer.push('fd-icon-tab-bar--compact');\n }\n this._cd.detectChanges();\n });\n }\n }\n\n /**\n * @hidden\n * @param event reordered array of IconTabBarItem\n */\n _onReorder(event: IconTabBarItem[]): void {\n this.iconTabReordered.emit(event);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._tabRenderer$.set(selectedItem);\n this.iconTabSelected.emit(selectedItem);\n\n if (this.stackContent) {\n this._scrollToPanel(this.tabDirectives().find((tab) => tab.uId() === selectedItem.uId)!);\n }\n }\n\n /** @hidden */\n _closeTab(item: IconTabBarItem): void {\n this.closeTab.emit(item);\n }\n\n /** Programmatically select tab. */\n selectTab(id: Nullable<string>): void {\n const selectedItem = this._flatTabs$().find((t) => t.id === id);\n if (!selectedItem) {\n return;\n }\n this._selectedUid.set(selectedItem.uId);\n this._selectItem(selectedItem);\n }\n\n /** @hidden */\n highlightActiveTab(id: Nullable<string>, scroll = false): void {\n if (this._disableScrollSpy) {\n return;\n }\n const activeTab = this.tabDirectives().find((tab) => tab.id() === id);\n this._selectedUid.set(activeTab?.uId() || undefined);\n if (scroll && activeTab) {\n this._scrollToPanel(activeTab);\n }\n }\n\n /**\n * @hidden\n * @returns array of css classes for icon-tab-bar container\n */\n private _generateContainerStyles(): string[] {\n const styles = [`fd-icon-tab-bar--${this.iconTabType()}`];\n const tabsConfig = this.tabsConfig();\n if (tabsConfig && this.iconTabType() === 'process' && tabsConfig[0].icon) {\n styles.push('fd-icon-tab-bar--icon');\n }\n if (this.iconTabBackground() !== 'solid') {\n styles.push(`fd-icon-tab-bar--${this.iconTabBackground()}`);\n }\n if (this.iconTabSize()) {\n styles.push(`fd-icon-tab-bar--${this.iconTabSize()!}`);\n }\n if (this.densityMode() === 'compact') {\n styles.push('fd-icon-tab-bar--compact');\n }\n if (this.layoutMode() === 'column') {\n styles.push('fd-icon-tab-bar--counters');\n }\n return styles;\n }\n\n private _generateTabConfig(tab: IconTabBarTabComponent): TabConfig {\n const tabConfig: TabConfig = {\n label: tab.label(),\n color: tab.color(),\n active: tab.active(),\n badge: tab.badge(),\n counter: tab.counter(),\n renderer: tab.renderer(),\n id: tab.id(),\n subItems: tab.children().map((c) => this._generateTabConfig(c))\n };\n\n return tabConfig;\n }\n\n /** @hidden */\n private _scrollToPanel(tabPanel: Nullable<IconTabBarTabContentDirective>): void {\n if (!tabPanel) {\n return;\n }\n const scrollbar = this._scrollbar();\n if (!scrollbar) {\n return;\n }\n const panelElement = tabPanel.elementRef.nativeElement;\n const containerElement = scrollbar.elementRef.nativeElement;\n const distanceToScroll = panelElement.offsetTop - containerElement.offsetTop;\n const maximumScrollTop = containerElement.scrollHeight - containerElement.clientHeight;\n const currentScrollPosition = Math.ceil(containerElement.scrollTop);\n\n if (!(currentScrollPosition === maximumScrollTop && distanceToScroll > maximumScrollTop)) {\n this._disableScrollSpy = true;\n fromEvent(containerElement, 'scroll')\n .pipe(debounceTime(100), first(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => (this._disableScrollSpy = false));\n scrollTop(containerElement, distanceToScroll);\n }\n }\n\n /**\n * @hidden\n * @description generate IconTabItems from TabConfig array\n */\n private _generateTabBarItems(\n config: TabConfig[],\n indexPrefix = '',\n flatIndexRef?: FlatIndex,\n parentUId?: string\n ): IconTabBarItem[] {\n flatIndexRef = flatIndexRef || { value: 0 };\n return config.map((item, index) => {\n const uId = `${indexPrefix}${index}`;\n if (!('color' in item)) {\n item.color = 'default';\n }\n const result: IconTabBarItem = {\n ...item,\n index,\n cssClasses: [],\n uId,\n hidden: false,\n parentUId,\n flatIndex: flatIndexRef!.value++,\n subItems: this._generateTabBarItems(\n item.subItems || [],\n `${uId}${UNIQUE_KEY_SEPARATOR}`,\n flatIndexRef,\n uId\n )\n };\n if (item.color) {\n result.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n return result;\n });\n }\n\n private _generateFlatTabs(tabs: IconTabBarItem[]): IconTabBarItem[] {\n const flatTabs = tabs.reduce((acc: IconTabBarItem[], tab) => {\n acc.push(tab);\n if (tab.subItems) {\n acc.push(...this._generateFlatTabs(tab.subItems));\n }\n return acc;\n }, []);\n\n return flatTabs;\n }\n}\n\n/** @hidden helper object that is used in tab generation functions to calculate their indexes not depending on level of nesting */\ninterface FlatIndex {\n value: number;\n}\n","<div class=\"fd-icon-tab-bar\" [class]=\"_cssClassForContainer\">\n @if (iconTabType() === 'text') {\n <ng-template [ngTemplateOutlet]=\"textType\"></ng-template>\n }\n @if (iconTabType() === 'icon' || iconTabType() === 'icon-only') {\n <ng-template [ngTemplateOutlet]=\"iconType\"></ng-template>\n }\n @if (iconTabType() === 'filter') {\n <ng-template [ngTemplateOutlet]=\"filterType\"></ng-template>\n }\n @if (iconTabType() === 'process') {\n <ng-template [ngTemplateOutlet]=\"processType\"></ng-template>\n }\n <div\n class=\"fd-icon-tab-bar__content\"\n fd-scrollbar\n (spyChange)=\"highlightActiveTab($event.id)\"\n [scrollSpyDisabled]=\"!stackContent || _disableScrollSpy\"\n fdScrollSpy\n [trackedTags]=\"['fdp-icon-tab-bar-tab-content']\"\n [style.max-height]=\"maxContentHeight()\"\n >\n @if (stackContent) {\n @for (tab of _flatTabs$(); track tab) {\n <fdp-icon-tab-bar-tab-content [id]=\"tab.id\" [uId]=\"tab.uId\" class=\"fd-icon-tab-bar__tab-content\">\n <ng-template [ngTemplateOutlet]=\"tab.renderer || null\"></ng-template>\n </fdp-icon-tab-bar-tab-content>\n }\n } @else {\n @if (_tabRenderer$(); as tabRenderer) {\n <fdp-icon-tab-bar-tab-content\n [id]=\"tabRenderer.id\"\n [uId]=\"tabRenderer.uId\"\n class=\"fd-icon-tab-bar__tab-content\"\n >\n <ng-template [ngTemplateOutlet]=\"tabRenderer.renderer || null\"></ng-template>\n </fdp-icon-tab-bar-tab-content>\n }\n }\n <ng-content select=\"[fdpIconTabBarFreeContent]\"></ng-content>\n </div>\n</div>\n<ng-template #processType>\n <fdp-icon-tab-bar-process-type\n [tabs]=\"_tabs$()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode()\"\n [colorAssociations]=\"colorAssociations()\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-process-type>\n</ng-template>\n<ng-template #filterType>\n <fdp-icon-tab-bar-filter-type\n [tabs]=\"_tabs$()\"\n [showTotalTab]=\"showTotalTab()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode()\"\n [colorAssociations]=\"colorAssociations()\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-filter-type>\n</ng-template>\n<ng-template #iconType>\n <fdp-icon-tab-bar-icon-type\n [showLabel]=\"iconTabType() === 'icon'\"\n [tabs]=\"_tabs$()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode()\"\n [colorAssociations]=\"colorAssociations()\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-icon-type>\n</ng-template>\n<ng-template #textType>\n <fdp-icon-tab-bar-text-type\n [tabs]=\"_tabs$()\"\n [multiClick]=\"multiClick()\"\n [layoutMode]=\"layoutMode()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode()\"\n [enableTabReordering]=\"enableTabReordering()\"\n [colorAssociations]=\"colorAssociations()\"\n (reordered)=\"_onReorder($event)\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-text-type>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport { IconTabBarTabComponent } from './components/icon-tab-bar-tab/icon-tab-bar-tab.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { IconTabBarPopoverComponent } from './components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\nimport { TextTypePopoverComponent } from './components/popovers/text-type-popover/text-type-popover.component';\nimport { IconBarDndContainerDirective } from './directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from './directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from './directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarFreeContentDirective } from './directives/icon-tab-bar-free-content.directive';\nimport { IconTabBarComponent } from './icon-tab-bar.component';\n\nconst components = [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective,\n IconTabBarTabComponent,\n IconTabBarFreeContentDirective\n];\n\nexport const FDP_ICON_TAB_BAR = [IconTabBarComponent, IconTabBarTabComponent, IconTabBarFreeContentDirective] as const;\n\n/**\n * @deprecated\n * Import `IconTabBarComponent` directly instead.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformIconTabBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.IconBarDndContainerDirective","i2.IconBarDndListDirective","i3.IconBarDndContainerDirective","i1"],"mappings":";;;;;;;;;;;;;;;;;;;AAAO,MAAM,oBAAoB,GAAG,IAAI;AAC3B,MAAA,YAAY,GAAG;AACxB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,cAAc,EAAE,EAAE;EACpB;AACK,MAAM,0BAA0B,GAAG;;MC6BpB,cAAc,CAAA;AADpC,IAAA,WAAA,GAAA;AA8CI;;AAEG;AAEH,QAAA,IAAA,CAAA,QAAQ,GAAiC,IAAI,YAAY,EAAkB,CAAC;;AAI5E,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAsB,CAAC;;AAa3D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAmB,EAAE,CAAC,CAAC;;AAM3C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAE7B;;;AAGG;QACH,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAoC,CAAC;;AAGrD,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;;AAGrD,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;;AAGhC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;;QAGpC,IAAK,CAAA,KAAA,GAAqB,EAAE,CAAC;;AAM7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;;QAGjC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAmR9B,KAAA;AA5WG;;AAEG;IACH,IACI,IAAI,CAAC,KAAuB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;;AAGD,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAQD;;AAEG;IACH,IACI,WAAW,CAAC,KAAqB,EAAA;;QAEjC,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;YAClD,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC5C;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;;AA+DD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;YAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,iCAAiC,EAAE,CAAC;YACzC,OAAO;SACV;QACD,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;YAC7C,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC5C;QAED,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE;YACzD,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC;KACJ;;IAGD,QAAQ,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;;IAGD,eAAe,GAAA;QACX,IAAI,CAAC,iCAAiC,EAAE,CAAC;KAC5C;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B;AAED;;;;AAIG;IACH,WAAW,CAAC,YAA4B,EAAE,KAAa,EAAA;QACnD,KAAK,EAAE,eAAe,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,QAAA,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACpC;;AAGD,IAAA,eAAe,CACX,KAAoB,EACpB,GAA+B,EAC/B,YAAoB,EACpB,OAAkC,EAAA;AAElC,QAAA,IAAI,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YACjD,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SACzB;AAAM,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,EAAE;YAC5D,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE;gBAC/D,OAAO,EAAE,YAAY,EAAE,CAAC;gBACxB,OAAO;aACV;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;SAC1F;AAAM,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE;YACzD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;SAC1F;KACJ;;AAGD,IAAA,cAAc,CAAC,YAAoB,EAAA;QAC/B,MAAM,SAAS,GAAG,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KAC9B;;AAGD,IAAA,kBAAkB,CAAC,YAAoB,EAAA;AACnC,QAAA,IAAI,YAAY,KAAK,CAAC,EAAE;;AAEpB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;SAC/C;aAAM;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;SACrC;KACJ;AAED;;;;AAIG;AACH,IAAA,UAAU,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAK,EAAA;AAC1C,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SAC/C;aAAM;AACH,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtF,WAAW,EAAE,KAAK,EAAE,CAAC;SACxB;KACJ;AAED;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,YAA4B,EAAA;AACzC,QAAA,IAAI,YAAY,CAAC,KAAK,EAAE;YACpB,YAAY,CAAC,UAAU,GAAG,CAAC,CAAA,uBAAA,EAA0B,YAAY,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;SAC9E;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,CAAC,iCAAiC,EAAE,CAAC;KAC5C;AAED;;;;AAIG;AACH,IAAA,wBAAwB,CAAC,UAAkB,EAAA;QACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAqB,EAAE,CAAC;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;AAElE,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAE5F,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;AAED;;;AAGG;AACO,IAAA,yBAAyB,CAAC,YAAqB,EAAA;QACrD,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,eAAe,IAAI,YAAY,EAAE;AACrF,YAAA,IAAiB,YAAa,CAAC,aAAa,YAAY,WAAW,EAAE;gBACjE,OAAiC,YAAa,CAAC,aAAa,CAAC;aAChE;SACJ;QACD,IAAI,SAAS,EAAE,EAAE;AACb,YAAA,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;SACvD;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACO,iCAAiC,GAAA;QACvC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC7F,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;AAC7D,gBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAC5B;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;IACO,SAAS,GAAA;QACf,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAEjD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,OAAO;SACV;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY,EAAE,GAAG,CAAC;QAErC,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;SACV;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACpC;AAED;;;;;AAKG;IACK,sBAAsB,CAAC,IAAsB,EAAE,SAA2B,EAAA;AAC9E,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACxC;AAED;;;AAGG;IACK,wBAAwB,GAAA;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QACvE,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;SACrC;aAAM,IAAI,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SACnC;KACJ;AAED;;;;;;;AAOG;AACK,IAAA,uBAAuB,CAAC,SAAiB,EAAE,UAAkB,EAAE,QAAyB,EAAA;QAC5F,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,SAAS,GAAG,UAAU,EAAE;AACtD,YAAA,OAAO,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC;SACrC;aAAM;AACH,YAAA,OAAO,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC;SACrC;KACJ;AAED;;;;AAIG;AACK,IAAA,SAAS,CAAC,GAAmB,EAAA;AACjC,QAAA,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AACnB,QAAA,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,KAAK,0BAA0B,CAAC,CAAC;KACjG;AAED;;;;;AAKG;IACK,cAAc,CAAC,IAAsB,EAAE,SAA2B,EAAA;AACtE,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9D,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE;gBACtC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AAC3B,gBAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AAClB,gBAAA,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;aACnD;SACJ;KACJ;AAED;;;;;AAKG;AACK,IAAA,gBAAgB,CAAC,IAAsB,EAAA;AAC3C,QAAA,IAAI,SAAqC,CAAC;AAC1C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,YAAA,IAAI,GAAG,CAAC,MAAM,EAAE;gBACZ,SAAS,GAAG,GAAG,CAAC;gBAChB,MAAM;aACT;AAAM,iBAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACrB,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,SAAS,EAAE;oBACX,MAAM;iBACT;aACJ;SACJ;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;8GArXiB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,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,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA0DrB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIF,UAAU,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FA9DtB,cAAc,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;8BAeF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAcN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAOF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAWN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAON,QAAQ,EAAA,CAAA;sBADP,MAAM;gBAKP,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAOP,iBAAiB,EAAA,CAAA;sBADhB,SAAS;uBAAC,qBAAqB,CAAA;gBAKhC,aAAa,EAAA,CAAA;sBADZ,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;;;ACvFxC,MAAgB,kBAAmB,SAAQ,cAAc,CAAA;AAD/D,IAAA,WAAA,GAAA;;AAGI;;AAEG;AAEH,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAkB,CAAC;AAuGjD,KAAA;;AApGG,IAAA,SAAS,CAAC,SAAiB,EAAE,YAAY,GAAG,KAAK,EAAA;AAC7C,QAAA,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAEpD,QAAA,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE;YACd,OAAO;SACV;QAED,GAAG,CAAC,MAAM,CAAC,MAAM,CACb,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,EACtD,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;SACV;;QAED,UAAU,CAAC,MAAK;;AAEZ,YAAA,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aAC9C;AACL,SAAC,CAAC,CAAC;KACN;;AAGD,IAAA,eAAe,CACX,KAAoB,EACpB,GAA+B,EAC/B,YAAoB,EACpB,OAAkC,EAAA;AAElC,QAAA,IAAI,GAAG,EAAE,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE;YAChE,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;AAExB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;;YAGzB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC;AAEhG,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC/B,OAAO;SACV;QACD,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;KAC5D;AAED;;;;;AAKG;IACO,WAAW,CAAC,GAAqB,EAAE,SAAkB,EAAE,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAA;QACxF,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,SAAS,CAAA,EAAG,oBAAoB,CAAG,EAAA,KAAK,EAAE,GAAG,CAAG,EAAA,KAAK,EAAE,CAAC;AAClF,YAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;aAC9D;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;aAC3E;AACD,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;KACN;AAED;;;;;;AAMG;AACO,IAAA,uBAAuB,CAC7B,GAAW,EACX,GAAa,GAAA,IAAI,CAAC,IAAI,EAAA;AAEtB,QAAA,IAAI,MAAqE,CAAC;AAC1E,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB,YAAA,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;gBAClB,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;gBACpC,MAAM;aACT;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACrC,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1D,IAAI,MAAM,EAAE;oBACR,MAAM;iBACT;aACJ;SACJ;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;8GA5GiB,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;8BAON,QAAQ,EAAA,CAAA;sBADP,MAAM;;;MCKW,qBAAqB,CAAA;;AA2DvC,IAAA,WAAA,CAAsB,GAAsB,EAAA;QAAtB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AArC5C;;AAEG;QAEH,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAErB;;AAEG;AAEH,QAAA,IAAA,CAAA,iBAAiB,GAAiC,IAAI,YAAY,EAAkB,CAAC;;AAIrF,QAAA,IAAA,CAAA,qBAAqB,GAAuB,IAAI,YAAY,EAAQ,CAAC;;AAIrE,QAAA,IAAA,CAAA,oBAAoB,GAAuB,IAAI,YAAY,EAAQ,CAAC;;AAIpE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AAEtC;;;AAGG;QACH,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAoC,CAAC;AAE9D;;;AAGG;QACH,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;KAGgC;;AAGhD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACnC;KACJ;AAED;;;AAGG;IACH,YAAY,CAAC,SAAS,GAAG,KAAK,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACvB;QACD,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5F;KACJ;;AAGD,IAAA,yBAAyB,CAAC,YAAoB,EAAA;AAC1C,QAAA,IAAI,YAAY,KAAK,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;SACpC;aAAM;AACH,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;SAC5C;KACJ;;AAGD,IAAA,qBAAqB,CAAC,YAAoB,EAAA;QACtC,IAAI,YAAY,KAAK,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;SACrC;aAAM;AACH,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;SAC5C;KACJ;;AAGD,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrD,QAAA,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;KAC3B;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,YAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACxB;;AAGD,IAAA,eAAe,CAAC,KAAoB,EAAE,GAAmB,EAAE,YAAoB,EAAA;AAC3E,QAAA,IAAI,GAAG,EAAE,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE;YAChE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;SACxC;AAAM,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YACjD,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SACzB;AAAM,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,EAAE;YAC5D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;SACxG;AAAM,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE;YACzD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;SACxG;KACJ;AAED;;;AAGG;AACO,IAAA,UAAU,CAAC,KAAuB,EAAA;AACxC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;aACnE;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAClC;AACL,SAAC,CAAC,CAAC;KACN;;IAGO,6BAA6B,GAAA;QACjC,OAAO,IAAI,CAAC,mBAAmB;AAC1B,aAAA,OAAO,EAAE;AACT,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM;AACT,YAAA,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAAE,EAAE,EAAE,CAAC;YACxE,aAAa,EAAE,CAAC,CAAC,aAAa;AACjC,SAAA,CAAC,CAAC;AACF,aAAA,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,UAAU,GAAG,UAAU,CAAC;aACvF,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,aAAa,CAAC,CAAC;KAClD;8GA/JiB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAD1C,SAAS;sFASN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAON,OAAO,EAAA,CAAA;sBADN,SAAS;uBAAC,SAAS,CAAA;gBAOpB,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,YAAY,EAAA,CAAA;sBADX,KAAK;gBAON,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAKP,qBAAqB,EAAA,CAAA;sBADpB,MAAM;gBAKP,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAKP,QAAQ,EAAA,CAAA;sBADP,MAAM;;;ACzCL,MAAO,0BAA2B,SAAQ,qBAAqB,CAAA;AAdrE,IAAA,WAAA,GAAA;;AAkBI;;AAEG;QAEH,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEjB;;AAEG;QAEH,IAAK,CAAA,KAAA,GAAG,MAAM,CAAC;AAKlB,KAAA;8GAnBY,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,ECtBvC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yoHAwEA,ED3DQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,+JAChB,uBAAuB,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,aAAa,EACb,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,oIACf,eAAe,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGV,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;+BACI,0BAA0B,EAAA,UAAA,EAExB,IAAI,EACP,OAAA,EAAA;wBACL,gBAAgB;wBAChB,uBAAuB;wBACvB,oBAAoB;wBACpB,aAAa;wBACb,OAAO;wBACP,eAAe;wBACf,eAAe;AAClB,qBAAA,EAAA,QAAA,EAAA,yoHAAA,EAAA,CAAA;8BAIwB,mBAAmB,EAAA,CAAA;sBAA3C,YAAY;uBAAC,SAAS,CAAA;gBAMvB,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAON,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAKN,aAAa,EAAA,CAAA;sBADZ,KAAK;;;AETJ,MAAO,6BAA8B,SAAQ,kBAAkB,CAAA;AApBrE,IAAA,WAAA,GAAA;;AA2BI;;AAEG;QAEH,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;AAavB,KAAA;AARG;;;AAGG;IACO,SAAS,GAAA;QACf,KAAK,CAAC,SAAS,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;KACjE;8GAvBQ,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAhB3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,WAAW,EAAE,6BAA6B;AAC7C,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgBU,0BAA0B,ECnCzC,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0xHA2FA,EDtEQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,sJACrB,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,0BAA0B,EAC1B,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,EACT,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,oIACf,eAAe,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGV,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBApBzC,SAAS;+BACI,8BAA8B,EAAA,UAAA,EAE5B,IAAI,EACL,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,cAAc;AACvB,4BAAA,WAAW,EAA+B,6BAAA;AAC7C,yBAAA;qBACJ,EACQ,OAAA,EAAA;wBACL,qBAAqB;wBACrB,yBAAyB;wBACzB,aAAa;wBACb,0BAA0B;wBAC1B,SAAS;wBACT,eAAe;wBACf,eAAe;AAClB,qBAAA,EAAA,QAAA,EAAA,0xHAAA,EAAA,CAAA;8BAIwB,cAAc,EAAA,CAAA;sBAAtC,YAAY;uBAAC,SAAS,CAAA;gBAGgB,cAAc,EAAA,CAAA;sBAApD,SAAS;uBAAC,0BAA0B,CAAA;gBAMrC,YAAY,EAAA,CAAA;sBADX,KAAK;;;AEXJ,MAAO,2BAA4B,SAAQ,kBAAkB,CAAA;AApBnE,IAAA,WAAA,GAAA;;;QAgCa,IAAkB,CAAA,kBAAA,GAAG,2BAA2B,CAAC;AAC7D,KAAA;8GAbY,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAhBzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,WAAW,EAAE,2BAA2B;AAC3C,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgBU,0BAA0B,EClCzC,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ovGA8EA,ED1DQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,sJACrB,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EACb,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,gHAC1B,eAAe,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGV,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBApBvC,SAAS;+BACI,4BAA4B,EAAA,UAAA,EAE1B,IAAI,EACL,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,cAAc;AACvB,4BAAA,WAAW,EAA6B,2BAAA;AAC3C,yBAAA;qBACJ,EACQ,OAAA,EAAA;wBACL,qBAAqB;wBACrB,yBAAyB;wBACzB,OAAO;wBACP,aAAa;wBACb,eAAe;wBACf,0BAA0B;wBAC1B,eAAe;AAClB,qBAAA,EAAA,QAAA,EAAA,ovGAAA,EAAA,CAAA;8BAIwB,cAAc,EAAA,CAAA;sBAAtC,YAAY;uBAAC,SAAS,CAAA;gBAGgB,cAAc,EAAA,CAAA;sBAApD,SAAS;uBAAC,0BAA0B,CAAA;gBAIrC,SAAS,EAAA,CAAA;sBADR,KAAK;;;AELJ,MAAO,8BAA+B,SAAQ,kBAAkB,CAAA;AAnBtE,IAAA,WAAA,GAAA;;;QA2BI,IAAwB,CAAA,wBAAA,GAAG,EAAE,CAAC;AAE9B;;;AAGG;QACH,IAAU,CAAA,UAAA,GAAqB,EAAE,CAAC;AAElC;;;AAGG;QACH,IAAU,CAAA,UAAA,GAAqB,EAAE,CAAC;;QAGlC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;;QAGrB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;;QAMd,IAAqB,CAAA,qBAAA,GAAG,CAAC,CAAC;;QAG1B,IAAiB,CAAA,iBAAA,GAAG,CAAC,CAAC;AAmKjC,KAAA;AAjKG;;;AAGG;AACH,IAAA,WAAW,CAAC,YAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;AAC5C,QAAA,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;KACnC;AAED;;;;AAIG;IACH,MAAM,gBAAgB,CAAC,YAA4B,EAAA;AAC/C,QAAA,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,qBAAqB,CAAC;AAC1B,QAAA,IAAI,iBAAiB,CAAC;;;;AAItB,QAAA,IAAI,uBAAgC,CAAC;QACrC,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACpD,YAAA,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAClG,YAAA,IAAI,CAAC,aAAa,GAAG,iBAAiB,GAAG,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,uBAAuB,GAAG,KAAK,CAAC;SACnC;aAAM;AACH,YAAA,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACvG,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,uBAAuB,GAAG,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,GAAG,CAAC,CAAC;SACjD;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACvD,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;gBAC7D,uBAAuB;sBACjB,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,qBAAqB,CAAC;sBAC5D,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAC5B;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;AACH,IAAA,wBAAwB,CAAC,UAAkB,EAAA;AACvC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACpG,QAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;KACjE;;IAGO,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,KAAK,0BAA0B,CAAC,CAAC;AACpG,SAAC,CAAC,CAAC;KACN;AAED;;;;;;AAMG;IACK,0BAA0B,CAAC,UAAkB,EAAE,iBAAyB,EAAA;QAC5E,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE;YACb,OAAO;SACV;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACtD,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;SACvD;QAED,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACzF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,iBAAiB,GAAG,CAAC,CAAC;QAEhE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE;YACvC,OAAO;SACV;QAED,IAAI,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC5D,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;AAC/C,QAAA,OAAO,iBAAiB,GAAG,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAE5D,YAAA,EAAE,SAAS,CAAC;AACZ,YAAA,EAAE,iBAAiB,CAAC;SACvB;;AAED,QAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;AAC1D,cAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAoB;cAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAoB,GAAG,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC7C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;AAED;;;;;;AAMG;IACK,yBAAyB,CAAC,UAAkB,EAAE,qBAA6B,EAAA;QAC/E,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE;YACb,OAAO;SACV;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACtD,QAAA,KAAK,IAAI,CAAC,GAAG,qBAAqB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;SACvD;QAED,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACpD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAoB,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAE7C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,OAAO;SACV;QAED,IAAI,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5D,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAC9G,QAAA,OAAO,iBAAiB,GAAG,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAE5D,YAAA,EAAE,SAAS,CAAC;AACZ,YAAA,EAAE,iBAAiB,CAAC;SACvB;;AAED,QAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;AAC1D,cAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAoB;cAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAoB,GAAG,CAAC,CAAC;QAExD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;8GArMQ,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAf5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,WAAW,EAAE,8BAA8B;AAC9C,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAeU,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrCzC,mxIAwGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhFQ,qBAAqB,EACrB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,EAC1B,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,yBAAyB,EACzB,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,oIACf,eAAe,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGV,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAnB1C,SAAS;+BACI,+BAA+B,EAAA,UAAA,EAE7B,IAAI,EACL,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,cAAc;AACvB,4BAAA,WAAW,EAAgC,8BAAA;AAC9C,yBAAA;qBACJ,EACQ,OAAA,EAAA;wBACL,qBAAqB;wBACrB,0BAA0B;wBAC1B,yBAAyB;wBACzB,aAAa;wBACb,eAAe;wBACf,eAAe;AAClB,qBAAA,EAAA,QAAA,EAAA,mxIAAA,EAAA,CAAA;8BAIwB,cAAc,EAAA,CAAA;sBAAtC,YAAY;uBAAC,SAAS,CAAA;gBAGgB,cAAc,EAAA,CAAA;sBAApD,SAAS;uBAAC,0BAA0B,CAAA;;;MEhB5B,4BAA4B,CAAA;AACrC;;AAEG;IACH,IACI,SAAS,CAAC,SAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;KACzC;;AAoCD,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAlCzC;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;;QAGjC,IAAa,CAAA,aAAA,GAAc,EAAE,CAAC;;QAG9B,IAAiB,CAAA,iBAAA,GAAwB,EAAE,CAAC;;AAG5C,QAAA,IAAA,CAAA,kBAAkB,GAA2B,IAAI,GAAG,EAAqB,CAAC;;QAM1E,IAA6B,CAAA,6BAAA,GAAmB,EAAE,CAAC;;QAGnD,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAC;;QAGxC,IAAsB,CAAA,sBAAA,GAAkB,IAAI,CAAC;;QAG7C,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;;AAGT,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;KAGL;AAE7C;;AAEG;IACH,SAAS,GAAA;;AAEL,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAuB,KAC3E,IAAI,CAAC,qBAAqB,EAAE,CAC/B,CAAC;QACF,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,aAAoB,EAAA;QACvB,IAAI,eAAe,GAAkB,IAAI,CAAC;QAC1C,IAAI,wBAAwB,GAAkB,IAAI,CAAC;QAEnD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;;AAE9C,YAAA,IAAI,eAAe,KAAK,KAAK,EAAE;gBAC3B,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBACxE,IAAI,gBAAgB,EAAE;oBAClB,eAAe,GAAG,KAAK,CAAC;AACxB,oBAAA,OAAO,IAAI,CAAC;iBACf;aACJ;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI,CAAC,iBAAiB,EAAE;YACxE,OAAO;SACV;AAED,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,eAAe,EAAE;YAC5C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,CAAC;YACtE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAuB,CAAC,EAAE,qBAAqB,EAAE,CAAC;SACjF;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC;AAEzC,QAAA,IAAI,eAAe,KAAK,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAClE,OAAO;SACV;;QAGD,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;YACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACxE,IAAI,gBAAgB,EAAE;gBAClB,wBAAwB,GAAG,KAAK,CAAC;AACjC,gBAAA,OAAO,IAAI,CAAC;aACf;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,wBAAwB,KAAK,IAAI,IAAI,wBAAwB,KAAK,IAAI,CAAC,sBAAsB,EAAE;YAC/F,OAAO;SACV;AAED,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,wBAAwB,EAAE;YAC1D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAkB,CAAC,EAAE,mBAAmB,EAAE,CAAC;YACvE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,qBAAqB,EAAE,CAAC;SAChF;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,wBAAwB,CAAC;AAEvD,QAAA,IAAI,wBAAwB,KAAK,IAAI,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC7E,OAAO;SACV;KACJ;AAED;;;AAGG;AACH,IAAA,OAAO,CAAC,OAA0B,EAAA;QAC9B,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,EAAE;YAClE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAC5E,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACd,aAAa,EAAE,OAAO,CAAC,WAAW;gBAClC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,WAAW;AAC3E,gBAAA,MAAM,EAAE,SAAS;AACpB,aAAA,CAAC,CAAC;SACN;QACD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE;YACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,mBAAmB,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACd,aAAa,EAAE,OAAO,CAAC,WAAW;gBAClC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW;AACtE,gBAAA,MAAM,EAAE,QAAQ;AACnB,aAAA,CAAC,CAAC;SACN;;AAED,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,6BAA6B,GAAG,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACtC;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,QAA2B,EAAA;QACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAe,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9F,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;KACxG;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,QAA2B,EAAA;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,QAAQ,CAAC,CAAC;KACvF;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,OAA0B,EAAA;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrC,QAAA,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACjD;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,OAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC3C;AAED;;AAEG;IACK,0BAA0B,GAAA;QAC9B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;AAC5D,YAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACpC,gBAAA,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK;AACpD,gBAAA,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;AAC7D,gBAAA,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK;AACnD,gBAAA,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,MAAM;AACzE,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;;AAGO,IAAA,qBAAqB,CAAC,SAAkB,EAAA;AAC5C,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACxC,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SACxC;KACJ;;IAGO,iBAAiB,CAAC,OAAqB,EAAE,aAAoB,EAAA;AACjE,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;AAEvC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAExC,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KAC7F;;AAGO,IAAA,iBAAiB,CAAC,OAAqB,EAAE,aAAoB,EAAE,aAAsB,KAAK,EAAA;AAC9F,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAEvC,MAAM,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACpF,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;QAE1E,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KAC7F;8GApOQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wDAAwD;AAClE,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;+EAMO,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAUN,OAAO,EAAA,CAAA;sBADN,MAAM;;AA0NX;AACA,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW,EAAA;AACjD,IAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;AAChC;;MClPa,uBAAuB,CAAA;;AA0BhC,IAAA,WAAA,CACW,UAAsB,EACrB,SAAmB,EACnB,aAA2C,EAAA;QAF5C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACrB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QACnB,IAAa,CAAA,aAAA,GAAb,aAAa,CAA8B;AA5BvD;;AAEG;QAEH,IAAc,CAAA,cAAA,GAA8B,UAAU,CAAC;AAEvD;;AAEG;QAEH,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;;AAMJ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;;QAG1C,IAAa,CAAA,aAAA,GAAc,EAAE,CAAC;;AAGrB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,aAAa,CAAO,CAAC,CAAC,CAAC;KAOrD;;IAGJ,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,UAAU;AACV,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7D,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;KACzE;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC1C;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,QAA2B,EAAA;QACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC1B;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,QAA2B,EAAA;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,oBAAoB,CAAC,SAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC;KAC3C;8GA5EQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;8IAMG,cAAc,EAAA,CAAA;sBADb,KAAK;gBAON,aAAa,EAAA,CAAA;sBADZ,KAAK;;;MCVG,uBAAuB,CAAA;;AAwDhC,IAAA,WAAA,CACW,UAAsB,EACnB,SAAmB,EACrB,WAAoC,EACpC,gBAA8C,EAAA;QAH/C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACnB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAyB;QACpC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA8B;AArD1D;;AAEG;AAEH,QAAA,IAAA,CAAA,YAAY,GAAa,CAAC,oCAAoC,CAAC,CAAC;AAEhE;;AAEG;AAEH,QAAA,IAAA,CAAA,eAAe,GAAa,CAAC,oCAAoC,CAAC,CAAC;AAEnE;;AAEG;AAEH,QAAA,IAAA,CAAA,iBAAiB,GAAa;YAC1B,sCAAsC;YACtC,+CAA+C;SAClD,CAAC;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAS,CAAC;AAEtC;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAExC;;AAEG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAGvC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;;AASF,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;KAQ9C;;IAGJ,eAAe,GAAA;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,KAAK,UAAU,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;;IAGD,cAAc,GAAA;;AAEV,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACvB;;AAGD,IAAA,SAAS,CAAC,QAAe,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7B;;IAGD,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;;IAGD,qBAAqB,GAAA;;QAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;;QAGnE,OAAO;YACH,CAAC,EAAE,IAAI,CAAC,IAAI;YACZ,CAAC,EAAE,IAAI,CAAC,GAAG;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;KACL;AAED;;AAEG;IACH,qBAAqB,CAAC,QAAiB,KAAK,EAAA;QACxC,KAAK;AACD,cAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACxE,cAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACnF;AAED;;AAEG;IACH,mBAAmB,CAAC,QAAiB,KAAK,EAAA;QACtC,KAAK;AACD,cAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AACtE,cAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;KACjF;;IAGO,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAE9C,QAAA,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,CAAC,KAAK;AACb,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,aAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAE3G,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;KAC1G;8GA3IQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;iLAMG,WAAW,EAAA,CAAA;sBADV,KAAK;gBAON,YAAY,EAAA,CAAA;sBADX,KAAK;gBAON,eAAe,EAAA,CAAA;sBADd,KAAK;gBAON,iBAAiB,EAAA,CAAA;sBADhB,KAAK;;;MCjBG,kCAAkC,CAAA;AAb/C,IAAA,WAAA,GAAA;AAwBI;;;AAGG;QACH,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAoC,CAAC;;AAQ7C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACrD,KAAA;;AANG,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;KACzC;8GApBQ,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB/C,8oBAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDVc,eAAe,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAShB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAb9C,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EACrC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,eAAe,CAAC,EAAA,aAAA,EAEX,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,sBAAsB;AAC7B,wBAAA,IAAI,EAAE,KAAK;AACd,qBAAA,EAAA,QAAA,EAAA,8oBAAA,EAAA,CAAA;8BAKD,IAAI,EAAA,CAAA;sBADH,KAAK;gBAON,UAAU,EAAA,CAAA;sBADT,KAAK;;;AEuBJ,MAAO,wBAAyB,SAAQ,qBAAqB,CAAA;AAlBnE,IAAA,WAAA,GAAA;;;QA0BI,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAQnB;;AAEG;QAEH,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAczB;;AAEG;QAEH,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC,CAAC;AAEd;;AAEG;AAEH,QAAA,IAAA,CAAA,eAAe,GAAsB,IAAI,YAAY,EAAO,CAAC;;AAI7D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;;QAGxC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;AAG1B,QAAA,IAAA,CAAA,gBAAgB,GAAoB;AAChC,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;SACnF,CAAC;AAgDL,KAAA;;AA7CG,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACxE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;SAC5C;AACD,QAAA,IAAI,OAAO,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACvC;KACJ;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,YAA4B,EAAA;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACxB;;IAGD,0BAA0B,CAAC,KAAoB,EAAE,GAAmB,EAAA;;QAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9F,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/C,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;KACnD;;IAGO,4BAA4B,GAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB;AAClB,YAAA,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,kBAAkB;AAClE,iBAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;oBACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAC1G;;AAGO,IAAA,YAAY,CAAC,KAAuB,EAAA;QACxC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAqB,EAAE,IAAoB,KAAI;AAChE,YAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;aACtD;AACD,YAAA,OAAO,GAAG,CAAC;SACd,EAAE,EAAE,CAAC,CAAC;KACV;8GAvGQ,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEK,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEf,UAAU,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrD/C,4pLA2IA,EDtGQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,EACvB,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,wHACpB,uBAAuB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,uBAAuB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,eAAe,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kCAAkC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG7B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAlBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,mBAEhB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACL,gBAAgB;wBAChB,uBAAuB;wBACvB,oBAAoB;wBACpB,uBAAuB;wBACvB,gBAAgB;wBAChB,uBAAuB;wBACvB,OAAO;wBACP,eAAe;wBACf,aAAa;wBACb,kCAAkC;AACrC,qBAAA,EAAA,QAAA,EAAA,4pLAAA,EAAA,CAAA;8BAImD,gBAAgB,EAAA,CAAA;sBAAnE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAEH,mBAAmB,EAAA,CAAA;sBAAjE,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAI7C,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAON,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAON,eAAe,EAAA,CAAA;sBADd,MAAM;gBAKP,YAAY,EAAA,CAAA;sBADX,MAAM;;;AE7CL,MAAO,2BAA4B,SAAQ,kBAAkB,CAAA;AAxBnE,IAAA,WAAA,GAAA;;AA+BI;;AAEG;QAEH,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;;QAU5B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAEnB;;AAEG;AAEH,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAoB,CAAC;AA2HpD,KAAA;AAzHG;;;AAGG;AACH,IAAA,gBAAgB,CAAC,YAAwC,EAAA;;;QAGrD,IAAI,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;AAClD,YAAA,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,YAAA,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;SAClE;QACD,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;SACV;AACD,QAAA,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;KACxC;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,KAAiB,EAAA;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACV;AAED,QAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC9E,oBAAoB,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,QAAA,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAClF,qBAAqB,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;AAEhE,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7E,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAEjF,QAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC,kBAAkB,EAAE;YAC3C,OAAO;SACV;AAED,QAAA,MAAM,aAAa,GAAG;AAClB,YAAA,gBAAgB,EAAE;gBACd,GAAG,EAAE,iBAAiB,CAAC,MAAM;gBAC7B,IAAI,EAAE,iBAAiB,CAAC,GAAG;AAC3B,gBAAA,SAAS,EAAE,oBAAoB,CAAC,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE;AAChG,aAAA;AACD,YAAA,iBAAiB,EAAE;gBACf,GAAG,EAAE,kBAAkB,CAAC,MAAM;gBAC9B,IAAI,EAAE,kBAAkB,CAAC,GAAG;AAC5B,gBAAA,SAAS,EAAE,qBAAqB,CAAC,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE;AAClG,aAAA;SACJ,CAAC;QAEF,KAAK,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAE5G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC;;AAGS,IAAA,yBAAyB,CAAC,YAA+B,EAAA;QAC/D,IAAI,CAAC,YAAY,EAAE;AACf,YAAA,OAAO,YAAY,CAAC;SACvB;QACD,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,eAAe,IAAI,YAAY,EAAE;YACrE,OAAO,YAAY,CAAC,aAAa,CAAC;SACrC;AACD,QAAA,OAAO,YAAY,CAAC,gBAAgB,CAAC,aAAa,CAAC;KACtD;;AAGO,IAAA,QAAQ,CAAC,KAAiB,EAAA;QAC9B,IAAI,SAAS,GACT,KAAK,CAAC,MAAM,KAAK,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACnF,OAAO,SAAS,EAAE;YACd,IAAI,SAAS,KAAK,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;AACvC,gBAAA,OAAO,KAAK,CAAC;aAChB;YACD,MAAM,gBAAgB,GAAG,SAAS,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;AAErE,YAAA,SAAS,GAAG,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC;SAClF;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACK,IAAA,kBAAkB,CAAC,IAG1B,EAAA;AACG,QAAA,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;;AAErD,QAAA,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACzC,YAAA,gBAAgB,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACvC;;QAED,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,iCAAiC,EAAE,CAAC;KAC5C;AAED;;;;AAIG;AACK,IAAA,iBAAiB,CAAC,IAGzB,EAAA;AACG,QAAA,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;AACrD,QAAA,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,gBAAgB,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;AACpD,QAAA,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,iCAAiC,EAAE,CAAC;KAC5C;8GArJQ,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EApBzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,WAAW,EAAE,2BAA2B;AAC3C,aAAA;SACJ,ECpCL,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,oiIA0FA,4CDpDQ,4BAA4B,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,qBAAqB,EACrB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,sIACvB,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,uBAAuB,EACvB,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFACP,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,eAAe,EACf,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,0IAEb,kCAAkC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG7B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAxBvC,SAAS;+BACI,4BAA4B,EAAA,UAAA,EAE1B,IAAI,EACL,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,cAAc;AACvB,4BAAA,WAAW,EAA6B,2BAAA;AAC3C,yBAAA;qBACJ,EACQ,OAAA,EAAA;wBACL,4BAA4B;wBAC5B,qBAAqB;wBACrB,uBAAuB;wBACvB,yBAAyB;wBACzB,uBAAuB;wBACvB,OAAO;wBACP,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,kCAAkC;AACrC,qBAAA,EAAA,QAAA,EAAA,oiIAAA,EAAA,CAAA;8BAIwB,cAAc,EAAA,CAAA;sBAAtC,YAAY;uBAAC,SAAS,CAAA;gBAGS,cAAc,EAAA,CAAA;sBAA7C,SAAS;uBAAC,mBAAmB,CAAA;gBAM9B,mBAAmB,EAAA,CAAA;sBADlB,KAAK;gBAON,UAAU,EAAA,CAAA;sBADT,KAAK;gBAKN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,MAAM;;;AE3DX,IAAI,cAAc,GAAG,CAAC,CAAC;MAQV,6BAA6B,CAAA;AAN1C,IAAA,WAAA,GAAA;;QAQI,IAAE,CAAA,EAAA,GAAG,KAAK,EAAoB,CAAC;;QAG/B,IAAG,CAAA,GAAA,GAAG,KAAK,EAAoB,CAAC;;AAGvB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,KAAA;8GATY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;AAChC,iBAAA,CAAA;;MAmBY,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;;QASI,IAAK,CAAA,KAAA,GAAG,KAAK,EAAoB,CAAC;;AAGlC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,CAAC,CAAC;;QAGxC,IAAI,CAAA,IAAA,GAAG,KAAK,EAAU,CAAC;;AAGvB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAW,2BAA2B,CAAC,CAAC;;QAGxD,IAAO,CAAA,OAAA,GAAG,KAAK,EAAoB,CAAC;;QAGpC,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;;QAGvD,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;;QAGtD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;;QAGzD,IAAE,CAAA,EAAA,GAAG,KAAK,CAAC,CAAA,qBAAA,EAAwB,cAAc,EAAE,CAAA,CAAE,CAAC,CAAC;;AAG9C,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAmB,UAAU,CAAC,CAAC;;AAGnD,QAAA,IAAA,CAAA,QAAQ,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;AAC/D,KAAA;8GAjCY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAgCK,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,sBAAsB,EC5E9D,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0EAGA,2CDqCc,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIb,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACI,sBAAsB,EAAA,UAAA,EACpB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,eAAA,EAEN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0EAAA,EAAA,CAAA;;;MEpCtC,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;MCkEY,mBAAmB,CAAA;AAsE5B,IAAA,IACY,WAAW,GAAA;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;;AAGD,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC;KAC/C;;AAYD,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC;KACxC;;AAuCD,IAAA,WAAA,CACY,GAAsB,EACV,sBAA6C,EAC7C,WAAuB,EAAA;QAFnC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACV,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAuB;QAC7C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AArI/C;;;AAGG;QAEH,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;;AAGrB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,MAAM,CAAC,CAAC;AAErC;;AAEG;QACH,IAAU,CAAA,UAAA,GAAG,KAAK,EAAe,CAAC;;AAGlC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAiB,SAAS,CAAC,CAAC;;AAG/C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAW,WAAW,CAAC,CAAC;;AAG3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;;AAGnC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;;AAG3B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;;AAG1B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAmB,KAAK,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAuB,OAAO,CAAC,CAAC;;QAGzD,IAAW,CAAA,WAAA,GAAG,KAAK,EAAkB,CAAC;AAEtC;;;AAGG;QACH,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAwB,CAAC;AAElD;;;AAGG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;;QAGjC,IAAe,CAAA,eAAA,GAAG,MAAM,EAAkB,CAAC;;QAG3C,IAAgB,CAAA,gBAAA,GAAG,MAAM,EAAoB,CAAC;;QAG9C,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAkB,CAAC;;QAGpC,IAAQ,CAAA,QAAA,GAAG,eAAe,CAAC,sBAAsB,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;;AAG3E,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;;AAG3C,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,6BAA6B,CAAC,CAAC;;QAgB5D,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;QAG1B,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;;AAQJ,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;;AAGrD,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;;AAGxE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;AAGnE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;;AAGpD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;;AAGxD,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,IAAI,SAAS,EAAE;AACX,gBAAA,OAAO,IAAI,CAAC,UAAU,EAAiB,CAAC;aAC3C;AAED,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,OAAO,EAAE,CAAC;aACb;AACD,YAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;;AAGc,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEjC,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/D,QAAA,IAAA,CAAA,cAAc,GAAG,SAAS,CAA2B,cAAc,CAAC,CAAC;KAOlF;;IAGJ,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAE7D,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;YAClC,IAAI,CAAC,sBAAsB,EAAE,uBAAuB;iBAC/C,IAAI,CAAC,oBAAoB,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClE,iBAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACnB,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9B,gBAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACvB,oBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAC1D,CAAC,QAAQ,KAAK,QAAQ,KAAK,0BAA0B,CACxD,CAAC;iBACL;qBAAM;AACH,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;iBAC/D;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;SACV;KACJ;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAuB,EAAA;AAC9B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,YAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,YAAY,CAAC,GAAG,CAAE,CAAC,CAAC;SAC5F;KACJ;;AAGD,IAAA,SAAS,CAAC,IAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;;AAGD,IAAA,SAAS,CAAC,EAAoB,EAAA;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;SACV;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;KAClC;;AAGD,IAAA,kBAAkB,CAAC,EAAoB,EAAE,MAAM,GAAG,KAAK,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,OAAO;SACV;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC;AACrD,QAAA,IAAI,MAAM,IAAI,SAAS,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SAClC;KACJ;AAED;;;AAGG;IACK,wBAAwB,GAAA;QAC5B,MAAM,MAAM,GAAG,CAAC,CAAoB,iBAAA,EAAA,IAAI,CAAC,WAAW,EAAE,CAAE,CAAA,CAAC,CAAC;AAC1D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrC,QAAA,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACtE,YAAA,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SACxC;AACD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,OAAO,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,CAAoB,iBAAA,EAAA,IAAI,CAAC,iBAAiB,EAAE,CAAE,CAAA,CAAC,CAAC;SAC/D;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACpB,MAAM,CAAC,IAAI,CAAC,CAAoB,iBAAA,EAAA,IAAI,CAAC,WAAW,EAAG,CAAE,CAAA,CAAC,CAAC;SAC1D;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;SAC3C;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ,EAAE;AAChC,YAAA,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;SAC5C;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,kBAAkB,CAAC,GAA2B,EAAA;AAClD,QAAA,MAAM,SAAS,GAAc;AACzB,YAAA,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;AAClB,YAAA,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;AAClB,YAAA,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;AACpB,YAAA,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;AAClB,YAAA,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;AACtB,YAAA,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE;AACxB,YAAA,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;SAClE,CAAC;AAEF,QAAA,OAAO,SAAS,CAAC;KACpB;;AAGO,IAAA,cAAc,CAAC,QAAiD,EAAA;QACpE,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;AACD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;SACV;AACD,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;AACvD,QAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC;QAC5D,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC7E,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;QACvF,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEpE,IAAI,EAAE,qBAAqB,KAAK,gBAAgB,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,EAAE;AACtF,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,YAAA,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC;AAChC,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtE,iBAAA,SAAS,CAAC,OAAO,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC;AACvD,YAAA,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;SACjD;KACJ;AAED;;;AAGG;IACK,oBAAoB,CACxB,MAAmB,EACnB,WAAW,GAAG,EAAE,EAChB,YAAwB,EACxB,SAAkB,EAAA;QAElB,YAAY,GAAG,YAAY,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC9B,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,WAAW,CAAG,EAAA,KAAK,EAAE,CAAC;AACrC,YAAA,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;aAC1B;AACD,YAAA,MAAM,MAAM,GAAmB;AAC3B,gBAAA,GAAG,IAAI;gBACP,KAAK;AACL,gBAAA,UAAU,EAAE,EAAE;gBACd,GAAG;AACH,gBAAA,MAAM,EAAE,KAAK;gBACb,SAAS;AACT,gBAAA,SAAS,EAAE,YAAa,CAAC,KAAK,EAAE;gBAChC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,IAAI,EAAE,EACnB,CAAG,EAAA,GAAG,GAAG,oBAAoB,CAAA,CAAE,EAC/B,YAAY,EACZ,GAAG,CACN;aACJ,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,MAAM,CAAC,UAAU,GAAG,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;aAChE;AACD,YAAA,OAAO,MAAM,CAAC;AAClB,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,iBAAiB,CAAC,IAAsB,EAAA;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAqB,EAAE,GAAG,KAAI;AACxD,YAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,YAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;AACd,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;aACrD;AACD,YAAA,OAAO,GAAG,CAAC;SACd,EAAE,EAAE,CAAC,CAAC;AAEP,QAAA,OAAO,QAAQ,CAAC;KACnB;8GA9TQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,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,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAKR,gBAAgB,EAtBzB,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,WAAW,EAAE,mBAAmB;AACnC,aAAA;SACJ,EA0E0B,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,sBAAsB,EAG1B,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kBAAkB,EAGZ,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,6BAA6B,iGA4DY,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvMxF,6uHA8FA,EAAA,MAAA,EAAA,CAAA,muxJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjCQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,8BAA8B,EAC9B,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,6BAA6B,EAC7B,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,EAC3B,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,4JAC3B,kBAAkB,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,6BAA6B,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGxB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAxB/B,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EACL,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,UAAU;AACnB,4BAAA,WAAW,EAAqB,mBAAA;AACnC,yBAAA;qBACJ,EACQ,OAAA,EAAA;wBACL,gBAAgB;wBAChB,8BAA8B;wBAC9B,6BAA6B;wBAC7B,2BAA2B;wBAC3B,2BAA2B;wBAC3B,kBAAkB;wBAClB,kBAAkB;wBAClB,6BAA6B;AAChC,qBAAA,EAAA,QAAA,EAAA,6uHAAA,EAAA,MAAA,EAAA,CAAA,muxJAAA,CAAA,EAAA,CAAA;;0BAuII,QAAQ;;0BACR,QAAQ;yCAhIb,YAAY,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAkE1B,WAAW,EAAA,CAAA;sBADtB,WAAW;uBAAC,sBAAsB,CAAA;;;AE9HvC,MAAM,UAAU,GAAG;IACf,mBAAmB;IACnB,2BAA2B;IAC3B,2BAA2B;IAC3B,8BAA8B;IAC9B,6BAA6B;IAC7B,0BAA0B;IAC1B,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IACvB,4BAA4B;IAC5B,sBAAsB;IACtB,8BAA8B;CACjC,CAAC;AAEW,MAAA,gBAAgB,GAAG,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,8BAA8B,EAAW;AAEvH;;;AAGG;MAKU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,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,wBAAwB,YAxBjC,mBAAmB;YACnB,2BAA2B;YAC3B,2BAA2B;YAC3B,8BAA8B;YAC9B,6BAA6B;YAC7B,0BAA0B;YAC1B,wBAAwB;YACxB,uBAAuB;YACvB,uBAAuB;YACvB,4BAA4B;YAC5B,sBAAsB;AACtB,YAAA,8BAA8B,aAX9B,mBAAmB;YACnB,2BAA2B;YAC3B,2BAA2B;YAC3B,8BAA8B;YAC9B,6BAA6B;YAC7B,0BAA0B;YAC1B,wBAAwB;YACxB,uBAAuB;YACvB,uBAAuB;YACvB,4BAA4B;YAC5B,sBAAsB;YACtB,8BAA8B,CAAA,EAAA,CAAA,CAAA,EAAA;AAarB,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,wBAAwB,YAxBjC,mBAAmB;YACnB,2BAA2B;YAC3B,2BAA2B;YAC3B,8BAA8B;YAC9B,6BAA6B;YAC7B,0BAA0B;YAC1B,wBAAwB;YAIxB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAcb,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AACxB,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AAC3B,iBAAA,CAAA;;;ACvCD;;AAEG;;;;"}
|