@fundamental-ngx/core 0.61.1-rc.0 → 0.61.1
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.
|
@@ -1258,6 +1258,7 @@ class MenuMobileComponent extends MobileModeBase {
|
|
|
1258
1258
|
else if (!isOpen && this.dialogRef) {
|
|
1259
1259
|
// Only close if currently open
|
|
1260
1260
|
this.dialogRef.close();
|
|
1261
|
+
this.dialogRef = null;
|
|
1261
1262
|
}
|
|
1262
1263
|
});
|
|
1263
1264
|
});
|
|
@@ -1269,7 +1270,8 @@ class MenuMobileComponent extends MobileModeBase {
|
|
|
1269
1270
|
}
|
|
1270
1271
|
/** Closes the Dialog and Menu component */
|
|
1271
1272
|
close() {
|
|
1272
|
-
this.dialogRef
|
|
1273
|
+
this.dialogRef?.close();
|
|
1274
|
+
this.dialogRef = null;
|
|
1273
1275
|
this._component.close();
|
|
1274
1276
|
}
|
|
1275
1277
|
/** Navigate back to parent level of submenu */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-menu.mjs","sources":["../../../../libs/core/menu/menu.tokens.ts","../../../../libs/core/menu/directives/glyph-menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-content.directive.ts","../../../../libs/core/menu/directives/menu-item-input.directive.ts","../../../../libs/core/menu/directives/menu-title.directive.ts","../../../../libs/core/menu/menu-interactive.component.ts","../../../../libs/core/menu/services/menu.service.ts","../../../../libs/core/menu/menu-item/menu-item.component.ts","../../../../libs/core/menu/menu-item/menu-item.component.html","../../../../libs/core/menu/directives/menu-shortcut.directive.ts","../../../../libs/core/menu/directives/menu-subtitle.directive.ts","../../../../libs/core/menu/directives/menu-trigger.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-header.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-option.directive.ts","../../../../libs/core/menu/directives/toggle-button.directive.ts","../../../../libs/core/menu/menu-separator.directive.ts","../../../../libs/core/menu/default-menu-item.class.ts","../../../../libs/core/menu/menu.interface.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.html","../../../../libs/core/menu/menu.component.ts","../../../../libs/core/menu/menu.component.html","../../../../libs/core/menu/menu.module.ts","../../../../libs/core/menu/menu-keyboard.service.ts","../../../../libs/core/menu/fundamental-ngx-core-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const TOGGLE_MENU_ITEM = new InjectionToken('TOGGLE_MENU_ITEM');\nexport const FD_MENU_COMPONENT = new InjectionToken('FD_MENU_COMPONENT');\nexport const FD_MENU_ITEM_COMPONENT = new InjectionToken('FD_MENU_ITEM_COMPONENT');\n","import { CdkPortalOutlet, ComponentPortal, DomPortal, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, Directive, EmbeddedViewRef, Input, OnDestroy, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { Observable, Subject, combineLatest, first, map, tap } from 'rxjs';\nimport { MenuComponent } from '../menu.component';\nimport { FD_MENU_COMPONENT, TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: '[fdMenuAddonGlyph], [fd-menu-addon-glyph]',\n standalone: true\n})\nexport class GlyphMenuAddonDirective implements OnDestroy {\n /**\n * The icon name to display. See the icon page for the list of icons\n * here: https://sap.github.io/fundamental-ngx/icon\n **/\n @Input() set glyph(glyph: string | undefined) {\n this._glyphName$.next(glyph);\n }\n\n /**\n * Toggle buttons always need a space, so we check if it is in a toggle button\n * */\n isInToggleButton = !!inject(TOGGLE_MENU_ITEM, { optional: true });\n\n /** @hidden */\n private _menuComponent = inject<MenuComponent>(FD_MENU_COMPONENT, { optional: true });\n\n /** @hidden */\n private _addonGlyphPortalOutlet$ = new Subject<CdkPortalOutlet>();\n\n /** @hidden */\n private _glyphName$ = new Subject<string | undefined>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n combineLatest([this._addonGlyphPortalOutlet$, this._glyphName$])\n .pipe(\n tap(([, glyphName]) => {\n glyphName || this.isInToggleButton ? this._addGlyphAddonToMenu() : this._removeGlyphAddonFromMenu();\n }),\n tap(([outlet, glyphName]) => {\n if (!glyphName) {\n outlet.detach();\n return;\n }\n const componentRef = outlet.attachComponentPortal(new ComponentPortal(IconComponent));\n componentRef.setInput('glyph', glyphName);\n const nativeElement = componentRef.location.nativeElement;\n nativeElement.setAttribute('role', 'presentation');\n if (this.isInToggleButton) {\n nativeElement.classList.add('fd-menu__checkmark');\n }\n componentRef.changeDetectorRef.detectChanges();\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n setGlyphPortalOutlet(outlet: CdkPortalOutlet): void {\n this._addonGlyphPortalOutlet$.next(outlet);\n }\n\n /** @hidden */\n renderElement<ComponentType>(element: ComponentPortal<ComponentType>): Observable<ComponentRef<ComponentType>>;\n /** @hidden */\n renderElement<TemplateContext>(\n element: TemplatePortal<TemplateContext>\n ): Observable<EmbeddedViewRef<TemplateContext>>;\n /** @hidden */\n renderElement(element: DomPortal): Observable<any>;\n /** @hidden */\n renderElement(element: Portal<any>): Observable<any> {\n return this._addonGlyphPortalOutlet$.pipe(\n first(),\n tap((outlet) => outlet.detach()),\n map((outlet) => outlet.attach(element))\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._removeGlyphAddonFromMenu();\n }\n\n /** @hidden */\n private _addGlyphAddonToMenu(): void {\n this._menuComponent?.registerAddon(this);\n }\n\n /** @hidden */\n private _removeGlyphAddonFromMenu(): void {\n this._menuComponent?.unregisterAddon(this);\n }\n}\n","import { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { Component, ElementRef, HostBinding, Input, ViewChild, inject } from '@angular/core';\nimport { GlyphMenuAddonDirective } from './glyph-menu-addon.directive';\n\n@Component({\n selector: 'fd-menu-addon',\n template: ` <ng-template cdkPortalOutlet></ng-template> `,\n hostDirectives: [{ directive: GlyphMenuAddonDirective, inputs: ['glyph'] }],\n imports: [PortalModule]\n})\nexport class MenuAddonDirective {\n /** Whether addon is used before or after text */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('position') set setAddonPosition(position: 'before' | 'after') {\n this.fdAddonBeforeClass = position === 'before';\n this.fdAddonAfterClass = position === 'after';\n }\n\n /** Whether is used as submenu indicator */\n @Input()\n @HostBinding('class.fd-menu__addon-after--submenu')\n submenuIndicator = false;\n\n /** Sets Aria hidden attribute */\n @Input()\n @HostBinding('attr.aria-hidden')\n ariaHidden = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-after')\n fdAddonAfterClass = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-before')\n fdAddonBeforeClass = false;\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n set addonPortalOutlet(portalOutlet: CdkPortalOutlet) {\n this._addonGlyph.setGlyphPortalOutlet(portalOutlet);\n }\n\n /** @hidden */\n readonly _addonGlyph = inject(GlyphMenuAddonDirective);\n\n /** @hidden */\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-content]',\n host: {\n class: 'fd-menu__content'\n }\n})\nexport class MenuContentDirective {}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[fd-form-control][fd-menu-item-input]',\n host: {\n class: 'fd-menu__input'\n },\n standalone: true\n})\nexport class MenuItemInputDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /**\n * This is needed to prevent the click event from bubbling up to the menu item\n * and potentially closing the menu or triggering other actions.\n */\n @HostListener('keydown', ['$event'])\n @HostListener('click', ['$event'])\n onInteraction($event: KeyboardEvent | MouseEvent): void {\n if ($event.target === this.elementRef.nativeElement) {\n $event.stopPropagation();\n }\n }\n}\n","import { booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-title]',\n host: {\n class: 'fd-menu__title',\n '[class.fd-menu__title--truncate]': 'truncate()',\n '[attr.title]': 'title'\n }\n})\nexport class MenuTitleDirective {\n /** Whether the title should truncate with ellipsis. */\n readonly truncate = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** Returns element title text */\n get title(): string {\n return this._elementRef.nativeElement.textContent;\n }\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { Component, ContentChild, ElementRef, HostBinding, HostListener, ViewChild, inject } from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-menu-interactive]',\n template: `\n <ng-template cdkPortalOutlet></ng-template>\n <ng-content></ng-content>\n `,\n host: {\n role: 'menuitem'\n },\n imports: [PortalModule]\n})\nexport class MenuInteractiveComponent implements HasElementRef {\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n addonPortalOutlet: CdkPortalOutlet;\n\n /** @hidden */\n @ContentChild(MenuAddonDirective)\n private set _addon(addon: MenuAddonDirective) {\n if (\n addon?.elementRef.nativeElement === this.elementRef.nativeElement.querySelector('fd-menu-addon:first-child')\n ) {\n this._startAddonInstance = addon;\n }\n }\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n tabindex = 0;\n\n /** @hidden */\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n @HostBinding('class.has-child')\n ariaHaspopup = false;\n\n /** @hidden */\n @HostBinding('class.fd-menu__link')\n readonly fdMenuLinkClass: boolean = true;\n\n /** @hidden */\n @ContentChild(MenuItemInputDirective)\n private _input: MenuItemInputDirective;\n\n /** @hidden */\n _fromSplitButton = false;\n\n /** @hidden */\n readonly elementRef: ElementRef = inject(ElementRef);\n\n /** @hidden */\n private _startAddonInstance: MenuAddonDirective;\n\n /** @hidden */\n get startAddon(): MenuAddonDirective {\n if (!this._startAddonInstance) {\n this.addonPortalOutlet.detach();\n this._startAddonInstance = this.addonPortalOutlet.attachComponentPortal(\n new ComponentPortal(MenuAddonDirective)\n ).instance;\n this._startAddonInstance.setAddonPosition = 'before';\n }\n return this._startAddonInstance;\n }\n\n /** @hidden */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _handleKeydown($event: Event): void {\n if (this._input && $event.target === this.elementRef.nativeElement) {\n this._input.elementRef.nativeElement.focus();\n }\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n this.selected = isSelected && (this.ariaHaspopup || this._fromSplitButton);\n if (this.ariaHaspopup || this._fromSplitButton) {\n this.ariaExpanded = isSelected;\n }\n }\n\n /** @hidden */\n setDisabled(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.tabindex = isDisabled ? -1 : 0;\n }\n\n /** @hidden */\n setSubmenu(hasSubmenu: boolean, itemId?: string): void {\n this.ariaHaspopup = hasSubmenu;\n this.ariaControls = hasSubmenu ? itemId || this.ariaControls : null;\n }\n}\n\nexport { MenuInteractiveComponent as MenuInteractiveDirective };\n","import { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ElementRef, inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MenuComponent } from '../menu.component';\n\ninterface MenuNode {\n item: MenuItemComponent | null;\n parent: MenuNode | null;\n children: MenuNode[];\n}\n\n/** `null` key is used for the root node */\ntype MenuMap = Map<MenuItemComponent | null, MenuNode>;\n\n@Injectable()\nexport class MenuService implements OnDestroy {\n /** Map of menu items to menu nodes */\n menuMap: MenuMap;\n\n /** Currently focused node */\n focusedNode: MenuNode | undefined;\n\n /** Collection of active menu nodes */\n activeNodePath: MenuNode[] = [];\n\n /** Collection of active menu nodes */\n private _isMobileMode = new Subject<boolean>();\n\n /** @hidden */\n private _menuComponent: MenuComponent;\n\n /** @hidden */\n private _destroyKeyboardHandlerListener: () => void;\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n get _isRtl(): boolean {\n return this._rtlService?.rtl() ?? false;\n }\n\n /** Reference to menu component */\n get menuComponent(): MenuComponent {\n return this._menuComponent;\n }\n\n /** Returns menu mode observable */\n get isMobileMode(): Observable<boolean> {\n return this._isMobileMode.pipe(distinctUntilChanged());\n }\n\n /** Sets menu mode */\n setMenuMode(value: boolean): void {\n this._isMobileMode.next(value);\n }\n\n /** Sets given menu item as focused */\n setFocused(menuItem: MenuItemComponent | null): void {\n this.focusedNode = this.menuMap.get(menuItem);\n this.focusedNode?.item?.focus();\n }\n\n /**\n * Sets state of a given menu item\n * @param isActive - Whether should be set as active or inactive\n * @param menuItem `MenuItemComponent` that should be set as active or inactive\n */\n setActive(isActive: boolean, menuItem: MenuItemComponent | null): void {\n if (!menuItem || (isActive && menuItem.disabled)) {\n return;\n }\n\n if (isActive) {\n this._addToActivePath(menuItem);\n } else {\n this._removeFromActivePath(menuItem);\n }\n\n this._emitActivePath();\n }\n\n /**\n * Close active sibling submenu if any\n * @param menuItem to look for active siblings\n */\n setInactiveSiblingMenuItem(menuItem: MenuItemComponent): void {\n this._removeActiveSibling(menuItem);\n this._emitActivePath();\n }\n\n /** Initializes menu service based on given Menu Component */\n setMenuComponent(menu: MenuComponent): void {\n this._menuComponent = menu;\n this.menuMap = this._buildMenuMap(this._menuComponent);\n }\n\n /** Clears Active Node Path and resets Focused Node */\n resetMenuState(): void {\n this._clearActivePath();\n this.focusedNode = undefined;\n this._emitActivePath();\n }\n\n /** - Updates the structure of the menu\n * - Validates Active Node Path\n * - Validates Focused Node */\n rebuildMenu(): void {\n this.menuMap = this._buildMenuMap(this._menuComponent);\n\n const deadNode = this.activeNodePath.find((node) => !this.menuMap.has(node.item));\n if (deadNode?.item) {\n this.setActive(false, deadNode.item);\n }\n\n const invalidFocusedElement = this.focusedNode && !this.menuMap.get(this.focusedNode.item);\n if (invalidFocusedElement) {\n const rootNode = this.menuMap.get(null);\n this.focusedNode = this.activeNodePath[this.activeNodePath.length - 1] || rootNode?.children[0];\n }\n }\n\n /** Adds Menu keyboard support */\n addKeyboardSupport(elementRef: ElementRef): void {\n this.removeKeyboardSupport();\n this._setKeyboardSupport(elementRef);\n }\n\n /** Removes Menu keyboard support */\n removeKeyboardSupport(): void {\n if (this._destroyKeyboardHandlerListener) {\n this._destroyKeyboardHandlerListener();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.removeKeyboardSupport();\n }\n\n /** @hidden Returns siblings of given node */\n private _nodeSiblings(node: MenuNode): MenuNode[] | undefined {\n return node.parent ? node.parent.children : this.menuMap.get(null)?.children;\n }\n\n /** @hidden Adds given element to the Active Node Path and setts as active*/\n private _addToActivePath(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n\n this._removeActiveSibling(menuItem);\n\n if (menuNode) {\n this.activeNodePath.push(menuNode);\n menuNode.item?.setSelected(true);\n }\n }\n\n /** @hidden Removes given element and all its successors from the Active Node Path and setts as inactive*/\n private _removeFromActivePath(menuItem: MenuItemComponent | null): void {\n const menuNode = this.menuMap.get(menuItem);\n if (menuNode) {\n const pathIndex = this.activeNodePath.findIndex((i) => i.item === menuNode.item);\n\n if (pathIndex !== -1) {\n this.activeNodePath\n .splice(pathIndex)\n .forEach((removedActiveNode) => removedActiveNode.item?.setSelected(false));\n }\n }\n }\n\n /** @hidden Removes all elements from the Active Node Path and sets them as closed */\n private _clearActivePath(): void {\n if (this.activeNodePath.length) {\n this._removeFromActivePath(this.activeNodePath[0].item);\n }\n }\n\n /** @hidden\n * - Builds Menu Nodes based on Menu Items\n * - Creates Map of the Menu Nodes */\n private _buildMenuMap(menu: MenuComponent): MenuMap {\n function buildNode(menuItem: MenuItemComponent): MenuNode {\n return {\n item: menuItem,\n parent: null,\n children: menuItem.submenu\n ? menuItem.submenu.menuItems.map((subMenuItem) => buildNode(subMenuItem))\n : []\n };\n }\n\n function setParents(node: MenuNode, parent: MenuNode | null): void {\n node.parent = parent;\n node.children.forEach((childNode) => setParents(childNode, node));\n }\n\n function toMap(node: MenuNode, map = new Map() as MenuMap): MenuMap {\n map.set(node.item, node);\n node.children.forEach((childNode) => toMap(childNode, map));\n return map;\n }\n\n const rootItems = menu.menuItems.filter((rootItem: MenuItemComponent) => !rootItem.parentSubmenu);\n\n /** root item */\n const menuTree: MenuNode = {\n item: null,\n parent: null,\n children: rootItems.map((item: MenuItemComponent) => buildNode(item))\n };\n\n setParents(menuTree, null);\n\n return toMap(menuTree);\n }\n\n /** @hidden Removes active sibling of a given menu item from the Active Path */\n private _removeActiveSibling(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n const children = menuNode?.parent?.children.map((i) => i.item);\n const activeSibling = this.activeNodePath.find((i) => children?.includes(i.item));\n\n if (activeSibling) {\n const activeParentIndex = this.activeNodePath.indexOf(menuNode?.parent as MenuNode);\n this._removeFromActivePath(activeParentIndex !== -1 ? activeSibling.item : this.activeNodePath[0].item);\n }\n }\n\n /** @hidden Adds keyboard support */\n private _setKeyboardSupport(elementRef: ElementRef): void {\n this._destroyKeyboardHandlerListener = this._renderer.listen(\n elementRef.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => this._handleKey(event)\n );\n }\n\n /** @hidden */\n private _handleKey(event: KeyboardEvent): void {\n const focusRight = (node): void => {\n setTimeout(() => this.setFocused(node.children[0].item));\n };\n let matched = true;\n\n if (!this.focusedNode) {\n return;\n }\n\n if (\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode?.children.length) {\n this.setActive(true, this.focusedNode.item);\n focusRight(this.focusedNode);\n }\n } else if (\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode.parent?.item) {\n this.setActive(false, this.focusedNode.parent.item);\n this.setFocused(this.focusedNode.parent.item);\n }\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'down');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'up');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n const focusedNode = this.focusedNode;\n this.setActive(true, focusedNode?.item);\n focusedNode.item?.click();\n if (focusedNode.children.length) {\n focusRight(focusedNode);\n }\n } else if (KeyUtil.isKeyCode(event, ESCAPE) && this.menuComponent.closeOnEscapeKey()) {\n this.menuComponent.close();\n } else {\n matched = false;\n }\n\n if (matched) {\n event.preventDefault();\n }\n }\n\n /** @hidden Emits an array of active menu items */\n private _emitActivePath(): void {\n this.menuComponent?.activePath.emit(this.activeNodePath.map((node) => node.item) as MenuItemComponent[]);\n }\n\n /** @hidden Depending on direction returns closest enabled sibling of given node */\n private _closestEnabled(node: MenuNode, direction: 'up' | 'down'): MenuNode | null {\n const siblings =\n direction === 'up' ? [...(this._nodeSiblings(node) ?? [])].reverse() : this._nodeSiblings(node);\n\n if (siblings) {\n const startIndex = siblings.indexOf(node) + 1;\n\n for (let i = startIndex; i < siblings.length; i++) {\n if (siblings[i].item && !siblings[i].item?.disabled) {\n return siblings[i];\n }\n }\n }\n\n return null;\n }\n}\n","import {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { defer, fromEvent, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DefaultMenuItem } from '../default-menu-item.class';\nimport { MenuTitleDirective } from '../directives/menu-title.directive';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../menu.tokens';\nimport { MenuService } from '../services/menu.service';\n\nlet menuUniqueId = 0;\n\nexport interface BaseSubmenu {\n templateRef: TemplateRef<any>;\n menuItems: MenuItemComponent[];\n menuService: MenuService;\n ariaLabel: Nullable<string>;\n ariaLabelledby: Nullable<string>;\n _menuItemsChange$: Observable<void>;\n\n _registerItem(item: MenuItemComponent): void;\n\n _unregisterItem(item: MenuItemComponent): void;\n}\n\nexport const SUBMENU = new InjectionToken<BaseSubmenu>('Submenu component dependency');\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[fd-menu-item]',\n exportAs: 'fd-menu-item',\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.role]': '\"menuitem\"',\n '[class.fd-menu__item]': 'true',\n '[class.fd-menu--full-width]': 'menuService?.menuComponent?.mobile() ?? false'\n },\n imports: [NgTemplateOutlet],\n providers: [\n {\n provide: FD_MENU_ITEM_COMPONENT,\n useExisting: forwardRef(() => MenuItemComponent)\n }\n ]\n})\nexport class MenuItemComponent implements DefaultMenuItem, OnInit, OnChanges, AfterContentInit, OnDestroy {\n /** Set the Menu Item as disabled/enabled */\n @Input()\n disabled = false;\n\n /** Menu Item id attribute value */\n @Input()\n itemId = `fd-menu-item-${menuUniqueId++}`;\n\n /** Reference to sub-menu component */\n @Input()\n submenu: BaseSubmenu | undefined;\n\n /** Reference to the parent submenu if nested menus created dynamically */\n @Input()\n parentSubmenu: BaseSubmenu | undefined;\n\n /** Whether the menu item has a separator */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.has-separator')\n hasSeparator = false;\n\n /** Emitted when the menu item is selected. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden Reference to the Menu Item title */\n @ContentChild(MenuTitleDirective)\n menuItemTitle: MenuTitleDirective;\n\n /** @hidden Reference to the Menu Item interactive element */\n @ContentChild(MenuInteractiveComponent)\n menuInteractive: MenuInteractiveComponent;\n\n /** @hidden Whether sub-menu is currently visible*/\n submenuVisible = false;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n menuService = inject(MenuService, { optional: true });\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _hoverSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _submenu = inject<BaseSubmenu | null>(SUBMENU, { optional: true });\n\n /** @hidden */\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n /** @hidden */\n ngOnInit(): void {\n if (this.parentSubmenu) {\n this._submenu = this.parentSubmenu;\n this._submenu._registerItem(this);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setMenuService();\n this._initialiseItemState();\n this._listenOnMenuLinkClick();\n this._listenOnOuterFocus();\n this._listenOnMenuMode();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && !changes['disabled'].firstChange) {\n this.menuInteractive.setDisabled(this.disabled);\n }\n if (changes['submenu'] && !changes['submenu'].firstChange) {\n this.menuInteractive.setSubmenu(!!this.submenu, this.submenu ? this.itemId : undefined);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this.parentSubmenu) {\n this._submenu?._unregisterItem(this);\n }\n\n this._subscriptions.unsubscribe();\n this._hoverSubscriptions.unsubscribe();\n }\n\n /** Whether menu item has popup (desktop mode) */\n get hasPopup(): boolean {\n return !!this.submenu && (!this.menuService?.menuComponent || !this.menuService?.menuComponent.mobile());\n }\n\n /** Focuses Menu Item interactive element */\n focus(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.focus();\n }\n }\n\n /** Clicks Menu Item interactive element */\n click(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.click();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** @hidden Sets menu item as selected/unselected based on isSelected flag */\n setSelected(isSelected: boolean, fromSplit?: boolean): void {\n this.menuInteractive.setSelected(isSelected);\n this.submenuVisible = isSelected && !!this.submenu;\n if (!fromSplit) {\n this.onSelect.emit();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden Creates click listener on menu item interactive element */\n private _listenOnMenuLinkClick(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'click').subscribe(() =>\n this.menuService?.setActive(true, this)\n )\n );\n }\n\n /** @hidden Creates hover listeners for activating/deactivating menu item */\n private _listenOnMenuLinkHover(): Subscription {\n const hoverSubscriptions: Subscription = new Subscription();\n\n const mouseEnter$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseenter'\n );\n const mouseLeave$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseleave'\n );\n\n const timerFactory$ = defer(() =>\n timer(this.menuService ? this.menuService.menuComponent.openOnHoverTime() : 0).pipe(takeUntil(mouseLeave$))\n );\n\n // Set active on hover\n hoverSubscriptions.add(\n mouseEnter$\n .pipe(\n filter(() => !!this.menuService),\n switchMap(() => timerFactory$)\n )\n .subscribe(() => {\n if (this.submenu) {\n // Open submenu\n this.menuService!.setActive(true, this);\n }\n if (!this.submenu) {\n // Close sibling submenu if opened\n this.menuService!.setInactiveSiblingMenuItem(this);\n }\n })\n );\n\n return hoverSubscriptions;\n }\n\n /** @hidden Initializes menu link state based on item initial state */\n private _initialiseItemState(): void {\n this.menuInteractive.setSubmenu(!!this.submenu, this.itemId);\n this.menuInteractive.setDisabled(this.disabled);\n }\n\n /** @hidden Checks for Menu Service dependency and passes it if further */\n private _setMenuService(): void {\n this.menuService = this.menuService || this._submenu?.menuService || null;\n if (this.submenu && this.menuService) {\n this.submenu.menuService = this.menuService;\n }\n }\n\n /** @hidden Listen on menu mode and set proper mode listeners */\n private _listenOnMenuMode(): void {\n if (this.menuService) {\n this._subscriptions.add(\n this.menuService.isMobileMode.subscribe((isMobile) => {\n this._hoverSubscriptions.unsubscribe();\n if (!isMobile) {\n this._hoverSubscriptions = this._listenOnMenuLinkHover();\n } else {\n // In mobile mode, leave subscriptions closed (don't create a new empty one)\n // The closed state is used by tests to verify mobile mode behavior\n }\n })\n );\n }\n }\n\n /** @hidden Updates focused menu item on outer focus */\n private _listenOnOuterFocus(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'focus').subscribe(() => {\n if (this.menuService && this.menuService.focusedNode !== this.menuService.menuMap.get(this)) {\n this.menuService.setFocused(this);\n }\n })\n );\n }\n}\n\n@Component({\n selector: 'fd-submenu',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SUBMENU, useExisting: SubmenuComponent }],\n exportAs: 'fdSubmenu',\n standalone: true\n})\nexport class SubmenuComponent implements BaseSubmenu, AfterContentInit {\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** @hidden Reference to template with Submenu items */\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\n\n /** @hidden Reference to Submenu MenuItems */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _projectedItems: QueryList<MenuItemComponent>;\n\n /** @hidden */\n _registeredItems: MenuItemComponent[] = [];\n\n /** @hidden Reference to MenuService used by MenuItems */\n menuService: MenuService;\n\n /** @hidden */\n _menuItemsChange$ = new Subject<void>();\n\n /** @hidden */\n get menuItems(): MenuItemComponent[] {\n return this._projectedItems.length ? this._projectedItems.toArray() : this._registeredItems;\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._projectedItems.changes.subscribe(() => this._menuItemsChange$.next());\n }\n\n /** @hidden method for manually registering item when it's not visible for @ContentChildren */\n _registerItem(item: MenuItemComponent): void {\n this._registeredItems.push(item);\n this._menuItemsChange$.next();\n }\n\n /** @hidden method for manually unregistering item when it's not visible for @ContentChildren */\n _unregisterItem(item: MenuItemComponent): void {\n this._registeredItems = this._registeredItems.filter((i) => i !== item);\n this._menuItemsChange$.next();\n }\n}\n","<ng-content></ng-content>\n@if (hasPopup && submenu) {\n <ul\n class=\"fd-menu__sublist\"\n role=\"menu\"\n [attr.id]=\"itemId\"\n [attr.aria-hidden]=\"submenuVisible ? 'false' : 'true'\"\n [attr.aria-label]=\"submenu.ariaLabel\"\n [attr.aria-labelledby]=\"submenu.ariaLabelledby\"\n >\n <ng-template [ngTemplateOutlet]=\"submenu.templateRef\"></ng-template>\n </ul>\n}\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-shortcut]',\n standalone: true\n})\nexport class MenuShortcutDirective implements AfterViewInit, OnDestroy {\n /** Hide shortcuts in mobile mode */\n @Input()\n hideOnMobile = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__shortcut')\n readonly fdMenuShortcutClass: boolean = true;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _menuItem: MenuItemComponent,\n private _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._hideOnMobile();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _hideOnMobile(): void {\n this._subscriptions.add(\n this._menuItem.menuService?.isMobileMode.pipe(filter(() => this.hideOnMobile)).subscribe((isMobile) => {\n if (isMobile) {\n this._elementRef.nativeElement.style.display = 'none';\n } else {\n this._elementRef.nativeElement.style.display = null;\n }\n })\n );\n }\n}\n","import { booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-subtitle]',\n host: {\n class: 'fd-menu__subtitle',\n '[class.fd-menu__subtitle--truncate]': 'truncate()'\n }\n})\nexport class MenuSubtitleDirective {\n /** Whether the title should truncate with ellipsis. */\n readonly truncate = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** Returns element title text */\n get subtitle(): string {\n return this._elementRef.nativeElement.textContent;\n }\n}\n","import { Directive, ElementRef, HostBinding, inject, Input, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\n\nimport { MenuComponent } from '../menu.component';\n\n@Directive({\n selector: '[fdMenuTrigger]',\n standalone: true\n})\nexport class MenuTriggerDirective implements OnDestroy {\n /** Set reference to Menu Component */\n @Input('fdMenuTrigger')\n set menu(menu: MenuComponent | undefined) {\n this._unsubscribeFromMenu();\n\n if (menu) {\n menu.trigger = this._elementRef;\n this._subscribeToMenu(menu);\n }\n\n this._setAriaAttributes(menu);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n private _menuSubscription: Subscription = new Subscription();\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeFromMenu();\n }\n\n private _subscribeToMenu(menu: MenuComponent): void {\n this._menuSubscription.add(\n menu.isOpenChange.subscribe(() => {\n this._setAriaAttributes(menu);\n })\n );\n }\n\n /** @hidden */\n private _unsubscribeFromMenu(): void {\n this._menuSubscription.unsubscribe();\n this._menuSubscription = new Subscription();\n }\n\n /** @hidden */\n private _setAriaAttributes(menu?: MenuComponent): void {\n this.ariaHasPopup = !!menu;\n this.ariaExpanded = menu?.isOpen();\n this.ariaControls = menu?.isOpen() ? menu.id() : null;\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, map, merge, of, switchMap, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\nimport { SegmentedButtonOptionDirective } from './segmented-button-option.directive';\n\nconst strictEquals = (a: unknown, b: unknown): boolean => a === b;\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonHeader]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: SegmentedButtonHeaderDirective, multi: true }\n ]\n})\nexport class SegmentedButtonHeaderDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input()\n valueComparator: (a: T, b: T) => boolean = strictEquals;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n private _cvaControl: CvaControl<T> = inject(CvaControl)!;\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _options$ = new BehaviorSubject<SegmentedButtonOptionDirective<T>[]>([]);\n\n /** @hidden */\n constructor() {\n this.menuItem.hasSeparator = true;\n }\n\n /** @hidden */\n setOptions(options: SegmentedButtonOptionDirective<T>[]): void {\n this._options$.next(options);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n combineLatest([this._options$, this._cvaControl.cvaDirective?.ngControl?.valueChanges || of(undefined)])\n .pipe(\n tap(([options, value]) => {\n options.forEach((option, index) => {\n option.menuItem.hasSeparator = index === options.length - 1;\n option.selected = this.valueComparator(option.value, value);\n });\n }),\n switchMap(([options]) =>\n merge(...options.map((option) => option.clicked.pipe(map(() => option.value))))\n ),\n tap((val) => this._cvaControl.cvaDirective?.setValue(val)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { DomPortal } from '@angular/cdk/portal';\nimport { AfterViewInit, Directive, ElementRef, HostListener, inject, Input, NgZone, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, delayWhen, Observable, Subject, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonOption]',\n standalone: true\n})\nexport class SegmentedButtonOptionDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input() value: T;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n readonly clicked: Observable<void>;\n\n /** @hidden */\n readonly renderer2 = inject(Renderer2);\n\n /** @hidden */\n private _clicked = new Subject<void>();\n\n /** @hidden */\n private _dotElement: HTMLSpanElement;\n\n /** @hidden */\n private _viewInit$ = new Subject<void>();\n\n /** @hidden */\n private _selected$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n constructor() {\n this.clicked = this._clicked.asObservable();\n const ngZone = inject(NgZone);\n combineLatest([this._viewInit$.pipe(delayWhen(() => ngZone.onStable.asObservable())), this._selected$])\n .pipe(\n tap(() => {\n if (!this._dotElement) {\n this._createDot();\n }\n }),\n tap(([, selected]) => {\n selected ? this._showDot() : this._hideDot();\n }),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _onClick($event: Event): void {\n $event.preventDefault();\n this._clicked.next();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewInit$.next();\n }\n\n /** @hidden */\n private _createDot(): void {\n this._dotElement = this.renderer2.createElement('span');\n this.renderer2.appendChild(this.elementRef.nativeElement, this._dotElement);\n this.renderer2.addClass(this._dotElement, 'fd-menu__active-dot');\n this.renderer2.setAttribute(this._dotElement, 'role', 'presentation');\n this._hideDot();\n const addonDirective = this.menuItem.menuInteractive.startAddon;\n const addonGlyph = addonDirective._addonGlyph;\n addonGlyph.renderElement(new DomPortal(this._dotElement)).subscribe();\n }\n\n /** @hidden */\n private _showDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'false');\n this.renderer2.setStyle(this._dotElement, 'display', 'inline-block');\n }\n\n /** @hidden */\n private _hideDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'true');\n this.renderer2.setStyle(this._dotElement, 'display', 'none');\n }\n\n /** @hidden */\n set selected(isSelected: boolean) {\n this._selected$.next(isSelected);\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, HostListener, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { tap } from 'rxjs';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: 'button[fd-menu-interactive][toggle]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: ToggleButtonDirective, multi: true },\n { provide: TOGGLE_MENU_ITEM, useExisting: ToggleButtonDirective }\n ]\n})\nexport class ToggleButtonDirective implements AfterViewInit {\n /** @hidden */\n private _cvaControl = inject<CvaControl<boolean>>(CvaControl);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _interactiveItemComponent = inject(MenuInteractiveComponent, { host: true });\n\n /**\n * Listen on interaction events that should cause the value update\n * */\n @HostListener('click')\n onClick(): void {\n this._cvaControl.cvaDirective?.setValue(!this._cvaControl.cvaDirective!.value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n this._cvaControl.cvaDirective?.ngControl?.valueChanges\n ?.pipe(\n tap((value: boolean) => {\n this._interactiveItemComponent.startAddon._addonGlyph.glyph = value ? 'accept' : undefined;\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n/**\n * @deprecated\n * Use `hasSeparator` input on a `fd-menu-item` instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-menu-separator',\n host: {\n '[style.display]': '\"none\"'\n },\n standalone: true\n})\nexport class MenuSeparatorDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n constructor() {\n console.error(\n '<fd-menu-separator> has been removed. Use `hasSeparator` input on a `fd-menu-item` instead.',\n this.elementRef.nativeElement\n );\n }\n}\n\n// Exporting as a old class name for the backward compatibility.\nexport { MenuSeparatorDirective as MenuSeparatorComponent };\n","export abstract class DefaultMenuItem {\n abstract focus(): void;\n abstract click(): void;\n}\n","import { InjectionToken, InputSignal, InputSignalWithTransform, ModelSignal, OutputEmitterRef } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode, MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\n\nexport const MENU_COMPONENT = new InjectionToken<string[]>('MenuInterface');\n\n/**\n * Menu Interface to have typing and avoid circular dependency between\n * MenuComponent <==> MenuMobileComponent\n *\n * Note: MenuComponent implements InputSignal properties, which satisfy this interface\n * through structural typing even though the types don't perfectly align with MobileMode base.\n */\nexport interface MenuInterface extends Omit<MobileMode, 'mobile' | 'mobileConfig'> {\n mobile: InputSignalWithTransform<boolean, unknown>;\n mobileConfig: InputSignal<MobileModeConfig>;\n activePath: OutputEmitterRef<MenuItemComponent[]>;\n dialogConfig: DialogConfig | null;\n isOpen: ModelSignal<boolean>;\n isOpenChange: OutputEmitterRef<boolean>;\n\n close(): void;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Injector,\n OnInit,\n runInInjectionContext,\n signal,\n TemplateRef,\n untracked,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService, TemplateDirective, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { startWith } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MENU_COMPONENT, MenuInterface } from '../menu.interface';\nimport { MenuService } from '../services/menu.service';\n\n@Component({\n selector: 'fd-menu-mobile',\n templateUrl: './menu-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n TemplateModule,\n BarLeftDirective,\n BarRightDirective,\n BarElementDirective,\n ButtonBarComponent,\n TemplateDirective,\n BarLeftDirective,\n BarRightDirective,\n BarElementDirective,\n ButtonBarComponent,\n ButtonComponent,\n ContentDensityDirective,\n NgTemplateOutlet,\n InitialFocusDirective,\n DialogComponent,\n DialogBodyComponent,\n DialogHeaderComponent,\n DialogCloseButtonComponent,\n DialogFooterComponent,\n TitleComponent\n ]\n})\n// @ts-expect-error - MenuInterface has InputSignal properties which don't perfectly match MobileMode base\nexport class MenuMobileComponent extends MobileModeBase<MenuInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** Current menu title */\n title$ = signal('');\n\n /** Whether current menu level is submenu */\n isSubmenu$ = signal(false);\n\n /** @hidden External content */\n childContent: TemplateRef<any> | null = null;\n\n /** @hidden Currently rendered menu view */\n view$ = signal<TemplateRef<any> | null>(null);\n\n /** @hidden Navigation icon name based on RTL */\n protected readonly navigationIcon = computed(() =>\n this._rtlService?.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n @ViewChild(DialogBodyComponent)\n set _watch(_dialogBody: DialogBodyComponent) {\n if (_dialogBody) {\n this._menuService.addKeyboardSupport(_dialogBody.elementRef);\n }\n }\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n private readonly _menuService = inject(MenuService);\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n /** @hidden */\n constructor() {\n super(inject<MenuInterface>(MENU_COMPONENT), MobileModeControl.MENU);\n\n // Set up effect to watch isOpen changes and open/close dialog\n // This runs synchronously when the signal changes, avoiding timing issues\n effect(() => {\n const isOpen = this._component.isOpen();\n untracked(() => {\n if (isOpen && !this.dialogRef) {\n // Only open if not already open\n this._openDialog();\n } else if (!isOpen && this.dialogRef) {\n // Only close if currently open\n this.dialogRef.close();\n }\n });\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnActivePathChange();\n // Dialog open/close is now handled by effect in constructor\n }\n\n /** Closes the Dialog and Menu component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** Navigate back to parent level of submenu */\n backToParentLevel(): void {\n const menuItem = this._menuService.activeNodePath[this._menuService.activeNodePath.length - 1].item;\n this._menuService.setActive(false, menuItem);\n this._executeAfterNextRender(() => {\n menuItem?.focus();\n });\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n const config = {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n escKeyCloseable: false,\n backdropClickCloseable: false\n };\n\n // Only add container if it's valid (for tests, this might not be set up properly)\n if (this._elementRef?.nativeElement) {\n config.container = this._elementRef.nativeElement;\n }\n\n this.dialogRef = this._dialogService.open(this.dialogTemplate, config);\n }\n\n /** @hidden Listens on Active Path changes and updates mobile view */\n private _listenOnActivePathChange(): void {\n const initialItemPath: MenuItemComponent[] = this._menuService.activeNodePath\n .map((node) => node.item)\n .filter((v): v is MenuItemComponent => !!v);\n\n // Use runInInjectionContext for outputToObservable\n runInInjectionContext(this._injector, () => {\n outputToObservable(this._component.activePath)\n .pipe(startWith(initialItemPath), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => this._setMenuView(items));\n });\n }\n\n /**\n * @hidden\n * Executes a function after the next render cycle.\n */\n private _executeAfterNextRender(fn: () => void): void {\n afterNextRender(fn, { injector: this._injector });\n }\n\n /** @hidden Sets menu view, title and isSubmenu flag */\n private _setMenuView(items: MenuItemComponent[]): void {\n const lastItem: MenuItemComponent = items[items.length - 1];\n this.isSubmenu$.set(!!items.length);\n this.title$.set(this._getDialogTitle(lastItem));\n this.view$.set(this._getMenuView(lastItem));\n this._executeAfterNextRender(() => {\n this._menuService.focusedNode?.item?.focus();\n });\n }\n\n /** @hidden Returns dialog title */\n private _getDialogTitle(menuItem: MenuItemComponent): string {\n if (this.isSubmenu$()) {\n return menuItem.menuItemTitle ? menuItem.menuItemTitle.title : '';\n }\n\n return this.mobileConfig.title || '';\n }\n\n /** @hidden Returns dialog content view */\n private _getMenuView(menuItem: MenuItemComponent): TemplateRef<any> | null {\n if (this.isSubmenu$()) {\n return menuItem.submenu ? menuItem.submenu.templateRef : this.view$();\n }\n return this.childContent;\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (isSubmenu$()) {\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n id=\"menu-mobile-navigate-back\"\n fdCozy\n [attr.aria-label]=\"'Go to previous menu level: ' + title$()\"\n [glyph]=\"navigationIcon()\"\n (click)=\"backToParentLevel()\"\n ></button>\n </fd-bar-element>\n }\n <fd-bar-element>\n <h1 fd-title>{{ title$() }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n @if (this.mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"close()\"></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"(isSubmenu$() ? subMenuTemplate : view$()) || null\"> </ng-template>\n </fd-dialog-body>\n @if (mobileConfig.approveButtonText || mobileConfig.cancelButtonText) {\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n }\n </fd-dialog>\n</ng-template>\n<ng-template #subMenuTemplate>\n <nav class=\"fd-menu fd-menu--mobile\">\n <ul class=\"fd-menu__sublist\">\n <ng-template [ngTemplateOutlet]=\"view$()\"></ng-template>\n </ul>\n </nav>\n</ng-template>\n","import {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n model,\n OnDestroy,\n output,\n Renderer2,\n runInInjectionContext,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverConfig, PopoverService, TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { Placement, PopoverFillMode } from '@fundamental-ngx/core/shared';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuMobileComponent } from './menu-mobile/menu-mobile.component';\nimport { MENU_COMPONENT, MenuInterface } from './menu.interface';\nimport { FD_MENU_COMPONENT, FD_MENU_ITEM_COMPONENT } from './menu.tokens';\nimport { MenuService } from './services/menu.service';\n\nlet menuUniqueId = 0;\n\n/**\n * The component that represents a menu.\n */\n@Component({\n selector: 'fd-menu',\n templateUrl: './menu.component.html',\n styleUrl: 'menu.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MenuService,\n PopoverService,\n DynamicComponentService,\n {\n provide: FD_MENU_COMPONENT,\n useExisting: forwardRef(() => MenuComponent)\n },\n contentDensityObserverProviders()\n ],\n host: {\n '[class.fd-popover-custom--disabled]': 'disabled()'\n }\n})\nexport class MenuComponent implements MenuInterface, AfterContentInit, AfterViewInit, OnDestroy {\n /** Open submenu on hover after given milliseconds */\n readonly openOnHoverTime = input(0);\n\n /** Aria-label for navigation */\n readonly ariaLabel = input<string | null>(null);\n\n /** Aria-Labelledby for element describing navigation */\n readonly ariaLabelledby = input<string | null>(null);\n\n /** Id of the control. */\n readonly id = input(`fd-menu-${menuUniqueId++}`);\n\n /**\n * Configuration object for popover settings.\n * When provided, these settings will be merged with individual input properties.\n * Individual inputs take precedence over config object values.\n */\n readonly config = input<PopoverConfig>({});\n\n /** Whether the menu should be displayed in mobile mode */\n readonly mobile = input(false, { transform: booleanAttribute });\n\n /** Mobile mode configuration */\n readonly mobileConfig = input<MobileModeConfig>({\n approveButtonText: '',\n title: '',\n hasCloseButton: true\n });\n\n /** Popover placement */\n readonly placement = input<Placement>('bottom-start');\n\n /** Whether to close popover on escape key */\n readonly closeOnEscapeKey = input(true, { transform: booleanAttribute });\n\n /** Whether to auto-capture focus when opened */\n readonly focusAutoCapture = input(true, { transform: booleanAttribute });\n\n /** Whether the menu/popover is disabled */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether to disable scrollbar */\n readonly disableScrollbar = input(false, { transform: booleanAttribute });\n\n /** Trigger events for opening/closing */\n readonly triggers = input<(string | TriggerConfig)[]>(['click']);\n\n /**\n * Preset options for the popover body width.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * Leave blank for no effect.\n */\n readonly fillControlMode = input<PopoverFillMode | null>(null);\n\n /** Whether to close on outside click */\n readonly closeOnOutsideClick = input(true, { transform: booleanAttribute });\n\n /** Whether to hide the arrow */\n readonly noArrow = input(true, { transform: booleanAttribute });\n\n /** Whether the popover should trap focus within its boundaries */\n readonly focusTrapped = input(true, { transform: booleanAttribute });\n\n /** Additional CSS classes for the popover body container */\n readonly additionalBodyClass = input<string | null>(null);\n\n /** Two-way binding for menu open state */\n readonly isOpen = model(false);\n\n /** Emits when menu open state changes - required for MenuInterface compatibility */\n readonly isOpenChange = output<boolean>();\n\n /** Emits array of active menu items */\n readonly activePath = output<MenuItemComponent[]>();\n\n /** Event emitted right before the popover is being opened. */\n readonly beforeOpen = output<void>();\n\n /** @hidden Injected dependencies using inject() function */\n readonly elementRef = inject(ElementRef);\n readonly dialogConfig = inject(DialogConfig, { optional: true });\n readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n /** Public getter for menu items - used by MenuService */\n get menuItems(): readonly MenuItemComponent[] {\n return this._menuItems() as readonly MenuItemComponent[];\n }\n\n /** @hidden */\n _navContainerRole = 'menu';\n\n /** @hidden */\n _menuListContainerRole = 'none';\n\n /** @hidden Reference to the menu root template */\n protected readonly _menuRootTemplate = viewChild<TemplateRef<any>>('menuRootTemplate');\n\n /** @hidden Reference to all menu Items */\n protected readonly _menuItems = contentChildren(FD_MENU_ITEM_COMPONENT);\n\n /** @hidden Menu item segmented item headers */\n protected readonly _segmentedButtonHeaderItems = contentChildren(SegmentedButtonHeaderDirective);\n\n /** @hidden Menu item segmented item options */\n protected readonly _segmentedButtonOptions = contentChildren(SegmentedButtonOptionDirective);\n\n /** @hidden */\n protected get hasAddons(): boolean {\n return this._addons().size > 0;\n }\n\n /** @hidden Reference to external menu trigger */\n private _externalTrigger: ElementRef | null = null;\n\n /** @hidden */\n private _addons = signal<Set<unknown>>(new Set());\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<MenuMobileComponent> | null = null;\n\n /** @hidden */\n private _clickEventListener: null | (() => void);\n\n /** @hidden Flag to prevent circular sync between component and service */\n private _syncingIsOpen = false;\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n private readonly _menuService = inject(MenuService);\n private readonly _popoverService = inject(PopoverService);\n private readonly _injector = inject(Injector);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _dynamicComponentService = inject(DynamicComponentService, { optional: true });\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n // Watch mobile mode changes\n effect(() => {\n this._menuService.setMenuMode(this.mobile());\n });\n\n // Sync component → service and emit beforeOpen\n let previousIsOpen = false;\n effect(() => {\n const openState = this.isOpen();\n\n // Emit beforeOpen when transitioning from closed to open\n if (openState && !previousIsOpen) {\n this.beforeOpen.emit();\n }\n\n // Emit isOpenChange for MenuMobileComponent and other consumers\n this.isOpenChange.emit(openState);\n\n // Sync to service only if not already syncing (prevents loop)\n if (!this._syncingIsOpen) {\n this._syncingIsOpen = true;\n this._popoverService.isOpen.set(openState);\n this._syncingIsOpen = false;\n }\n\n if (!openState) {\n this._cleanUpMenuAfterClose();\n }\n\n previousIsOpen = openState;\n });\n\n // Sync popover configuration with service\n effect(() => {\n const cfg = this.config();\n\n this._popoverService.placement.set(this.placement() ?? cfg.placement ?? 'bottom-start');\n this._popoverService.closeOnEscapeKey.set(this.closeOnEscapeKey() ?? cfg.closeOnEscapeKey ?? true);\n this._popoverService.disabled.set(this.disabled() ?? cfg.disabled ?? false);\n this._popoverService.focusTrapped.set(this.focusTrapped() ?? cfg.focusTrapped ?? false);\n this._popoverService.focusAutoCapture.set(this.focusAutoCapture() ?? cfg.focusAutoCapture ?? true);\n // Note: disableScrollbar is handled separately when checking for submenus (see afterNextRender effect)\n // We don't set it here to avoid race conditions where this effect might override the submenu logic\n this._popoverService.triggers.set(this.triggers() ?? cfg.triggers ?? ['click']);\n this._popoverService.fillControlMode.set(this.fillControlMode() ?? cfg.fillControlMode ?? null);\n this._popoverService.closeOnOutsideClick.set(this.closeOnOutsideClick() ?? cfg.closeOnOutsideClick ?? true);\n this._popoverService.noArrow.set(this.noArrow() ?? cfg.noArrow ?? true);\n\n const bodyClass = this.additionalBodyClass() ?? cfg.additionalBodyClass ?? '';\n this._popoverService.additionalBodyClass.set(bodyClass + ' fd-popover--menu');\n });\n\n // Listen on menu items change and rebuild menu\n // Use afterNextRender to ensure this runs after ngAfterContentInit sets the menu component\n afterNextRender(() => {\n runInInjectionContext(this._injector, () => {\n // Track previous subscriptions to clean up when effect re-runs\n let submenuSubscriptions: (() => void)[] = [];\n\n effect((onCleanup) => {\n // Clean up previous subscriptions before creating new ones\n submenuSubscriptions.forEach((unsubscribe) => unsubscribe());\n submenuSubscriptions = [];\n\n const menuItems = this._menuItems() as readonly MenuItemComponent[];\n this._menuService.rebuildMenu();\n\n // Whether menu have submenu or not.\n let hasSubmenus = false;\n menuItems.forEach((menuItem: MenuItemComponent) => {\n if (menuItem.submenu) {\n hasSubmenus = true;\n // Subscribe to submenu changes and track subscription for cleanup\n const subscription = menuItem.submenu._menuItemsChange$.subscribe(() =>\n this._menuService.rebuildMenu()\n );\n submenuSubscriptions.push(() => subscription.unsubscribe());\n }\n });\n\n // Always disable scrollbar when menu has submenus to prevent clipping\n // Only respect the user's disableScrollbar input if they explicitly enabled it or there are no submenus\n const cfg = this.config();\n const shouldDisableScrollbar =\n hasSubmenus || (this.disableScrollbar() ?? cfg.disableScrollbar ?? false);\n this._popoverService.disableScrollbar.set(shouldDisableScrollbar);\n\n // Cleanup callback when effect is destroyed or re-runs\n onCleanup(() => {\n submenuSubscriptions.forEach((unsubscribe) => unsubscribe());\n submenuSubscriptions = [];\n });\n });\n });\n });\n\n // Process segmented button items (needs to run after view init)\n afterNextRender(() => {\n runInInjectionContext(this._injector, () => {\n effect(() => {\n const menuItems = this._menuItems() as readonly MenuItemComponent[];\n const segmentedHeaders = this._segmentedButtonHeaderItems();\n const segmentedOptions = this._segmentedButtonOptions();\n\n // Process segmented button items\n const items = menuItems.map((item, index) => ({\n menuItem: item,\n segmentedButtonHeaderItem: segmentedHeaders.find(\n (headerItem) => headerItem.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n segmentedButtonOption: segmentedOptions.find(\n (option) => option.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n index\n }));\n\n const headers = items.filter((item) => !!item.segmentedButtonHeaderItem);\n const options = items.filter((item) => !!item.segmentedButtonOption);\n\n const headersWithOptions = headers.map((header, headerIndex) => ({\n ...header,\n options: options.reduce((acc, option) => {\n const lastOption = acc[acc.length - 1];\n const optionIndex = option.index;\n if (!lastOption || optionIndex === lastOption.index + 1) {\n if (headerIndex === headers.length - 1 && optionIndex > header.index) {\n acc.push(option);\n } else if (\n optionIndex > header.index &&\n optionIndex < headers[headerIndex + 1]?.index\n ) {\n acc.push(option);\n }\n }\n return acc;\n }, [] as any[])\n }));\n\n headersWithOptions.forEach(({ segmentedButtonHeaderItem, options: headerOptions }) => {\n segmentedButtonHeaderItem?.setOptions(\n headerOptions.map((option) => option.segmentedButtonOption)\n );\n });\n });\n });\n });\n\n // Watch for mobile mode changes (needs to run after view init)\n afterNextRender(() => {\n runInInjectionContext(this._injector, () => {\n effect(() => {\n const mobileValue = this.mobile();\n // Use untracked to prevent _setupView from running in reactive context\n // This avoids NG0602 errors when _setupView calls other setup methods\n untracked(() => {\n this._setupView();\n\n if (mobileValue) {\n this._popoverService.deactivate();\n }\n });\n });\n });\n });\n\n // Subscribe to service changes for bidirectional sync using afterNextRender\n // to ensure service is fully initialized\n afterNextRender(\n () => {\n // Service will emit when it closes/opens programmatically (escape key, close button, etc.)\n this._popoverService.isOpenChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((serviceIsOpen) => {\n // Don't sync in mobile mode - the mobile dialog manages its own open/close state\n if (this.mobile()) {\n return;\n }\n\n // Only update if different and not already syncing (prevents loop)\n if (!this._syncingIsOpen && this.isOpen() !== serviceIsOpen) {\n this._syncingIsOpen = true;\n this.isOpen.set(serviceIsOpen);\n this._syncingIsOpen = false;\n }\n });\n },\n { injector: this._injector }\n );\n }\n\n /** Register addon */\n registerAddon(addon: unknown): void {\n const currentAddons = this._addons();\n currentAddons.add(addon);\n this._addons.set(new Set(currentAddons));\n }\n\n /** Unregister addon */\n unregisterAddon(addon: unknown): void {\n const currentAddons = this._addons();\n currentAddons.delete(addon);\n this._addons.set(new Set(currentAddons));\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._menuService.setMenuComponent(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._menuService.setMenuMode(this.mobile());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n }\n\n /** @hidden */\n set trigger(trigger: ElementRef | null) {\n this._externalTrigger = trigger;\n if (trigger) {\n this._popoverService.initialise(trigger);\n }\n this._destroyEventListeners();\n this._listenOnTriggerRefClicks();\n }\n\n get trigger(): ElementRef | null {\n return this._externalTrigger;\n }\n\n /** Opens the menu */\n open(): void {\n // Always update component state for consistency\n this.isOpen.set(true);\n\n // In desktop mode, also explicitly open the popover service\n if (!this.mobile()) {\n this._popoverService.open();\n }\n }\n\n /** Closes the menu */\n close(): void {\n // Always update component state for consistency\n this.isOpen.set(false);\n\n // In desktop mode, also explicitly close the popover service\n if (!this.mobile()) {\n this._popoverService.close();\n }\n\n this._cleanUpMenuAfterClose();\n this._focusTrigger();\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** @hidden */\n private _cleanUpMenuAfterClose(): void {\n this._menuService.resetMenuState();\n }\n\n /** @hidden Select and instantiate menu view mode */\n private _setupView(): void {\n if (this.mobile()) {\n this._setupMobileMode();\n } else {\n this._setupPopoverService();\n }\n }\n\n /** @hidden */\n private _setupPopoverService(): void {\n // Subscribe to popover load event to add keyboard support\n // This is set up once, not reactively, so no effect() needed\n this._popoverService._onLoad.subscribe((elementRef) => this._menuService.addKeyboardSupport(elementRef));\n\n const template = this._menuRootTemplate();\n if (template) {\n this._popoverService.templateContent = template;\n }\n\n if (this._externalTrigger) {\n // Create config from current signal values\n const cfg = this.config();\n const configToPass: PopoverConfig = {\n placement: this.placement() ?? cfg.placement,\n closeOnEscapeKey: this.closeOnEscapeKey() ?? cfg.closeOnEscapeKey,\n disabled: this.disabled() ?? cfg.disabled,\n focusTrapped: this.focusTrapped() ?? cfg.focusTrapped,\n focusAutoCapture: this.focusAutoCapture() ?? cfg.focusAutoCapture,\n // Note: disableScrollbar is handled by the submenu detection effect, don't set it here\n triggers: this.triggers() ?? cfg.triggers,\n fillControlMode: this.fillControlMode() ?? cfg.fillControlMode,\n closeOnOutsideClick: this.closeOnOutsideClick() ?? cfg.closeOnOutsideClick,\n noArrow: this.noArrow() ?? cfg.noArrow,\n additionalBodyClass: (\n (this.additionalBodyClass() ?? cfg.additionalBodyClass ?? '') + ' fd-popover--menu'\n ).trim()\n };\n\n this._popoverService.initialise(this._externalTrigger, configToPass);\n }\n }\n\n /** @hidden Open Menu in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n if (!this._dynamicComponentService) {\n return;\n }\n\n const injector = Injector.create({\n providers: [{ provide: MENU_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n const template = this._menuRootTemplate();\n if (!template) {\n return;\n }\n\n this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n template,\n MenuMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _listenOnTriggerRefClicks(): void {\n this._destroyEventListeners();\n\n if (this.trigger && this.mobile()) {\n this._clickEventListener = this._renderer.listen(this.trigger.nativeElement, 'click', () => this.toggle());\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _destroyEventListeners(): void {\n if (this._clickEventListener) {\n this._clickEventListener();\n this._clickEventListener = null;\n }\n }\n\n /** @hidden */\n private _destroyMobileComponent(): void {\n if (this._mobileModeComponentRef) {\n this._mobileModeComponentRef.destroy();\n }\n }\n\n /** @hidden */\n private _focusTrigger(): void {\n if (this.focusTrapped() && this.trigger) {\n this.trigger.nativeElement.focus();\n }\n }\n}\n","<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <div class=\"fd-popover__wrapper--visible\">\n <nav\n class=\"fd-menu\"\n [id]=\"id()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.role]=\"_navContainerRole\"\n [class.fd-menu--mobile]=\"mobile()\"\n [class.fd-menu--icons]=\"hasAddons\"\n >\n <ul\n [attr.role]=\"_menuListContainerRole\"\n class=\"fd-menu__list fd-menu__list--no-shadow\"\n [class.fd-menu--full-width]=\"mobile() || false\"\n >\n <ng-content></ng-content>\n </ul>\n </nav>\n </div>\n</ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { DynamicComponentService, InitialFocusModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { GlyphMenuAddonDirective } from './directives/glyph-menu-addon.directive';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuContentDirective } from './directives/menu-content.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\nimport { MenuShortcutDirective } from './directives/menu-shortcut.directive';\nimport { MenuSubtitleDirective } from './directives/menu-subtitle.directive';\nimport { MenuTitleDirective } from './directives/menu-title.directive';\nimport { MenuTriggerDirective } from './directives/menu-trigger.directive';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { ToggleButtonDirective } from './directives/toggle-button.directive';\nimport { MenuInteractiveComponent } from './menu-interactive.component';\nimport { MenuItemComponent, SubmenuComponent } from './menu-item/menu-item.component';\nimport { MenuSeparatorDirective } from './menu-separator.directive';\nimport { MenuComponent } from './menu.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [\n PopoverModule,\n InitialFocusModule,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n PortalModule,\n MenuComponent,\n MenuItemComponent,\n MenuAddonDirective,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n MenuSubtitleDirective,\n MenuContentDirective,\n SubmenuComponent,\n MenuTriggerDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n exports: [\n MenuComponent,\n MenuItemComponent,\n SubmenuComponent,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n MenuSubtitleDirective,\n MenuContentDirective,\n MenuAddonDirective,\n MenuTriggerDirective,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n providers: [DynamicComponentService]\n})\nexport class MenuModule {}\n","import { DOWN_ARROW, ENTER, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ListItemComponent } from '@fundamental-ngx/core/list';\nimport { Subject } from 'rxjs';\nimport { DefaultMenuItem } from './default-menu-item.class';\n\n@Injectable()\nexport class MenuKeyboardService {\n /** Event emitted when an item link is clicked.*/\n @Output()\n public readonly itemClicked: Subject<number> = new Subject<number>();\n\n /** Whether user wants to remove keyboard handling */\n disableKeydownHandling = false;\n\n /** Function that is supposed to be called, when focus escape before list */\n focusEscapeBeforeList: () => void;\n\n /** Function that is supposed to be called, when focus escape after list */\n focusEscapeAfterList: () => void;\n\n /** Function that should be called every time, keydown event is used on some menu item,\n * it provides whole functionality for handling\n * ArrowDown - focus, ArrowUp - focus, Space bar - simulate click, Enter key - simulate click.\n * @param event KeyboardEvent\n * @param index index of items starts from 0\n * @param menuItems array of menu item directives\n * */\n keyDownHandler(event: KeyboardEvent, index: number, menuItems: DefaultMenuItem[] | ListItemComponent[]): void {\n if (this.disableKeydownHandling) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n if (menuItems.length > index + 1) {\n menuItems[index + 1].focus();\n } else {\n if (this.focusEscapeAfterList) {\n this.focusEscapeAfterList();\n } else {\n menuItems[0].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n if (index > 0) {\n menuItems[index - 1].focus();\n } else {\n if (this.focusEscapeBeforeList) {\n this.focusEscapeBeforeList();\n } else {\n menuItems[menuItems.length - 1].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n if (menuItems[index]) {\n menuItems[index].click();\n event.preventDefault();\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GlyphMenuAddonDirective","i1","menuUniqueId","i1.MenuItemComponent","switchMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-menu.mjs","sources":["../../../../libs/core/menu/menu.tokens.ts","../../../../libs/core/menu/directives/glyph-menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-content.directive.ts","../../../../libs/core/menu/directives/menu-item-input.directive.ts","../../../../libs/core/menu/directives/menu-title.directive.ts","../../../../libs/core/menu/menu-interactive.component.ts","../../../../libs/core/menu/services/menu.service.ts","../../../../libs/core/menu/menu-item/menu-item.component.ts","../../../../libs/core/menu/menu-item/menu-item.component.html","../../../../libs/core/menu/directives/menu-shortcut.directive.ts","../../../../libs/core/menu/directives/menu-subtitle.directive.ts","../../../../libs/core/menu/directives/menu-trigger.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-header.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-option.directive.ts","../../../../libs/core/menu/directives/toggle-button.directive.ts","../../../../libs/core/menu/menu-separator.directive.ts","../../../../libs/core/menu/default-menu-item.class.ts","../../../../libs/core/menu/menu.interface.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.html","../../../../libs/core/menu/menu.component.ts","../../../../libs/core/menu/menu.component.html","../../../../libs/core/menu/menu.module.ts","../../../../libs/core/menu/menu-keyboard.service.ts","../../../../libs/core/menu/fundamental-ngx-core-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const TOGGLE_MENU_ITEM = new InjectionToken('TOGGLE_MENU_ITEM');\nexport const FD_MENU_COMPONENT = new InjectionToken('FD_MENU_COMPONENT');\nexport const FD_MENU_ITEM_COMPONENT = new InjectionToken('FD_MENU_ITEM_COMPONENT');\n","import { CdkPortalOutlet, ComponentPortal, DomPortal, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, Directive, EmbeddedViewRef, Input, OnDestroy, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { Observable, Subject, combineLatest, first, map, tap } from 'rxjs';\nimport { MenuComponent } from '../menu.component';\nimport { FD_MENU_COMPONENT, TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: '[fdMenuAddonGlyph], [fd-menu-addon-glyph]',\n standalone: true\n})\nexport class GlyphMenuAddonDirective implements OnDestroy {\n /**\n * The icon name to display. See the icon page for the list of icons\n * here: https://sap.github.io/fundamental-ngx/icon\n **/\n @Input() set glyph(glyph: string | undefined) {\n this._glyphName$.next(glyph);\n }\n\n /**\n * Toggle buttons always need a space, so we check if it is in a toggle button\n * */\n isInToggleButton = !!inject(TOGGLE_MENU_ITEM, { optional: true });\n\n /** @hidden */\n private _menuComponent = inject<MenuComponent>(FD_MENU_COMPONENT, { optional: true });\n\n /** @hidden */\n private _addonGlyphPortalOutlet$ = new Subject<CdkPortalOutlet>();\n\n /** @hidden */\n private _glyphName$ = new Subject<string | undefined>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n combineLatest([this._addonGlyphPortalOutlet$, this._glyphName$])\n .pipe(\n tap(([, glyphName]) => {\n glyphName || this.isInToggleButton ? this._addGlyphAddonToMenu() : this._removeGlyphAddonFromMenu();\n }),\n tap(([outlet, glyphName]) => {\n if (!glyphName) {\n outlet.detach();\n return;\n }\n const componentRef = outlet.attachComponentPortal(new ComponentPortal(IconComponent));\n componentRef.setInput('glyph', glyphName);\n const nativeElement = componentRef.location.nativeElement;\n nativeElement.setAttribute('role', 'presentation');\n if (this.isInToggleButton) {\n nativeElement.classList.add('fd-menu__checkmark');\n }\n componentRef.changeDetectorRef.detectChanges();\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n setGlyphPortalOutlet(outlet: CdkPortalOutlet): void {\n this._addonGlyphPortalOutlet$.next(outlet);\n }\n\n /** @hidden */\n renderElement<ComponentType>(element: ComponentPortal<ComponentType>): Observable<ComponentRef<ComponentType>>;\n /** @hidden */\n renderElement<TemplateContext>(\n element: TemplatePortal<TemplateContext>\n ): Observable<EmbeddedViewRef<TemplateContext>>;\n /** @hidden */\n renderElement(element: DomPortal): Observable<any>;\n /** @hidden */\n renderElement(element: Portal<any>): Observable<any> {\n return this._addonGlyphPortalOutlet$.pipe(\n first(),\n tap((outlet) => outlet.detach()),\n map((outlet) => outlet.attach(element))\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._removeGlyphAddonFromMenu();\n }\n\n /** @hidden */\n private _addGlyphAddonToMenu(): void {\n this._menuComponent?.registerAddon(this);\n }\n\n /** @hidden */\n private _removeGlyphAddonFromMenu(): void {\n this._menuComponent?.unregisterAddon(this);\n }\n}\n","import { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { Component, ElementRef, HostBinding, Input, ViewChild, inject } from '@angular/core';\nimport { GlyphMenuAddonDirective } from './glyph-menu-addon.directive';\n\n@Component({\n selector: 'fd-menu-addon',\n template: ` <ng-template cdkPortalOutlet></ng-template> `,\n hostDirectives: [{ directive: GlyphMenuAddonDirective, inputs: ['glyph'] }],\n imports: [PortalModule]\n})\nexport class MenuAddonDirective {\n /** Whether addon is used before or after text */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('position') set setAddonPosition(position: 'before' | 'after') {\n this.fdAddonBeforeClass = position === 'before';\n this.fdAddonAfterClass = position === 'after';\n }\n\n /** Whether is used as submenu indicator */\n @Input()\n @HostBinding('class.fd-menu__addon-after--submenu')\n submenuIndicator = false;\n\n /** Sets Aria hidden attribute */\n @Input()\n @HostBinding('attr.aria-hidden')\n ariaHidden = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-after')\n fdAddonAfterClass = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-before')\n fdAddonBeforeClass = false;\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n set addonPortalOutlet(portalOutlet: CdkPortalOutlet) {\n this._addonGlyph.setGlyphPortalOutlet(portalOutlet);\n }\n\n /** @hidden */\n readonly _addonGlyph = inject(GlyphMenuAddonDirective);\n\n /** @hidden */\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-content]',\n host: {\n class: 'fd-menu__content'\n }\n})\nexport class MenuContentDirective {}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[fd-form-control][fd-menu-item-input]',\n host: {\n class: 'fd-menu__input'\n },\n standalone: true\n})\nexport class MenuItemInputDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /**\n * This is needed to prevent the click event from bubbling up to the menu item\n * and potentially closing the menu or triggering other actions.\n */\n @HostListener('keydown', ['$event'])\n @HostListener('click', ['$event'])\n onInteraction($event: KeyboardEvent | MouseEvent): void {\n if ($event.target === this.elementRef.nativeElement) {\n $event.stopPropagation();\n }\n }\n}\n","import { booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-title]',\n host: {\n class: 'fd-menu__title',\n '[class.fd-menu__title--truncate]': 'truncate()',\n '[attr.title]': 'title'\n }\n})\nexport class MenuTitleDirective {\n /** Whether the title should truncate with ellipsis. */\n readonly truncate = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** Returns element title text */\n get title(): string {\n return this._elementRef.nativeElement.textContent;\n }\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { Component, ContentChild, ElementRef, HostBinding, HostListener, ViewChild, inject } from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-menu-interactive]',\n template: `\n <ng-template cdkPortalOutlet></ng-template>\n <ng-content></ng-content>\n `,\n host: {\n role: 'menuitem'\n },\n imports: [PortalModule]\n})\nexport class MenuInteractiveComponent implements HasElementRef {\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n addonPortalOutlet: CdkPortalOutlet;\n\n /** @hidden */\n @ContentChild(MenuAddonDirective)\n private set _addon(addon: MenuAddonDirective) {\n if (\n addon?.elementRef.nativeElement === this.elementRef.nativeElement.querySelector('fd-menu-addon:first-child')\n ) {\n this._startAddonInstance = addon;\n }\n }\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n tabindex = 0;\n\n /** @hidden */\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n @HostBinding('class.has-child')\n ariaHaspopup = false;\n\n /** @hidden */\n @HostBinding('class.fd-menu__link')\n readonly fdMenuLinkClass: boolean = true;\n\n /** @hidden */\n @ContentChild(MenuItemInputDirective)\n private _input: MenuItemInputDirective;\n\n /** @hidden */\n _fromSplitButton = false;\n\n /** @hidden */\n readonly elementRef: ElementRef = inject(ElementRef);\n\n /** @hidden */\n private _startAddonInstance: MenuAddonDirective;\n\n /** @hidden */\n get startAddon(): MenuAddonDirective {\n if (!this._startAddonInstance) {\n this.addonPortalOutlet.detach();\n this._startAddonInstance = this.addonPortalOutlet.attachComponentPortal(\n new ComponentPortal(MenuAddonDirective)\n ).instance;\n this._startAddonInstance.setAddonPosition = 'before';\n }\n return this._startAddonInstance;\n }\n\n /** @hidden */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _handleKeydown($event: Event): void {\n if (this._input && $event.target === this.elementRef.nativeElement) {\n this._input.elementRef.nativeElement.focus();\n }\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n this.selected = isSelected && (this.ariaHaspopup || this._fromSplitButton);\n if (this.ariaHaspopup || this._fromSplitButton) {\n this.ariaExpanded = isSelected;\n }\n }\n\n /** @hidden */\n setDisabled(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.tabindex = isDisabled ? -1 : 0;\n }\n\n /** @hidden */\n setSubmenu(hasSubmenu: boolean, itemId?: string): void {\n this.ariaHaspopup = hasSubmenu;\n this.ariaControls = hasSubmenu ? itemId || this.ariaControls : null;\n }\n}\n\nexport { MenuInteractiveComponent as MenuInteractiveDirective };\n","import { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ElementRef, inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MenuComponent } from '../menu.component';\n\ninterface MenuNode {\n item: MenuItemComponent | null;\n parent: MenuNode | null;\n children: MenuNode[];\n}\n\n/** `null` key is used for the root node */\ntype MenuMap = Map<MenuItemComponent | null, MenuNode>;\n\n@Injectable()\nexport class MenuService implements OnDestroy {\n /** Map of menu items to menu nodes */\n menuMap: MenuMap;\n\n /** Currently focused node */\n focusedNode: MenuNode | undefined;\n\n /** Collection of active menu nodes */\n activeNodePath: MenuNode[] = [];\n\n /** Collection of active menu nodes */\n private _isMobileMode = new Subject<boolean>();\n\n /** @hidden */\n private _menuComponent: MenuComponent;\n\n /** @hidden */\n private _destroyKeyboardHandlerListener: () => void;\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n get _isRtl(): boolean {\n return this._rtlService?.rtl() ?? false;\n }\n\n /** Reference to menu component */\n get menuComponent(): MenuComponent {\n return this._menuComponent;\n }\n\n /** Returns menu mode observable */\n get isMobileMode(): Observable<boolean> {\n return this._isMobileMode.pipe(distinctUntilChanged());\n }\n\n /** Sets menu mode */\n setMenuMode(value: boolean): void {\n this._isMobileMode.next(value);\n }\n\n /** Sets given menu item as focused */\n setFocused(menuItem: MenuItemComponent | null): void {\n this.focusedNode = this.menuMap.get(menuItem);\n this.focusedNode?.item?.focus();\n }\n\n /**\n * Sets state of a given menu item\n * @param isActive - Whether should be set as active or inactive\n * @param menuItem `MenuItemComponent` that should be set as active or inactive\n */\n setActive(isActive: boolean, menuItem: MenuItemComponent | null): void {\n if (!menuItem || (isActive && menuItem.disabled)) {\n return;\n }\n\n if (isActive) {\n this._addToActivePath(menuItem);\n } else {\n this._removeFromActivePath(menuItem);\n }\n\n this._emitActivePath();\n }\n\n /**\n * Close active sibling submenu if any\n * @param menuItem to look for active siblings\n */\n setInactiveSiblingMenuItem(menuItem: MenuItemComponent): void {\n this._removeActiveSibling(menuItem);\n this._emitActivePath();\n }\n\n /** Initializes menu service based on given Menu Component */\n setMenuComponent(menu: MenuComponent): void {\n this._menuComponent = menu;\n this.menuMap = this._buildMenuMap(this._menuComponent);\n }\n\n /** Clears Active Node Path and resets Focused Node */\n resetMenuState(): void {\n this._clearActivePath();\n this.focusedNode = undefined;\n this._emitActivePath();\n }\n\n /** - Updates the structure of the menu\n * - Validates Active Node Path\n * - Validates Focused Node */\n rebuildMenu(): void {\n this.menuMap = this._buildMenuMap(this._menuComponent);\n\n const deadNode = this.activeNodePath.find((node) => !this.menuMap.has(node.item));\n if (deadNode?.item) {\n this.setActive(false, deadNode.item);\n }\n\n const invalidFocusedElement = this.focusedNode && !this.menuMap.get(this.focusedNode.item);\n if (invalidFocusedElement) {\n const rootNode = this.menuMap.get(null);\n this.focusedNode = this.activeNodePath[this.activeNodePath.length - 1] || rootNode?.children[0];\n }\n }\n\n /** Adds Menu keyboard support */\n addKeyboardSupport(elementRef: ElementRef): void {\n this.removeKeyboardSupport();\n this._setKeyboardSupport(elementRef);\n }\n\n /** Removes Menu keyboard support */\n removeKeyboardSupport(): void {\n if (this._destroyKeyboardHandlerListener) {\n this._destroyKeyboardHandlerListener();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.removeKeyboardSupport();\n }\n\n /** @hidden Returns siblings of given node */\n private _nodeSiblings(node: MenuNode): MenuNode[] | undefined {\n return node.parent ? node.parent.children : this.menuMap.get(null)?.children;\n }\n\n /** @hidden Adds given element to the Active Node Path and setts as active*/\n private _addToActivePath(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n\n this._removeActiveSibling(menuItem);\n\n if (menuNode) {\n this.activeNodePath.push(menuNode);\n menuNode.item?.setSelected(true);\n }\n }\n\n /** @hidden Removes given element and all its successors from the Active Node Path and setts as inactive*/\n private _removeFromActivePath(menuItem: MenuItemComponent | null): void {\n const menuNode = this.menuMap.get(menuItem);\n if (menuNode) {\n const pathIndex = this.activeNodePath.findIndex((i) => i.item === menuNode.item);\n\n if (pathIndex !== -1) {\n this.activeNodePath\n .splice(pathIndex)\n .forEach((removedActiveNode) => removedActiveNode.item?.setSelected(false));\n }\n }\n }\n\n /** @hidden Removes all elements from the Active Node Path and sets them as closed */\n private _clearActivePath(): void {\n if (this.activeNodePath.length) {\n this._removeFromActivePath(this.activeNodePath[0].item);\n }\n }\n\n /** @hidden\n * - Builds Menu Nodes based on Menu Items\n * - Creates Map of the Menu Nodes */\n private _buildMenuMap(menu: MenuComponent): MenuMap {\n function buildNode(menuItem: MenuItemComponent): MenuNode {\n return {\n item: menuItem,\n parent: null,\n children: menuItem.submenu\n ? menuItem.submenu.menuItems.map((subMenuItem) => buildNode(subMenuItem))\n : []\n };\n }\n\n function setParents(node: MenuNode, parent: MenuNode | null): void {\n node.parent = parent;\n node.children.forEach((childNode) => setParents(childNode, node));\n }\n\n function toMap(node: MenuNode, map = new Map() as MenuMap): MenuMap {\n map.set(node.item, node);\n node.children.forEach((childNode) => toMap(childNode, map));\n return map;\n }\n\n const rootItems = menu.menuItems.filter((rootItem: MenuItemComponent) => !rootItem.parentSubmenu);\n\n /** root item */\n const menuTree: MenuNode = {\n item: null,\n parent: null,\n children: rootItems.map((item: MenuItemComponent) => buildNode(item))\n };\n\n setParents(menuTree, null);\n\n return toMap(menuTree);\n }\n\n /** @hidden Removes active sibling of a given menu item from the Active Path */\n private _removeActiveSibling(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n const children = menuNode?.parent?.children.map((i) => i.item);\n const activeSibling = this.activeNodePath.find((i) => children?.includes(i.item));\n\n if (activeSibling) {\n const activeParentIndex = this.activeNodePath.indexOf(menuNode?.parent as MenuNode);\n this._removeFromActivePath(activeParentIndex !== -1 ? activeSibling.item : this.activeNodePath[0].item);\n }\n }\n\n /** @hidden Adds keyboard support */\n private _setKeyboardSupport(elementRef: ElementRef): void {\n this._destroyKeyboardHandlerListener = this._renderer.listen(\n elementRef.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => this._handleKey(event)\n );\n }\n\n /** @hidden */\n private _handleKey(event: KeyboardEvent): void {\n const focusRight = (node): void => {\n setTimeout(() => this.setFocused(node.children[0].item));\n };\n let matched = true;\n\n if (!this.focusedNode) {\n return;\n }\n\n if (\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode?.children.length) {\n this.setActive(true, this.focusedNode.item);\n focusRight(this.focusedNode);\n }\n } else if (\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode.parent?.item) {\n this.setActive(false, this.focusedNode.parent.item);\n this.setFocused(this.focusedNode.parent.item);\n }\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'down');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'up');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n const focusedNode = this.focusedNode;\n this.setActive(true, focusedNode?.item);\n focusedNode.item?.click();\n if (focusedNode.children.length) {\n focusRight(focusedNode);\n }\n } else if (KeyUtil.isKeyCode(event, ESCAPE) && this.menuComponent.closeOnEscapeKey()) {\n this.menuComponent.close();\n } else {\n matched = false;\n }\n\n if (matched) {\n event.preventDefault();\n }\n }\n\n /** @hidden Emits an array of active menu items */\n private _emitActivePath(): void {\n this.menuComponent?.activePath.emit(this.activeNodePath.map((node) => node.item) as MenuItemComponent[]);\n }\n\n /** @hidden Depending on direction returns closest enabled sibling of given node */\n private _closestEnabled(node: MenuNode, direction: 'up' | 'down'): MenuNode | null {\n const siblings =\n direction === 'up' ? [...(this._nodeSiblings(node) ?? [])].reverse() : this._nodeSiblings(node);\n\n if (siblings) {\n const startIndex = siblings.indexOf(node) + 1;\n\n for (let i = startIndex; i < siblings.length; i++) {\n if (siblings[i].item && !siblings[i].item?.disabled) {\n return siblings[i];\n }\n }\n }\n\n return null;\n }\n}\n","import {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { defer, fromEvent, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DefaultMenuItem } from '../default-menu-item.class';\nimport { MenuTitleDirective } from '../directives/menu-title.directive';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../menu.tokens';\nimport { MenuService } from '../services/menu.service';\n\nlet menuUniqueId = 0;\n\nexport interface BaseSubmenu {\n templateRef: TemplateRef<any>;\n menuItems: MenuItemComponent[];\n menuService: MenuService;\n ariaLabel: Nullable<string>;\n ariaLabelledby: Nullable<string>;\n _menuItemsChange$: Observable<void>;\n\n _registerItem(item: MenuItemComponent): void;\n\n _unregisterItem(item: MenuItemComponent): void;\n}\n\nexport const SUBMENU = new InjectionToken<BaseSubmenu>('Submenu component dependency');\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[fd-menu-item]',\n exportAs: 'fd-menu-item',\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.role]': '\"menuitem\"',\n '[class.fd-menu__item]': 'true',\n '[class.fd-menu--full-width]': 'menuService?.menuComponent?.mobile() ?? false'\n },\n imports: [NgTemplateOutlet],\n providers: [\n {\n provide: FD_MENU_ITEM_COMPONENT,\n useExisting: forwardRef(() => MenuItemComponent)\n }\n ]\n})\nexport class MenuItemComponent implements DefaultMenuItem, OnInit, OnChanges, AfterContentInit, OnDestroy {\n /** Set the Menu Item as disabled/enabled */\n @Input()\n disabled = false;\n\n /** Menu Item id attribute value */\n @Input()\n itemId = `fd-menu-item-${menuUniqueId++}`;\n\n /** Reference to sub-menu component */\n @Input()\n submenu: BaseSubmenu | undefined;\n\n /** Reference to the parent submenu if nested menus created dynamically */\n @Input()\n parentSubmenu: BaseSubmenu | undefined;\n\n /** Whether the menu item has a separator */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.has-separator')\n hasSeparator = false;\n\n /** Emitted when the menu item is selected. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden Reference to the Menu Item title */\n @ContentChild(MenuTitleDirective)\n menuItemTitle: MenuTitleDirective;\n\n /** @hidden Reference to the Menu Item interactive element */\n @ContentChild(MenuInteractiveComponent)\n menuInteractive: MenuInteractiveComponent;\n\n /** @hidden Whether sub-menu is currently visible*/\n submenuVisible = false;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n menuService = inject(MenuService, { optional: true });\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _hoverSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _submenu = inject<BaseSubmenu | null>(SUBMENU, { optional: true });\n\n /** @hidden */\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n /** @hidden */\n ngOnInit(): void {\n if (this.parentSubmenu) {\n this._submenu = this.parentSubmenu;\n this._submenu._registerItem(this);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setMenuService();\n this._initialiseItemState();\n this._listenOnMenuLinkClick();\n this._listenOnOuterFocus();\n this._listenOnMenuMode();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && !changes['disabled'].firstChange) {\n this.menuInteractive.setDisabled(this.disabled);\n }\n if (changes['submenu'] && !changes['submenu'].firstChange) {\n this.menuInteractive.setSubmenu(!!this.submenu, this.submenu ? this.itemId : undefined);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this.parentSubmenu) {\n this._submenu?._unregisterItem(this);\n }\n\n this._subscriptions.unsubscribe();\n this._hoverSubscriptions.unsubscribe();\n }\n\n /** Whether menu item has popup (desktop mode) */\n get hasPopup(): boolean {\n return !!this.submenu && (!this.menuService?.menuComponent || !this.menuService?.menuComponent.mobile());\n }\n\n /** Focuses Menu Item interactive element */\n focus(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.focus();\n }\n }\n\n /** Clicks Menu Item interactive element */\n click(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.click();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** @hidden Sets menu item as selected/unselected based on isSelected flag */\n setSelected(isSelected: boolean, fromSplit?: boolean): void {\n this.menuInteractive.setSelected(isSelected);\n this.submenuVisible = isSelected && !!this.submenu;\n if (!fromSplit) {\n this.onSelect.emit();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden Creates click listener on menu item interactive element */\n private _listenOnMenuLinkClick(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'click').subscribe(() =>\n this.menuService?.setActive(true, this)\n )\n );\n }\n\n /** @hidden Creates hover listeners for activating/deactivating menu item */\n private _listenOnMenuLinkHover(): Subscription {\n const hoverSubscriptions: Subscription = new Subscription();\n\n const mouseEnter$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseenter'\n );\n const mouseLeave$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseleave'\n );\n\n const timerFactory$ = defer(() =>\n timer(this.menuService ? this.menuService.menuComponent.openOnHoverTime() : 0).pipe(takeUntil(mouseLeave$))\n );\n\n // Set active on hover\n hoverSubscriptions.add(\n mouseEnter$\n .pipe(\n filter(() => !!this.menuService),\n switchMap(() => timerFactory$)\n )\n .subscribe(() => {\n if (this.submenu) {\n // Open submenu\n this.menuService!.setActive(true, this);\n }\n if (!this.submenu) {\n // Close sibling submenu if opened\n this.menuService!.setInactiveSiblingMenuItem(this);\n }\n })\n );\n\n return hoverSubscriptions;\n }\n\n /** @hidden Initializes menu link state based on item initial state */\n private _initialiseItemState(): void {\n this.menuInteractive.setSubmenu(!!this.submenu, this.itemId);\n this.menuInteractive.setDisabled(this.disabled);\n }\n\n /** @hidden Checks for Menu Service dependency and passes it if further */\n private _setMenuService(): void {\n this.menuService = this.menuService || this._submenu?.menuService || null;\n if (this.submenu && this.menuService) {\n this.submenu.menuService = this.menuService;\n }\n }\n\n /** @hidden Listen on menu mode and set proper mode listeners */\n private _listenOnMenuMode(): void {\n if (this.menuService) {\n this._subscriptions.add(\n this.menuService.isMobileMode.subscribe((isMobile) => {\n this._hoverSubscriptions.unsubscribe();\n if (!isMobile) {\n this._hoverSubscriptions = this._listenOnMenuLinkHover();\n } else {\n // In mobile mode, leave subscriptions closed (don't create a new empty one)\n // The closed state is used by tests to verify mobile mode behavior\n }\n })\n );\n }\n }\n\n /** @hidden Updates focused menu item on outer focus */\n private _listenOnOuterFocus(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'focus').subscribe(() => {\n if (this.menuService && this.menuService.focusedNode !== this.menuService.menuMap.get(this)) {\n this.menuService.setFocused(this);\n }\n })\n );\n }\n}\n\n@Component({\n selector: 'fd-submenu',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SUBMENU, useExisting: SubmenuComponent }],\n exportAs: 'fdSubmenu',\n standalone: true\n})\nexport class SubmenuComponent implements BaseSubmenu, AfterContentInit {\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** @hidden Reference to template with Submenu items */\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\n\n /** @hidden Reference to Submenu MenuItems */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _projectedItems: QueryList<MenuItemComponent>;\n\n /** @hidden */\n _registeredItems: MenuItemComponent[] = [];\n\n /** @hidden Reference to MenuService used by MenuItems */\n menuService: MenuService;\n\n /** @hidden */\n _menuItemsChange$ = new Subject<void>();\n\n /** @hidden */\n get menuItems(): MenuItemComponent[] {\n return this._projectedItems.length ? this._projectedItems.toArray() : this._registeredItems;\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._projectedItems.changes.subscribe(() => this._menuItemsChange$.next());\n }\n\n /** @hidden method for manually registering item when it's not visible for @ContentChildren */\n _registerItem(item: MenuItemComponent): void {\n this._registeredItems.push(item);\n this._menuItemsChange$.next();\n }\n\n /** @hidden method for manually unregistering item when it's not visible for @ContentChildren */\n _unregisterItem(item: MenuItemComponent): void {\n this._registeredItems = this._registeredItems.filter((i) => i !== item);\n this._menuItemsChange$.next();\n }\n}\n","<ng-content></ng-content>\n@if (hasPopup && submenu) {\n <ul\n class=\"fd-menu__sublist\"\n role=\"menu\"\n [attr.id]=\"itemId\"\n [attr.aria-hidden]=\"submenuVisible ? 'false' : 'true'\"\n [attr.aria-label]=\"submenu.ariaLabel\"\n [attr.aria-labelledby]=\"submenu.ariaLabelledby\"\n >\n <ng-template [ngTemplateOutlet]=\"submenu.templateRef\"></ng-template>\n </ul>\n}\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-shortcut]',\n standalone: true\n})\nexport class MenuShortcutDirective implements AfterViewInit, OnDestroy {\n /** Hide shortcuts in mobile mode */\n @Input()\n hideOnMobile = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__shortcut')\n readonly fdMenuShortcutClass: boolean = true;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _menuItem: MenuItemComponent,\n private _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._hideOnMobile();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _hideOnMobile(): void {\n this._subscriptions.add(\n this._menuItem.menuService?.isMobileMode.pipe(filter(() => this.hideOnMobile)).subscribe((isMobile) => {\n if (isMobile) {\n this._elementRef.nativeElement.style.display = 'none';\n } else {\n this._elementRef.nativeElement.style.display = null;\n }\n })\n );\n }\n}\n","import { booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-subtitle]',\n host: {\n class: 'fd-menu__subtitle',\n '[class.fd-menu__subtitle--truncate]': 'truncate()'\n }\n})\nexport class MenuSubtitleDirective {\n /** Whether the title should truncate with ellipsis. */\n readonly truncate = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** Returns element title text */\n get subtitle(): string {\n return this._elementRef.nativeElement.textContent;\n }\n}\n","import { Directive, ElementRef, HostBinding, inject, Input, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\n\nimport { MenuComponent } from '../menu.component';\n\n@Directive({\n selector: '[fdMenuTrigger]',\n standalone: true\n})\nexport class MenuTriggerDirective implements OnDestroy {\n /** Set reference to Menu Component */\n @Input('fdMenuTrigger')\n set menu(menu: MenuComponent | undefined) {\n this._unsubscribeFromMenu();\n\n if (menu) {\n menu.trigger = this._elementRef;\n this._subscribeToMenu(menu);\n }\n\n this._setAriaAttributes(menu);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n private _menuSubscription: Subscription = new Subscription();\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeFromMenu();\n }\n\n private _subscribeToMenu(menu: MenuComponent): void {\n this._menuSubscription.add(\n menu.isOpenChange.subscribe(() => {\n this._setAriaAttributes(menu);\n })\n );\n }\n\n /** @hidden */\n private _unsubscribeFromMenu(): void {\n this._menuSubscription.unsubscribe();\n this._menuSubscription = new Subscription();\n }\n\n /** @hidden */\n private _setAriaAttributes(menu?: MenuComponent): void {\n this.ariaHasPopup = !!menu;\n this.ariaExpanded = menu?.isOpen();\n this.ariaControls = menu?.isOpen() ? menu.id() : null;\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, map, merge, of, switchMap, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\nimport { SegmentedButtonOptionDirective } from './segmented-button-option.directive';\n\nconst strictEquals = (a: unknown, b: unknown): boolean => a === b;\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonHeader]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: SegmentedButtonHeaderDirective, multi: true }\n ]\n})\nexport class SegmentedButtonHeaderDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input()\n valueComparator: (a: T, b: T) => boolean = strictEquals;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n private _cvaControl: CvaControl<T> = inject(CvaControl)!;\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _options$ = new BehaviorSubject<SegmentedButtonOptionDirective<T>[]>([]);\n\n /** @hidden */\n constructor() {\n this.menuItem.hasSeparator = true;\n }\n\n /** @hidden */\n setOptions(options: SegmentedButtonOptionDirective<T>[]): void {\n this._options$.next(options);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n combineLatest([this._options$, this._cvaControl.cvaDirective?.ngControl?.valueChanges || of(undefined)])\n .pipe(\n tap(([options, value]) => {\n options.forEach((option, index) => {\n option.menuItem.hasSeparator = index === options.length - 1;\n option.selected = this.valueComparator(option.value, value);\n });\n }),\n switchMap(([options]) =>\n merge(...options.map((option) => option.clicked.pipe(map(() => option.value))))\n ),\n tap((val) => this._cvaControl.cvaDirective?.setValue(val)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { DomPortal } from '@angular/cdk/portal';\nimport { AfterViewInit, Directive, ElementRef, HostListener, inject, Input, NgZone, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, delayWhen, Observable, Subject, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonOption]',\n standalone: true\n})\nexport class SegmentedButtonOptionDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input() value: T;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n readonly clicked: Observable<void>;\n\n /** @hidden */\n readonly renderer2 = inject(Renderer2);\n\n /** @hidden */\n private _clicked = new Subject<void>();\n\n /** @hidden */\n private _dotElement: HTMLSpanElement;\n\n /** @hidden */\n private _viewInit$ = new Subject<void>();\n\n /** @hidden */\n private _selected$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n constructor() {\n this.clicked = this._clicked.asObservable();\n const ngZone = inject(NgZone);\n combineLatest([this._viewInit$.pipe(delayWhen(() => ngZone.onStable.asObservable())), this._selected$])\n .pipe(\n tap(() => {\n if (!this._dotElement) {\n this._createDot();\n }\n }),\n tap(([, selected]) => {\n selected ? this._showDot() : this._hideDot();\n }),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _onClick($event: Event): void {\n $event.preventDefault();\n this._clicked.next();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewInit$.next();\n }\n\n /** @hidden */\n private _createDot(): void {\n this._dotElement = this.renderer2.createElement('span');\n this.renderer2.appendChild(this.elementRef.nativeElement, this._dotElement);\n this.renderer2.addClass(this._dotElement, 'fd-menu__active-dot');\n this.renderer2.setAttribute(this._dotElement, 'role', 'presentation');\n this._hideDot();\n const addonDirective = this.menuItem.menuInteractive.startAddon;\n const addonGlyph = addonDirective._addonGlyph;\n addonGlyph.renderElement(new DomPortal(this._dotElement)).subscribe();\n }\n\n /** @hidden */\n private _showDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'false');\n this.renderer2.setStyle(this._dotElement, 'display', 'inline-block');\n }\n\n /** @hidden */\n private _hideDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'true');\n this.renderer2.setStyle(this._dotElement, 'display', 'none');\n }\n\n /** @hidden */\n set selected(isSelected: boolean) {\n this._selected$.next(isSelected);\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, HostListener, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { tap } from 'rxjs';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: 'button[fd-menu-interactive][toggle]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: ToggleButtonDirective, multi: true },\n { provide: TOGGLE_MENU_ITEM, useExisting: ToggleButtonDirective }\n ]\n})\nexport class ToggleButtonDirective implements AfterViewInit {\n /** @hidden */\n private _cvaControl = inject<CvaControl<boolean>>(CvaControl);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _interactiveItemComponent = inject(MenuInteractiveComponent, { host: true });\n\n /**\n * Listen on interaction events that should cause the value update\n * */\n @HostListener('click')\n onClick(): void {\n this._cvaControl.cvaDirective?.setValue(!this._cvaControl.cvaDirective!.value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n this._cvaControl.cvaDirective?.ngControl?.valueChanges\n ?.pipe(\n tap((value: boolean) => {\n this._interactiveItemComponent.startAddon._addonGlyph.glyph = value ? 'accept' : undefined;\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n/**\n * @deprecated\n * Use `hasSeparator` input on a `fd-menu-item` instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-menu-separator',\n host: {\n '[style.display]': '\"none\"'\n },\n standalone: true\n})\nexport class MenuSeparatorDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n constructor() {\n console.error(\n '<fd-menu-separator> has been removed. Use `hasSeparator` input on a `fd-menu-item` instead.',\n this.elementRef.nativeElement\n );\n }\n}\n\n// Exporting as a old class name for the backward compatibility.\nexport { MenuSeparatorDirective as MenuSeparatorComponent };\n","export abstract class DefaultMenuItem {\n abstract focus(): void;\n abstract click(): void;\n}\n","import { InjectionToken, InputSignal, InputSignalWithTransform, ModelSignal, OutputEmitterRef } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode, MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\n\nexport const MENU_COMPONENT = new InjectionToken<string[]>('MenuInterface');\n\n/**\n * Menu Interface to have typing and avoid circular dependency between\n * MenuComponent <==> MenuMobileComponent\n *\n * Note: MenuComponent implements InputSignal properties, which satisfy this interface\n * through structural typing even though the types don't perfectly align with MobileMode base.\n */\nexport interface MenuInterface extends Omit<MobileMode, 'mobile' | 'mobileConfig'> {\n mobile: InputSignalWithTransform<boolean, unknown>;\n mobileConfig: InputSignal<MobileModeConfig>;\n activePath: OutputEmitterRef<MenuItemComponent[]>;\n dialogConfig: DialogConfig | null;\n isOpen: ModelSignal<boolean>;\n isOpenChange: OutputEmitterRef<boolean>;\n\n close(): void;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Injector,\n OnInit,\n runInInjectionContext,\n signal,\n TemplateRef,\n untracked,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService, TemplateDirective, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { startWith } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MENU_COMPONENT, MenuInterface } from '../menu.interface';\nimport { MenuService } from '../services/menu.service';\n\n@Component({\n selector: 'fd-menu-mobile',\n templateUrl: './menu-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n TemplateModule,\n BarLeftDirective,\n BarRightDirective,\n BarElementDirective,\n ButtonBarComponent,\n TemplateDirective,\n BarLeftDirective,\n BarRightDirective,\n BarElementDirective,\n ButtonBarComponent,\n ButtonComponent,\n ContentDensityDirective,\n NgTemplateOutlet,\n InitialFocusDirective,\n DialogComponent,\n DialogBodyComponent,\n DialogHeaderComponent,\n DialogCloseButtonComponent,\n DialogFooterComponent,\n TitleComponent\n ]\n})\n// @ts-expect-error - MenuInterface has InputSignal properties which don't perfectly match MobileMode base\nexport class MenuMobileComponent extends MobileModeBase<MenuInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** Current menu title */\n title$ = signal('');\n\n /** Whether current menu level is submenu */\n isSubmenu$ = signal(false);\n\n /** @hidden External content */\n childContent: TemplateRef<any> | null = null;\n\n /** @hidden Currently rendered menu view */\n view$ = signal<TemplateRef<any> | null>(null);\n\n /** @hidden Navigation icon name based on RTL */\n protected readonly navigationIcon = computed(() =>\n this._rtlService?.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n @ViewChild(DialogBodyComponent)\n set _watch(_dialogBody: DialogBodyComponent) {\n if (_dialogBody) {\n this._menuService.addKeyboardSupport(_dialogBody.elementRef);\n }\n }\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n private readonly _menuService = inject(MenuService);\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n /** @hidden */\n constructor() {\n super(inject<MenuInterface>(MENU_COMPONENT), MobileModeControl.MENU);\n\n // Set up effect to watch isOpen changes and open/close dialog\n // This runs synchronously when the signal changes, avoiding timing issues\n effect(() => {\n const isOpen = this._component.isOpen();\n untracked(() => {\n if (isOpen && !this.dialogRef) {\n // Only open if not already open\n this._openDialog();\n } else if (!isOpen && this.dialogRef) {\n // Only close if currently open\n this.dialogRef.close();\n this.dialogRef = null!;\n }\n });\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnActivePathChange();\n // Dialog open/close is now handled by effect in constructor\n }\n\n /** Closes the Dialog and Menu component */\n close(): void {\n this.dialogRef?.close();\n this.dialogRef = null!;\n this._component.close();\n }\n\n /** Navigate back to parent level of submenu */\n backToParentLevel(): void {\n const menuItem = this._menuService.activeNodePath[this._menuService.activeNodePath.length - 1].item;\n this._menuService.setActive(false, menuItem);\n this._executeAfterNextRender(() => {\n menuItem?.focus();\n });\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n const config = {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n escKeyCloseable: false,\n backdropClickCloseable: false\n };\n\n // Only add container if it's valid (for tests, this might not be set up properly)\n if (this._elementRef?.nativeElement) {\n config.container = this._elementRef.nativeElement;\n }\n\n this.dialogRef = this._dialogService.open(this.dialogTemplate, config);\n }\n\n /** @hidden Listens on Active Path changes and updates mobile view */\n private _listenOnActivePathChange(): void {\n const initialItemPath: MenuItemComponent[] = this._menuService.activeNodePath\n .map((node) => node.item)\n .filter((v): v is MenuItemComponent => !!v);\n\n // Use runInInjectionContext for outputToObservable\n runInInjectionContext(this._injector, () => {\n outputToObservable(this._component.activePath)\n .pipe(startWith(initialItemPath), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => this._setMenuView(items));\n });\n }\n\n /**\n * @hidden\n * Executes a function after the next render cycle.\n */\n private _executeAfterNextRender(fn: () => void): void {\n afterNextRender(fn, { injector: this._injector });\n }\n\n /** @hidden Sets menu view, title and isSubmenu flag */\n private _setMenuView(items: MenuItemComponent[]): void {\n const lastItem: MenuItemComponent = items[items.length - 1];\n this.isSubmenu$.set(!!items.length);\n this.title$.set(this._getDialogTitle(lastItem));\n this.view$.set(this._getMenuView(lastItem));\n this._executeAfterNextRender(() => {\n this._menuService.focusedNode?.item?.focus();\n });\n }\n\n /** @hidden Returns dialog title */\n private _getDialogTitle(menuItem: MenuItemComponent): string {\n if (this.isSubmenu$()) {\n return menuItem.menuItemTitle ? menuItem.menuItemTitle.title : '';\n }\n\n return this.mobileConfig.title || '';\n }\n\n /** @hidden Returns dialog content view */\n private _getMenuView(menuItem: MenuItemComponent): TemplateRef<any> | null {\n if (this.isSubmenu$()) {\n return menuItem.submenu ? menuItem.submenu.templateRef : this.view$();\n }\n return this.childContent;\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (isSubmenu$()) {\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n id=\"menu-mobile-navigate-back\"\n fdCozy\n [attr.aria-label]=\"'Go to previous menu level: ' + title$()\"\n [glyph]=\"navigationIcon()\"\n (click)=\"backToParentLevel()\"\n ></button>\n </fd-bar-element>\n }\n <fd-bar-element>\n <h1 fd-title>{{ title$() }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n @if (this.mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"close()\"></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"(isSubmenu$() ? subMenuTemplate : view$()) || null\"> </ng-template>\n </fd-dialog-body>\n @if (mobileConfig.approveButtonText || mobileConfig.cancelButtonText) {\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n }\n </fd-dialog>\n</ng-template>\n<ng-template #subMenuTemplate>\n <nav class=\"fd-menu fd-menu--mobile\">\n <ul class=\"fd-menu__sublist\">\n <ng-template [ngTemplateOutlet]=\"view$()\"></ng-template>\n </ul>\n </nav>\n</ng-template>\n","import {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n model,\n OnDestroy,\n output,\n Renderer2,\n runInInjectionContext,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverConfig, PopoverService, TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { Placement, PopoverFillMode } from '@fundamental-ngx/core/shared';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuMobileComponent } from './menu-mobile/menu-mobile.component';\nimport { MENU_COMPONENT, MenuInterface } from './menu.interface';\nimport { FD_MENU_COMPONENT, FD_MENU_ITEM_COMPONENT } from './menu.tokens';\nimport { MenuService } from './services/menu.service';\n\nlet menuUniqueId = 0;\n\n/**\n * The component that represents a menu.\n */\n@Component({\n selector: 'fd-menu',\n templateUrl: './menu.component.html',\n styleUrl: 'menu.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MenuService,\n PopoverService,\n DynamicComponentService,\n {\n provide: FD_MENU_COMPONENT,\n useExisting: forwardRef(() => MenuComponent)\n },\n contentDensityObserverProviders()\n ],\n host: {\n '[class.fd-popover-custom--disabled]': 'disabled()'\n }\n})\nexport class MenuComponent implements MenuInterface, AfterContentInit, AfterViewInit, OnDestroy {\n /** Open submenu on hover after given milliseconds */\n readonly openOnHoverTime = input(0);\n\n /** Aria-label for navigation */\n readonly ariaLabel = input<string | null>(null);\n\n /** Aria-Labelledby for element describing navigation */\n readonly ariaLabelledby = input<string | null>(null);\n\n /** Id of the control. */\n readonly id = input(`fd-menu-${menuUniqueId++}`);\n\n /**\n * Configuration object for popover settings.\n * When provided, these settings will be merged with individual input properties.\n * Individual inputs take precedence over config object values.\n */\n readonly config = input<PopoverConfig>({});\n\n /** Whether the menu should be displayed in mobile mode */\n readonly mobile = input(false, { transform: booleanAttribute });\n\n /** Mobile mode configuration */\n readonly mobileConfig = input<MobileModeConfig>({\n approveButtonText: '',\n title: '',\n hasCloseButton: true\n });\n\n /** Popover placement */\n readonly placement = input<Placement>('bottom-start');\n\n /** Whether to close popover on escape key */\n readonly closeOnEscapeKey = input(true, { transform: booleanAttribute });\n\n /** Whether to auto-capture focus when opened */\n readonly focusAutoCapture = input(true, { transform: booleanAttribute });\n\n /** Whether the menu/popover is disabled */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether to disable scrollbar */\n readonly disableScrollbar = input(false, { transform: booleanAttribute });\n\n /** Trigger events for opening/closing */\n readonly triggers = input<(string | TriggerConfig)[]>(['click']);\n\n /**\n * Preset options for the popover body width.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * Leave blank for no effect.\n */\n readonly fillControlMode = input<PopoverFillMode | null>(null);\n\n /** Whether to close on outside click */\n readonly closeOnOutsideClick = input(true, { transform: booleanAttribute });\n\n /** Whether to hide the arrow */\n readonly noArrow = input(true, { transform: booleanAttribute });\n\n /** Whether the popover should trap focus within its boundaries */\n readonly focusTrapped = input(true, { transform: booleanAttribute });\n\n /** Additional CSS classes for the popover body container */\n readonly additionalBodyClass = input<string | null>(null);\n\n /** Two-way binding for menu open state */\n readonly isOpen = model(false);\n\n /** Emits when menu open state changes - required for MenuInterface compatibility */\n readonly isOpenChange = output<boolean>();\n\n /** Emits array of active menu items */\n readonly activePath = output<MenuItemComponent[]>();\n\n /** Event emitted right before the popover is being opened. */\n readonly beforeOpen = output<void>();\n\n /** @hidden Injected dependencies using inject() function */\n readonly elementRef = inject(ElementRef);\n readonly dialogConfig = inject(DialogConfig, { optional: true });\n readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n /** Public getter for menu items - used by MenuService */\n get menuItems(): readonly MenuItemComponent[] {\n return this._menuItems() as readonly MenuItemComponent[];\n }\n\n /** @hidden */\n _navContainerRole = 'menu';\n\n /** @hidden */\n _menuListContainerRole = 'none';\n\n /** @hidden Reference to the menu root template */\n protected readonly _menuRootTemplate = viewChild<TemplateRef<any>>('menuRootTemplate');\n\n /** @hidden Reference to all menu Items */\n protected readonly _menuItems = contentChildren(FD_MENU_ITEM_COMPONENT);\n\n /** @hidden Menu item segmented item headers */\n protected readonly _segmentedButtonHeaderItems = contentChildren(SegmentedButtonHeaderDirective);\n\n /** @hidden Menu item segmented item options */\n protected readonly _segmentedButtonOptions = contentChildren(SegmentedButtonOptionDirective);\n\n /** @hidden */\n protected get hasAddons(): boolean {\n return this._addons().size > 0;\n }\n\n /** @hidden Reference to external menu trigger */\n private _externalTrigger: ElementRef | null = null;\n\n /** @hidden */\n private _addons = signal<Set<unknown>>(new Set());\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<MenuMobileComponent> | null = null;\n\n /** @hidden */\n private _clickEventListener: null | (() => void);\n\n /** @hidden Flag to prevent circular sync between component and service */\n private _syncingIsOpen = false;\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n private readonly _menuService = inject(MenuService);\n private readonly _popoverService = inject(PopoverService);\n private readonly _injector = inject(Injector);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _dynamicComponentService = inject(DynamicComponentService, { optional: true });\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n // Watch mobile mode changes\n effect(() => {\n this._menuService.setMenuMode(this.mobile());\n });\n\n // Sync component → service and emit beforeOpen\n let previousIsOpen = false;\n effect(() => {\n const openState = this.isOpen();\n\n // Emit beforeOpen when transitioning from closed to open\n if (openState && !previousIsOpen) {\n this.beforeOpen.emit();\n }\n\n // Emit isOpenChange for MenuMobileComponent and other consumers\n this.isOpenChange.emit(openState);\n\n // Sync to service only if not already syncing (prevents loop)\n if (!this._syncingIsOpen) {\n this._syncingIsOpen = true;\n this._popoverService.isOpen.set(openState);\n this._syncingIsOpen = false;\n }\n\n if (!openState) {\n this._cleanUpMenuAfterClose();\n }\n\n previousIsOpen = openState;\n });\n\n // Sync popover configuration with service\n effect(() => {\n const cfg = this.config();\n\n this._popoverService.placement.set(this.placement() ?? cfg.placement ?? 'bottom-start');\n this._popoverService.closeOnEscapeKey.set(this.closeOnEscapeKey() ?? cfg.closeOnEscapeKey ?? true);\n this._popoverService.disabled.set(this.disabled() ?? cfg.disabled ?? false);\n this._popoverService.focusTrapped.set(this.focusTrapped() ?? cfg.focusTrapped ?? false);\n this._popoverService.focusAutoCapture.set(this.focusAutoCapture() ?? cfg.focusAutoCapture ?? true);\n // Note: disableScrollbar is handled separately when checking for submenus (see afterNextRender effect)\n // We don't set it here to avoid race conditions where this effect might override the submenu logic\n this._popoverService.triggers.set(this.triggers() ?? cfg.triggers ?? ['click']);\n this._popoverService.fillControlMode.set(this.fillControlMode() ?? cfg.fillControlMode ?? null);\n this._popoverService.closeOnOutsideClick.set(this.closeOnOutsideClick() ?? cfg.closeOnOutsideClick ?? true);\n this._popoverService.noArrow.set(this.noArrow() ?? cfg.noArrow ?? true);\n\n const bodyClass = this.additionalBodyClass() ?? cfg.additionalBodyClass ?? '';\n this._popoverService.additionalBodyClass.set(bodyClass + ' fd-popover--menu');\n });\n\n // Listen on menu items change and rebuild menu\n // Use afterNextRender to ensure this runs after ngAfterContentInit sets the menu component\n afterNextRender(() => {\n runInInjectionContext(this._injector, () => {\n // Track previous subscriptions to clean up when effect re-runs\n let submenuSubscriptions: (() => void)[] = [];\n\n effect((onCleanup) => {\n // Clean up previous subscriptions before creating new ones\n submenuSubscriptions.forEach((unsubscribe) => unsubscribe());\n submenuSubscriptions = [];\n\n const menuItems = this._menuItems() as readonly MenuItemComponent[];\n this._menuService.rebuildMenu();\n\n // Whether menu have submenu or not.\n let hasSubmenus = false;\n menuItems.forEach((menuItem: MenuItemComponent) => {\n if (menuItem.submenu) {\n hasSubmenus = true;\n // Subscribe to submenu changes and track subscription for cleanup\n const subscription = menuItem.submenu._menuItemsChange$.subscribe(() =>\n this._menuService.rebuildMenu()\n );\n submenuSubscriptions.push(() => subscription.unsubscribe());\n }\n });\n\n // Always disable scrollbar when menu has submenus to prevent clipping\n // Only respect the user's disableScrollbar input if they explicitly enabled it or there are no submenus\n const cfg = this.config();\n const shouldDisableScrollbar =\n hasSubmenus || (this.disableScrollbar() ?? cfg.disableScrollbar ?? false);\n this._popoverService.disableScrollbar.set(shouldDisableScrollbar);\n\n // Cleanup callback when effect is destroyed or re-runs\n onCleanup(() => {\n submenuSubscriptions.forEach((unsubscribe) => unsubscribe());\n submenuSubscriptions = [];\n });\n });\n });\n });\n\n // Process segmented button items (needs to run after view init)\n afterNextRender(() => {\n runInInjectionContext(this._injector, () => {\n effect(() => {\n const menuItems = this._menuItems() as readonly MenuItemComponent[];\n const segmentedHeaders = this._segmentedButtonHeaderItems();\n const segmentedOptions = this._segmentedButtonOptions();\n\n // Process segmented button items\n const items = menuItems.map((item, index) => ({\n menuItem: item,\n segmentedButtonHeaderItem: segmentedHeaders.find(\n (headerItem) => headerItem.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n segmentedButtonOption: segmentedOptions.find(\n (option) => option.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n index\n }));\n\n const headers = items.filter((item) => !!item.segmentedButtonHeaderItem);\n const options = items.filter((item) => !!item.segmentedButtonOption);\n\n const headersWithOptions = headers.map((header, headerIndex) => ({\n ...header,\n options: options.reduce((acc, option) => {\n const lastOption = acc[acc.length - 1];\n const optionIndex = option.index;\n if (!lastOption || optionIndex === lastOption.index + 1) {\n if (headerIndex === headers.length - 1 && optionIndex > header.index) {\n acc.push(option);\n } else if (\n optionIndex > header.index &&\n optionIndex < headers[headerIndex + 1]?.index\n ) {\n acc.push(option);\n }\n }\n return acc;\n }, [] as any[])\n }));\n\n headersWithOptions.forEach(({ segmentedButtonHeaderItem, options: headerOptions }) => {\n segmentedButtonHeaderItem?.setOptions(\n headerOptions.map((option) => option.segmentedButtonOption)\n );\n });\n });\n });\n });\n\n // Watch for mobile mode changes (needs to run after view init)\n afterNextRender(() => {\n runInInjectionContext(this._injector, () => {\n effect(() => {\n const mobileValue = this.mobile();\n // Use untracked to prevent _setupView from running in reactive context\n // This avoids NG0602 errors when _setupView calls other setup methods\n untracked(() => {\n this._setupView();\n\n if (mobileValue) {\n this._popoverService.deactivate();\n }\n });\n });\n });\n });\n\n // Subscribe to service changes for bidirectional sync using afterNextRender\n // to ensure service is fully initialized\n afterNextRender(\n () => {\n // Service will emit when it closes/opens programmatically (escape key, close button, etc.)\n this._popoverService.isOpenChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((serviceIsOpen) => {\n // Don't sync in mobile mode - the mobile dialog manages its own open/close state\n if (this.mobile()) {\n return;\n }\n\n // Only update if different and not already syncing (prevents loop)\n if (!this._syncingIsOpen && this.isOpen() !== serviceIsOpen) {\n this._syncingIsOpen = true;\n this.isOpen.set(serviceIsOpen);\n this._syncingIsOpen = false;\n }\n });\n },\n { injector: this._injector }\n );\n }\n\n /** Register addon */\n registerAddon(addon: unknown): void {\n const currentAddons = this._addons();\n currentAddons.add(addon);\n this._addons.set(new Set(currentAddons));\n }\n\n /** Unregister addon */\n unregisterAddon(addon: unknown): void {\n const currentAddons = this._addons();\n currentAddons.delete(addon);\n this._addons.set(new Set(currentAddons));\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._menuService.setMenuComponent(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._menuService.setMenuMode(this.mobile());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n }\n\n /** @hidden */\n set trigger(trigger: ElementRef | null) {\n this._externalTrigger = trigger;\n if (trigger) {\n this._popoverService.initialise(trigger);\n }\n this._destroyEventListeners();\n this._listenOnTriggerRefClicks();\n }\n\n get trigger(): ElementRef | null {\n return this._externalTrigger;\n }\n\n /** Opens the menu */\n open(): void {\n // Always update component state for consistency\n this.isOpen.set(true);\n\n // In desktop mode, also explicitly open the popover service\n if (!this.mobile()) {\n this._popoverService.open();\n }\n }\n\n /** Closes the menu */\n close(): void {\n // Always update component state for consistency\n this.isOpen.set(false);\n\n // In desktop mode, also explicitly close the popover service\n if (!this.mobile()) {\n this._popoverService.close();\n }\n\n this._cleanUpMenuAfterClose();\n this._focusTrigger();\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** @hidden */\n private _cleanUpMenuAfterClose(): void {\n this._menuService.resetMenuState();\n }\n\n /** @hidden Select and instantiate menu view mode */\n private _setupView(): void {\n if (this.mobile()) {\n this._setupMobileMode();\n } else {\n this._setupPopoverService();\n }\n }\n\n /** @hidden */\n private _setupPopoverService(): void {\n // Subscribe to popover load event to add keyboard support\n // This is set up once, not reactively, so no effect() needed\n this._popoverService._onLoad.subscribe((elementRef) => this._menuService.addKeyboardSupport(elementRef));\n\n const template = this._menuRootTemplate();\n if (template) {\n this._popoverService.templateContent = template;\n }\n\n if (this._externalTrigger) {\n // Create config from current signal values\n const cfg = this.config();\n const configToPass: PopoverConfig = {\n placement: this.placement() ?? cfg.placement,\n closeOnEscapeKey: this.closeOnEscapeKey() ?? cfg.closeOnEscapeKey,\n disabled: this.disabled() ?? cfg.disabled,\n focusTrapped: this.focusTrapped() ?? cfg.focusTrapped,\n focusAutoCapture: this.focusAutoCapture() ?? cfg.focusAutoCapture,\n // Note: disableScrollbar is handled by the submenu detection effect, don't set it here\n triggers: this.triggers() ?? cfg.triggers,\n fillControlMode: this.fillControlMode() ?? cfg.fillControlMode,\n closeOnOutsideClick: this.closeOnOutsideClick() ?? cfg.closeOnOutsideClick,\n noArrow: this.noArrow() ?? cfg.noArrow,\n additionalBodyClass: (\n (this.additionalBodyClass() ?? cfg.additionalBodyClass ?? '') + ' fd-popover--menu'\n ).trim()\n };\n\n this._popoverService.initialise(this._externalTrigger, configToPass);\n }\n }\n\n /** @hidden Open Menu in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n if (!this._dynamicComponentService) {\n return;\n }\n\n const injector = Injector.create({\n providers: [{ provide: MENU_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n const template = this._menuRootTemplate();\n if (!template) {\n return;\n }\n\n this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n template,\n MenuMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _listenOnTriggerRefClicks(): void {\n this._destroyEventListeners();\n\n if (this.trigger && this.mobile()) {\n this._clickEventListener = this._renderer.listen(this.trigger.nativeElement, 'click', () => this.toggle());\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _destroyEventListeners(): void {\n if (this._clickEventListener) {\n this._clickEventListener();\n this._clickEventListener = null;\n }\n }\n\n /** @hidden */\n private _destroyMobileComponent(): void {\n if (this._mobileModeComponentRef) {\n this._mobileModeComponentRef.destroy();\n }\n }\n\n /** @hidden */\n private _focusTrigger(): void {\n if (this.focusTrapped() && this.trigger) {\n this.trigger.nativeElement.focus();\n }\n }\n}\n","<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <div class=\"fd-popover__wrapper--visible\">\n <nav\n class=\"fd-menu\"\n [id]=\"id()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.role]=\"_navContainerRole\"\n [class.fd-menu--mobile]=\"mobile()\"\n [class.fd-menu--icons]=\"hasAddons\"\n >\n <ul\n [attr.role]=\"_menuListContainerRole\"\n class=\"fd-menu__list fd-menu__list--no-shadow\"\n [class.fd-menu--full-width]=\"mobile() || false\"\n >\n <ng-content></ng-content>\n </ul>\n </nav>\n </div>\n</ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { DynamicComponentService, InitialFocusModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { GlyphMenuAddonDirective } from './directives/glyph-menu-addon.directive';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuContentDirective } from './directives/menu-content.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\nimport { MenuShortcutDirective } from './directives/menu-shortcut.directive';\nimport { MenuSubtitleDirective } from './directives/menu-subtitle.directive';\nimport { MenuTitleDirective } from './directives/menu-title.directive';\nimport { MenuTriggerDirective } from './directives/menu-trigger.directive';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { ToggleButtonDirective } from './directives/toggle-button.directive';\nimport { MenuInteractiveComponent } from './menu-interactive.component';\nimport { MenuItemComponent, SubmenuComponent } from './menu-item/menu-item.component';\nimport { MenuSeparatorDirective } from './menu-separator.directive';\nimport { MenuComponent } from './menu.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [\n PopoverModule,\n InitialFocusModule,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n PortalModule,\n MenuComponent,\n MenuItemComponent,\n MenuAddonDirective,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n MenuSubtitleDirective,\n MenuContentDirective,\n SubmenuComponent,\n MenuTriggerDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n exports: [\n MenuComponent,\n MenuItemComponent,\n SubmenuComponent,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n MenuSubtitleDirective,\n MenuContentDirective,\n MenuAddonDirective,\n MenuTriggerDirective,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n providers: [DynamicComponentService]\n})\nexport class MenuModule {}\n","import { DOWN_ARROW, ENTER, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ListItemComponent } from '@fundamental-ngx/core/list';\nimport { Subject } from 'rxjs';\nimport { DefaultMenuItem } from './default-menu-item.class';\n\n@Injectable()\nexport class MenuKeyboardService {\n /** Event emitted when an item link is clicked.*/\n @Output()\n public readonly itemClicked: Subject<number> = new Subject<number>();\n\n /** Whether user wants to remove keyboard handling */\n disableKeydownHandling = false;\n\n /** Function that is supposed to be called, when focus escape before list */\n focusEscapeBeforeList: () => void;\n\n /** Function that is supposed to be called, when focus escape after list */\n focusEscapeAfterList: () => void;\n\n /** Function that should be called every time, keydown event is used on some menu item,\n * it provides whole functionality for handling\n * ArrowDown - focus, ArrowUp - focus, Space bar - simulate click, Enter key - simulate click.\n * @param event KeyboardEvent\n * @param index index of items starts from 0\n * @param menuItems array of menu item directives\n * */\n keyDownHandler(event: KeyboardEvent, index: number, menuItems: DefaultMenuItem[] | ListItemComponent[]): void {\n if (this.disableKeydownHandling) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n if (menuItems.length > index + 1) {\n menuItems[index + 1].focus();\n } else {\n if (this.focusEscapeAfterList) {\n this.focusEscapeAfterList();\n } else {\n menuItems[0].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n if (index > 0) {\n menuItems[index - 1].focus();\n } else {\n if (this.focusEscapeBeforeList) {\n this.focusEscapeBeforeList();\n } else {\n menuItems[menuItems.length - 1].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n if (menuItems[index]) {\n menuItems[index].click();\n event.preventDefault();\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GlyphMenuAddonDirective","i1","menuUniqueId","i1.MenuItemComponent","switchMap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,kBAAkB,CAAC;AAC/D,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAC,mBAAmB,CAAC;AACjE,MAAM,sBAAsB,GAAG,IAAI,cAAc,CAAC,wBAAwB,CAAC;;MCQrE,uBAAuB,CAAA;AAChC;;;AAGI;IACJ,IAAa,KAAK,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;;AAoBA,IAAA,WAAA,GAAA;AAlBA;;AAEK;AACL,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;QAGzD,IAAA,CAAA,cAAc,GAAG,MAAM,CAAgB,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAG7E,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,OAAO,EAAmB;;AAGzD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAsB;;AAG/C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAIpC,aAAa,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC;aAC1D,IAAI,CACD,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAI;AAClB,YAAA,SAAS,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,yBAAyB,EAAE;QACvG,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAI;YACxB,IAAI,CAAC,SAAS,EAAE;gBACZ,MAAM,CAAC,MAAM,EAAE;gBACf;YACJ;AACA,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;AACrF,YAAA,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;AACzC,YAAA,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,aAAa;AACzD,YAAA,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;AAClD,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACrD;AACA,YAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAClD,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;IACpB;;AAGA,IAAA,oBAAoB,CAAC,MAAuB,EAAA;AACxC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9C;;AAWA,IAAA,aAAa,CAAC,OAAoB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CACrC,KAAK,EAAE,EACP,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,EAChC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAC1C;IACL;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,yBAAyB,EAAE;IACpC;;IAGQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC;IAC5C;;IAGQ,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,IAAI,CAAC;IAC9C;8GAvFS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2CAA2C;AACrD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAMI;;;MCPQ,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;;QAiBI,IAAA,CAAA,gBAAgB,GAAG,KAAK;;QAKxB,IAAA,CAAA,UAAU,GAAG,IAAI;;QAIjB,IAAA,CAAA,iBAAiB,GAAG,IAAI;;QAIxB,IAAA,CAAA,kBAAkB,GAAG,KAAK;;AASjB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,uBAAuB,CAAC;;AAG7C,QAAA,IAAA,CAAA,UAAU,GAA4B,MAAM,CAAC,UAAU,CAAC;AACpE,IAAA;;;IAlCG,IAAuB,gBAAgB,CAAC,QAA4B,EAAA;AAChE,QAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ,KAAK,QAAQ;AAC/C,QAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,KAAK,OAAO;IACjD;;IAqBA,IACI,iBAAiB,CAAC,YAA6B,EAAA;AAC/C,QAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,YAAY,CAAC;IACvD;8GA9BS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,CAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qCAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2BhB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BhB,CAAA,6CAAA,CAA+C,2DAE/C,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEb,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA,6CAAA,CAA+C;AACzD,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3E,OAAO,EAAE,CAAC,YAAY;AACzB,iBAAA;;sBAII,KAAK;uBAAC,UAAU;;sBAMhB;;sBACA,WAAW;uBAAC,qCAAqC;;sBAIjD;;sBACA,WAAW;uBAAC,kBAAkB;;sBAI9B,WAAW;uBAAC,4BAA4B;;sBAIxC,WAAW;uBAAC,6BAA6B;;sBAIzC,SAAS;uBAAC,eAAe;;;ACnC9B;;AAEG;MAQU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;;MCAY,sBAAsB,CAAA;AARnC,IAAA,WAAA,GAAA;;AAUa,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAa3C,IAAA;AAXG;;;AAGG;AAGH,IAAA,aAAa,CAAC,MAAkC,EAAA;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YACjD,MAAM,CAAC,eAAe,EAAE;QAC5B;IACJ;8GAdS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBASI,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAClC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AClBrC;;AAEG;MAUU,kBAAkB,CAAA;AAT/B,IAAA,WAAA,GAAA;;QAWa,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGhD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAMpD,IAAA;;AAHG,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;IACrD;8GAVS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gCAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,kCAAkC,EAAE,YAAY;AAChD,wBAAA,cAAc,EAAE;AACnB;AACJ,iBAAA;;;MCKY,wBAAwB,CAAA;AAZrC,IAAA,WAAA,GAAA;;QA6BI,IAAA,CAAA,QAAQ,GAAG,CAAC;;QAIZ,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAQhB,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAShB,IAAA,CAAA,YAAY,GAAG,KAAK;;QAIX,IAAA,CAAA,eAAe,GAAY,IAAI;;QAOxC,IAAA,CAAA,gBAAgB,GAAG,KAAK;;AAGf,QAAA,IAAA,CAAA,UAAU,GAAe,MAAM,CAAC,UAAU,CAAC;AA6CvD,IAAA;;IA3FG,IACY,MAAM,CAAC,KAAyB,EAAA;AACxC,QAAA,IACI,KAAK,EAAE,UAAU,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC,EAC9G;AACE,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;QACpC;IACJ;;AA6CA,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC/B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CACnE,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAC1C,CAAC,QAAQ;AACV,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,GAAG,QAAQ;QACxD;QACA,OAAO,IAAI,CAAC,mBAAmB;IACnC;;AAKA,IAAA,cAAc,CAAC,MAAa,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YAChE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;QAChD;IACJ;;AAGA,IAAA,WAAW,CAAC,UAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAC1E,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU;QAClC;IACJ;;AAGA,IAAA,WAAW,CAAC,UAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;IACvC;;IAGA,UAAU,CAAC,UAAmB,EAAE,MAAe,EAAA;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;IACvE;8GAhGS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8lBAMnB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuClB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA3CzB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXhB;;;AAGT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAIS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEb,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE;;;AAGT,IAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE;AACT,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY;AACzB,iBAAA;;sBAGI,SAAS;uBAAC,eAAe;;sBAIzB,YAAY;uBAAC,kBAAkB;;sBAU/B,WAAW;uBAAC,eAAe;;sBAI3B,WAAW;uBAAC,mBAAmB;;sBAI/B,WAAW;uBAAC,oBAAoB;;sBAIhC,WAAW;uBAAC,mBAAmB;;sBAI/B,WAAW;uBAAC,oBAAoB;;sBAIhC,WAAW;uBAAC,oBAAoB;;sBAChC,WAAW;uBAAC,iBAAiB;;sBAI7B,WAAW;uBAAC,qBAAqB;;sBAIjC,YAAY;uBAAC,sBAAsB;;sBAyBnC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;sBACxC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;MCvEhC,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;;QASI,IAAA,CAAA,cAAc,GAAe,EAAE;;AAGvB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAW;;AAS7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;;QAG7B,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAwRxE,IAAA;;AArRG,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,KAAK;IAC3C;;AAGA,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B;;AAGA,IAAA,IAAI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC1D;;AAGA,IAAA,WAAW,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;;AAGA,IAAA,UAAU,CAAC,QAAkC,EAAA;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7C,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;IACnC;AAEA;;;;AAIG;IACH,SAAS,CAAC,QAAiB,EAAE,QAAkC,EAAA;QAC3D,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC9C;QACJ;QAEA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QACnC;aAAO;AACH,YAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QACxC;QAEA,IAAI,CAAC,eAAe,EAAE;IAC1B;AAEA;;;AAGG;AACH,IAAA,0BAA0B,CAAC,QAA2B,EAAA;AAClD,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE;IAC1B;;AAGA,IAAA,gBAAgB,CAAC,IAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;IAC1D;;IAGA,cAAc,GAAA;QACV,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC5B,IAAI,CAAC,eAAe,EAAE;IAC1B;AAEA;;AAE+B;IAC/B,WAAW,GAAA;QACP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;QAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,QAAA,IAAI,QAAQ,EAAE,IAAI,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;QACxC;AAEA,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC1F,IAAI,qBAAqB,EAAE;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnG;IACJ;;AAGA,IAAA,kBAAkB,CAAC,UAAsB,EAAA;QACrC,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IACxC;;IAGA,qBAAqB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,+BAA+B,EAAE;YACtC,IAAI,CAAC,+BAA+B,EAAE;QAC1C;IACJ;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,qBAAqB,EAAE;IAChC;;AAGQ,IAAA,aAAa,CAAC,IAAc,EAAA;QAChC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ;IAChF;;AAGQ,IAAA,gBAAgB,CAAC,QAA2B,EAAA;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE3C,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAEnC,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,YAAA,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;QACpC;IACJ;;AAGQ,IAAA,qBAAqB,CAAC,QAAkC,EAAA;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC3C,IAAI,QAAQ,EAAE;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AAEhF,YAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,gBAAA,IAAI,CAAC;qBACA,MAAM,CAAC,SAAS;AAChB,qBAAA,OAAO,CAAC,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YACnF;QACJ;IACJ;;IAGQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D;IACJ;AAEA;;AAEqC;AAC7B,IAAA,aAAa,CAAC,IAAmB,EAAA;QACrC,SAAS,SAAS,CAAC,QAA2B,EAAA;YAC1C,OAAO;AACH,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,QAAQ,CAAC;AACf,sBAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW,CAAC;AACxE,sBAAE;aACT;QACL;AAEA,QAAA,SAAS,UAAU,CAAC,IAAc,EAAE,MAAuB,EAAA;AACvD,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrE;AAEA,QAAA,SAAS,KAAK,CAAC,IAAc,EAAE,GAAA,GAAM,IAAI,GAAG,EAAa,EAAA;YACrD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC3D,YAAA,OAAO,GAAG;QACd;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAA2B,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;;AAGjG,QAAA,MAAM,QAAQ,GAAa;AACvB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAuB,KAAK,SAAS,CAAC,IAAI,CAAC;SACvE;AAED,QAAA,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAE1B,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC;IAC1B;;AAGQ,IAAA,oBAAoB,CAAC,QAA2B,EAAA;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3C,QAAA,MAAM,QAAQ,GAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEjF,IAAI,aAAa,EAAE;AACf,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAkB,CAAC;YACnF,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3G;IACJ;;AAGQ,IAAA,mBAAmB,CAAC,UAAsB,EAAA;QAC9C,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACxD,UAAU,CAAC,aAAa,EACxB,SAAS,EACT,CAAC,KAAoB,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CACnD;IACL;;AAGQ,IAAA,UAAU,CAAC,KAAoB,EAAA;AACnC,QAAA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAU;AAC9B,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5D,QAAA,CAAC;QACD,IAAI,OAAO,GAAG,IAAI;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;QACJ;AAEA,QAAA,IACI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AACtD,aAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EACvD;YACE,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE;gBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC3C,gBAAA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC;QACJ;AAAO,aAAA,IACH,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AACrD,aAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EACxD;YACE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;gBACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;YACjD;QACJ;aAAO,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;AAC7C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;YAC9D,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;YACjC;QACJ;aAAO,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AAC3C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;YAC5D,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;YACjC;QACJ;AAAO,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AACjD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;YACpC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;AACvC,YAAA,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AACzB,YAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAC7B,UAAU,CAAC,WAAW,CAAC;YAC3B;QACJ;AAAO,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE;AAClF,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC9B;aAAO;YACH,OAAO,GAAG,KAAK;QACnB;QAEA,IAAI,OAAO,EAAE;YACT,KAAK,CAAC,cAAc,EAAE;QAC1B;IACJ;;IAGQ,eAAe,GAAA;QACnB,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAwB,CAAC;IAC5G;;IAGQ,eAAe,CAAC,IAAc,EAAE,SAAwB,EAAA;AAC5D,QAAA,MAAM,QAAQ,GACV,SAAS,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAEnG,IAAI,QAAQ,EAAE;YACV,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAE7C,YAAA,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjD,oBAAA,OAAO,QAAQ,CAAC,CAAC,CAAC;gBACtB;YACJ;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;8GA9SS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAX,WAAW,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACmBD,IAAIC,cAAY,GAAG,CAAC;MAeP,OAAO,GAAG,IAAI,cAAc,CAAc,8BAA8B;MAsBxE,iBAAiB,CAAA;AApB9B,IAAA,WAAA,GAAA;;QAuBI,IAAA,CAAA,QAAQ,GAAG,KAAK;;AAIhB,QAAA,IAAA,CAAA,MAAM,GAAG,CAAA,aAAA,EAAgBA,cAAY,EAAE,EAAE;;QAazC,IAAA,CAAA,YAAY,GAAG,KAAK;;AAKpB,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ;;QAWvD,IAAA,CAAA,cAAc,GAAG,KAAK;;AAGb,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;QAGxC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAG7C,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,YAAY,EAAE;;AAGjD,QAAA,IAAA,CAAA,mBAAmB,GAAiB,IAAI,YAAY,EAAE;;QAGtD,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAqB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGlE,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AA8JzD,IAAA;;IA3JG,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;QACrC;IACJ;;IAGA,kBAAkB,GAAA;QACd,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,iBAAiB,EAAE;IAC5B;;AAGA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;YACzD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnD;AACA,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YACvD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC3F;IACJ;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;QACxC;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;IAC1C;;AAGA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAC5G;;IAGA,KAAK,GAAA;AACD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;QACzD;IACJ;;IAGA,KAAK,GAAA;AACD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;AACrD,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAC1C;IACJ;;IAGA,WAAW,CAAC,UAAmB,EAAE,SAAmB,EAAA;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO;QAClD,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QACxB;AACA,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IAC1C;;IAGQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,MACxE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAC1C,CACJ;IACL;;IAGQ,sBAAsB,GAAA;AAC1B,QAAA,MAAM,kBAAkB,GAAiB,IAAI,YAAY,EAAE;AAE3D,QAAA,MAAM,WAAW,GAA2B,SAAS,CACjD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,EAC7C,YAAY,CACf;AACD,QAAA,MAAM,WAAW,GAA2B,SAAS,CACjD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,EAC7C,YAAY,CACf;AAED,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MACxB,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAC9G;;QAGD,kBAAkB,CAAC,GAAG,CAClB;aACK,IAAI,CACD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAChC,SAAS,CAAC,MAAM,aAAa,CAAC;aAEjC,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;;gBAEd,IAAI,CAAC,WAAY,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;YAC3C;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;AAEf,gBAAA,IAAI,CAAC,WAAY,CAAC,0BAA0B,CAAC,IAAI,CAAC;YACtD;QACJ,CAAC,CAAC,CACT;AAED,QAAA,OAAO,kBAAkB;IAC7B;;IAGQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QAC5D,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnD;;IAGQ,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,IAAI;QACzE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QAC/C;IACJ;;IAGQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACjD,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,QAAQ,EAAE;AACX,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE;gBAC5D;qBAAO;;;gBAGP;YACJ,CAAC,CAAC,CACL;QACL;IACJ;;IAGQ,mBAAmB,GAAA;QACvB,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,MAAK;YAC7E,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACzF,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;YACrC;QACJ,CAAC,CAAC,CACL;IACL;8GAnNS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAkBN,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,2BAAA,EAAA,+CAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAzBzB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB;AAClD;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA8Ba,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIlB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzG1C,+aAaA,4CDoDc,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;+BAEI,kBAAkB,EAAA,QAAA,EAClB,cAAc,EAAA,eAAA,EAEP,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACF,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,uBAAuB,EAAE,MAAM;AAC/B,wBAAA,6BAA6B,EAAE;qBAClC,EAAA,OAAA,EACQ,CAAC,gBAAgB,CAAC,EAAA,SAAA,EAChB;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB;AAClD;AACJ,qBAAA,EAAA,QAAA,EAAA,+aAAA,EAAA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,qBAAqB;;sBAIjC;;sBAKA,YAAY;uBAAC,kBAAkB;;sBAI/B,YAAY;uBAAC,wBAAwB;;MAmM7B,gBAAgB,CAAA;AAb7B,IAAA,WAAA,GAAA;;QA8BI,IAAA,CAAA,gBAAgB,GAAwB,EAAE;;AAM1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ;AAuB1C,IAAA;;AApBG,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB;IAC/F;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC/E;;AAGA,IAAA,aAAa,CAAC,IAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;IACjC;;AAGA,IAAA,eAAe,CAAC,IAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACvE,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;IACjC;8GA7CS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,+HAJd,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAiB/C,sBAAsB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAH5B,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBZ;;;;AAIT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAOQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE;;;;AAIT,IAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAA,gBAAkB,EAAE,CAAC;AAChE,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;sBAIA;;sBAIA,SAAS;uBAAC,WAAW;;sBAGrB,eAAe;uBAAC,sBAAsB;;;ME/S9B,qBAAqB,CAAA;;IAa9B,WAAA,CACY,SAA4B,EAC5B,WAAuB,EAAA;QADvB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,WAAW,GAAX,WAAW;;QAZvB,IAAA,CAAA,YAAY,GAAG,IAAI;;QAIV,IAAA,CAAA,mBAAmB,GAAY,IAAI;;AAGpC,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,YAAY,EAAE;IAMtD;;IAGH,eAAe,GAAA;QACX,IAAI,CAAC,aAAa,EAAE;IACxB;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACrC;;IAGQ,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YAClG,IAAI,QAAQ,EAAE;gBACV,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;YACzD;iBAAO;gBACH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI;YACvD;QACJ,CAAC,CAAC,CACL;IACL;8GAvCS,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;sBAIA,WAAW;uBAAC,yBAAyB;;;ACd1C;;AAEG;MASU,qBAAqB,CAAA;AARlC,IAAA,WAAA,GAAA;;QAUa,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGhD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAMpD,IAAA;;AAHG,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;IACrD;8GAVS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,qCAAqC,EAAE;AAC1C;AACJ,iBAAA;;;MCFY,oBAAoB,CAAA;AAJjC,IAAA,WAAA,GAAA;;AA+BY,QAAA,IAAA,CAAA,iBAAiB,GAAiB,IAAI,YAAY,EAAE;;AAG3C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AA2BpD,IAAA;;IAvDG,IACI,IAAI,CAAC,IAA+B,EAAA;QACpC,IAAI,CAAC,oBAAoB,EAAE;QAE3B,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACjC;;IAqBA,WAAW,GAAA;QACP,IAAI,CAAC,oBAAoB,EAAE;IAC/B;AAEQ,IAAA,gBAAgB,CAAC,IAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACtB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QACjC,CAAC,CAAC,CACL;IACL;;IAGQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,YAAY,EAAE;IAC/C;;AAGQ,IAAA,kBAAkB,CAAC,IAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI;IACzD;8GAxDS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI,KAAK;uBAAC,eAAe;;sBAarB,WAAW;uBAAC,oBAAoB;;sBAIhC,WAAW;uBAAC,oBAAoB;;sBAIhC,WAAW;uBAAC,oBAAoB;;;ACxBrC,MAAM,YAAY,GAAG,CAAC,CAAU,EAAE,CAAU,KAAc,CAAC,KAAK,CAAC;MAgBpD,8BAA8B,CAAA;;AAmBvC,IAAA,WAAA,GAAA;;QAhBA,IAAA,CAAA,eAAe,GAA4B,YAAY;;AAG9C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;QAE/B,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAoB,sBAAsB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAG7E,QAAA,IAAA,CAAA,WAAW,GAAkB,MAAM,CAAC,UAAU,CAAE;;AAEhD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAE;;AAGjC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAsC,EAAE,CAAC;AAI5E,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI;IACrC;;AAGA,IAAA,UAAU,CAAC,OAA4C,EAAA;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;IAChC;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;QAClC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;aAClG,IAAI,CACD,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,KAAI;YACrB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AAC9B,gBAAA,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC;AAC3D,gBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/D,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC,EACFC,WAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAChB,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAClF,EACD,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC1D,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;IACpB;8GA9CS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAL5B;YACP,UAAU;YACV,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,8BAA8B,EAAE,KAAK,EAAE,IAAI;AAC7F,SAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAd1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+CAA+C;AACzD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,YAAY;4BACvB,MAAM,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM;AACxE;AACJ,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,UAAU;wBACV,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,gCAAgC,EAAE,KAAK,EAAE,IAAI;AAC7F;AACJ,iBAAA;;sBAGI;;;MCfQ,8BAA8B,CAAA;;AA6BvC,IAAA,WAAA,GAAA;;AAxBS,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;QAG/B,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAoB,sBAAsB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAM5E,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;;AAG9B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;AAM9B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;;AAGhC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAIpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC3C,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AACjG,aAAA,IAAI,CACD,GAAG,CAAC,MAAK;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,UAAU,EAAE;YACrB;QACJ,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAI;AACjB,YAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChD,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAEvB,aAAA,SAAS,EAAE;IACpB;;AAMA,IAAA,QAAQ,CAAC,MAAa,EAAA;QAClB,MAAM,CAAC,cAAc,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACxB;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IAC1B;;IAGQ,UAAU,GAAA;QACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;AACvD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC;AAChE,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE;QACf,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU;AAC/D,QAAA,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW;AAC7C,QAAA,UAAU,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE;IACzE;;IAGQ,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC;AACrE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC;IACxE;;IAGQ,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,CAAC;AACpE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC;IAChE;;IAGA,IAAI,QAAQ,CAAC,UAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;IACpC;8GAxFS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+CAA+C;AACzD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;sBA8CA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAChC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;sBACxC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;MCxChC,qBAAqB,CAAA;AAflC,IAAA,WAAA,GAAA;;AAiBY,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAsB,UAAU,CAAC;;AAGrD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAE;;QAGjC,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAsBvF,IAAA;AApBG;;AAEK;IAEL,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,YAAa,CAAC,KAAK,CAAC;IAClF;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,EAAE;AACtC,cAAE,IAAI,CACF,GAAG,CAAC,CAAC,KAAc,KAAI;AACnB,YAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS;QAC9F,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;IACpB;8GA7BS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EANnB;YACP,UAAU;YACV,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE;AACnF,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB;AAClE,SAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,YAAY;4BACvB,MAAM,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM;AACxE;AACJ,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,UAAU;wBACV,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE;AACnF,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,uBAAuB;AAClE;AACJ,iBAAA;;sBAcI,YAAY;uBAAC,OAAO;;;AChCzB;;;AAGG;MASU,sBAAsB,CAAA;;AAK/B,IAAA,WAAA,GAAA;;AAHS,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAIpC,OAAO,CAAC,KAAK,CACT,6FAA6F,EAC7F,IAAI,CAAC,UAAU,CAAC,aAAa,CAChC;IACL;8GAVS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACF,wBAAA,iBAAiB,EAAE;AACtB,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCdqB,eAAe,CAAA;AAGpC;;MCEY,cAAc,GAAG,IAAI,cAAc,CAAW,eAAe;;ACgE1E;AACM,MAAO,mBAAoB,SAAQ,cAA6B,CAAA;;IAsBlE,IACI,MAAM,CAAC,WAAgC,EAAA;QACvC,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC;QAChE;IACJ;;AAYA,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,MAAM,CAAgB,cAAc,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC;;AAnCxE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,EAAE,kDAAC;;AAGnB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;;QAG1B,IAAA,CAAA,YAAY,GAA4B,IAAI;;AAG5C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAA0B,IAAI,iDAAC;;QAG1B,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,wBAAwB,GAAG,uBAAuB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC/E;;QAWgB,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGpD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;;AAGlC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;;QAQzC,MAAM,CAAC,MAAK;YACR,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACvC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;oBAE3B,IAAI,CAAC,WAAW,EAAE;gBACtB;AAAO,qBAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;;AAElC,oBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAK;gBAC1B;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,yBAAyB,EAAE;;IAEpC;;IAGA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAK;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IAC3B;;IAGA,iBAAiB,GAAA;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI;QACnG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5C,QAAA,IAAI,CAAC,uBAAuB,CAAC,MAAK;YAC9B,QAAQ,EAAE,KAAK,EAAE;AACrB,QAAA,CAAC,CAAC;IACN;;IAGQ,WAAW,GAAA;AACf,QAAA,MAAM,MAAM,GAAG;AACX,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,eAAe,EAAE,IAAI;YACrB,GAAG,IAAI,CAAC,YAAY;AACpB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,sBAAsB,EAAE;SAC3B;;AAGD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;YACjC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;QACrD;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IAC1E;;IAGQ,yBAAyB,GAAA;AAC7B,QAAA,MAAM,eAAe,GAAwB,IAAI,CAAC,YAAY,CAAC;aAC1D,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;aACvB,MAAM,CAAC,CAAC,CAAC,KAA6B,CAAC,CAAC,CAAC,CAAC;;AAG/C,QAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;AACvC,YAAA,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU;AACxC,iBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACrE,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACvD,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGG;AACK,IAAA,uBAAuB,CAAC,EAAc,EAAA;QAC1C,eAAe,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACrD;;AAGQ,IAAA,YAAY,CAAC,KAA0B,EAAA;QAC3C,MAAM,QAAQ,GAAsB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,uBAAuB,CAAC,MAAK;YAC9B,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;AAChD,QAAA,CAAC,CAAC;IACN;;AAGQ,IAAA,eAAe,CAAC,QAA2B,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACnB,YAAA,OAAO,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QACrE;AAEA,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;IACxC;;AAGQ,IAAA,YAAY,CAAC,QAA2B,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACnB,YAAA,OAAO,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE;QACzE;QACA,OAAO,IAAI,CAAC,YAAY;IAC5B;8GAnJS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAsBjB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5FlC,k/EAuDA,2CDRQ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAMlB,eAAe,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uBAAuB,EAAA,QAAA,EAAA,qUAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,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,qBAAqB,0HACrB,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,qBAAqB,6DACrB,cAAc,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIT,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7B/B,SAAS;+BACI,gBAAgB,EAAA,eAAA,EAET,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B;wBACL,cAAc;wBACd,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,kBAAkB;wBAClB,iBAAiB;wBACjB,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,kBAAkB;wBAClB,eAAe;wBACf,uBAAuB;wBACvB,gBAAgB;wBAChB,qBAAqB;wBACrB,eAAe;wBACf,mBAAmB;wBACnB,qBAAqB;wBACrB,0BAA0B;wBAC1B,qBAAqB;wBACrB;AACH,qBAAA,EAAA,QAAA,EAAA,k/EAAA,EAAA;;sBAKA,SAAS;uBAAC,gBAAgB;;sBAoB1B,SAAS;uBAAC,mBAAmB;;;AE/ClC,IAAI,YAAY,GAAG,CAAC;AAEpB;;AAEG;MAqBU,aAAa,CAAA;;AAsFtB,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,EAAkC;IAC5D;;AAqBA,IAAA,IAAc,SAAS,GAAA;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,CAAC;IAClC;;AA2BA,IAAA,WAAA,GAAA;;AAxIS,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,CAAC,2DAAC;;AAG1B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC;;AAGtC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAgB,IAAI,0DAAC;;QAG3C,IAAA,CAAA,EAAE,GAAG,KAAK,CAAC,CAAA,QAAA,EAAW,YAAY,EAAE,CAAA,CAAE,8CAAC;AAEhD;;;;AAIG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,EAAE,kDAAC;;QAGjC,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,mDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGtD,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB;AAC5C,YAAA,iBAAiB,EAAE,EAAE;AACrB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,cAAc,EAAE;AACnB,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGO,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAY,cAAc,qDAAC;;QAG5C,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/D,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/D,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGxD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGhE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAA6B,CAAC,OAAO,CAAC,oDAAC;AAEhE;;;;;AAKG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAyB,IAAI,2DAAC;;QAGrD,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAC,IAAI,gEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGlE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,oDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGtD,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,yDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAG3D,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAgB,IAAI,+DAAC;;AAGhD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,kDAAC;;QAGrB,IAAA,CAAA,YAAY,GAAG,MAAM,EAAW;;QAGhC,IAAA,CAAA,UAAU,GAAG,MAAM,EAAuB;;QAG1C,IAAA,CAAA,UAAU,GAAG,MAAM,EAAQ;;AAG3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACvD,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;;QAQjE,IAAA,CAAA,iBAAiB,GAAG,MAAM;;QAG1B,IAAA,CAAA,sBAAsB,GAAG,MAAM;;AAGZ,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAmB,kBAAkB,6DAAC;;AAGnE,QAAA,IAAA,CAAA,UAAU,GAAG,eAAe,CAAC,sBAAsB,sDAAC;;AAGpD,QAAA,IAAA,CAAA,2BAA2B,GAAG,eAAe,CAAC,8BAA8B,uEAAC;;AAG7E,QAAA,IAAA,CAAA,uBAAuB,GAAG,eAAe,CAAC,8BAA8B,mEAAC;;QAQpF,IAAA,CAAA,gBAAgB,GAAsB,IAAI;;AAG1C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAe,IAAI,GAAG,EAAE,mDAAC;;QAGzC,IAAA,CAAA,uBAAuB,GAA6C,IAAI;;QAMxE,IAAA,CAAA,cAAc,GAAG,KAAK;;AAGb,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC5C,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9E,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;QAK7C,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAChD,QAAA,CAAC,CAAC;;QAGF,IAAI,cAAc,GAAG,KAAK;QAC1B,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE;;AAG/B,YAAA,IAAI,SAAS,IAAI,CAAC,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAC1B;;AAGA,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGjC,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;gBAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1C,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC/B;YAEA,IAAI,CAAC,SAAS,EAAE;gBACZ,IAAI,CAAC,sBAAsB,EAAE;YACjC;YAEA,cAAc,GAAG,SAAS;AAC9B,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AAEzB,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,SAAS,IAAI,cAAc,CAAC;AACvF,YAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC;AAClG,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC;AAC3E,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC;AACvF,YAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC;;;YAGlG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC;AAC/F,YAAA,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC;AAC3G,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;AAEvE,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,CAAC,mBAAmB,IAAI,EAAE;YAC7E,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,GAAG,mBAAmB,CAAC;AACjF,QAAA,CAAC,CAAC;;;QAIF,eAAe,CAAC,MAAK;AACjB,YAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;;gBAEvC,IAAI,oBAAoB,GAAmB,EAAE;AAE7C,gBAAA,MAAM,CAAC,CAAC,SAAS,KAAI;;oBAEjB,oBAAoB,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;oBAC5D,oBAAoB,GAAG,EAAE;AAEzB,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAkC;AACnE,oBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;;oBAG/B,IAAI,WAAW,GAAG,KAAK;AACvB,oBAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAA2B,KAAI;AAC9C,wBAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;4BAClB,WAAW,GAAG,IAAI;;4BAElB,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAC9D,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAClC;4BACD,oBAAoB,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;wBAC/D;AACJ,oBAAA,CAAC,CAAC;;;AAIF,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,oBAAA,MAAM,sBAAsB,GACxB,WAAW,KAAK,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC;oBAC7E,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,sBAAsB,CAAC;;oBAGjE,SAAS,CAAC,MAAK;wBACX,oBAAoB,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;wBAC5D,oBAAoB,GAAG,EAAE;AAC7B,oBAAA,CAAC,CAAC;AACN,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,eAAe,CAAC,MAAK;AACjB,YAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;gBACvC,MAAM,CAAC,MAAK;AACR,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAkC;AACnE,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAC3D,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,EAAE;;AAGvD,oBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AAC1C,wBAAA,QAAQ,EAAE,IAAI;wBACd,yBAAyB,EAAE,gBAAgB,CAAC,IAAI,CAC5C,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CACxF;wBACD,qBAAqB,EAAE,gBAAgB,CAAC,IAAI,CACxC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CAChF;wBACD;AACH,qBAAA,CAAC,CAAC;AAEH,oBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;AACxE,oBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAEpE,oBAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,MAAM;AAC7D,wBAAA,GAAG,MAAM;wBACT,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;4BACpC,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,4BAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;4BAChC,IAAI,CAAC,UAAU,IAAI,WAAW,KAAK,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE;AACrD,gCAAA,IAAI,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE;AAClE,oCAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;gCACpB;AAAO,qCAAA,IACH,WAAW,GAAG,MAAM,CAAC,KAAK;oCAC1B,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,KAAK,EAC/C;AACE,oCAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;gCACpB;4BACJ;AACA,4BAAA,OAAO,GAAG;wBACd,CAAC,EAAE,EAAW;AACjB,qBAAA,CAAC,CAAC;AAEH,oBAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,yBAAyB,EAAE,OAAO,EAAE,aAAa,EAAE,KAAI;AACjF,wBAAA,yBAAyB,EAAE,UAAU,CACjC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,qBAAqB,CAAC,CAC9D;AACL,oBAAA,CAAC,CAAC;AACN,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;QAGF,eAAe,CAAC,MAAK;AACjB,YAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;gBACvC,MAAM,CAAC,MAAK;AACR,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;;;oBAGjC,SAAS,CAAC,MAAK;wBACX,IAAI,CAAC,UAAU,EAAE;wBAEjB,IAAI,WAAW,EAAE;AACb,4BAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;wBACrC;AACJ,oBAAA,CAAC,CAAC;AACN,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;;;QAIF,eAAe,CACX,MAAK;;YAED,IAAI,CAAC,eAAe,CAAC;AAChB,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,iBAAA,SAAS,CAAC,CAAC,aAAa,KAAI;;AAEzB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;oBACf;gBACJ;;AAGA,gBAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,aAAa,EAAE;AACzD,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;AAC9B,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;gBAC/B;AACJ,YAAA,CAAC,CAAC;QACV,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC/B;IACL;;AAGA,IAAA,aAAa,CAAC,KAAc,EAAA;AACxB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE;AACpC,QAAA,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C;;AAGA,IAAA,eAAe,CAAC,KAAc,EAAA;AAC1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE;AACpC,QAAA,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC;IAC5C;;IAGA,eAAe,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChD;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,IAAI,OAAO,CAAC,OAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO;QAC/B,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5C;QACA,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,yBAAyB,EAAE;IACpC;AAEA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,gBAAgB;IAChC;;IAGA,IAAI,GAAA;;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGrB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;QAC/B;IACJ;;IAGA,KAAK,GAAA;;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGtB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;QAChC;QAEA,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,aAAa,EAAE;IACxB;;IAGA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;IAC9C;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;IAC1C;;IAGQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;IACtC;;IAGQ,UAAU,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,CAAC,gBAAgB,EAAE;QAC3B;aAAO;YACH,IAAI,CAAC,oBAAoB,EAAE;QAC/B;IACJ;;IAGQ,oBAAoB,GAAA;;;QAGxB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAExG,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACzC,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,QAAQ;QACnD;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;;AAEvB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,MAAM,YAAY,GAAkB;gBAChC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,SAAS;gBAC5C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,gBAAgB;gBACjE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ;gBACzC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY;gBACrD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,gBAAgB;;gBAEjE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ;gBACzC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,CAAC,eAAe;gBAC9D,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,CAAC,mBAAmB;gBAC1E,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO;AACtC,gBAAA,mBAAmB,EAAE,CACjB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,CAAC,mBAAmB,IAAI,EAAE,IAAI,mBAAmB,EACrF,IAAI;aACT;YAED,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC;QACxE;IACJ;;AAGQ,IAAA,MAAM,gBAAgB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAChC;QACJ;AAEA,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxD,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACzC,IAAI,CAAC,QAAQ,EAAE;YACX;QACJ;AAEA,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAC/E,QAAQ,EACR,mBAAmB,EACnB;YACI,YAAY,EAAE,IAAI,CAAC;AACtB,SAAA,EACD,EAAE,QAAQ,EAAE,CACf;QAED,IAAI,CAAC,yBAAyB,EAAE;IACpC;AAEA;;;AAGG;IACK,yBAAyB,GAAA;QAC7B,IAAI,CAAC,sBAAsB,EAAE;QAE7B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9G;IACJ;AAEA;;;AAGG;IACK,sBAAsB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QACnC;IACJ;;IAGQ,uBAAuB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;QAC1C;IACJ;;IAGQ,aAAa,GAAA;QACjB,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACtC;IACJ;8GAvgBS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAdX;YACP,WAAW;YACX,cAAc;YACd,uBAAuB;AACvB,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa;AAC9C,aAAA;AACD,YAAA,+BAA+B;AAClC,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAyG+C,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,SAAA,EAGL,8BAA8B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,SAAA,EAGlC,8BAA8B,oLChL/F,0xBAuBA,EAAA,MAAA,EAAA,CAAA,4kvBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD+Ca,aAAa,EAAA,UAAA,EAAA,CAAA;kBApBzB,SAAS;+BACI,SAAS,EAAA,aAAA,EAGJ,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;wBACP,WAAW;wBACX,cAAc;wBACd,uBAAuB;AACvB,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mBAAmB;AAC9C,yBAAA;AACD,wBAAA,+BAA+B;qBAClC,EAAA,IAAA,EACK;AACF,wBAAA,qCAAqC,EAAE;AAC1C,qBAAA,EAAA,QAAA,EAAA,0xBAAA,EAAA,MAAA,EAAA,CAAA,4kvBAAA,CAAA,EAAA;AAmGkE,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGrC,sBAAsB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGL,8BAA8B,4GAGlC,8BAA8B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE3J/F;;;AAGG;MA6CU,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,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,UAAU,YA1Cf,aAAa;YACb,kBAAkB;YAClB,oBAAoB;YACpB,uBAAuB;YACvB,YAAY;YACZ,aAAa;YACb,iBAAiB;YACjB,kBAAkB;YAClB,sBAAsB;YACtB,qBAAqB;YACrB,wBAAwB;YACxB,kBAAkB;YAClB,qBAAqB;YACrB,oBAAoB;YACpB,gBAAgB;YAChB,oBAAoB;YACpB,qBAAqB;YACrB,8BAA8B;YAC9B,8BAA8B;AAC9B,YAAA,sBAAsB,aAGtB,aAAa;YACb,iBAAiB;YACjB,gBAAgB;YAChB,sBAAsB;YACtB,qBAAqB;YACrB,wBAAwB;YACxB,kBAAkB;YAClB,qBAAqB;YACrB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;YACpB,oBAAoB;YACpB,uBAAuB;YACvB,qBAAqB;YACrB,8BAA8B;YAC9B,8BAA8B;YAC9B,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAIjB,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,UAAU,EAAA,SAAA,EAFR,CAAC,uBAAuB,CAAC,YAxChC,aAAa;YACb,kBAAkB;YAClB,oBAAoB;YAEpB,YAAY;YAGZ,kBAAkB;AAGlB,YAAA,wBAAwB,EAuBxB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FASf,UAAU,EAAA,UAAA,EAAA,CAAA;kBA5CtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,aAAa;wBACb,kBAAkB;wBAClB,oBAAoB;wBACpB,uBAAuB;wBACvB,YAAY;wBACZ,aAAa;wBACb,iBAAiB;wBACjB,kBAAkB;wBAClB,sBAAsB;wBACtB,qBAAqB;wBACrB,wBAAwB;wBACxB,kBAAkB;wBAClB,qBAAqB;wBACrB,oBAAoB;wBACpB,gBAAgB;wBAChB,oBAAoB;wBACpB,qBAAqB;wBACrB,8BAA8B;wBAC9B,8BAA8B;wBAC9B;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,aAAa;wBACb,iBAAiB;wBACjB,gBAAgB;wBAChB,sBAAsB;wBACtB,qBAAqB;wBACrB,wBAAwB;wBACxB,kBAAkB;wBAClB,qBAAqB;wBACrB,oBAAoB;wBACpB,kBAAkB;wBAClB,oBAAoB;wBACpB,oBAAoB;wBACpB,uBAAuB;wBACvB,qBAAqB;wBACrB,8BAA8B;wBAC9B,8BAA8B;wBAC9B;AACH,qBAAA;oBACD,SAAS,EAAE,CAAC,uBAAuB;AACtC,iBAAA;;;MC5DY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;;AAIoB,QAAA,IAAA,CAAA,WAAW,GAAoB,IAAI,OAAO,EAAU;;QAGpE,IAAA,CAAA,sBAAsB,GAAG,KAAK;AAiDjC,IAAA;AAzCG;;;;;;AAMK;AACL,IAAA,cAAc,CAAC,KAAoB,EAAE,KAAa,EAAE,SAAkD,EAAA;AAClG,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B;QACJ;QAEA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;YACtC,IAAI,SAAS,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE;gBAC9B,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;YAChC;iBAAO;AACH,gBAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC3B,IAAI,CAAC,oBAAoB,EAAE;gBAC/B;qBAAO;AACH,oBAAA,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;gBACxB;YACJ;YACA,KAAK,CAAC,cAAc,EAAE;QAC1B;aAAO,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AAC3C,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;YAChC;iBAAO;AACH,gBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;oBAC5B,IAAI,CAAC,qBAAqB,EAAE;gBAChC;qBAAO;oBACH,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;gBAC3C;YACJ;YACA,KAAK,CAAC,cAAc,EAAE;QAC1B;AAAO,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AACjD,YAAA,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AAClB,gBAAA,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;gBACxB,KAAK,CAAC,cAAc,EAAE;YAC1B;QACJ;IACJ;8GAtDS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;sBAGI;;;ACVL;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fundamental-ngx/core",
|
|
3
|
-
"version": "0.61.1
|
|
3
|
+
"version": "0.61.1",
|
|
4
4
|
"schematics": "./schematics/collection.json",
|
|
5
5
|
"ng-update": {
|
|
6
6
|
"migrations": "./schematics/migrations.json"
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"@angular/forms": "^21.0.0",
|
|
24
24
|
"@angular/platform-browser": "^21.0.0",
|
|
25
25
|
"@angular/router": "^21.0.0",
|
|
26
|
-
"@fundamental-ngx/cdk": "0.61.1
|
|
27
|
-
"@fundamental-ngx/i18n": "0.61.1
|
|
26
|
+
"@fundamental-ngx/cdk": "0.61.1",
|
|
27
|
+
"@fundamental-ngx/i18n": "0.61.1",
|
|
28
28
|
"@sap-theming/theming-base-content": "^11.32.0",
|
|
29
29
|
"fundamental-styles": "0.40.1",
|
|
30
30
|
"rxjs": "^7.8.0"
|