@spartan-ng/brain 0.0.1-alpha.719 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +3 -3
  2. package/fesm2022/spartan-ng-brain-accordion.mjs +7 -58
  3. package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
  4. package/fesm2022/spartan-ng-brain-alert-dialog.mjs +1 -2
  5. package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/spartan-ng-brain-autocomplete.mjs +3 -1
  7. package/fesm2022/spartan-ng-brain-autocomplete.mjs.map +1 -1
  8. package/fesm2022/spartan-ng-brain-collapsible.mjs +8 -56
  9. package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
  10. package/fesm2022/spartan-ng-brain-combobox.mjs +22 -6
  11. package/fesm2022/spartan-ng-brain-combobox.mjs.map +1 -1
  12. package/fesm2022/spartan-ng-brain-core.mjs +89 -16
  13. package/fesm2022/spartan-ng-brain-core.mjs.map +1 -1
  14. package/fesm2022/spartan-ng-brain-dialog.mjs +8 -7
  15. package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
  16. package/fesm2022/spartan-ng-brain-drawer.mjs +8 -8
  17. package/fesm2022/spartan-ng-brain-drawer.mjs.map +1 -1
  18. package/fesm2022/spartan-ng-brain-field.mjs +7 -2
  19. package/fesm2022/spartan-ng-brain-field.mjs.map +1 -1
  20. package/fesm2022/spartan-ng-brain-navigation-menu.mjs +124 -34
  21. package/fesm2022/spartan-ng-brain-navigation-menu.mjs.map +1 -1
  22. package/fesm2022/spartan-ng-brain-overlay.mjs +27 -14
  23. package/fesm2022/spartan-ng-brain-overlay.mjs.map +1 -1
  24. package/fesm2022/spartan-ng-brain-select.mjs +3 -1
  25. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
  26. package/fesm2022/spartan-ng-brain-tooltip.mjs +97 -14
  27. package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -1
  28. package/package.json +6 -2
  29. package/types/spartan-ng-brain-accordion.d.ts +4 -22
  30. package/types/spartan-ng-brain-autocomplete.d.ts +1 -0
  31. package/types/spartan-ng-brain-collapsible.d.ts +5 -22
  32. package/types/spartan-ng-brain-combobox.d.ts +11 -2
  33. package/types/spartan-ng-brain-core.d.ts +40 -9
  34. package/types/spartan-ng-brain-dialog.d.ts +1 -3
  35. package/types/spartan-ng-brain-drawer.d.ts +3 -3
  36. package/types/spartan-ng-brain-navigation-menu.d.ts +9 -2
  37. package/types/spartan-ng-brain-overlay.d.ts +4 -5
  38. package/types/spartan-ng-brain-select.d.ts +1 -0
  39. package/types/spartan-ng-brain-tooltip.d.ts +38 -4
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-navigation-menu.mjs","sources":["../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.service.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item-focusable.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-link.ts","../../../../libs/brain/navigation-menu/src/lib/brn-parent-nav-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-list.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-trigger.ts","../../../../libs/brain/navigation-menu/src/index.ts","../../../../libs/brain/navigation-menu/src/spartan-ng-brain-navigation-menu.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayConfig,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tElementRef,\n\tinject,\n\tInjectable,\n\tNgZone,\n\tRenderer2,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport {\n\tcreateHoverObservable,\n\tcreateMenuPosition,\n\ttype MenuAlign,\n\twaitForElementAnimations,\n} from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, Observable, of, Subject } from 'rxjs';\nimport { map, share, switchMap, takeUntil } from 'rxjs/operators';\n\nexport type BrnNavigationMenuContentOptions = Partial<\n\t{\n\t\tattachTo: ElementRef<HTMLElement>;\n\t\torientation: 'horizontal' | 'vertical';\n\t\talign: MenuAlign;\n\t} & OverlayConfig\n>;\n\nconst horizontalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n];\n\nconst verticalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n];\n\n@Injectable()\nexport class BrnNavigationMenuContentService {\n\tprivate static _id = 0;\n\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\n\tpublic readonly id = `brn-navigation-menu-content-${++BrnNavigationMenuContentService._id}`;\n\n\tprivate _shouldDetach = false;\n\n\tprivate _config: BrnNavigationMenuContentOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _contentEl = signal<HTMLElement | undefined>(undefined);\n\tpublic readonly contentEl = this._contentEl.asReadonly();\n\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tprivate readonly _overlayShiftTabObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tprivate readonly _overlayEscapeObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable !== undefined ? overlayHoveredObservable : of())),\n\t\tshare(),\n\t);\n\n\tprivate readonly _shiftTabPressed$ = this._overlayShiftTabObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tpublic readonly escapePressed$ = this._overlayEscapeObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tconstructor() {\n\t\tthis._shiftTabPressed$.pipe(takeUntil(this._destroyed$)).subscribe((e) => {\n\t\t\tif (this._config.attachTo?.nativeElement) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._config.attachTo.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic setConfig(config: BrnNavigationMenuContentOptions) {\n\t\tthis._config = config;\n\n\t\tif (config.attachTo) {\n\t\t\tconst positions = this._getPositions(config.orientation);\n\t\t\tthis._positionStrategy = this._buildPositionStrategy(config.attachTo, positions);\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t}\n\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic updateOrientation(orientation: 'horizontal' | 'vertical') {\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic updateDirection(dir: Direction) {\n\t\tthis._overlayRef?.setDirection(dir);\n\t}\n\n\tpublic updateAlign(align: MenuAlign) {\n\t\tthis._config = { ...this._config, align };\n\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst orientation = this._config.orientation;\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown>, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\t\tthis._shouldDetach = false;\n\n\t\tthis._overlayRef?.detach();\n\t\tconst embededViewRef = this._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tconst contentEl = embededViewRef.rootNodes[0] as HTMLElement;\n\n\t\tconst attachToId = this._config.attachTo?.nativeElement.id;\n\n\t\tthis._renderer.setAttribute(contentEl, 'id', this.id);\n\t\tif (attachToId !== undefined) {\n\t\t\tthis._renderer.setAttribute(contentEl, 'aria-labelledby', attachToId);\n\t\t}\n\n\t\tthis._contentEl.set(contentEl);\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\n\t\tthis._overlayShiftTabObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Tab' && e.shiftKey && e.target === this.contentEl() ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\n\t\tthis._overlayEscapeObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Escape' && !hasModifierKey(e) ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async hide() {\n\t\tconst contentEl = this._contentEl();\n\t\tif (!contentEl) return;\n\n\t\tthis._shouldDetach = true;\n\t\tif (!this._hasAnimation()) {\n\t\t\tthis._detach();\n\t\t}\n\n\t\tawait waitForElementAnimations(contentEl);\n\t\tthis._detach();\n\t}\n\n\tprivate readonly _detach = () => {\n\t\tif (!this._shouldDetach) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._contentEl.set(undefined);\n\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t};\n\n\tprivate _hasAnimation() {\n\t\tconst contentEl = this.contentEl();\n\t\tif (!contentEl) return;\n\n\t\treturn getComputedStyle(contentEl).animationName !== 'none';\n\t}\n\n\tprivate _getPositions(orientation?: 'horizontal' | 'vertical') {\n\t\tconst align = this._config.align;\n\t\tif (align) {\n\t\t\tconst side = orientation === 'vertical' ? 'right' : 'bottom';\n\t\t\treturn createMenuPosition(align, side);\n\t\t}\n\t\treturn orientation === 'vertical' ? verticalPositions : horizontalPositions;\n\t}\n\n\tprivate _buildPositionStrategy(attachTo: ElementRef, positions: ConnectedPosition[]) {\n\t\treturn this._psBuilder\n\t\t\t.flexibleConnectedTo(attachTo)\n\t\t\t.withPositions(positions)\n\t\t\t.withDefaultOffsetY(0)\n\t\t\t.withDefaultOffsetX(0)\n\t\t\t.withPush(false);\n\t}\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\n\nexport const BrnNavigationMenuFocusable = new InjectionToken<FocusableOption>('BrnNavigationMenuFocusable');\n\nexport function provideBrnNavigationMenuFocusable<T extends FocusableOption>(focusable: Type<T>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuFocusable, useExisting: focusable };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenuItem } from './brn-navigation-menu-item';\n\nexport const BrnNavigationMenuItemToken = new InjectionToken<BrnNavigationMenuItem>('BrnNavigationMenuItemToken');\n\nexport function injectBrnNavigationMenuItem(): BrnNavigationMenuItem {\n\treturn inject(BrnNavigationMenuItemToken);\n}\n\nexport function provideBrnNavigationMenuItem(navigationMenuItem: Type<BrnNavigationMenuItem>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuItemToken, useExisting: navigationMenuItem };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenu } from './brn-navigation-menu';\n\nexport const BrnNavigationMenuToken = new InjectionToken<BrnNavigationMenu>('BrnNavigationMenuToken');\n\nexport function injectBrnNavigationMenu(): BrnNavigationMenu {\n\treturn inject(BrnNavigationMenuToken);\n}\n\nexport function provideBrnNavigationMenu(navigationMenu: Type<BrnNavigationMenu>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuToken, useExisting: navigationMenu };\n}\n","import { computed, contentChild, Directive, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { Observable, Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { provideBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'li[brnNavigationMenuItem]',\n\tproviders: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'[attr.data-disabled]': 'disabled() || null',\n\t\t'[attr.data-active]': 'isActive() ? \"true\" : null',\n\t\t'data-slot': 'navigation-menu-item',\n\t},\n})\nexport class BrnNavigationMenuItem {\n\tprivate static _id = 0;\n\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly navMenuElRef = this._navigationMenu.el;\n\n\t/** The id of the navigation menu item */\n\tpublic readonly id = input<string>(`brn-navigation-menu-item-${++BrnNavigationMenuItem._id}`);\n\n\tpublic readonly isActive = computed(() => this.id() === this._navigationMenu.value());\n\n\tpublic readonly wasActive = computed(() => this.id() === this._navigationMenu.previousValue());\n\n\tpublic readonly state = computed(() => (this.isActive() ? 'open' : 'closed'));\n\n\tpublic readonly contentTemplate = signal<TemplateRef<unknown> | null>(null);\n\n\tpublic readonly contentHovered$ = this._contentService.hovered$;\n\n\tpublic readonly subNavVisible$ = new Subject<Observable<boolean>>();\n\n\tpublic readonly focusable = contentChild.required(BrnNavigationMenuFocusable);\n\n\tprivate readonly _triggerOrLinkBtn = contentChild.required(BrnNavigationMenuFocusable, { read: BrnButton });\n\n\tpublic readonly disabled = computed(() => this._triggerOrLinkBtn().disabled());\n}\n","import type { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'a[brnNavigationMenuLink]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[attr.data-active]': '_isActive() ? true : undefined',\n\t\t'[attr.aria-current]': '_isActive() ? \"page\" : undefined',\n\t\t'data-slot': 'navigation-menu-link',\n\t},\n})\nexport class BrnNavigationMenuLink implements FocusableOption {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _el = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n\t// Returns false if this BrnNavigationMenuLink is used \"standalone\", meaning it doesn't have a parent BrnNavigationMenuItem element.\n\tprivate readonly _hasParentNavMenuItem =\n\t\tthis._el.nativeElement.parentElement === this._navigationMenuItem.el.nativeElement;\n\n\t/**\n\t * Used to identify the link as the currently active page.\n\t */\n\tpublic readonly active = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tprotected readonly _isActive = computed(() => {\n\t\tconst active = this.active();\n\t\tif (active !== undefined) return active;\n\n\t\tif (!this._hasParentNavMenuItem) return false;\n\n\t\treturn this._navigationMenuItem.isActive();\n\t});\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (!this._hasParentNavMenuItem || this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onClick() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprotected activate() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\n\t\t// Only activate on hover if openOn is 'hover' or menu is already open\n\t\tconst openOn = this._navigationMenu.openOn();\n\t\tconst isMenuOpen = this._navigationMenu.value() !== undefined;\n\t\tif (openOn === 'click' && !isMenuOpen) return;\n\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n}\n","import { type FactoryProvider, inject, InjectionToken } from '@angular/core';\nimport type { Subject } from 'rxjs';\n\nexport interface BrnParentNavMenu {\n\tsubNavVisible$: Subject<boolean>;\n}\n\nexport const BrnParentNavMenu = new InjectionToken<BrnParentNavMenu>('BrnParentNavMenu');\n\nexport function injectBrnParentNavMenu(): BrnParentNavMenu | null {\n\treturn inject(BrnParentNavMenu, { optional: true });\n}\n\nexport function provideBrnParentNavMenu(parentNavMenu: () => BrnParentNavMenu): FactoryProvider {\n\treturn { provide: BrnParentNavMenu, useFactory: parentNavMenu };\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\tOnDestroy,\n\tsignal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { computedPrevious, createHoverObservable } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, combineLatest, merge, of, Subject } from 'rxjs';\nimport { debounceTime, delay, filter, map, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './brn-navigation-menu-link';\nimport { provideBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { injectBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\nfunction areArraysSameByElRef(arr1: unknown[], arr2: unknown[]) {\n\tif (arr1.length !== arr2.length) return false;\n\treturn arr1.every((item, index) => item === arr2[index]);\n}\n\n@Directive({\n\tselector: 'nav[brnNavigationMenu]',\n\tproviders: [provideBrnNavigationMenu(BrnNavigationMenu)],\n\thost: {\n\t\t'(keydown)': 'handleKeydown($event)',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t\t'[attr.dir]': 'direction()',\n\t\t'aria-label': 'Main',\n\t\t'data-slot': 'navigation-menu',\n\t},\n})\nexport class BrnNavigationMenu implements OnDestroy {\n\tprivate readonly _dir = inject(Directionality);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _anyTriggerHovered$ = new BehaviorSubject<boolean>(false);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tpublic readonly parentNavMenu = injectBrnParentNavMenu();\n\n\t/**\n\t * The controlled value of the menu item to activate.\n\t */\n\tpublic readonly value = model<string>();\n\n\t/**\n\t * The duration from when the mouse enters a trigger until the content opens.\n\t */\n\tpublic readonly delayDuration = input<number>(200);\n\n\t/**\n\t * How much time a user has to enter another trigger without incurring a delay again.\n\t */\n\tpublic readonly skipDelayDuration = input<number>(300);\n\n\t/**\n\t * Controls whether the menu opens on hover or click.\n\t * When 'click', initial open requires a click, but hover still switches between items once open.\n\t */\n\tpublic readonly openOn = input<'hover' | 'click'>('hover');\n\n\t/** internal **/\n\tpublic readonly direction = this._dir.valueSignal;\n\n\t/**\n\t * The orientation of the menu.\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n\tprivate readonly _isOpenDelayed = signal(true);\n\tpublic readonly isOpenDelayed = this._isOpenDelayed.asReadonly();\n\n\tprivate _skipDelayTimerRef: ReturnType<typeof setTimeout> | undefined;\n\n\tprivate readonly _navAndSubnavMenuItems = contentChildren(BrnNavigationMenuItem, { descendants: true });\n\n\tpublic readonly menuItems = computed(\n\t\t() => this._navAndSubnavMenuItems().filter((mi) => mi.navMenuElRef === this.el),\n\t\t{\n\t\t\tequal: areArraysSameByElRef,\n\t\t},\n\t);\n\n\tpublic readonly menuItemIds = computed(() => this.menuItems().map((mi) => mi.id()));\n\n\tprivate readonly _triggersAndLinks = computed(() => this.menuItems().map((mi) => mi.focusable()));\n\n\tprivate readonly _linkMenuItems = computed(() =>\n\t\tthis.menuItems().filter((i) => i.focusable() instanceof BrnNavigationMenuLink),\n\t);\n\n\tprivate readonly _keyManager = computed(() => {\n\t\treturn new FocusKeyManager<FocusableOption>(this._triggersAndLinks())\n\t\t\t.withHorizontalOrientation(this.direction())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((e) => !!e.disabled);\n\t});\n\n\tprivate readonly _reset$ = toObservable(this.value).pipe(\n\t\tpairwise(),\n\t\tfilter(([prev, curr]) => curr === undefined && curr !== prev),\n\t\tmap(() => undefined),\n\t);\n\n\tprivate readonly _hovered$ = merge(\n\t\tcreateHoverObservable(this.el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tprivate readonly _contentHovered$ = merge(\n\t\ttoObservable(this._navAndSubnavMenuItems).pipe(\n\t\t\tswitchMap((menuItems) => merge(...menuItems.map((mi) => mi.contentHovered$))),\n\t\t),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tpublic readonly previousValue = computedPrevious(this.value);\n\n\tpublic readonly context = computed(() => ({ orientation: this.orientation(), dir: this.direction() }));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst isOpen = this.value() !== undefined;\n\t\t\tconst hasSkipDelayDuration = this.skipDelayDuration() > 0;\n\n\t\t\tif (isOpen) {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tif (hasSkipDelayDuration) this._isOpenDelayed.set(false);\n\t\t\t} else {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tthis._skipDelayTimerRef = setTimeout(() => {\n\t\t\t\t\tthis._isOpenDelayed.set(true);\n\t\t\t\t}, this.skipDelayDuration());\n\t\t\t}\n\t\t});\n\n\t\tcombineLatest([this._hovered$, this._contentHovered$, this._anyTriggerHovered$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tfilter(([hovered, contentHovered]) => !(hovered === undefined && contentHovered === undefined)),\n\t\t\t\tswitchMap(([hovered, contentHovered, triggerHovered]) => {\n\t\t\t\t\tconst shouldClose = !hovered && !contentHovered && !triggerHovered;\n\t\t\t\t\t// Add delay before closing in click mode to allow for sibling hover transitions\n\t\t\t\t\tif (shouldClose && this.openOn() === 'click') {\n\t\t\t\t\t\treturn of([hovered, contentHovered, triggerHovered] as const).pipe(delay(150));\n\t\t\t\t\t}\n\t\t\t\t\treturn of([hovered, contentHovered, triggerHovered] as const);\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t)\n\t\t\t.subscribe(([hovered, contentHovered, triggerHovered]) => {\n\t\t\t\tif (!hovered && !contentHovered && !triggerHovered) {\n\t\t\t\t\tthis.value.set(undefined);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Called by triggers to report their hover state for coordination.\n\t * @internal\n\t */\n\tpublic setTriggerHovered(hovered: boolean) {\n\t\tthis._anyTriggerHovered$.next(hovered);\n\t}\n\n\tpublic isLink(id?: string): boolean {\n\t\treturn !!this._linkMenuItems().find((item) => item.id() === id);\n\t}\n\n\tpublic setActiveItem(item: FocusableOption) {\n\t\tthis._keyManager().setActiveItem(item);\n\t}\n\n\tprotected handleKeydown(event: KeyboardEvent) {\n\t\tthis._keyManager().onKeydown(event);\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tclearTimeout(this._skipDelayTimerRef);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, untracked } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { BrnParentNavMenu, provideBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\n@Directive({\n\tselector: '[brnNavigationMenuContent]',\n\tproviders: [provideBrnParentNavMenu(() => ({ subNavVisible$: new Subject<boolean>() }))],\n})\nexport class BrnNavigationMenuContent {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\tprivate readonly _tpl = inject(TemplateRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _subNavContext = inject(BrnParentNavMenu);\n\n\tprivate readonly _navMenuValue = this._navigationMenu.value;\n\tprivate readonly _prevNavMenuValue = this._navigationMenu.previousValue;\n\n\tprivate readonly _id = this._navigationMenuItem.id;\n\tprivate readonly _isActive = this._navigationMenuItem.isActive;\n\tprivate readonly _wasActive = this._navigationMenuItem.wasActive;\n\tprivate readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _contentEl = this._contentService.contentEl;\n\n\tprivate readonly _menuItemsIds = this._navigationMenu.menuItemIds;\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tconstructor() {\n\t\tif (!this._tpl) return;\n\t\tthis._navigationMenuItem.contentTemplate.set(this._tpl);\n\t\tthis._navigationMenuItem.subNavVisible$.next(this._subNavContext.subNavVisible$);\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'tabindex', '0');\n\t\t\t\tthis._renderer.setAttribute(el, 'data-slot', 'navigation-menu-content');\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-state', this._state());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-orientation', this._orientation());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst isActive = this._isActive();\n\t\t\tconst wasActive = this._wasActive();\n\t\t\tconst dir = this._dir();\n\t\t\tconst orientation = this._orientation();\n\n\t\t\tconst el = untracked(this._contentEl);\n\t\t\tif (!el) return;\n\n\t\t\tconst id = this._id();\n\t\t\tconst menuItemsIds =\n\t\t\t\tdir === 'rtl' && orientation === 'horizontal' ? this._menuItemsIds().slice().reverse() : this._menuItemsIds();\n\n\t\t\tif (isActive) {\n\t\t\t\tconst prevNavMenuValue = this._prevNavMenuValue();\n\t\t\t\tconst isPrevLink = untracked(() => this._navigationMenu.isLink(prevNavMenuValue));\n\n\t\t\t\tif (prevNavMenuValue && !isPrevLink) {\n\t\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(prevNavMenuValue) ? 'from-end' : 'from-start';\n\t\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t\t}\n\t\t\t} else if (wasActive) {\n\t\t\t\tconst navMenuValue = this._navMenuValue();\n\t\t\t\tconst isLink = untracked(() => this._navigationMenu.isLink(navMenuValue));\n\t\t\t\tif (!navMenuValue || isLink) return;\n\n\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(navMenuValue) ? 'to-end' : 'to-start';\n\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'ul[brnNavigationMenuList]',\n\thost: {\n\t\t'[attr.data-orientation]': '_orientation()',\n\t\t'data-slot': 'navigation-menu-list',\n\t},\n})\nexport class BrnNavigationMenuList {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\n\tprotected readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tPLATFORM_ID,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { createHoverObservable, isElement, type MenuAlign } from '@spartan-ng/brain/core';\nimport { fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport {\n\tdebounceTime,\n\tdelay,\n\tdistinctUntilChanged,\n\tfilter,\n\tmap,\n\tshare,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n} from 'rxjs/operators';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\ninterface TriggerEvent {\n\ttype: 'click' | 'hover' | 'set';\n\tvisible: boolean;\n\trelatedTarget?: EventTarget | null;\n}\n\n@Directive({\n\tselector: 'button[brnNavigationMenuTrigger]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t\t'(keydown.tab)': 'onTab($event)',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[id]': '_id',\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.aria-expanded]': '_isActive()',\n\t\t'[attr.aria-controls]': '_contentId',\n\t\t'data-slot': 'navigation-menu-trigger',\n\t},\n})\nexport class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOption {\n\tprivate static _id = 0;\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly align = input<MenuAlign>('start');\n\n\tprotected readonly _id = `brn-navigation-menu-trigger-${++BrnNavigationMenuTrigger._id}`;\n\n\tprivate readonly _parentNavMenu = this._navigationMenu.parentNavMenu;\n\n\tprotected readonly _isActive = this._navigationMenuItem.isActive;\n\n\tprotected readonly _contentId = this._contentService.id;\n\n\tprotected readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\n\tprivate readonly _isOpenDelayed = this._navigationMenu.isOpenDelayed;\n\n\tprivate readonly _delayDuration = this._navigationMenu.delayDuration;\n\n\tprivate readonly _contentTemplate = this._navigationMenuItem.contentTemplate;\n\n\tprivate readonly _isSubNavVisible = toSignal(this._navigationMenuItem.subNavVisible$.pipe(switchMap((c) => c)), {\n\t\tinitialValue: false,\n\t});\n\n\tprivate readonly _isActive$: Observable<TriggerEvent> = toObservable(this._navigationMenuItem.isActive).pipe(\n\t\tmap((value) => ({ type: 'set', visible: value })),\n\t);\n\n\tprivate readonly _clicked$: Observable<TriggerEvent> = fromEvent(this._el.nativeElement, 'click').pipe(\n\t\tmap(() => !this._navigationMenuItem.isActive()),\n\t\tmap((value) => ({ type: 'click', visible: value })),\n\t);\n\n\tprivate readonly _hovered$: Observable<TriggerEvent> = merge(\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$.pipe(map((v) => ({ hover: v, relatedTarget: null }))),\n\t).pipe(\n\t\t// Report hover state to parent for coordination\n\t\ttap((e) => this._navigationMenu.setTriggerHovered(e.hover)),\n\t\t// Hover event is NOT allowed when a sub-navigation is currently visible, AND the current hover event is false.\n\t\tfilter((e) => !(this._isSubNavVisible() && !e.hover)),\n\t\t// Block hover-open when openOn='click' and no menu is currently open\n\t\tfilter((e) => {\n\t\t\tconst openOn = this._navigationMenu.openOn();\n\t\t\tconst isMenuOpen = this._navigationMenu.value() !== undefined;\n\t\t\t// Allow if: openOn is 'hover', OR menu is already open, OR this is hover-out\n\t\t\treturn openOn === 'hover' || isMenuOpen || !e.hover;\n\t\t}),\n\t\t// Add stabilization delay for hover-out in click mode to prevent race conditions\n\t\tswitchMap((e) => {\n\t\t\tif (!e.hover && this._navigationMenu.openOn() === 'click') {\n\t\t\t\treturn of(e).pipe(delay(50));\n\t\t\t}\n\t\t\treturn of(e);\n\t\t}),\n\t\tmap((e) => ({ type: 'hover' as const, visible: e.hover, relatedTarget: e.relatedTarget })),\n\t);\n\n\tprivate readonly _showing$ = merge(this._isActive$, this._clicked$, this._hovered$).pipe(\n\t\tdebounceTime(0),\n\t\tdistinctUntilChanged((prev, curr) => prev.visible === curr.visible),\n\t\tswitchMap((ev) => {\n\t\t\tconst shouldDelay = ev.visible && ev.type !== 'click' && this._isOpenDelayed();\n\t\t\treturn of(ev).pipe(delay(shouldDelay ? this._delayDuration() : 0));\n\t\t}),\n\t\t// Deactivate needs to be called if the menu item content is hidden with a user click OR\n\t\t// If nav item is hovered out to a disabled sibling nav item\n\t\ttap((ev) => {\n\t\t\tif (ev.visible) {\n\t\t\t\tthis._activate();\n\t\t\t} else {\n\t\t\t\tconst shouldDeactivate =\n\t\t\t\t\t(ev.type === 'click' || !this._isHoverOnSibling(ev)) && this._navigationMenuItem.isActive();\n\n\t\t\t\tif (shouldDeactivate) {\n\t\t\t\t\tthis._deactivate();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._contentTemplate();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateAlign(align);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst orientation = this._orientation();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateOrientation(orientation);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst dir = this._dir();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateDirection(dir);\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({\n\t\t\tattachTo: this._el,\n\t\t\tdirection: this._dir(),\n\t\t\torientation: this._orientation(),\n\t\t\talign: this.align(),\n\t\t});\n\t\tthis._showing$.pipe(takeUntil(this._destroy$)).subscribe((ev) => {\n\t\t\tif (this._parentNavMenu) {\n\t\t\t\tthis._parentNavMenu.subNavVisible$.next(ev.visible);\n\t\t\t}\n\n\t\t\tif (ev.visible) {\n\t\t\t\tif (this._isBrowser) {\n\t\t\t\t\tthis._contentService.show();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis._contentService.escapePressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n\t\t\te.preventDefault();\n\t\t\tthis._el.nativeElement.focus();\n\t\t\tthis._deactivate();\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onTab(e: Event) {\n\t\tconst contentEl = this._contentService.contentEl();\n\n\t\tif (contentEl && !hasModifierKey(e as KeyboardEvent)) {\n\t\t\te.preventDefault();\n\t\t\tcontentEl.focus();\n\t\t}\n\t}\n\n\tprotected onEscape(e: Event) {\n\t\te.preventDefault();\n\t\tthis._deactivate();\n\t}\n\n\tprivate _activate() {\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprivate _deactivate() {\n\t\tthis._navigationMenu.value.set(undefined);\n\t}\n\n\tprivate _isHoverOnSibling(ev: TriggerEvent): boolean {\n\t\tif (ev.type !== 'hover' || !isElement(ev.relatedTarget)) return false;\n\n\t\tconst menuItem = this._isMenuItemOrChild(ev.relatedTarget);\n\n\t\treturn !!menuItem && !menuItem.disabled();\n\t}\n\n\tprivate _isMenuItemOrChild(node: Node): BrnNavigationMenuItem | undefined {\n\t\treturn this._navigationMenu\n\t\t\t.menuItems()\n\t\t\t.find((ref) => ref.el.nativeElement === node || ref.el.nativeElement.contains(node));\n\t}\n}\n","import { BrnNavigationMenu } from './lib/brn-navigation-menu';\nimport { BrnNavigationMenuContent } from './lib/brn-navigation-menu-content';\nimport { BrnNavigationMenuItem } from './lib/brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './lib/brn-navigation-menu-link';\nimport { BrnNavigationMenuList } from './lib/brn-navigation-menu-list';\nimport { BrnNavigationMenuTrigger } from './lib/brn-navigation-menu-trigger';\n\nexport * from './lib/brn-navigation-menu';\nexport * from './lib/brn-navigation-menu-content';\nexport * from './lib/brn-navigation-menu-item';\nexport * from './lib/brn-navigation-menu-link';\nexport * from './lib/brn-navigation-menu-list';\nexport * from './lib/brn-navigation-menu-trigger';\n\nexport const BrnNavigationMenuImports = [\n\tBrnNavigationMenu,\n\tBrnNavigationMenuItem,\n\tBrnNavigationMenuList,\n\tBrnNavigationMenuTrigger,\n\tBrnNavigationMenuContent,\n\tBrnNavigationMenuLink,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsCA,MAAM,mBAAmB,GAAwB;AAChD,IAAA;AACC,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,KAAA;CACD;AAED,MAAM,iBAAiB,GAAwB;AAC9C,IAAA;AACC,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,KAAA;AACD,IAAA;AACC,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,KAAA;CACD;MAGY,+BAA+B,CAAA;AACnC,IAAA,OAAO,GAAG,GAAG,CAAC;AAEL,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACtB,IAAA,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC3C,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAE7B,IAAA,QAAQ,GAAG,MAAM,CAAiC,IAAI,+EAAC;AAExD,IAAA,EAAE,GAAG,CAAA,4BAAA,EAA+B,EAAE,+BAA+B,CAAC,GAAG,EAAE;IAEnF,aAAa,GAAG,KAAK;IAErB,OAAO,GAAoC,EAAE;AAC7C,IAAA,WAAW;AACX,IAAA,iBAAiB;AACjB,IAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;AAExB,IAAA,UAAU,GAAG,MAAM,CAA0B,SAAS,iFAAC;AACxD,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAEvC,IAAA,2BAA2B,GAAG,IAAI,eAAe,CAAkC,SAAS,CAAC;AAE7F,IAAA,4BAA4B,GAAG,IAAI,eAAe,CAAwC,SAAS,CAAC;AAEpG,IAAA,0BAA0B,GAAG,IAAI,eAAe,CAAwC,SAAS,CAAC;AAEnG,IAAA,QAAQ,GAAwB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACpF,SAAS,CAAC,CAAC,wBAAwB,MAAM,wBAAwB,KAAK,SAAS,GAAG,wBAAwB,GAAG,EAAE,EAAE,CAAC,CAAC,EACnH,KAAK,EAAE,CACP;AAEgB,IAAA,iBAAiB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAC1E,SAAS,CAAC,CAAC,eAAe,MAAM,eAAe,KAAK,SAAS,GAAG,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,CACxF;AAEe,IAAA,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CACpE,SAAS,CAAC,CAAC,eAAe,MAAM,eAAe,KAAK,SAAS,GAAG,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,CACxF;AAED,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACxE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE;gBACzC,CAAC,CAAC,cAAc,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE;YAC5C;AACD,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,SAAS,CAAC,MAAuC,EAAA;AACvD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AAErB,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC;AACxD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;YAEhF,IAAI,CAAC,OAAO,GAAG;gBACd,GAAG,IAAI,CAAC,OAAO;gBACf,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;gBACxC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;aAC3D;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACtD;AAEO,IAAA,iBAAiB,CAAC,WAAsC,EAAA;AAC9D,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE;QAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AACjD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC;QAEtF,IAAI,CAAC,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,OAAO;YACf,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;YACxC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;SAC3D;QAED,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjE;AAEO,IAAA,eAAe,CAAC,GAAc,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC;IACpC;AAEO,IAAA,WAAW,CAAC,KAAgB,EAAA;QAClC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AAEzC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE;AAE5B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AACjD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC;QAEtF,IAAI,CAAC,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,OAAO;YACf,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;SACxC;QAED,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjE;IAEO,UAAU,CAAC,KAA2B,EAAE,GAAqB,EAAA;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,cAAc,CAAU,KAAK,EAAE,GAAG,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACtD;IACD;IAEO,IAAI,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAE1B,QAAA,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC;AAExD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAQ;QAEtC,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAgB;QAE5D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE;AAE1D,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;AACrD,QAAA,IAAI,UAAU,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,iBAAiB,EAAE,UAAU,CAAC;QACtE;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAE9B,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACpC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAC3G;AAED,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CACrC,SAAS,CAAgB,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAClD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EACjG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAC3B,CACD;QAED,IAAI,CAAC,0BAA0B,CAAC,IAAI,CACnC,SAAS,CAAgB,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAClD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAC3E,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAC3B,CACD;IACF;AAEO,IAAA,MAAM,IAAI,GAAA;AAChB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AACnC,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YAC1B,IAAI,CAAC,OAAO,EAAE;QACf;AAEA,QAAA,MAAM,wBAAwB,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE;IACf;IAEiB,OAAO,GAAG,MAAK;QAC/B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAE9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAQ;AACvC,IAAA,CAAC;IAEO,aAAa,GAAA;AACpB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,aAAa,KAAK,MAAM;IAC5D;AAEQ,IAAA,aAAa,CAAC,WAAuC,EAAA;AAC5D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;QAChC,IAAI,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,GAAG,WAAW,KAAK,UAAU,GAAG,OAAO,GAAG,QAAQ;AAC5D,YAAA,OAAO,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC;QACvC;QACA,OAAO,WAAW,KAAK,UAAU,GAAG,iBAAiB,GAAG,mBAAmB;IAC5E;IAEQ,sBAAsB,CAAC,QAAoB,EAAE,SAA8B,EAAA;QAClF,OAAO,IAAI,CAAC;aACV,mBAAmB,CAAC,QAAQ;aAC5B,aAAa,CAAC,SAAS;aACvB,kBAAkB,CAAC,CAAC;aACpB,kBAAkB,CAAC,CAAC;aACpB,QAAQ,CAAC,KAAK,CAAC;IAClB;2HAtMY,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;+HAA/B,+BAA+B,EAAA,CAAA;;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C;;;AC3DM,MAAM,0BAA0B,GAAG,IAAI,cAAc,CAAkB,4BAA4B,CAAC;AAErG,SAAU,iCAAiC,CAA4B,SAAkB,EAAA;IAC9F,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,SAAS,EAAE;AACvE;;ACJO,MAAM,0BAA0B,GAAG,IAAI,cAAc,CAAwB,4BAA4B,CAAC;SAEjG,2BAA2B,GAAA;AAC1C,IAAA,OAAO,MAAM,CAAC,0BAA0B,CAAC;AAC1C;AAEM,SAAU,4BAA4B,CAAC,kBAA+C,EAAA;IAC3F,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,kBAAkB,EAAE;AAChF;;ACRO,MAAM,sBAAsB,GAAG,IAAI,cAAc,CAAoB,wBAAwB,CAAC;SAErF,uBAAuB,GAAA;AACtC,IAAA,OAAO,MAAM,CAAC,sBAAsB,CAAC;AACtC;AAEM,SAAU,wBAAwB,CAAC,cAAuC,EAAA;IAC/E,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE;AACxE;;MCOa,qBAAqB,CAAA;AACzB,IAAA,OAAO,GAAG,GAAG,CAAC;IAEL,eAAe,GAAG,uBAAuB,EAAE;AAC3C,IAAA,eAAe,GAAG,MAAM,CAAC,+BAA+B,CAAC;AAE1D,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEhD,IAAA,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE;;IAGtC,EAAE,GAAG,KAAK,CAAS,CAAA,yBAAA,EAA4B,EAAE,qBAAqB,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE7E,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,+EAAC;AAErE,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,gFAAC;IAE9E,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE7D,IAAA,eAAe,GAAG,MAAM,CAA8B,IAAI,sFAAC;AAE3D,IAAA,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ;AAE/C,IAAA,cAAc,GAAG,IAAI,OAAO,EAAuB;AAEnD,IAAA,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC;AAE5D,IAAA,iBAAiB,GAAG,YAAY,CAAC,QAAQ,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAE3F,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,+EAAC;2HA7BlE,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,SAAA,EARtB,CAAC,4BAA4B,CAAC,qBAAqB,CAAC,EAAE,+BAA+B,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiC/C,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEjB,0BAA0B,2BAAU,SAAS,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FA3B5F,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,SAAS,EAAE,CAAC,4BAA4B,CAAA,qBAAA,CAAuB,EAAE,+BAA+B,CAAC;AACjG,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,oBAAoB,EAAE,4BAA4B;AAClD,wBAAA,WAAW,EAAE,sBAAsB;AACnC,qBAAA;AACD,iBAAA;AA0BkD,SAAA,CAAA,EAAA,cAAA,EAAA,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,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,0BAA0B,mGAEjB,0BAA0B,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCnB9F,qBAAqB,CAAA;IAChB,eAAe,GAAG,uBAAuB,EAAE;IAC3C,mBAAmB,GAAG,2BAA2B,EAAE;AACnD,IAAA,GAAG,GAAG,MAAM,CAAgC,UAAU,CAAC;;AAGvD,IAAA,qBAAqB,GACrC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,aAAa;AAEnF;;AAEG;IACa,MAAM,GAAG,KAAK,CAAoC,SAAS,8EAC1E,SAAS,EAAE,gBAAgB,EAAA,CAC1B;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,MAAM,KAAK,SAAS;AAAE,YAAA,OAAO,MAAM;QAEvC,IAAI,CAAC,IAAI,CAAC,qBAAqB;AAAE,YAAA,OAAO,KAAK;AAE7C,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AAC3C,IAAA,CAAC,gFAAC;AAEF,IAAA,IAAW,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;IAC3C;AAEO,IAAA,KAAK,CAAC,OAAqB,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YAAE;AAExE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE;IAC/B;IAEU,WAAW,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC;IACzC;IAEU,OAAO,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC;IAC9D;IAEU,QAAQ,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE;;QAGjC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,SAAS;AAC7D,QAAA,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,UAAU;YAAE;AAEvC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC;IAC9D;2HAtDY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,yeAhBtB,CAAC,iCAAiC,CAAC,qBAAqB,CAAC,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAgBzD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,SAAS,EAAE,CAAC,iCAAiC,CAAA,qBAAA,CAAuB,CAAC;AACrE,oBAAA,cAAc,EAAE;AACf,wBAAA;AACC,4BAAA,SAAS,EAAE,SAAS;4BACpB,MAAM,EAAE,CAAC,UAAU,CAAC;AACpB,yBAAA;AACD,qBAAA;AACD,oBAAA,IAAI,EAAE;AACL,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,cAAc,EAAE,YAAY;AAC5B,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,oBAAoB,EAAE,gCAAgC;AACtD,wBAAA,qBAAqB,EAAE,kCAAkC;AACzD,wBAAA,WAAW,EAAE,sBAAsB;AACnC,qBAAA;AACD,iBAAA;;;AClBM,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAmB,kBAAkB,CAAC;SAExE,sBAAsB,GAAA;IACrC,OAAO,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpD;AAEM,SAAU,uBAAuB,CAAC,aAAqC,EAAA;IAC5E,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE;AAChE;;ACSA,SAAS,oBAAoB,CAAC,IAAe,EAAE,IAAe,EAAA;AAC7D,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK;AAC7C,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD;MAaa,iBAAiB,CAAA;AACZ,IAAA,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;AAC7B,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACtB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAC/B,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE1D,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;IAChD,aAAa,GAAG,sBAAsB,EAAE;AAExD;;AAEG;IACa,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEvC;;AAEG;AACa,IAAA,aAAa,GAAG,KAAK,CAAS,GAAG,oFAAC;AAElD;;AAEG;AACa,IAAA,iBAAiB,GAAG,KAAK,CAAS,GAAG,wFAAC;AAEtD;;;AAGG;AACa,IAAA,MAAM,GAAG,KAAK,CAAoB,OAAO,6EAAC;;AAG1C,IAAA,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW;AAEjD;;AAEG;AACa,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;AAE3D,IAAA,cAAc,GAAG,MAAM,CAAC,IAAI,qFAAC;AAC9B,IAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAExD,IAAA,kBAAkB;IAET,sBAAsB,GAAG,eAAe,CAAC,qBAAqB,8FAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AAEvF,IAAA,SAAS,GAAG,QAAQ,CACnC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,EAAE,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAE9E,KAAK,EAAE,oBAAoB,GAE5B;IAEe,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAElE,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAEhF,cAAc,GAAG,QAAQ,CAAC,MAC1C,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,YAAY,qBAAqB,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC9E;AAEgB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,OAAO,IAAI,eAAe,CAAkB,IAAI,CAAC,iBAAiB,EAAE;AAClE,aAAA,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE;AAC1C,aAAA,cAAc;AACd,aAAA,cAAc;AACd,aAAA,QAAQ;AACR,aAAA,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrC,IAAA,CAAC,kFAAC;AAEe,IAAA,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACvD,QAAQ,EAAE,EACV,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,EAC7D,GAAG,CAAC,MAAM,SAAS,CAAC,CACpB;IAEgB,SAAS,GAAG,KAAK,CACjC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAClG,IAAI,CAAC,OAAO,CACZ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAEX,gBAAgB,GAAG,KAAK,CACxC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAC7C,SAAS,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAC7E,EACD,IAAI,CAAC,OAAO,CACZ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAEZ,IAAA,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IAE5C,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEtG,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;YACX,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;YACzC,MAAM,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC;YAEzD,IAAI,MAAM,EAAE;AACX,gBAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACrC,gBAAA,IAAI,oBAAoB;AAAE,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;YACzD;iBAAO;AACN,gBAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACrC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,MAAK;AACzC,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,gBAAA,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7B;AACD,QAAA,CAAC,CAAC;AAEF,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAC7E,aAAA,IAAI,CACJ,YAAY,CAAC,CAAC,CAAC,EACf,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,CAAC,CAAC,EAC/F,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,KAAI;YACvD,MAAM,WAAW,GAAG,CAAC,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc;;YAElE,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE;AAC7C,gBAAA,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/E;YACA,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAU,CAAC;QAC9D,CAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;aAEzB,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,KAAI;YACxD,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE;AACnD,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YAC1B;AACD,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACI,IAAA,iBAAiB,CAAC,OAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;IACvC;AAEO,IAAA,MAAM,CAAC,EAAW,EAAA;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;IAChE;AAEO,IAAA,aAAa,CAAC,IAAqB,EAAA;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IACvC;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;IACpC;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzB,QAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACtC;2HAxJY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EATlB,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC,iEAoDE,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FA3CnE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE,CAAC,wBAAwB,CAAA,iBAAA,CAAmB,CAAC;AACxD,oBAAA,IAAI,EAAE;AACL,wBAAA,WAAW,EAAE,uBAAuB;AACpC,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,YAAY,EAAE,aAAa;AAC3B,wBAAA,YAAY,EAAE,MAAM;AACpB,wBAAA,WAAW,EAAE,iBAAiB;AAC9B,qBAAA;AACD,iBAAA;AA4C0D,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,qBAAqB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCxE1F,wBAAwB,CAAA;IACnB,eAAe,GAAG,uBAAuB,EAAE;IAC3C,mBAAmB,GAAG,2BAA2B,EAAE;AACnD,IAAA,eAAe,GAAG,MAAM,CAAC,+BAA+B,CAAC;AACzD,IAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEzC,IAAA,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAC1C,IAAA,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;AAEtD,IAAA,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE;AACjC,IAAA,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC7C,IAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS;AAC/C,IAAA,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAEvC,IAAA,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS;AAE3C,IAAA,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW;AAChD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,WAAW,mFAAC;AACzE,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,GAAG,2EAAC;AAE1E,IAAA,WAAA,GAAA;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;QAChB,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;QAEhF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,EAAE;gBACP,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC;gBAChD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,yBAAyB,CAAC;YACxE;AACD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,EAAE;AACP,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7D;AACD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,EAAE;AACP,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YACzE;AACD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;AACvB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;YAEvC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,YAAA,IAAI,CAAC,EAAE;gBAAE;AAET,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,YAAA,MAAM,YAAY,GACjB,GAAG,KAAK,KAAK,IAAI,WAAW,KAAK,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;YAE9G,IAAI,QAAQ,EAAE;AACb,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACjD,gBAAA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEjF,gBAAA,IAAI,gBAAgB,IAAI,CAAC,UAAU,EAAE;oBACpC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,UAAU,GAAG,YAAY;oBAC5G,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC;gBACvD;YACD;iBAAO,IAAI,SAAS,EAAE;AACrB,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;AACzC,gBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACzE,IAAI,CAAC,YAAY,IAAI,MAAM;oBAAE;gBAE7B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,GAAG,UAAU;gBACpG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC;YACvD;AACD,QAAA,CAAC,CAAC;IACH;2HA/EY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,yEAFzB,CAAC,uBAAuB,EAAC,OAAO,EAAE,cAAc,EAAE,IAAI,OAAO,EAAW,EAAE,CAAC,EAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAE5E,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,SAAS,EAAE,CAAC,uBAAuB,EAAC,OAAO,EAAE,cAAc,EAAE,IAAI,OAAO,EAAW,EAAE,CAAC,EAAC,CAAC;AACxF,iBAAA;;;MCAY,qBAAqB,CAAA;IAChB,eAAe,GAAG,uBAAuB,EAAE;AAEzC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,WAAW,mFAAC;2HAHhF,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE;AACL,wBAAA,yBAAyB,EAAE,gBAAgB;AAC3C,wBAAA,WAAW,EAAE,sBAAsB;AACnC,qBAAA;AACD,iBAAA;;;MCuDY,wBAAwB,CAAA;AAC5B,IAAA,OAAO,GAAG,GAAG,CAAC;IAEL,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACnD,eAAe,GAAG,uBAAuB,EAAE;IAC3C,mBAAmB,GAAG,2BAA2B,EAAE;AACnD,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAC/B,IAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/B,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACtB,IAAA,GAAG,GAAG,MAAM,CAA0B,UAAU,CAAC;AACjD,IAAA,eAAe,GAAG,MAAM,CAAC,+BAA+B,CAAC;AAE1D,IAAA,KAAK,GAAG,KAAK,CAAY,OAAO,4EAAC;AAE9B,IAAA,GAAG,GAAG,CAAA,4BAAA,EAA+B,EAAE,wBAAwB,CAAC,GAAG,EAAE;AAEvE,IAAA,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;AAEjD,IAAA,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAE7C,IAAA,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE;AAEpC,IAAA,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAEzC,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,GAAG,2EAAC;AAEzD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,WAAW,mFAAC;AAEzE,IAAA,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;AAEnD,IAAA,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;AAEnD,IAAA,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe;IAE3D,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC/G,QAAA,YAAY,EAAE,KAAK;AACnB,KAAA,CAAC;AAEe,IAAA,UAAU,GAA6B,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC3G,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CACjD;IAEgB,SAAS,GAA6B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CACrG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,EAC/C,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CACnD;IAEgB,SAAS,GAA6B,KAAK,CAC3D,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EACzE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CACnF,CAAC,IAAI;;AAEL,IAAA,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;AAE3D,IAAA,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;AAErD,IAAA,MAAM,CAAC,CAAC,CAAC,KAAI;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,SAAS;;QAE7D,OAAO,MAAM,KAAK,OAAO,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK;AACpD,IAAA,CAAC,CAAC;;AAEF,IAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,QAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE;AAC1D,YAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7B;AACA,QAAA,OAAO,EAAE,CAAC,CAAC,CAAC;AACb,IAAA,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAC1F;IAEgB,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CACvF,YAAY,CAAC,CAAC,CAAC,EACf,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,EACnE,SAAS,CAAC,CAAC,EAAE,KAAI;AAChB,QAAA,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE;QAC9E,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;AACnE,IAAA,CAAC,CAAC;;;AAGF,IAAA,GAAG,CAAC,CAAC,EAAE,KAAI;AACV,QAAA,IAAI,EAAE,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;QACjB;aAAO;YACN,MAAM,gBAAgB,GACrB,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YAE5F,IAAI,gBAAgB,EAAE;gBACrB,IAAI,CAAC,WAAW,EAAE;YACnB;QACD;AACD,IAAA,CAAC,CAAC,EACF,KAAK,EAAE,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CACzB;AAED,IAAA,IAAW,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;IAC3C;AAEA,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACrC,SAAS,CAAC,MAAK;gBACd,IAAI,KAAK,EAAE;oBACV,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;gBAClD;AACD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;YACvC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACpD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;YACvB,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC;AAC1C,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEO,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG;AAClB,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;AACtB,YAAA,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAC/D,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;YACpD;AAEA,YAAA,IAAI,EAAE,CAAC,OAAO,EAAE;AACf,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACpB,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;gBAC5B;YACD;iBAAO;AACN,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;YAC5B;AACD,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACnF,CAAC,CAAC,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE;YAC9B,IAAI,CAAC,WAAW,EAAE;AACnB,QAAA,CAAC,CAAC;IACH;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC1B;AAEO,IAAA,KAAK,CAAC,OAAqB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YAAE;AAEzC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE;IAC/B;IAEU,WAAW,GAAA;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC;IACzC;AAEU,IAAA,KAAK,CAAC,CAAQ,EAAA;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;QAElD,IAAI,SAAS,IAAI,CAAC,cAAc,CAAC,CAAkB,CAAC,EAAE;YACrD,CAAC,CAAC,cAAc,EAAE;YAClB,SAAS,CAAC,KAAK,EAAE;QAClB;IACD;AAEU,IAAA,QAAQ,CAAC,CAAQ,EAAA;QAC1B,CAAC,CAAC,cAAc,EAAE;QAClB,IAAI,CAAC,WAAW,EAAE;IACnB;IAEQ,SAAS,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC;IAC9D;IAEQ,WAAW,GAAA;QAClB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;IAC1C;AAEQ,IAAA,iBAAiB,CAAC,EAAgB,EAAA;AACzC,QAAA,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,CAAC;AAAE,YAAA,OAAO,KAAK;QAErE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,aAAa,CAAC;QAE1D,OAAO,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1C;AAEQ,IAAA,kBAAkB,CAAC,IAAU,EAAA;QACpC,OAAO,IAAI,CAAC;AACV,aAAA,SAAS;aACT,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtF;2HAlNY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,ygBAlBzB,CAAC,iCAAiC,CAAC,wBAAwB,CAAC,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAkB5D,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBApBpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,SAAS,EAAE,CAAC,iCAAiC,CAAA,wBAAA,CAA0B,CAAC;AACxE,oBAAA,cAAc,EAAE;AACf,wBAAA;AACC,4BAAA,SAAS,EAAE,SAAS;4BACpB,MAAM,EAAE,CAAC,UAAU,CAAC;AACpB,yBAAA;AACD,qBAAA;AACD,oBAAA,IAAI,EAAE;AACL,wBAAA,kBAAkB,EAAE,kBAAkB;AACtC,wBAAA,eAAe,EAAE,eAAe;AAChC,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,mBAAmB,EAAE,UAAU;AAC/B,wBAAA,sBAAsB,EAAE,aAAa;AACrC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,WAAW,EAAE,yBAAyB;AACtC,qBAAA;AACD,iBAAA;;;ACjDM,MAAM,wBAAwB,GAAG;IACvC,iBAAiB;IACjB,qBAAqB;IACrB,qBAAqB;IACrB,wBAAwB;IACxB,wBAAwB;IACxB,qBAAqB;;;ACpBtB;;AAEG;;;;"}
1
+ {"version":3,"file":"spartan-ng-brain-navigation-menu.mjs","sources":["../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.service.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item-focusable.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-link.ts","../../../../libs/brain/navigation-menu/src/lib/brn-parent-nav-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-list.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-tabbable.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-trigger.ts","../../../../libs/brain/navigation-menu/src/index.ts","../../../../libs/brain/navigation-menu/src/spartan-ng-brain-navigation-menu.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayConfig,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tElementRef,\n\tinject,\n\tInjectable,\n\tNgZone,\n\tRenderer2,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport {\n\tcreateHoverObservable,\n\tcreateMenuPosition,\n\ttype MenuAlign,\n\twaitForElementAnimations,\n} from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, Observable, of, Subject } from 'rxjs';\nimport { map, share, switchMap, takeUntil } from 'rxjs/operators';\n\nexport type BrnNavigationMenuContentOptions = Partial<\n\t{\n\t\tattachTo: ElementRef<HTMLElement>;\n\t\torientation: 'horizontal' | 'vertical';\n\t\talign: MenuAlign;\n\t} & OverlayConfig\n>;\n\nconst horizontalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n];\n\nconst verticalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n];\n\n@Injectable()\nexport class BrnNavigationMenuContentService {\n\tprivate static _id = 0;\n\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\n\tpublic readonly id = `brn-navigation-menu-content-${++BrnNavigationMenuContentService._id}`;\n\n\tprivate _shouldDetach = false;\n\n\tprivate _config: BrnNavigationMenuContentOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _contentEl = signal<HTMLElement | undefined>(undefined);\n\tpublic readonly contentEl = this._contentEl.asReadonly();\n\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tprivate readonly _overlayTabObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tprivate readonly _overlayEscapeObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable !== undefined ? overlayHoveredObservable : of())),\n\t\tshare(),\n\t);\n\n\t/** Emits `Tab`/`Shift+Tab` keydowns bubbling up the content panel so the trigger can manage focus. */\n\tpublic readonly tabPressed$ = this._overlayTabObservables$.pipe(\n\t\tswitchMap((tab$) => (tab$ !== undefined ? tab$ : of())),\n\t);\n\n\tpublic readonly escapePressed$ = this._overlayEscapeObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tpublic setConfig(config: BrnNavigationMenuContentOptions) {\n\t\tthis._config = config;\n\n\t\tif (config.attachTo) {\n\t\t\tconst positions = this._getPositions(config.orientation);\n\t\t\tthis._positionStrategy = this._buildPositionStrategy(config.attachTo, positions);\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t}\n\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic updateOrientation(orientation: 'horizontal' | 'vertical') {\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic updateDirection(dir: Direction) {\n\t\tthis._overlayRef?.setDirection(dir);\n\t}\n\n\tpublic updateAlign(align: MenuAlign) {\n\t\tthis._config = { ...this._config, align };\n\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst orientation = this._config.orientation;\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown>, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\t\tthis._shouldDetach = false;\n\n\t\tthis._overlayRef?.detach();\n\t\tconst embededViewRef = this._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tconst contentEl = embededViewRef.rootNodes[0] as HTMLElement;\n\n\t\tconst attachToId = this._config.attachTo?.nativeElement.id;\n\n\t\tthis._renderer.setAttribute(contentEl, 'id', this.id);\n\t\tif (attachToId !== undefined) {\n\t\t\tthis._renderer.setAttribute(contentEl, 'aria-labelledby', attachToId);\n\t\t}\n\n\t\tthis._contentEl.set(contentEl);\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\n\t\tthis._overlayTabObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\t// Forward Tab/Shift+Tab without meta modifiers; the trigger decides how to keep focus in the menu\n\t\t\t\tswitchMap((e) => (e.key === 'Tab' && !e.altKey && !e.ctrlKey && !e.metaKey ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\n\t\tthis._overlayEscapeObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Escape' && !hasModifierKey(e) ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async hide() {\n\t\tconst contentEl = this._contentEl();\n\t\tif (!contentEl) return;\n\n\t\tthis._shouldDetach = true;\n\t\tif (!this._hasAnimation()) {\n\t\t\tthis._detach();\n\t\t}\n\n\t\tawait waitForElementAnimations(contentEl);\n\t\tthis._detach();\n\t}\n\n\tprivate readonly _detach = () => {\n\t\tif (!this._shouldDetach) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._contentEl.set(undefined);\n\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t};\n\n\tprivate _hasAnimation() {\n\t\tconst contentEl = this.contentEl();\n\t\tif (!contentEl) return;\n\n\t\treturn getComputedStyle(contentEl).animationName !== 'none';\n\t}\n\n\tprivate _getPositions(orientation?: 'horizontal' | 'vertical') {\n\t\tconst align = this._config.align;\n\t\tif (align) {\n\t\t\tconst side = orientation === 'vertical' ? 'right' : 'bottom';\n\t\t\treturn createMenuPosition(align, side);\n\t\t}\n\t\treturn orientation === 'vertical' ? verticalPositions : horizontalPositions;\n\t}\n\n\tprivate _buildPositionStrategy(attachTo: ElementRef, positions: ConnectedPosition[]) {\n\t\treturn this._psBuilder\n\t\t\t.flexibleConnectedTo(attachTo)\n\t\t\t.withPositions(positions)\n\t\t\t.withDefaultOffsetY(0)\n\t\t\t.withDefaultOffsetX(0)\n\t\t\t.withPush(false);\n\t}\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\n\nexport const BrnNavigationMenuFocusable = new InjectionToken<FocusableOption>('BrnNavigationMenuFocusable');\n\nexport function provideBrnNavigationMenuFocusable<T extends FocusableOption>(focusable: Type<T>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuFocusable, useExisting: focusable };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenuItem } from './brn-navigation-menu-item';\n\nexport const BrnNavigationMenuItemToken = new InjectionToken<BrnNavigationMenuItem>('BrnNavigationMenuItemToken');\n\nexport function injectBrnNavigationMenuItem(): BrnNavigationMenuItem {\n\treturn inject(BrnNavigationMenuItemToken);\n}\n\nexport function provideBrnNavigationMenuItem(navigationMenuItem: Type<BrnNavigationMenuItem>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuItemToken, useExisting: navigationMenuItem };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenu } from './brn-navigation-menu';\n\nexport const BrnNavigationMenuToken = new InjectionToken<BrnNavigationMenu>('BrnNavigationMenuToken');\n\nexport function injectBrnNavigationMenu(): BrnNavigationMenu {\n\treturn inject(BrnNavigationMenuToken);\n}\n\nexport function provideBrnNavigationMenu(navigationMenu: Type<BrnNavigationMenu>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuToken, useExisting: navigationMenu };\n}\n","import { computed, contentChild, Directive, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { Observable, Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { provideBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'li[brnNavigationMenuItem]',\n\tproviders: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'[attr.data-disabled]': 'disabled() || null',\n\t\t'[attr.data-active]': 'isActive() ? \"true\" : null',\n\t\t'data-slot': 'navigation-menu-item',\n\t},\n})\nexport class BrnNavigationMenuItem {\n\tprivate static _id = 0;\n\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly navMenuElRef = this._navigationMenu.el;\n\n\t/** The id of the navigation menu item */\n\tpublic readonly id = input<string>(`brn-navigation-menu-item-${++BrnNavigationMenuItem._id}`);\n\n\tpublic readonly isActive = computed(() => this.id() === this._navigationMenu.value());\n\n\tpublic readonly wasActive = computed(() => this.id() === this._navigationMenu.previousValue());\n\n\tpublic readonly state = computed(() => (this.isActive() ? 'open' : 'closed'));\n\n\tpublic readonly contentTemplate = signal<TemplateRef<unknown> | null>(null);\n\n\tpublic readonly contentHovered$ = this._contentService.hovered$;\n\n\tpublic readonly subNavVisible$ = new Subject<Observable<boolean>>();\n\n\tpublic readonly focusable = contentChild.required(BrnNavigationMenuFocusable);\n\n\tprivate readonly _triggerOrLinkBtn = contentChild.required(BrnNavigationMenuFocusable, { read: BrnButton });\n\n\tpublic readonly disabled = computed(() => this._triggerOrLinkBtn().disabled());\n}\n","import type { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'a[brnNavigationMenuLink]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[attr.data-active]': '_isActive() ? true : undefined',\n\t\t'[attr.aria-current]': '_isActive() ? \"page\" : undefined',\n\t\t'data-slot': 'navigation-menu-link',\n\t},\n})\nexport class BrnNavigationMenuLink implements FocusableOption {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _el = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n\t// Returns false if this BrnNavigationMenuLink is used \"standalone\", meaning it doesn't have a parent BrnNavigationMenuItem element.\n\tprivate readonly _hasParentNavMenuItem =\n\t\tthis._el.nativeElement.parentElement === this._navigationMenuItem.el.nativeElement;\n\n\t/**\n\t * Used to identify the link as the currently active page.\n\t */\n\tpublic readonly active = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tprotected readonly _isActive = computed(() => {\n\t\tconst active = this.active();\n\t\tif (active !== undefined) return active;\n\n\t\tif (!this._hasParentNavMenuItem) return false;\n\n\t\treturn this._navigationMenuItem.isActive();\n\t});\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (!this._hasParentNavMenuItem || this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onClick() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprotected activate() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\n\t\t// Only activate on hover if openOn is 'hover' or menu is already open\n\t\tconst openOn = this._navigationMenu.openOn();\n\t\tconst isMenuOpen = this._navigationMenu.value() !== undefined;\n\t\tif (openOn === 'click' && !isMenuOpen) return;\n\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n}\n","import { type FactoryProvider, inject, InjectionToken } from '@angular/core';\nimport type { Subject } from 'rxjs';\n\nexport interface BrnParentNavMenu {\n\tsubNavVisible$: Subject<boolean>;\n}\n\nexport const BrnParentNavMenu = new InjectionToken<BrnParentNavMenu>('BrnParentNavMenu');\n\nexport function injectBrnParentNavMenu(): BrnParentNavMenu | null {\n\treturn inject(BrnParentNavMenu, { optional: true });\n}\n\nexport function provideBrnParentNavMenu(parentNavMenu: () => BrnParentNavMenu): FactoryProvider {\n\treturn { provide: BrnParentNavMenu, useFactory: parentNavMenu };\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\tOnDestroy,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { computedPrevious, createHoverObservable, injectSkipDelay } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, combineLatest, merge, of, Subject } from 'rxjs';\nimport { debounceTime, delay, filter, map, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './brn-navigation-menu-link';\nimport { provideBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { injectBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\nfunction areArraysSameByElRef(arr1: unknown[], arr2: unknown[]) {\n\tif (arr1.length !== arr2.length) return false;\n\treturn arr1.every((item, index) => item === arr2[index]);\n}\n\n@Directive({\n\tselector: 'nav[brnNavigationMenu]',\n\tproviders: [provideBrnNavigationMenu(BrnNavigationMenu)],\n\thost: {\n\t\t'(keydown)': 'handleKeydown($event)',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t\t'[attr.dir]': 'direction()',\n\t\t'aria-label': 'Main',\n\t\t'data-slot': 'navigation-menu',\n\t},\n})\nexport class BrnNavigationMenu implements OnDestroy {\n\tprivate readonly _dir = inject(Directionality);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _anyTriggerHovered$ = new BehaviorSubject<boolean>(false);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tpublic readonly parentNavMenu = injectBrnParentNavMenu();\n\n\t/**\n\t * The controlled value of the menu item to activate.\n\t */\n\tpublic readonly value = model<string>();\n\n\t/**\n\t * The duration from when the mouse enters a trigger until the content opens.\n\t */\n\tpublic readonly delayDuration = input<number>(200);\n\n\t/**\n\t * How much time a user has to enter another trigger without incurring a delay again.\n\t */\n\tpublic readonly skipDelayDuration = input<number>(300);\n\n\t/**\n\t * Controls whether the menu opens on hover or click.\n\t * When 'click', initial open requires a click, but hover still switches between items once open.\n\t */\n\tpublic readonly openOn = input<'hover' | 'click'>('hover');\n\n\t/** internal **/\n\tpublic readonly direction = this._dir.valueSignal;\n\n\t/**\n\t * The orientation of the menu.\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n\tprivate readonly _skipDelay = injectSkipDelay(() => this.skipDelayDuration());\n\tpublic readonly isOpenDelayed = this._skipDelay.isOpenDelayed;\n\n\tprivate readonly _navAndSubnavMenuItems = contentChildren(BrnNavigationMenuItem, { descendants: true });\n\n\tpublic readonly menuItems = computed(\n\t\t() => this._navAndSubnavMenuItems().filter((mi) => mi.navMenuElRef === this.el),\n\t\t{\n\t\t\tequal: areArraysSameByElRef,\n\t\t},\n\t);\n\n\tpublic readonly menuItemIds = computed(() => this.menuItems().map((mi) => mi.id()));\n\n\tprivate readonly _triggersAndLinks = computed(() => this.menuItems().map((mi) => mi.focusable()));\n\n\tprivate readonly _linkMenuItems = computed(() =>\n\t\tthis.menuItems().filter((i) => i.focusable() instanceof BrnNavigationMenuLink),\n\t);\n\n\tprivate readonly _keyManager = computed(() => {\n\t\treturn new FocusKeyManager<FocusableOption>(this._triggersAndLinks())\n\t\t\t.withHorizontalOrientation(this.direction())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((e) => !!e.disabled);\n\t});\n\n\tprivate readonly _reset$ = toObservable(this.value).pipe(\n\t\tpairwise(),\n\t\tfilter(([prev, curr]) => curr === undefined && curr !== prev),\n\t\tmap(() => undefined),\n\t);\n\n\tprivate readonly _hovered$ = merge(\n\t\tcreateHoverObservable(this.el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tprivate readonly _contentHovered$ = merge(\n\t\ttoObservable(this._navAndSubnavMenuItems).pipe(\n\t\t\tswitchMap((menuItems) => merge(...menuItems.map((mi) => mi.contentHovered$))),\n\t\t),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tpublic readonly previousValue = computedPrevious(this.value);\n\n\tpublic readonly context = computed(() => ({ orientation: this.orientation(), dir: this.direction() }));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tif (this.value() !== undefined) this._skipDelay.open();\n\t\t\telse this._skipDelay.close();\n\t\t});\n\n\t\tcombineLatest([this._hovered$, this._contentHovered$, this._anyTriggerHovered$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tfilter(([hovered, contentHovered]) => !(hovered === undefined && contentHovered === undefined)),\n\t\t\t\tswitchMap(([hovered, contentHovered, triggerHovered]) => {\n\t\t\t\t\tconst shouldClose = !hovered && !contentHovered && !triggerHovered;\n\t\t\t\t\t// Add delay before closing in click mode to allow for sibling hover transitions\n\t\t\t\t\tif (shouldClose && this.openOn() === 'click') {\n\t\t\t\t\t\treturn of([hovered, contentHovered, triggerHovered] as const).pipe(delay(150));\n\t\t\t\t\t}\n\t\t\t\t\treturn of([hovered, contentHovered, triggerHovered] as const);\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t)\n\t\t\t.subscribe(([hovered, contentHovered, triggerHovered]) => {\n\t\t\t\tif (!hovered && !contentHovered && !triggerHovered) {\n\t\t\t\t\tthis.value.set(undefined);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Called by triggers to report their hover state for coordination.\n\t * @internal\n\t */\n\tpublic setTriggerHovered(hovered: boolean) {\n\t\tthis._anyTriggerHovered$.next(hovered);\n\t}\n\n\tpublic isLink(id?: string): boolean {\n\t\treturn !!this._linkMenuItems().find((item) => item.id() === id);\n\t}\n\n\tpublic setActiveItem(item: FocusableOption) {\n\t\tthis._keyManager().setActiveItem(item);\n\t}\n\n\t/** Focuses the sibling trigger/link `delta` steps from `current`, skipping disabled ones. @internal */\n\tpublic focusSibling(current: FocusableOption, delta: 1 | -1): boolean {\n\t\tconst items = this._triggersAndLinks();\n\t\tconst idx = items.indexOf(current);\n\t\tif (idx === -1) return false;\n\n\t\tfor (let i = idx + delta; i >= 0 && i < items.length; i += delta) {\n\t\t\tconst candidate = items[i];\n\t\t\tif (!candidate.disabled) {\n\t\t\t\tthis._keyManager().setActiveItem(candidate);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected handleKeydown(event: KeyboardEvent) {\n\t\tthis._keyManager().onKeydown(event);\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, untracked } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { BrnParentNavMenu, provideBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\n@Directive({\n\tselector: '[brnNavigationMenuContent]',\n\tproviders: [provideBrnParentNavMenu(() => ({ subNavVisible$: new Subject<boolean>() }))],\n})\nexport class BrnNavigationMenuContent {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\tprivate readonly _tpl = inject(TemplateRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _subNavContext = inject(BrnParentNavMenu);\n\n\tprivate readonly _navMenuValue = this._navigationMenu.value;\n\tprivate readonly _prevNavMenuValue = this._navigationMenu.previousValue;\n\n\tprivate readonly _id = this._navigationMenuItem.id;\n\tprivate readonly _isActive = this._navigationMenuItem.isActive;\n\tprivate readonly _wasActive = this._navigationMenuItem.wasActive;\n\tprivate readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _contentEl = this._contentService.contentEl;\n\n\tprivate readonly _menuItemsIds = this._navigationMenu.menuItemIds;\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tconstructor() {\n\t\tif (!this._tpl) return;\n\t\tthis._navigationMenuItem.contentTemplate.set(this._tpl);\n\t\tthis._navigationMenuItem.subNavVisible$.next(this._subNavContext.subNavVisible$);\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'tabindex', '0');\n\t\t\t\tthis._renderer.setAttribute(el, 'data-slot', 'navigation-menu-content');\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-state', this._state());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-orientation', this._orientation());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst isActive = this._isActive();\n\t\t\tconst wasActive = this._wasActive();\n\t\t\tconst dir = this._dir();\n\t\t\tconst orientation = this._orientation();\n\n\t\t\tconst el = untracked(this._contentEl);\n\t\t\tif (!el) return;\n\n\t\t\tconst id = this._id();\n\t\t\tconst menuItemsIds =\n\t\t\t\tdir === 'rtl' && orientation === 'horizontal' ? this._menuItemsIds().slice().reverse() : this._menuItemsIds();\n\n\t\t\tif (isActive) {\n\t\t\t\tconst prevNavMenuValue = this._prevNavMenuValue();\n\t\t\t\tconst isPrevLink = untracked(() => this._navigationMenu.isLink(prevNavMenuValue));\n\n\t\t\t\tif (prevNavMenuValue && !isPrevLink) {\n\t\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(prevNavMenuValue) ? 'from-end' : 'from-start';\n\t\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t\t}\n\t\t\t} else if (wasActive) {\n\t\t\t\tconst navMenuValue = this._navMenuValue();\n\t\t\t\tconst isLink = untracked(() => this._navigationMenu.isLink(navMenuValue));\n\t\t\t\tif (!navMenuValue || isLink) return;\n\n\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(navMenuValue) ? 'to-end' : 'to-start';\n\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'ul[brnNavigationMenuList]',\n\thost: {\n\t\t'[attr.data-orientation]': '_orientation()',\n\t\t'data-slot': 'navigation-menu-list',\n\t},\n})\nexport class BrnNavigationMenuList {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\n\tprotected readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n}\n","/** Returns the tabbable elements inside `container`, in DOM order. Ported from Radix's navigation menu. */\nexport function getTabbableCandidates(container: HTMLElement): HTMLElement[] {\n\tconst nodes: HTMLElement[] = [];\n\t// `.tabIndex` reflects the runtime's view of tabbability, so it covers links/buttons/[tabindex] alike.\n\tconst walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n\t\tacceptNode: (node: unknown) => {\n\t\t\tconst el = node as HTMLElement & { type?: string; disabled?: boolean };\n\t\t\tconst isHiddenInput = el.tagName === 'INPUT' && el.type === 'hidden';\n\t\t\tif (el.disabled || el.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n\t\t\treturn el.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n\t\t},\n\t});\n\twhile (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n\treturn nodes;\n}\n\n/** Focuses the first candidate that can take focus; returns whether focus landed on a candidate. */\nexport function focusFirst(candidates: HTMLElement[]): boolean {\n\tconst previouslyFocused = document.activeElement;\n\treturn candidates.some((candidate) => {\n\t\t// already where we want to be - stop walking\n\t\tif (candidate === previouslyFocused) return true;\n\t\tcandidate.focus();\n\t\treturn document.activeElement !== previouslyFocused;\n\t});\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tPLATFORM_ID,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { createHoverObservable, isElement, type MenuAlign } from '@spartan-ng/brain/core';\nimport { fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport {\n\tdebounceTime,\n\tdelay,\n\tdistinctUntilChanged,\n\tfilter,\n\tmap,\n\tshare,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n} from 'rxjs/operators';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { focusFirst, getTabbableCandidates } from './brn-navigation-menu-tabbable';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\ninterface TriggerEvent {\n\ttype: 'click' | 'hover' | 'set';\n\tvisible: boolean;\n\trelatedTarget?: EventTarget | null;\n}\n\n@Directive({\n\tselector: 'button[brnNavigationMenuTrigger]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t\t'(keydown.tab)': 'onTab($event)',\n\t\t'(keydown.arrowDown)': 'onEntryKey($event, \"horizontal\")',\n\t\t'(keydown.arrowRight)': 'onEntryKey($event, \"vertical\", \"ltr\")',\n\t\t'(keydown.arrowLeft)': 'onEntryKey($event, \"vertical\", \"rtl\")',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[id]': '_id',\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.aria-expanded]': '_isActive()',\n\t\t'[attr.aria-controls]': '_ariaControls()',\n\t\t'data-slot': 'navigation-menu-trigger',\n\t},\n})\nexport class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOption {\n\tprivate static _id = 0;\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly align = input<MenuAlign>('start');\n\n\tprotected readonly _id = `brn-navigation-menu-trigger-${++BrnNavigationMenuTrigger._id}`;\n\n\tprivate readonly _parentNavMenu = this._navigationMenu.parentNavMenu;\n\n\tprotected readonly _isActive = this._navigationMenuItem.isActive;\n\n\t// Only reference the content panel while it is open, matching Radix's aria-controls behaviour.\n\tprotected readonly _ariaControls = computed(() => (this._isActive() ? this._contentId : null));\n\n\tprotected readonly _contentId = this._contentService.id;\n\n\tprotected readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\n\tprivate readonly _isOpenDelayed = this._navigationMenu.isOpenDelayed;\n\n\tprivate readonly _delayDuration = this._navigationMenu.delayDuration;\n\n\tprivate readonly _contentTemplate = this._navigationMenuItem.contentTemplate;\n\n\tprivate readonly _isSubNavVisible = toSignal(this._navigationMenuItem.subNavVisible$.pipe(switchMap((c) => c)), {\n\t\tinitialValue: false,\n\t});\n\n\tprivate readonly _isActive$: Observable<TriggerEvent> = toObservable(this._navigationMenuItem.isActive).pipe(\n\t\tmap((value) => ({ type: 'set', visible: value })),\n\t);\n\n\tprivate readonly _clicked$: Observable<TriggerEvent> = fromEvent(this._el.nativeElement, 'click').pipe(\n\t\tmap(() => !this._navigationMenuItem.isActive()),\n\t\tmap((value) => ({ type: 'click', visible: value })),\n\t);\n\n\tprivate readonly _hovered$: Observable<TriggerEvent> = merge(\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$.pipe(map((v) => ({ hover: v, relatedTarget: null }))),\n\t).pipe(\n\t\t// Report hover state to parent for coordination\n\t\ttap((e) => this._navigationMenu.setTriggerHovered(e.hover)),\n\t\t// Hover event is NOT allowed when a sub-navigation is currently visible, AND the current hover event is false.\n\t\tfilter((e) => !(this._isSubNavVisible() && !e.hover)),\n\t\t// Block hover-open when openOn='click' and no menu is currently open\n\t\tfilter((e) => {\n\t\t\tconst openOn = this._navigationMenu.openOn();\n\t\t\tconst isMenuOpen = this._navigationMenu.value() !== undefined;\n\t\t\t// Allow if: openOn is 'hover', OR menu is already open, OR this is hover-out\n\t\t\treturn openOn === 'hover' || isMenuOpen || !e.hover;\n\t\t}),\n\t\t// Add stabilization delay for hover-out in click mode to prevent race conditions\n\t\tswitchMap((e) => {\n\t\t\tif (!e.hover && this._navigationMenu.openOn() === 'click') {\n\t\t\t\treturn of(e).pipe(delay(50));\n\t\t\t}\n\t\t\treturn of(e);\n\t\t}),\n\t\tmap((e) => ({ type: 'hover' as const, visible: e.hover, relatedTarget: e.relatedTarget })),\n\t);\n\n\tprivate readonly _showing$ = merge(this._isActive$, this._clicked$, this._hovered$).pipe(\n\t\tdebounceTime(0),\n\t\tdistinctUntilChanged((prev, curr) => prev.visible === curr.visible),\n\t\tswitchMap((ev) => {\n\t\t\tconst shouldDelay = ev.visible && ev.type !== 'click' && this._isOpenDelayed();\n\t\t\treturn of(ev).pipe(delay(shouldDelay ? this._delayDuration() : 0));\n\t\t}),\n\t\t// Deactivate needs to be called if the menu item content is hidden with a user click OR\n\t\t// If nav item is hovered out to a disabled sibling nav item\n\t\ttap((ev) => {\n\t\t\tif (ev.visible) {\n\t\t\t\tthis._activate();\n\t\t\t} else {\n\t\t\t\tconst shouldDeactivate =\n\t\t\t\t\t(ev.type === 'click' || !this._isHoverOnSibling(ev)) && this._navigationMenuItem.isActive();\n\n\t\t\t\tif (shouldDeactivate) {\n\t\t\t\t\tthis._deactivate();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._contentTemplate();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateAlign(align);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst orientation = this._orientation();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateOrientation(orientation);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst dir = this._dir();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateDirection(dir);\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({\n\t\t\tattachTo: this._el,\n\t\t\tdirection: this._dir(),\n\t\t\torientation: this._orientation(),\n\t\t\talign: this.align(),\n\t\t});\n\t\tthis._showing$.pipe(takeUntil(this._destroy$)).subscribe((ev) => {\n\t\t\tif (this._parentNavMenu) {\n\t\t\t\tthis._parentNavMenu.subNavVisible$.next(ev.visible);\n\t\t\t}\n\n\t\t\tif (ev.visible) {\n\t\t\t\tif (this._isBrowser) {\n\t\t\t\t\tthis._contentService.show();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis._contentService.escapePressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n\t\t\te.preventDefault();\n\t\t\tthis._el.nativeElement.focus();\n\t\t\tthis._deactivate();\n\t\t});\n\n\t\tthis._contentService.tabPressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => this._handleContentTab(e));\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onTab(e: Event) {\n\t\tconst contentEl = this._contentService.contentEl();\n\n\t\tif (contentEl && !hasModifierKey(e as KeyboardEvent)) {\n\t\t\te.preventDefault();\n\t\t\tthis._focusFirstContent();\n\t\t}\n\t}\n\n\t/** Arrow-key entry into the open content: ArrowDown (horizontal) or ArrowRight/Left (vertical, dir-aware). */\n\tprotected onEntryKey(e: Event, orientation: 'horizontal' | 'vertical', dir?: 'ltr' | 'rtl') {\n\t\tif (!this._navigationMenuItem.isActive()) return;\n\t\tif (this._orientation() !== orientation) return;\n\t\tif (orientation === 'vertical' && dir && this._dir() !== dir) return;\n\n\t\te.preventDefault();\n\t\t// Stop the event from reaching the nav's CDK key manager, which would otherwise\n\t\t// read event.keyCode and move focus to the next trigger, overriding the entry.\n\t\te.stopPropagation();\n\t\tthis._focusFirstContent();\n\t}\n\n\tprotected onEscape(e: Event) {\n\t\te.preventDefault();\n\t\tthis._deactivate();\n\t}\n\n\tprivate _focusFirstContent() {\n\t\tconst contentEl = this._contentService.contentEl();\n\t\tif (!contentEl) return;\n\n\t\tconst candidates = getTabbableCandidates(contentEl);\n\t\tif (candidates.length) {\n\t\t\tfocusFirst(candidates);\n\t\t} else {\n\t\t\tcontentEl.focus();\n\t\t}\n\t}\n\n\t/** Keeps keyboard focus inside the menu when tabbing across the content edges (issue #1484). */\n\tprivate _handleContentTab(event: KeyboardEvent) {\n\t\tconst contentEl = this._contentService.contentEl();\n\t\tif (!contentEl) return;\n\n\t\tconst candidates = getTabbableCandidates(contentEl);\n\t\tconst focused = document.activeElement as HTMLElement | null;\n\t\tconst index = focused ? candidates.indexOf(focused) : -1;\n\n\t\tif (event.shiftKey) {\n\t\t\tconst previous = index > 0 ? candidates.slice(0, index).reverse() : [];\n\t\t\tif (previous.length && focusFirst(previous)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// at the first item or on the content container - return to the trigger, keep content open\n\t\t\tevent.preventDefault();\n\t\t\tthis._el.nativeElement.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tconst next = index >= 0 ? candidates.slice(index + 1) : candidates;\n\t\tif (next.length && focusFirst(next)) {\n\t\t\tevent.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\t// past the last item - hand focus to the next top-level item and close the panel\n\t\tif (this._navigationMenu.focusSibling(this, 1)) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tthis._deactivate();\n\t}\n\n\tprivate _activate() {\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprivate _deactivate() {\n\t\tthis._navigationMenu.value.set(undefined);\n\t}\n\n\tprivate _isHoverOnSibling(ev: TriggerEvent): boolean {\n\t\tif (ev.type !== 'hover' || !isElement(ev.relatedTarget)) return false;\n\n\t\tconst menuItem = this._isMenuItemOrChild(ev.relatedTarget);\n\n\t\treturn !!menuItem && !menuItem.disabled();\n\t}\n\n\tprivate _isMenuItemOrChild(node: Node): BrnNavigationMenuItem | undefined {\n\t\treturn this._navigationMenu\n\t\t\t.menuItems()\n\t\t\t.find((ref) => ref.el.nativeElement === node || ref.el.nativeElement.contains(node));\n\t}\n}\n","import { BrnNavigationMenu } from './lib/brn-navigation-menu';\nimport { BrnNavigationMenuContent } from './lib/brn-navigation-menu-content';\nimport { BrnNavigationMenuItem } from './lib/brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './lib/brn-navigation-menu-link';\nimport { BrnNavigationMenuList } from './lib/brn-navigation-menu-list';\nimport { BrnNavigationMenuTrigger } from './lib/brn-navigation-menu-trigger';\n\nexport * from './lib/brn-navigation-menu';\nexport * from './lib/brn-navigation-menu-content';\nexport * from './lib/brn-navigation-menu-item';\nexport * from './lib/brn-navigation-menu-link';\nexport * from './lib/brn-navigation-menu-list';\nexport * from './lib/brn-navigation-menu-trigger';\n\nexport const BrnNavigationMenuImports = [\n\tBrnNavigationMenu,\n\tBrnNavigationMenuItem,\n\tBrnNavigationMenuList,\n\tBrnNavigationMenuTrigger,\n\tBrnNavigationMenuContent,\n\tBrnNavigationMenuLink,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -15,7 +15,6 @@ const createDefaultOptions = () => ({
15
15
  attachTo: null,
16
16
  autoFocus: false,
17
17
  backdropClass: '',
18
- closeOnBackdropClick: true,
19
18
  closeOnOutsidePointerEvents: false,
20
19
  disableClose: false,
21
20
  hasBackdrop: false,
@@ -95,17 +94,30 @@ class BrnOverlayRef {
95
94
  void this._finishClose(generation, animationsBeforeClose, result);
96
95
  }, { injector: this._injector });
97
96
  }
98
- dismiss(reason) {
97
+ dismiss(reason, target) {
99
98
  const options = this.initialOptions;
100
99
  if (!this.open || options.disableClose)
101
100
  return false;
102
- if (reason === 'backdrop' && !options.closeOnBackdropClick)
103
- return false;
104
- if (reason === 'outside' && !options.closeOnOutsidePointerEvents)
105
- return false;
101
+ if (reason === 'outside') {
102
+ if (!options.closeOnOutsidePointerEvents)
103
+ return false;
104
+ // The trigger lives outside the overlay panel, so CDK reports clicks on it as "outside".
105
+ // Treat them as inside the widget and let the trigger's own handler toggle instead - this
106
+ // avoids a close/re-open race that flickers the open/close animation.
107
+ if (this._isWithinOrigin(target))
108
+ return false;
109
+ }
106
110
  this.close();
107
111
  return true;
108
112
  }
113
+ /** Whether the event target sits within the overlay's origin (its trigger/anchor element). */
114
+ _isWithinOrigin(target) {
115
+ const origin = this.initialOptions.attachTo;
116
+ if (!origin || !(target instanceof Node))
117
+ return false;
118
+ const element = origin instanceof Element ? origin : 'nativeElement' in origin ? origin.nativeElement : null;
119
+ return element instanceof Element && element.contains(target);
120
+ }
109
121
  reopen() {
110
122
  if (this._phase() !== 'closing')
111
123
  return;
@@ -142,6 +154,12 @@ class BrnOverlayRef {
142
154
  if (generation !== this._closeGeneration || this._phase() !== 'closing')
143
155
  return;
144
156
  const exitAnimations = this._getActiveAnimations().filter((animation) => !animationsBeforeClose.has(animation));
157
+ // Pin each exit animation to its final frame. tw-animate-css uses `animation-fill-mode: none`,
158
+ // so a finished exit reverts the element to its visible state in the gap before we dispose it -
159
+ // that one-frame snap-back is the flicker. updateTiming pins only the animations we await.
160
+ for (const animation of exitAnimations) {
161
+ animation.effect?.updateTiming({ fill: 'forwards' });
162
+ }
145
163
  await waitForAnimations(exitAnimations);
146
164
  if (generation === this._closeGeneration && this._phase() === 'closing') {
147
165
  this._dispose(result);
@@ -296,7 +314,7 @@ class BrnOverlayService {
296
314
  _requestDismissal(ref, overlayRef, reason, event) {
297
315
  if (this._overlayStack.at(-1) !== overlayRef)
298
316
  return;
299
- if (ref.dismiss(reason) && reason === 'escape')
317
+ if (ref.dismiss(reason, event.target) && reason === 'escape')
300
318
  event.preventDefault();
301
319
  }
302
320
  _removeFromStack(overlayRef) {
@@ -341,7 +359,6 @@ class BrnOverlay {
341
359
  positionStrategy = input(this._defaultOptions.positionStrategy, ...(ngDevMode ? [{ debugName: "positionStrategy" }] : /* istanbul ignore next */ []));
342
360
  scrollStrategy = input(this._defaultOptions.scrollStrategy, ...(ngDevMode ? [{ debugName: "scrollStrategy" }] : /* istanbul ignore next */ []));
343
361
  closeOnOutsidePointerEvents = input(this._defaultOptions.closeOnOutsidePointerEvents, { ...(ngDevMode ? { debugName: "closeOnOutsidePointerEvents" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
344
- closeOnBackdropClick = input(this._defaultOptions.closeOnBackdropClick, { ...(ngDevMode ? { debugName: "closeOnBackdropClick" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
345
362
  attachTo = input(this._defaultOptions.attachTo, ...(ngDevMode ? [{ debugName: "attachTo" }] : /* istanbul ignore next */ []));
346
363
  attachPositions = input(this._defaultOptions.attachPositions, ...(ngDevMode ? [{ debugName: "attachPositions" }] : /* istanbul ignore next */ []));
347
364
  disableClose = input(this._defaultOptions.disableClose, { ...(ngDevMode ? { debugName: "disableClose" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -354,7 +371,6 @@ class BrnOverlay {
354
371
  positionStrategy: this.getPositionStrategy(),
355
372
  scrollStrategy: this.getScrollStrategy(),
356
373
  closeOnOutsidePointerEvents: this.closeOnOutsidePointerEvents(),
357
- closeOnBackdropClick: this.getCloseOnBackdropClick(),
358
374
  attachTo: this.getAttachTo(),
359
375
  attachPositions: this.getAttachPositions(),
360
376
  disableClose: this.disableClose(),
@@ -437,9 +453,6 @@ class BrnOverlay {
437
453
  getPositionStrategy() {
438
454
  return this.positionStrategy();
439
455
  }
440
- getCloseOnBackdropClick() {
441
- return this.closeOnBackdropClick();
442
- }
443
456
  getScrollStrategy() {
444
457
  const strategy = this.scrollStrategy();
445
458
  if (strategy === 'close')
@@ -480,7 +493,7 @@ class BrnOverlay {
480
493
  }, { injector: this._injector });
481
494
  }
482
495
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive });
483
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnOverlay, isStandalone: true, selector: "[brnOverlay],brn-overlay", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, positionStrategy: { classPropertyName: "positionStrategy", publicName: "positionStrategy", isSignal: true, isRequired: false, transformFunction: null }, scrollStrategy: { classPropertyName: "scrollStrategy", publicName: "scrollStrategy", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsidePointerEvents: { classPropertyName: "closeOnOutsidePointerEvents", publicName: "closeOnOutsidePointerEvents", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, attachTo: { classPropertyName: "attachTo", publicName: "attachTo", isSignal: true, isRequired: false, transformFunction: null }, attachPositions: { classPropertyName: "attachPositions", publicName: "attachPositions", isSignal: true, isRequired: false, transformFunction: null }, disableClose: { classPropertyName: "disableClose", publicName: "disableClose", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", stateChanged: "stateChanged" }, exportAs: ["brnOverlay"], ngImport: i0 });
496
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnOverlay, isStandalone: true, selector: "[brnOverlay],brn-overlay", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, positionStrategy: { classPropertyName: "positionStrategy", publicName: "positionStrategy", isSignal: true, isRequired: false, transformFunction: null }, scrollStrategy: { classPropertyName: "scrollStrategy", publicName: "scrollStrategy", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsidePointerEvents: { classPropertyName: "closeOnOutsidePointerEvents", publicName: "closeOnOutsidePointerEvents", isSignal: true, isRequired: false, transformFunction: null }, attachTo: { classPropertyName: "attachTo", publicName: "attachTo", isSignal: true, isRequired: false, transformFunction: null }, attachPositions: { classPropertyName: "attachPositions", publicName: "attachPositions", isSignal: true, isRequired: false, transformFunction: null }, disableClose: { classPropertyName: "disableClose", publicName: "disableClose", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", stateChanged: "stateChanged" }, exportAs: ["brnOverlay"], ngImport: i0 });
484
497
  }
485
498
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnOverlay, decorators: [{
486
499
  type: Directive,
@@ -488,7 +501,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
488
501
  selector: '[brnOverlay],brn-overlay',
489
502
  exportAs: 'brnOverlay',
490
503
  }]
491
- }], ctorParameters: () => [], propDecorators: { closed: [{ type: i0.Output, args: ["closed"] }], stateChanged: [{ type: i0.Output, args: ["stateChanged"] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], hasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackdrop", required: false }] }], positionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionStrategy", required: false }] }], scrollStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollStrategy", required: false }] }], closeOnOutsidePointerEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsidePointerEvents", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], attachTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachTo", required: false }] }], attachPositions: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachPositions", required: false }] }], disableClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableClose", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }] } });
504
+ }], ctorParameters: () => [], propDecorators: { closed: [{ type: i0.Output, args: ["closed"] }], stateChanged: [{ type: i0.Output, args: ["stateChanged"] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], hasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackdrop", required: false }] }], positionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionStrategy", required: false }] }], scrollStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollStrategy", required: false }] }], closeOnOutsidePointerEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsidePointerEvents", required: false }] }], attachTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachTo", required: false }] }], attachPositions: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachPositions", required: false }] }], disableClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableClose", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }] } });
492
505
 
493
506
  class BrnOverlayClose {
494
507
  _brnOverlayRef = inject(BrnOverlayRef);