@fundamental-ngx/core 0.43.27 → 0.43.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/combobox/combobox.module.d.ts +1 -1
- package/esm2020/action-sheet/action-sheet.component.mjs +1 -1
- package/esm2020/combobox/combobox.component.mjs +3 -3
- package/esm2020/combobox/combobox.module.mjs +8 -5
- package/esm2020/date-picker/date-picker.component.mjs +1 -1
- package/esm2020/datetime-picker/datetime-picker.component.mjs +1 -1
- package/esm2020/form/form-input-message-group/form-input-message-group.component.mjs +9 -3
- package/esm2020/multi-combobox/multi-combobox.component.mjs +3 -3
- package/esm2020/multi-combobox/multi-combobox.module.mjs +8 -5
- package/esm2020/multi-input/multi-input.component.mjs +3 -3
- package/esm2020/multi-input/multi-input.module.mjs +8 -5
- package/esm2020/nested-list/nested-list-popover/nested-list-popover.component.mjs +1 -1
- package/esm2020/overflow-layout/overflow-layout.component.mjs +1 -1
- package/esm2020/popover/popover.component.mjs +19 -9
- package/esm2020/product-switch/product-switch/product-switch.component.mjs +1 -1
- package/esm2020/progress-indicator/progress-indicator.component.mjs +1 -1
- package/esm2020/rating-indicator/components/rating-indicator.component.mjs +1 -1
- package/esm2020/select/select.component.mjs +1 -1
- package/esm2020/slider/slider.component.mjs +1 -1
- package/esm2020/step-input/step-input.component.mjs +1 -1
- package/esm2020/time-picker/time-picker.component.mjs +1 -1
- package/esm2020/token/tokenizer.component.mjs +1 -1
- package/esm2020/toolbar/toolbar.component.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-action-sheet.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-combobox.mjs +9 -6
- package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-date-picker.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-form.mjs +8 -2
- package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +9 -6
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +9 -6
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-nested-list.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-popover.mjs +18 -8
- package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-product-switch.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-progress-indicator.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-select.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-slider.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-step-input.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-time-picker.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-token.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-toolbar.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-action-sheet.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-combobox.mjs +9 -6
- package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-date-picker.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-form.mjs +8 -2
- package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +9 -6
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +9 -6
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-nested-list.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-popover.mjs +18 -8
- package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-product-switch.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-progress-indicator.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-select.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-slider.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-step-input.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-time-picker.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-token.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-toolbar.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/form/form-input-message-group/form-input-message-group.component.d.ts +5 -1
- package/fundamental-ngx-core-v0.43.29.tgz +0 -0
- package/multi-combobox/multi-combobox.module.d.ts +1 -1
- package/multi-input/multi-input.module.d.ts +1 -1
- package/package.json +3 -3
- package/popover/popover.component.d.ts +5 -1
- package/schematics/add-dependencies/index.js +4 -4
- package/fundamental-ngx-core-v0.43.27.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-overflow-layout.mjs","sources":["../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-container-ref.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-item-container.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.service.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-container.token.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-expand.token.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-focusable-item.token.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item-ref.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-popover-content.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.component.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.component.html","../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-ref.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-expand.directive.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-item.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-focusable-item.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.module.ts","../../../../libs/core/src/lib/overflow-layout/fundamental-ngx-core-overflow-layout.ts"],"sourcesContent":["import { Directive, ElementRef, TemplateRef, ViewContainerRef, ViewRef, OnDestroy } from '@angular/core';\n\n/**\n * Directive to hide component without actual destroying of the component instance.\n */\n@Directive({\n selector: '[fdOverflowItemContainerRef]'\n})\nexport class OverflowItemContainerRefDirective implements OnDestroy {\n /** @hidden */\n private _viewRef: ViewRef;\n\n /** @hidden */\n private _detached = false;\n\n /** @hidden */\n private _hidden = false;\n\n /**\n * Shows or hides element without destroying the view itself.\n * @param value\n */\n set hidden(value: boolean) {\n if (this._hidden === value) {\n return;\n }\n this._hidden = value;\n if (value && !this._detached) {\n this._viewRef = this._viewContainerRef.detach()!;\n this._detached = true;\n } else if (!value && this._viewRef && !this._viewRef.destroyed && this._detached) {\n this._viewRef = this._viewContainerRef.insert(this._viewRef);\n this._detached = false;\n }\n }\n\n /** @hidden */\n constructor(\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef,\n private _elmRef: ElementRef\n ) {\n // Create embedded view right away and manipulate its visibility later.\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._viewRef?.destroy();\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input } from '@angular/core';\nimport { OverflowItemContainerRefDirective } from './overflow-item-container-ref.directive';\n\n@Directive({\n selector: '[fdOverflowLayoutItemContainer]'\n})\nexport class OverflowLayoutItemContainerDirective {\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__item';\n\n /**\n * Whether this item is the first one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--last')\n last = false;\n\n /**\n * Whether this item is the last one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--first')\n first = false;\n\n /**\n * Whether this item is softly hidden. Used during free space calculation without flickering of the items.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--soft-hidden')\n softHidden = true;\n\n /**\n * Container reference.\n */\n @ContentChild(OverflowItemContainerRefDirective)\n containerRef: OverflowItemContainerRefDirective;\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime, distinctUntilChanged, filter, Observable, skip, Subject, Subscription } from 'rxjs';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\n\nexport interface OverflowLayoutConfig {\n items: OverflowItemRef[];\n focusableItems: OverflowLayoutFocusableItem[];\n visibleItems: OverflowLayoutItemContainerDirective[];\n itemsWrapper: HTMLElement;\n showMoreContainer: HTMLElement;\n layoutContainerElement: HTMLElement;\n maxVisibleItems: number;\n direction: 'left' | 'right';\n enableKeyboardNavigation: boolean;\n reverseHiddenItems: boolean;\n}\n\nexport class OverflowLayoutListeningResult {\n /** Whether to show more button */\n showMore = false;\n\n /** Overflow item s */\n items: OverflowItemRef[] = [];\n\n /** Hidden overflow items */\n hiddenItems: OverflowItemRef[] = [];\n\n /** Visible overflow items */\n visibleItems: OverflowItemRef[] = [];\n}\n\n@Injectable()\nexport class OverflowLayoutService implements OnDestroy {\n /**\n * Overflow Layout config.\n */\n config: OverflowLayoutConfig;\n\n /**\n * Overflow Layout calculation result.\n */\n result = new OverflowLayoutListeningResult();\n\n /** @hidden */\n private _listenToItemResize = true;\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _detectChanges$ = new Subject<void>();\n\n /** @hidden */\n private _result$ = new Subject<OverflowLayoutListeningResult>();\n\n /**\n * Observable which emits when changes detection is required.\n */\n get detectChanges(): Observable<void> {\n return this._detectChanges$.asObservable();\n }\n\n /**\n * Observable which emits when new calculation result is available.\n */\n get onResult(): Observable<OverflowLayoutListeningResult> {\n return this._result$.asObservable();\n }\n\n /** @hidden */\n constructor(private _elRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n\n /** @hidden */\n startListening(config: OverflowLayoutConfig): void {\n this.setConfig(config);\n this.fitVisibleItems();\n this._listenToSizeChanges(this._elRef.nativeElement, this.config.itemsWrapper);\n }\n\n /** @hidden */\n setConfig(config: OverflowLayoutConfig): void {\n this.config = config;\n }\n\n /**\n * Calculates available space for items and hides items that are not fitting into the container.\n */\n fitVisibleItems(): void {\n this._listenToItemResize = false;\n this._allItems = this.config.items;\n\n let allItems = [...this.config.items];\n let visibleContainerItems = [...this.config.visibleItems];\n\n this._elRef.nativeElement.style.height = `${this._elRef.nativeElement.clientHeight}px`;\n\n allItems.forEach((item, index) => {\n // Softly hide previously completely hidden item in order to correctly calculate it's size.\n item.softHidden = true;\n item.hidden = false;\n item.index = index;\n item.first = index === 0;\n item.last = index === allItems.length - 1;\n item.globalIndex = index;\n visibleContainerItems[index].containerRef.hidden = false;\n });\n\n this._detectChanges$.next();\n\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n visibleContainerItems =\n this.config.direction === 'right' ? visibleContainerItems : visibleContainerItems.reverse();\n\n this.result.showMore = false;\n this._emitResult();\n const containerWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n const itemsContainerWidth = allItems.reduce(\n (total, item) => total + (this._getElementWidth(item.elementRef.nativeElement) || 0),\n 0\n );\n\n if (\n containerWidth >= itemsContainerWidth &&\n this.config.visibleItems.length <= this.config.maxVisibleItems &&\n this._hiddenItems.length === 0\n ) {\n // Make all items fully visible.\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n this.result.showMore = false;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._listenToItemResize = true;\n this._elRef.nativeElement.style.height = '';\n return;\n }\n this.result.showMore = true;\n this._emitResult();\n let fittingElmCount = 0;\n let fittingElmsWidth = 0;\n let shouldHideItems = false;\n\n const showMoreContainerWidth = Math.ceil(this._getElementWidth(this.config.showMoreContainer));\n let layoutWidth = containerWidth - showMoreContainerWidth;\n\n // Try to find all forced visible items\n const forcedItemsIndexes = this._getForcedItemsIndexes();\n\n forcedItemsIndexes.forEach((itemIndex) => {\n const container = this.config.visibleItems[itemIndex];\n if (!container) {\n return;\n }\n const elementSize = this._getElementWidth(container.elementRef.nativeElement);\n\n layoutWidth -= elementSize;\n });\n\n const maxVisibleItems =\n this.config.maxVisibleItems -\n forcedItemsIndexes.filter((index) => index >= this.config.maxVisibleItems).length;\n\n if (layoutWidth < 0 && forcedItemsIndexes.length > 0) {\n console.warn(\n 'There is no enough space to fit all forced visible items into the container. Please adjust their visibility accordingly.'\n );\n }\n\n this._detectChanges$.next();\n\n visibleContainerItems.forEach((item, index) => {\n const itemRef = allItems[index];\n // If item is forced to be visible, just display the item since it's size calculation was already taken care of in previous iteration.\n if (itemRef.overflowItem.forceVisibility) {\n return;\n }\n if (shouldHideItems && !itemRef.overflowItem.forceVisibility) {\n item.containerRef.hidden = true;\n item.softHidden = false;\n itemRef.hidden = true;\n return;\n }\n\n const elementSize = this._getElementWidth(item.elementRef.nativeElement);\n const combinedWidth = fittingElmsWidth + elementSize;\n\n const condition =\n (combinedWidth <= layoutWidth ||\n (item === this.config.visibleItems[this.config.visibleItems.length - 1] &&\n combinedWidth <= layoutWidth + showMoreContainerWidth)) &&\n fittingElmCount < maxVisibleItems;\n\n if (condition) {\n fittingElmsWidth += elementSize;\n fittingElmCount++;\n } else if (!itemRef.overflowItem.forceVisibility) {\n shouldHideItems = true;\n item.softHidden = false;\n item.containerRef.hidden = true;\n itemRef.hidden = true;\n }\n });\n\n // Reverse original order back.\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n\n let hiddenItems = allItems.filter((i) => i.hidden);\n hiddenItems = this.config.reverseHiddenItems ? hiddenItems.reverse() : hiddenItems;\n const visibleItems = allItems.filter((i) => !i.hidden);\n\n visibleItems.forEach((item, index) => {\n item.index = index;\n item.first = index === 0;\n item.last = index === visibleItems.length - 1;\n });\n\n this._hiddenItems = hiddenItems.map((item, index) => {\n item.first = index === 0;\n item.last = index === hiddenItems.length - 1;\n item.index = index;\n return item;\n });\n\n this.result.showMore = this._hiddenItems.length > 0;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._elRef.nativeElement.style.height = '';\n\n this._listenToItemResize = true;\n }\n\n /** @hidden */\n private _getForcedItemsIndexes(): number[] {\n return this._allItems\n .map((item, index) => (item.overflowItem.forceVisibility ? index : -1))\n .filter((i) => i > -1);\n }\n\n /**\n * @hidden\n * Returns combined width of the element including margins.\n * @param element Element to calculate width of.\n */\n private _getElementWidth(element: HTMLElement): number {\n const elementStyle = getComputedStyle(element);\n const elementWidth = element.getBoundingClientRect().width;\n const elementSize = elementWidth + parseFloat(elementStyle.marginLeft) + parseFloat(elementStyle.marginRight);\n\n return Math.ceil(elementSize);\n }\n\n /** @hidden */\n private _emitResult(): void {\n this._result$.next(this.result);\n }\n\n /** @hidden */\n private _listenToSizeChanges(...elements: HTMLElement[]): void {\n elements.forEach((element) =>\n this._subscription.add(\n resizeObservable(element)\n .pipe(\n skip(1),\n filter(() => this._listenToItemResize),\n distinctUntilChanged(),\n debounceTime(30)\n )\n .subscribe(() => {\n setTimeout(() => {\n this.fitVisibleItems();\n });\n })\n )\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\n\nexport const FD_OVERFLOW_CONTAINER = new InjectionToken<OverflowContainer>('FdOverflowContainer');\n","import { InjectionToken } from '@angular/core';\nimport { OverflowExpand } from '../interfaces/overflow-expand.interface';\n\nexport const FD_OVERFLOW_EXPAND = new InjectionToken<OverflowExpand>('FdOverflowLayoutExpand');\n","import { InjectionToken } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\n\nexport const FD_OVERFLOW_FOCUSABLE_ITEM = new InjectionToken<OverflowLayoutFocusableItem>(\n 'FdOverflowLayoutFocusableItem'\n);\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\n\nexport const FD_OVERFLOW_ITEM_REF = new InjectionToken<OverflowItemRef>('OverflowLayoutItemRef');\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, HostBinding, HostListener, Inject, Input, OnDestroy, Optional } from '@angular/core';\nimport { DestroyedService, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { takeUntil } from 'rxjs';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowPopoverContent } from '../interfaces/overflow-popover-content.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { FD_OVERFLOW_CONTAINER } from '../tokens/overflow-container.token';\n\n/**\n * Directive to wrap Overlay Layout \"More\" popover content.\n * Used to apply keyboard navigation through the items.\n */\n@Directive({\n selector: '[fdOverflowLayoutPopoverContent]',\n providers: [DestroyedService]\n})\nexport class OverflowLayoutPopoverContentDirective implements OverflowPopoverContent, OnDestroy {\n /**\n * Array of hidden items.\n */\n @Input()\n set items(value: OverflowItemRef[]) {\n // Need to set items with a delay so that elementRef of the focusable item would refresh.\n setTimeout(() => {\n this._items = value;\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(\n this._items\n .filter((item) => item.overflowItem.focusableItem?.focusable)\n .map((item) => item.overflowItem.focusableItem)\n )\n .withWrap()\n .withHorizontalOrientation(this._dir);\n });\n }\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<OverflowLayoutFocusableItem>;\n\n /** @hidden */\n private _items: OverflowItemRef[];\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__popover-container';\n\n /** @hidden */\n private _dir: 'ltr' | 'rtl' = 'ltr';\n\n /** @hidden */\n constructor(\n @Inject(FD_OVERFLOW_CONTAINER) private _overflowContainer: OverflowContainer,\n @Optional() private _rtl: RtlService,\n private readonly _onDestroy$: DestroyedService\n ) {\n this._overflowContainer?.registerPopoverContent(this);\n\n this._rtl?.rtl.pipe(takeUntil(this._onDestroy$)).subscribe((rtl) => {\n this._dir = rtl ? 'rtl' : 'ltr';\n if (this._keyboardEventsManager) {\n this._keyboardEventsManager = this._keyboardEventsManager.withHorizontalOrientation(this._dir);\n }\n });\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._items.findIndex((item) => item.overflowItem.elmRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager, so we get a change fired\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n\n /**\n * Focuses on the first tabbable element inside directive's element.\n */\n focusFirstTabbableElement(): void {\n this._keyboardEventsManager.setActiveItem(0);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyboardEventsManager?.destroy();\n }\n}\n","import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n ChangeDetectorRef,\n ContentChild,\n HostBinding,\n ViewChild,\n ElementRef,\n Output,\n EventEmitter,\n TemplateRef,\n ViewChildren,\n AfterViewInit,\n OnDestroy,\n Input,\n OnInit,\n NgZone,\n Optional\n} from '@angular/core';\nimport { debounceTime, filter, first, fromEvent, startWith, Subject, Subscription } from 'rxjs';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowContainer } from './interfaces/overflow-container.interface';\nimport { OverflowExpand } from './interfaces/overflow-expand.interface';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';\nimport { OverflowLayoutConfig, OverflowLayoutService } from './overflow-layout.service';\nimport { FD_OVERFLOW_CONTAINER } from './tokens/overflow-container.token';\nimport { FD_OVERFLOW_EXPAND } from './tokens/overflow-expand.token';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from './tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM_REF } from './tokens/overflow-item-ref.token';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'fd-overflow-layout',\n templateUrl: './overflow-layout.component.html',\n styleUrls: ['./overflow-layout.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_OVERFLOW_CONTAINER,\n useExisting: OverflowLayoutComponent\n },\n OverflowLayoutService\n ]\n})\nexport class OverflowLayoutComponent implements OnInit, AfterViewInit, OnDestroy, OverflowContainer {\n /**\n * Maximum amount of visible items.\n */\n @Input()\n set maxVisibleItems(value: number) {\n if (value === this._maxVisibleItems) {\n return;\n }\n this._maxVisibleItems = value;\n this.triggerRecalculation();\n }\n\n get maxVisibleItems(): number {\n return this._maxVisibleItems;\n }\n\n /**\n * Keyboard event to listen for keyboard navigation through items.\n */\n @Input()\n navigationTrigger: 'keyup' | 'keydown' = 'keyup';\n\n /** Direction of the fitting items calculation. */\n @Input()\n showMorePosition: 'left' | 'right' = 'right';\n\n /** Whether to render hidden items in reverse order. */\n @Input()\n reverseHiddenItems = false;\n\n /** Whether to enable keyboard navigation. */\n @Input()\n enableKeyboardNavigation = true;\n\n /**\n * Event, triggered when amount of visible items has been changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when amount of hidden items has been changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /**\n * @hidden\n * List of items to display.\n */\n @ContentChildren(FD_OVERFLOW_ITEM_REF, { descendants: true })\n _items: QueryList<OverflowItemRef>;\n\n /**\n * @hidden\n * Template for the custom \"More\" button.\n */\n @ContentChild(FD_OVERFLOW_EXPAND)\n _moreButton: Nullable<OverflowExpand>;\n\n /**\n * @hidden\n * List of items that can be focused\n */\n @ContentChildren(FD_OVERFLOW_FOCUSABLE_ITEM, { descendants: true })\n _focusableOverflowItems: QueryList<OverflowLayoutFocusableItem>;\n\n /**\n * @hidden\n * List of rendered items.\n */\n @ViewChildren(OverflowLayoutItemContainerDirective)\n _visibleItems: QueryList<OverflowLayoutItemContainerDirective>;\n\n /**\n * @hidden\n * Items wrapper directive.\n */\n @ViewChild('itemsWrapper')\n _itemsWrapper: ElementRef<HTMLElement>;\n\n /**\n * @hidden\n * Layout container element.\n */\n @ViewChild('layoutContainer')\n _layoutContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @hidden\n * \"More\" button container element.\n */\n @ViewChild('showMoreContainer')\n _showMoreContainer: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _showMore = false;\n\n /** @hidden */\n @HostBinding('class')\n readonly _initialClass = 'fd-overflow-layout';\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _overflowPopoverContent: OverflowPopoverContent;\n\n /** @hidden */\n private _fillTrigger$ = new Subject<void>();\n\n /** @hidden */\n private _maxVisibleItems = Infinity;\n\n /** @hidden */\n private _canListenToResize = false;\n\n /** @hidden */\n private _dir: 'rtl' | 'ltr' = 'ltr';\n\n /** @hidden */\n private _keyboardEventsManager: Nullable<FocusKeyManager<OverflowLayoutFocusableItem>>;\n\n /** Overflow Layout more button text */\n @Input()\n moreItemsButtonText: (hiddenItemsCount: number) => string = (count) => `${count} more`;\n\n /** @hidden */\n private get _config(): OverflowLayoutConfig {\n return {\n visibleItems: this._visibleItems.toArray(),\n items: this._items.toArray(),\n focusableItems: this._focusableOverflowItems.toArray(),\n itemsWrapper: this._itemsWrapper.nativeElement,\n showMoreContainer: this._showMoreContainer.nativeElement,\n layoutContainerElement: this._layoutContainer.nativeElement,\n maxVisibleItems: this.maxVisibleItems,\n direction: this.showMorePosition,\n enableKeyboardNavigation: this.enableKeyboardNavigation,\n reverseHiddenItems: this.reverseHiddenItems\n };\n }\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<HTMLElement>,\n private readonly _ngZone: NgZone,\n protected _cdr: ChangeDetectorRef,\n protected _overflowLayoutService: OverflowLayoutService,\n @Optional() private readonly _rtl: RtlService\n ) {\n this._subscription.add(\n this._fillTrigger$.pipe(debounceTime(30)).subscribe(() => {\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setupKeyboardListener();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscription.add(\n this._overflowLayoutService.detectChanges.subscribe(() => {\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._overflowLayoutService.onResult.subscribe((result) => {\n this._hiddenItems = result.hiddenItems;\n this._showMore = result.showMore;\n\n this.hiddenItemsCount.emit(result.hiddenItems.length);\n this.visibleItemsCount.emit(this._allItems.filter((i) => !i.hidden).length);\n\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._items.changes.pipe(startWith(() => this._items)).subscribe(() => {\n this._allItems = this._items.toArray();\n\n this._cdr.detectChanges();\n\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n\n this._setFocusKeyManager();\n this._subscribeToRtl();\n\n // There might be cases when the elements are not rendered yet, but the component is initialized already.\n // It may happen when it's inside the components that are wrapping ng-content with ng-containers and so on.\n // IntersectionObserver is a good solution for this case, but it's hardly manageable when testing.\n this._ngZone.onStable.pipe(first()).subscribe(() => {\n this._overflowLayoutService.startListening(this._config);\n\n this._canListenToResize = true;\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = null;\n }\n\n /**\n * Triggers layout recalculation of the items.\n */\n triggerRecalculation(): void {\n if (!this._canListenToResize) {\n return;\n }\n\n this._fillTrigger$.next();\n }\n\n /**\n * Sets current focused element.\n * @param element Element that needs to be focused.\n */\n setFocusedElement(element: OverflowLayoutFocusableItem): void {\n const index = this._focusableOverflowItems.toArray().findIndex((item) => item === element);\n\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n /**\n * Registers popover content directive for main component.\n * @param content {OverflowPopoverContent} directive\n */\n registerPopoverContent(content: OverflowPopoverContent): void {\n this._overflowPopoverContent = content;\n }\n\n /** @hidden */\n _itemsTrackFn(_: number, item: OverflowItemRef): TemplateRef<any> {\n return item.templateRef;\n }\n\n /** @hidden */\n _onPopoverStateChange(opened: boolean): void {\n if (opened) {\n this._overflowPopoverContent?.focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _setupKeyboardListener(): void {\n this._subscription.add(\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, this.navigationTrigger)\n .pipe(filter(() => this.enableKeyboardNavigation))\n .subscribe((event) => {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._focusableOverflowItems\n .toArray()\n .findIndex((item) => item.focusable && item.elementRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager so, we get a change fired\n this._keyboardEventsManager?.onKeydown(event);\n }\n })\n );\n }\n\n /** @hidden */\n private _setFocusKeyManager(): void {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n this._dir = this._rtl?.rtl.value ? 'rtl' : 'ltr';\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this._focusableOverflowItems)\n .withWrap()\n .withHorizontalOrientation(this._dir)\n .withVerticalOrientation()\n .skipPredicate((item) => !item.navigable || item.hidden);\n }\n\n /** @hidden Rtl change subscription */\n private _subscribeToRtl(): void {\n if (!this._rtl || !this.enableKeyboardNavigation) {\n return;\n }\n\n this._subscription.add(\n this._rtl.rtl.subscribe((isRtl) => {\n this._dir = isRtl ? 'rtl' : 'ltr';\n\n this._keyboardEventsManager = this._keyboardEventsManager?.withHorizontalOrientation(this._dir);\n })\n );\n }\n}\n","<ng-template [ngIf]=\"showMorePosition === 'left'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template [ngIf]=\"showMorePosition === 'right'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'block' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ 'coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length } }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n <ng-container *ngFor=\"let item of _hiddenItems\">\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n","import { Directive, ElementRef, Input, TemplateRef } from '@angular/core';\nimport { OverflowItemDirectiveContext, OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\n\n/**\n * Structural directive which is used to pass the context of the item to the template engine.\n */\n@Directive({\n selector: '[fdOverflowItemRef]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM_REF,\n useExisting: OverflowItemRefDirective\n }\n ]\n})\nexport class OverflowItemRefDirective<T = any> implements OverflowItemRef<T> {\n /**\n * Element ref of the `fdOverflowLayoutItem` directive.\n */\n elementRef: ElementRef<HTMLElement>;\n /**\n * `fdOverflowLayoutItem` directive.\n */\n overflowItem: OverflowItem;\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this._hidden = value;\n this.overflowItem.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._hidden;\n }\n\n /** @hidden */\n _hidden = false;\n\n /** Index of the item in the visible or hidden array of Overflow Layout Component's items. */\n index: number;\n\n /**\n * The index of the item in the array of items.\n */\n globalIndex: number;\n\n /** Whether this item is last in the array. */\n first: boolean;\n\n /** Whether this item is first in the array. */\n last: boolean;\n\n /** Whether the item is softly hidden. */\n softHidden = true;\n\n /** Item instance. Used for correct autocomplete. */\n @Input('fdOverflowItemRef')\n item: T;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowItemRefDirective,\n ctx: OverflowItemDirectiveContext\n ): ctx is OverflowItemDirectiveContext {\n return true;\n }\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowItemDirectiveContext<T>>) {}\n\n /**\n * Sets the element reference of the `fdOverflowLayoutItem` directive.`\n * @param elmRef\n */\n setElementRef(elmRef: ElementRef): void {\n if (this.elementRef) {\n return;\n }\n this.elementRef = elmRef;\n }\n\n /**\n * Sets the `fdOverflowLayoutItem` directive.\n * @param item\n */\n setOverflowItem(item: OverflowItem): void {\n this.overflowItem = item;\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { OverflowExpand, OverflowExpandDirectiveContext } from '../interfaces/overflow-expand.interface';\nimport { FD_OVERFLOW_EXPAND } from '../tokens/overflow-expand.token';\n\n/**\n * Structural directive which is responsible for rendering the \"More\" button and handling further logic.\n */\n@Directive({\n selector: '[fdOverflowExpand]',\n providers: [\n {\n provide: FD_OVERFLOW_EXPAND,\n useExisting: OverflowExpandDirective\n }\n ]\n})\nexport class OverflowExpandDirective<T extends any[] = any[]> implements OverflowExpand<T> {\n /** Items to expand */\n @Input()\n fdOverflowExpandItems: T;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowExpandDirective,\n ctx: OverflowExpandDirectiveContext\n ): ctx is OverflowExpandDirectiveContext {\n return true;\n }\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowExpandDirectiveContext<T>>) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\n\nexport const FD_OVERFLOW_ITEM = new InjectionToken<OverflowItem>('FdOverflowItem');\n","import { Directive, ElementRef, EventEmitter, Inject, Input, OnInit, Optional, Output, SkipSelf } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n/**\n * Directive to mark element as part of for Overflow Layout Component items.\n */\n@Directive({\n selector: '[fdOverflowLayoutItem]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM,\n useExisting: OverflowLayoutItemDirective\n }\n ]\n})\nexport class OverflowLayoutItemDirective implements OverflowItem, OnInit {\n /** Whether to force the visibility of the item. */\n @Input()\n set forceVisibility(value: boolean) {\n if (value === this._forceVisibility) {\n return;\n }\n\n this._forceVisibility = value;\n this._overflowContainer.triggerRecalculation();\n }\n\n get forceVisibility(): boolean {\n return this._forceVisibility;\n }\n\n /**\n * Event emitted when `hidden` property has been changed.\n */\n @Output()\n hiddenChange = new EventEmitter<boolean>();\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._overflowItemRef?.hidden === true;\n }\n\n /**\n * Focusable item for keyboard navigation.\n */\n focusableItem: OverflowLayoutFocusableItem;\n\n /** @hidden */\n private _forceVisibility = false;\n\n /** @hidden */\n constructor(\n private _overflowContainer: OverflowLayoutComponent,\n public elmRef: ElementRef,\n @Optional() @SkipSelf() @Inject(FD_OVERFLOW_ITEM_REF) private _overflowItemRef: OverflowItemRef | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._overflowItemRef?.setElementRef(this.elmRef);\n this._overflowItemRef?.setOverflowItem(this);\n }\n}\n","import { Directive, ElementRef, HostBinding, HostListener, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from '../tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n@Directive({\n selector: '[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]',\n providers: [\n {\n provide: FD_OVERFLOW_FOCUSABLE_ITEM,\n useExisting: OverflowLayoutFocusableItemDirective\n }\n ]\n})\nexport class OverflowLayoutFocusableItemDirective implements OverflowLayoutFocusableItem, OnInit {\n /** Whether the item should be focusable. */\n @Input()\n focusable = true;\n\n /** Whether the item should be navigable via keyboard. */\n @Input()\n navigable = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n private get _tabindex(): number {\n return this.focusable ? 0 : -1;\n }\n\n /** Whether the item is hidden. */\n get hidden(): boolean {\n return !!this._overflowItem?.hidden;\n }\n\n /** @hidden */\n @HostListener('focus')\n private _onFocus(): void {\n this._overflowContainer.setFocusedElement(this);\n }\n\n /** @hidden */\n constructor(\n private readonly _overflowContainer: OverflowLayoutComponent,\n @Inject(FD_OVERFLOW_ITEM) @Optional() private readonly _overflowItem: OverflowItem,\n public readonly elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this._overflowItem) {\n this._overflowItem.focusableItem = this;\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { I18nModule } from '@fundamental-ngx/i18n';\nimport { OverflowLayoutComponent } from './overflow-layout.component';\nimport { OverflowItemRefDirective } from './directives/overflow-item-ref.directive';\nimport { OverflowExpandDirective } from './directives/overflow-expand.directive';\nimport { OverflowLayoutItemDirective } from './directives/overflow-layout-item.directive';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutFocusableItemDirective } from './directives/overflow-layout-focusable-item.directive';\n\n@NgModule({\n imports: [CommonModule, PopoverModule, ButtonModule, I18nModule],\n exports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ],\n declarations: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ]\n})\nexport class OverflowLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.OverflowLayoutService","i2","i6.OverflowItemContainerRefDirective","i7.OverflowLayoutPopoverContentDirective","i8.OverflowLayoutItemContainerDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-overflow-layout.mjs","sources":["../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-container-ref.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-item-container.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.service.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-container.token.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-expand.token.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-focusable-item.token.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item-ref.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-popover-content.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.component.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.component.html","../../../../libs/core/src/lib/overflow-layout/directives/overflow-item-ref.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-expand.directive.ts","../../../../libs/core/src/lib/overflow-layout/tokens/overflow-item.token.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-item.directive.ts","../../../../libs/core/src/lib/overflow-layout/directives/overflow-layout-focusable-item.directive.ts","../../../../libs/core/src/lib/overflow-layout/overflow-layout.module.ts","../../../../libs/core/src/lib/overflow-layout/fundamental-ngx-core-overflow-layout.ts"],"sourcesContent":["import { Directive, ElementRef, TemplateRef, ViewContainerRef, ViewRef, OnDestroy } from '@angular/core';\n\n/**\n * Directive to hide component without actual destroying of the component instance.\n */\n@Directive({\n selector: '[fdOverflowItemContainerRef]'\n})\nexport class OverflowItemContainerRefDirective implements OnDestroy {\n /** @hidden */\n private _viewRef: ViewRef;\n\n /** @hidden */\n private _detached = false;\n\n /** @hidden */\n private _hidden = false;\n\n /**\n * Shows or hides element without destroying the view itself.\n * @param value\n */\n set hidden(value: boolean) {\n if (this._hidden === value) {\n return;\n }\n this._hidden = value;\n if (value && !this._detached) {\n this._viewRef = this._viewContainerRef.detach()!;\n this._detached = true;\n } else if (!value && this._viewRef && !this._viewRef.destroyed && this._detached) {\n this._viewRef = this._viewContainerRef.insert(this._viewRef);\n this._detached = false;\n }\n }\n\n /** @hidden */\n constructor(\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef,\n private _elmRef: ElementRef\n ) {\n // Create embedded view right away and manipulate its visibility later.\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._viewRef?.destroy();\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input } from '@angular/core';\nimport { OverflowItemContainerRefDirective } from './overflow-item-container-ref.directive';\n\n@Directive({\n selector: '[fdOverflowLayoutItemContainer]'\n})\nexport class OverflowLayoutItemContainerDirective {\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__item';\n\n /**\n * Whether this item is the first one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--last')\n last = false;\n\n /**\n * Whether this item is the last one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--first')\n first = false;\n\n /**\n * Whether this item is softly hidden. Used during free space calculation without flickering of the items.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--soft-hidden')\n softHidden = true;\n\n /**\n * Container reference.\n */\n @ContentChild(OverflowItemContainerRefDirective)\n containerRef: OverflowItemContainerRefDirective;\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime, distinctUntilChanged, filter, Observable, skip, Subject, Subscription } from 'rxjs';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\n\nexport interface OverflowLayoutConfig {\n items: OverflowItemRef[];\n focusableItems: OverflowLayoutFocusableItem[];\n visibleItems: OverflowLayoutItemContainerDirective[];\n itemsWrapper: HTMLElement;\n showMoreContainer: HTMLElement;\n layoutContainerElement: HTMLElement;\n maxVisibleItems: number;\n direction: 'left' | 'right';\n enableKeyboardNavigation: boolean;\n reverseHiddenItems: boolean;\n}\n\nexport class OverflowLayoutListeningResult {\n /** Whether to show more button */\n showMore = false;\n\n /** Overflow item s */\n items: OverflowItemRef[] = [];\n\n /** Hidden overflow items */\n hiddenItems: OverflowItemRef[] = [];\n\n /** Visible overflow items */\n visibleItems: OverflowItemRef[] = [];\n}\n\n@Injectable()\nexport class OverflowLayoutService implements OnDestroy {\n /**\n * Overflow Layout config.\n */\n config: OverflowLayoutConfig;\n\n /**\n * Overflow Layout calculation result.\n */\n result = new OverflowLayoutListeningResult();\n\n /** @hidden */\n private _listenToItemResize = true;\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _detectChanges$ = new Subject<void>();\n\n /** @hidden */\n private _result$ = new Subject<OverflowLayoutListeningResult>();\n\n /**\n * Observable which emits when changes detection is required.\n */\n get detectChanges(): Observable<void> {\n return this._detectChanges$.asObservable();\n }\n\n /**\n * Observable which emits when new calculation result is available.\n */\n get onResult(): Observable<OverflowLayoutListeningResult> {\n return this._result$.asObservable();\n }\n\n /** @hidden */\n constructor(private _elRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n\n /** @hidden */\n startListening(config: OverflowLayoutConfig): void {\n this.setConfig(config);\n this.fitVisibleItems();\n this._listenToSizeChanges(this._elRef.nativeElement, this.config.itemsWrapper);\n }\n\n /** @hidden */\n setConfig(config: OverflowLayoutConfig): void {\n this.config = config;\n }\n\n /**\n * Calculates available space for items and hides items that are not fitting into the container.\n */\n fitVisibleItems(): void {\n this._listenToItemResize = false;\n this._allItems = this.config.items;\n\n let allItems = [...this.config.items];\n let visibleContainerItems = [...this.config.visibleItems];\n\n this._elRef.nativeElement.style.height = `${this._elRef.nativeElement.clientHeight}px`;\n\n allItems.forEach((item, index) => {\n // Softly hide previously completely hidden item in order to correctly calculate it's size.\n item.softHidden = true;\n item.hidden = false;\n item.index = index;\n item.first = index === 0;\n item.last = index === allItems.length - 1;\n item.globalIndex = index;\n visibleContainerItems[index].containerRef.hidden = false;\n });\n\n this._detectChanges$.next();\n\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n visibleContainerItems =\n this.config.direction === 'right' ? visibleContainerItems : visibleContainerItems.reverse();\n\n this.result.showMore = false;\n this._emitResult();\n const containerWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n const itemsContainerWidth = allItems.reduce(\n (total, item) => total + (this._getElementWidth(item.elementRef.nativeElement) || 0),\n 0\n );\n\n if (\n containerWidth >= itemsContainerWidth &&\n this.config.visibleItems.length <= this.config.maxVisibleItems &&\n this._hiddenItems.length === 0\n ) {\n // Make all items fully visible.\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n this.result.showMore = false;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._listenToItemResize = true;\n this._elRef.nativeElement.style.height = '';\n return;\n }\n this.result.showMore = true;\n this._emitResult();\n let fittingElmCount = 0;\n let fittingElmsWidth = 0;\n let shouldHideItems = false;\n\n const showMoreContainerWidth = Math.ceil(this._getElementWidth(this.config.showMoreContainer));\n let layoutWidth = containerWidth - showMoreContainerWidth;\n\n // Try to find all forced visible items\n const forcedItemsIndexes = this._getForcedItemsIndexes();\n\n forcedItemsIndexes.forEach((itemIndex) => {\n const container = this.config.visibleItems[itemIndex];\n if (!container) {\n return;\n }\n const elementSize = this._getElementWidth(container.elementRef.nativeElement);\n\n layoutWidth -= elementSize;\n });\n\n const maxVisibleItems =\n this.config.maxVisibleItems -\n forcedItemsIndexes.filter((index) => index >= this.config.maxVisibleItems).length;\n\n if (layoutWidth < 0 && forcedItemsIndexes.length > 0) {\n console.warn(\n 'There is no enough space to fit all forced visible items into the container. Please adjust their visibility accordingly.'\n );\n }\n\n this._detectChanges$.next();\n\n visibleContainerItems.forEach((item, index) => {\n const itemRef = allItems[index];\n // If item is forced to be visible, just display the item since it's size calculation was already taken care of in previous iteration.\n if (itemRef.overflowItem.forceVisibility) {\n return;\n }\n if (shouldHideItems && !itemRef.overflowItem.forceVisibility) {\n item.containerRef.hidden = true;\n item.softHidden = false;\n itemRef.hidden = true;\n return;\n }\n\n const elementSize = this._getElementWidth(item.elementRef.nativeElement);\n const combinedWidth = fittingElmsWidth + elementSize;\n\n const condition =\n (combinedWidth <= layoutWidth ||\n (item === this.config.visibleItems[this.config.visibleItems.length - 1] &&\n combinedWidth <= layoutWidth + showMoreContainerWidth)) &&\n fittingElmCount < maxVisibleItems;\n\n if (condition) {\n fittingElmsWidth += elementSize;\n fittingElmCount++;\n } else if (!itemRef.overflowItem.forceVisibility) {\n shouldHideItems = true;\n item.softHidden = false;\n item.containerRef.hidden = true;\n itemRef.hidden = true;\n }\n });\n\n // Reverse original order back.\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n\n let hiddenItems = allItems.filter((i) => i.hidden);\n hiddenItems = this.config.reverseHiddenItems ? hiddenItems.reverse() : hiddenItems;\n const visibleItems = allItems.filter((i) => !i.hidden);\n\n visibleItems.forEach((item, index) => {\n item.index = index;\n item.first = index === 0;\n item.last = index === visibleItems.length - 1;\n });\n\n this._hiddenItems = hiddenItems.map((item, index) => {\n item.first = index === 0;\n item.last = index === hiddenItems.length - 1;\n item.index = index;\n return item;\n });\n\n this.result.showMore = this._hiddenItems.length > 0;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._elRef.nativeElement.style.height = '';\n\n this._listenToItemResize = true;\n }\n\n /** @hidden */\n private _getForcedItemsIndexes(): number[] {\n return this._allItems\n .map((item, index) => (item.overflowItem.forceVisibility ? index : -1))\n .filter((i) => i > -1);\n }\n\n /**\n * @hidden\n * Returns combined width of the element including margins.\n * @param element Element to calculate width of.\n */\n private _getElementWidth(element: HTMLElement): number {\n const elementStyle = getComputedStyle(element);\n const elementWidth = element.getBoundingClientRect().width;\n const elementSize = elementWidth + parseFloat(elementStyle.marginLeft) + parseFloat(elementStyle.marginRight);\n\n return Math.ceil(elementSize);\n }\n\n /** @hidden */\n private _emitResult(): void {\n this._result$.next(this.result);\n }\n\n /** @hidden */\n private _listenToSizeChanges(...elements: HTMLElement[]): void {\n elements.forEach((element) =>\n this._subscription.add(\n resizeObservable(element)\n .pipe(\n skip(1),\n filter(() => this._listenToItemResize),\n distinctUntilChanged(),\n debounceTime(30)\n )\n .subscribe(() => {\n setTimeout(() => {\n this.fitVisibleItems();\n });\n })\n )\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\n\nexport const FD_OVERFLOW_CONTAINER = new InjectionToken<OverflowContainer>('FdOverflowContainer');\n","import { InjectionToken } from '@angular/core';\nimport { OverflowExpand } from '../interfaces/overflow-expand.interface';\n\nexport const FD_OVERFLOW_EXPAND = new InjectionToken<OverflowExpand>('FdOverflowLayoutExpand');\n","import { InjectionToken } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\n\nexport const FD_OVERFLOW_FOCUSABLE_ITEM = new InjectionToken<OverflowLayoutFocusableItem>(\n 'FdOverflowLayoutFocusableItem'\n);\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\n\nexport const FD_OVERFLOW_ITEM_REF = new InjectionToken<OverflowItemRef>('OverflowLayoutItemRef');\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, HostBinding, HostListener, Inject, Input, OnDestroy, Optional } from '@angular/core';\nimport { DestroyedService, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { takeUntil } from 'rxjs';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowPopoverContent } from '../interfaces/overflow-popover-content.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { FD_OVERFLOW_CONTAINER } from '../tokens/overflow-container.token';\n\n/**\n * Directive to wrap Overlay Layout \"More\" popover content.\n * Used to apply keyboard navigation through the items.\n */\n@Directive({\n selector: '[fdOverflowLayoutPopoverContent]',\n providers: [DestroyedService]\n})\nexport class OverflowLayoutPopoverContentDirective implements OverflowPopoverContent, OnDestroy {\n /**\n * Array of hidden items.\n */\n @Input()\n set items(value: OverflowItemRef[]) {\n // Need to set items with a delay so that elementRef of the focusable item would refresh.\n setTimeout(() => {\n this._items = value;\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(\n this._items\n .filter((item) => item.overflowItem.focusableItem?.focusable)\n .map((item) => item.overflowItem.focusableItem)\n )\n .withWrap()\n .withHorizontalOrientation(this._dir);\n });\n }\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<OverflowLayoutFocusableItem>;\n\n /** @hidden */\n private _items: OverflowItemRef[];\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-overflow-layout__popover-container';\n\n /** @hidden */\n private _dir: 'ltr' | 'rtl' = 'ltr';\n\n /** @hidden */\n constructor(\n @Inject(FD_OVERFLOW_CONTAINER) private _overflowContainer: OverflowContainer,\n @Optional() private _rtl: RtlService,\n private readonly _onDestroy$: DestroyedService\n ) {\n this._overflowContainer?.registerPopoverContent(this);\n\n this._rtl?.rtl.pipe(takeUntil(this._onDestroy$)).subscribe((rtl) => {\n this._dir = rtl ? 'rtl' : 'ltr';\n if (this._keyboardEventsManager) {\n this._keyboardEventsManager = this._keyboardEventsManager.withHorizontalOrientation(this._dir);\n }\n });\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._items.findIndex((item) => item.overflowItem.elmRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager, so we get a change fired\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n\n /**\n * Focuses on the first tabbable element inside directive's element.\n */\n focusFirstTabbableElement(): void {\n this._keyboardEventsManager.setActiveItem(0);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyboardEventsManager?.destroy();\n }\n}\n","import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n ChangeDetectorRef,\n ContentChild,\n HostBinding,\n ViewChild,\n ElementRef,\n Output,\n EventEmitter,\n TemplateRef,\n ViewChildren,\n AfterViewInit,\n OnDestroy,\n Input,\n OnInit,\n NgZone,\n Optional\n} from '@angular/core';\nimport { debounceTime, filter, first, fromEvent, startWith, Subject, Subscription } from 'rxjs';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowContainer } from './interfaces/overflow-container.interface';\nimport { OverflowExpand } from './interfaces/overflow-expand.interface';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';\nimport { OverflowLayoutConfig, OverflowLayoutService } from './overflow-layout.service';\nimport { FD_OVERFLOW_CONTAINER } from './tokens/overflow-container.token';\nimport { FD_OVERFLOW_EXPAND } from './tokens/overflow-expand.token';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from './tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM_REF } from './tokens/overflow-item-ref.token';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'fd-overflow-layout',\n templateUrl: './overflow-layout.component.html',\n styleUrls: ['./overflow-layout.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_OVERFLOW_CONTAINER,\n useExisting: OverflowLayoutComponent\n },\n OverflowLayoutService\n ]\n})\nexport class OverflowLayoutComponent implements OnInit, AfterViewInit, OnDestroy, OverflowContainer {\n /**\n * Maximum amount of visible items.\n */\n @Input()\n set maxVisibleItems(value: number) {\n if (value === this._maxVisibleItems) {\n return;\n }\n this._maxVisibleItems = value;\n this.triggerRecalculation();\n }\n\n get maxVisibleItems(): number {\n return this._maxVisibleItems;\n }\n\n /**\n * Keyboard event to listen for keyboard navigation through items.\n */\n @Input()\n navigationTrigger: 'keyup' | 'keydown' = 'keyup';\n\n /** Direction of the fitting items calculation. */\n @Input()\n showMorePosition: 'left' | 'right' = 'right';\n\n /** Whether to render hidden items in reverse order. */\n @Input()\n reverseHiddenItems = false;\n\n /** Whether to enable keyboard navigation. */\n @Input()\n enableKeyboardNavigation = true;\n\n /**\n * Event, triggered when amount of visible items has been changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when amount of hidden items has been changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /**\n * @hidden\n * List of items to display.\n */\n @ContentChildren(FD_OVERFLOW_ITEM_REF, { descendants: true })\n _items: QueryList<OverflowItemRef>;\n\n /**\n * @hidden\n * Template for the custom \"More\" button.\n */\n @ContentChild(FD_OVERFLOW_EXPAND)\n _moreButton: Nullable<OverflowExpand>;\n\n /**\n * @hidden\n * List of items that can be focused\n */\n @ContentChildren(FD_OVERFLOW_FOCUSABLE_ITEM, { descendants: true })\n _focusableOverflowItems: QueryList<OverflowLayoutFocusableItem>;\n\n /**\n * @hidden\n * List of rendered items.\n */\n @ViewChildren(OverflowLayoutItemContainerDirective)\n _visibleItems: QueryList<OverflowLayoutItemContainerDirective>;\n\n /**\n * @hidden\n * Items wrapper directive.\n */\n @ViewChild('itemsWrapper')\n _itemsWrapper: ElementRef<HTMLElement>;\n\n /**\n * @hidden\n * Layout container element.\n */\n @ViewChild('layoutContainer')\n _layoutContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @hidden\n * \"More\" button container element.\n */\n @ViewChild('showMoreContainer')\n _showMoreContainer: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _showMore = false;\n\n /** @hidden */\n @HostBinding('class')\n readonly _initialClass = 'fd-overflow-layout';\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _overflowPopoverContent: OverflowPopoverContent;\n\n /** @hidden */\n private _fillTrigger$ = new Subject<void>();\n\n /** @hidden */\n private _maxVisibleItems = Infinity;\n\n /** @hidden */\n private _canListenToResize = false;\n\n /** @hidden */\n private _dir: 'rtl' | 'ltr' = 'ltr';\n\n /** @hidden */\n private _keyboardEventsManager: Nullable<FocusKeyManager<OverflowLayoutFocusableItem>>;\n\n /** Overflow Layout more button text */\n @Input()\n moreItemsButtonText: (hiddenItemsCount: number) => string = (count) => `${count} more`;\n\n /** @hidden */\n private get _config(): OverflowLayoutConfig {\n return {\n visibleItems: this._visibleItems.toArray(),\n items: this._items.toArray(),\n focusableItems: this._focusableOverflowItems.toArray(),\n itemsWrapper: this._itemsWrapper.nativeElement,\n showMoreContainer: this._showMoreContainer.nativeElement,\n layoutContainerElement: this._layoutContainer.nativeElement,\n maxVisibleItems: this.maxVisibleItems,\n direction: this.showMorePosition,\n enableKeyboardNavigation: this.enableKeyboardNavigation,\n reverseHiddenItems: this.reverseHiddenItems\n };\n }\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<HTMLElement>,\n private readonly _ngZone: NgZone,\n protected _cdr: ChangeDetectorRef,\n protected _overflowLayoutService: OverflowLayoutService,\n @Optional() private readonly _rtl: RtlService\n ) {\n this._subscription.add(\n this._fillTrigger$.pipe(debounceTime(30)).subscribe(() => {\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setupKeyboardListener();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscription.add(\n this._overflowLayoutService.detectChanges.subscribe(() => {\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._overflowLayoutService.onResult.subscribe((result) => {\n this._hiddenItems = result.hiddenItems;\n this._showMore = result.showMore;\n\n this.hiddenItemsCount.emit(result.hiddenItems.length);\n this.visibleItemsCount.emit(this._allItems.filter((i) => !i.hidden).length);\n\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._items.changes.pipe(startWith(() => this._items)).subscribe(() => {\n this._allItems = this._items.toArray();\n\n this._cdr.detectChanges();\n\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n\n this._setFocusKeyManager();\n this._subscribeToRtl();\n\n // There might be cases when the elements are not rendered yet, but the component is initialized already.\n // It may happen when it's inside the components that are wrapping ng-content with ng-containers and so on.\n // IntersectionObserver is a good solution for this case, but it's hardly manageable when testing.\n this._ngZone.onStable.pipe(first()).subscribe(() => {\n this._overflowLayoutService.startListening(this._config);\n\n this._canListenToResize = true;\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = null;\n }\n\n /**\n * Triggers layout recalculation of the items.\n */\n triggerRecalculation(): void {\n if (!this._canListenToResize) {\n return;\n }\n\n this._fillTrigger$.next();\n }\n\n /**\n * Sets current focused element.\n * @param element Element that needs to be focused.\n */\n setFocusedElement(element: OverflowLayoutFocusableItem): void {\n const index = this._focusableOverflowItems.toArray().findIndex((item) => item === element);\n\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n /**\n * Registers popover content directive for main component.\n * @param content {OverflowPopoverContent} directive\n */\n registerPopoverContent(content: OverflowPopoverContent): void {\n this._overflowPopoverContent = content;\n }\n\n /** @hidden */\n _itemsTrackFn(_: number, item: OverflowItemRef): TemplateRef<any> {\n return item.templateRef;\n }\n\n /** @hidden */\n _onPopoverStateChange(opened: boolean): void {\n if (opened) {\n this._overflowPopoverContent?.focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _setupKeyboardListener(): void {\n this._subscription.add(\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, this.navigationTrigger)\n .pipe(filter(() => this.enableKeyboardNavigation))\n .subscribe((event) => {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._focusableOverflowItems\n .toArray()\n .findIndex((item) => item.focusable && item.elementRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager so, we get a change fired\n this._keyboardEventsManager?.onKeydown(event);\n }\n })\n );\n }\n\n /** @hidden */\n private _setFocusKeyManager(): void {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n this._dir = this._rtl?.rtl.value ? 'rtl' : 'ltr';\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this._focusableOverflowItems)\n .withWrap()\n .withHorizontalOrientation(this._dir)\n .withVerticalOrientation()\n .skipPredicate((item) => !item.navigable || item.hidden);\n }\n\n /** @hidden Rtl change subscription */\n private _subscribeToRtl(): void {\n if (!this._rtl || !this.enableKeyboardNavigation) {\n return;\n }\n\n this._subscription.add(\n this._rtl.rtl.subscribe((isRtl) => {\n this._dir = isRtl ? 'rtl' : 'ltr';\n\n this._keyboardEventsManager = this._keyboardEventsManager?.withHorizontalOrientation(this._dir);\n })\n );\n }\n}\n","<ng-template [ngIf]=\"showMorePosition === 'left'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template [ngIf]=\"showMorePosition === 'right'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'block' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ 'coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length } }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n <ng-container *ngFor=\"let item of _hiddenItems\">\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n","import { Directive, ElementRef, Input, TemplateRef } from '@angular/core';\nimport { OverflowItemDirectiveContext, OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\n\n/**\n * Structural directive which is used to pass the context of the item to the template engine.\n */\n@Directive({\n selector: '[fdOverflowItemRef]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM_REF,\n useExisting: OverflowItemRefDirective\n }\n ]\n})\nexport class OverflowItemRefDirective<T = any> implements OverflowItemRef<T> {\n /**\n * Element ref of the `fdOverflowLayoutItem` directive.\n */\n elementRef: ElementRef<HTMLElement>;\n /**\n * `fdOverflowLayoutItem` directive.\n */\n overflowItem: OverflowItem;\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this._hidden = value;\n this.overflowItem.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._hidden;\n }\n\n /** @hidden */\n _hidden = false;\n\n /** Index of the item in the visible or hidden array of Overflow Layout Component's items. */\n index: number;\n\n /**\n * The index of the item in the array of items.\n */\n globalIndex: number;\n\n /** Whether this item is last in the array. */\n first: boolean;\n\n /** Whether this item is first in the array. */\n last: boolean;\n\n /** Whether the item is softly hidden. */\n softHidden = true;\n\n /** Item instance. Used for correct autocomplete. */\n @Input('fdOverflowItemRef')\n item: T;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowItemRefDirective,\n ctx: OverflowItemDirectiveContext\n ): ctx is OverflowItemDirectiveContext {\n return true;\n }\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowItemDirectiveContext<T>>) {}\n\n /**\n * Sets the element reference of the `fdOverflowLayoutItem` directive.`\n * @param elmRef\n */\n setElementRef(elmRef: ElementRef): void {\n if (this.elementRef) {\n return;\n }\n this.elementRef = elmRef;\n }\n\n /**\n * Sets the `fdOverflowLayoutItem` directive.\n * @param item\n */\n setOverflowItem(item: OverflowItem): void {\n this.overflowItem = item;\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { OverflowExpand, OverflowExpandDirectiveContext } from '../interfaces/overflow-expand.interface';\nimport { FD_OVERFLOW_EXPAND } from '../tokens/overflow-expand.token';\n\n/**\n * Structural directive which is responsible for rendering the \"More\" button and handling further logic.\n */\n@Directive({\n selector: '[fdOverflowExpand]',\n providers: [\n {\n provide: FD_OVERFLOW_EXPAND,\n useExisting: OverflowExpandDirective\n }\n ]\n})\nexport class OverflowExpandDirective<T extends any[] = any[]> implements OverflowExpand<T> {\n /** Items to expand */\n @Input()\n fdOverflowExpandItems: T;\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowExpandDirective,\n ctx: OverflowExpandDirectiveContext\n ): ctx is OverflowExpandDirectiveContext {\n return true;\n }\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowExpandDirectiveContext<T>>) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\n\nexport const FD_OVERFLOW_ITEM = new InjectionToken<OverflowItem>('FdOverflowItem');\n","import { Directive, ElementRef, EventEmitter, Inject, Input, OnInit, Optional, Output, SkipSelf } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n/**\n * Directive to mark element as part of for Overflow Layout Component items.\n */\n@Directive({\n selector: '[fdOverflowLayoutItem]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM,\n useExisting: OverflowLayoutItemDirective\n }\n ]\n})\nexport class OverflowLayoutItemDirective implements OverflowItem, OnInit {\n /** Whether to force the visibility of the item. */\n @Input()\n set forceVisibility(value: boolean) {\n if (value === this._forceVisibility) {\n return;\n }\n\n this._forceVisibility = value;\n this._overflowContainer.triggerRecalculation();\n }\n\n get forceVisibility(): boolean {\n return this._forceVisibility;\n }\n\n /**\n * Event emitted when `hidden` property has been changed.\n */\n @Output()\n hiddenChange = new EventEmitter<boolean>();\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._overflowItemRef?.hidden === true;\n }\n\n /**\n * Focusable item for keyboard navigation.\n */\n focusableItem: OverflowLayoutFocusableItem;\n\n /** @hidden */\n private _forceVisibility = false;\n\n /** @hidden */\n constructor(\n private _overflowContainer: OverflowLayoutComponent,\n public elmRef: ElementRef,\n @Optional() @SkipSelf() @Inject(FD_OVERFLOW_ITEM_REF) private _overflowItemRef: OverflowItemRef | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._overflowItemRef?.setElementRef(this.elmRef);\n this._overflowItemRef?.setOverflowItem(this);\n }\n}\n","import { Directive, ElementRef, HostBinding, HostListener, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from '../tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n@Directive({\n selector: '[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]',\n providers: [\n {\n provide: FD_OVERFLOW_FOCUSABLE_ITEM,\n useExisting: OverflowLayoutFocusableItemDirective\n }\n ]\n})\nexport class OverflowLayoutFocusableItemDirective implements OverflowLayoutFocusableItem, OnInit {\n /** Whether the item should be focusable. */\n @Input()\n focusable = true;\n\n /** Whether the item should be navigable via keyboard. */\n @Input()\n navigable = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n private get _tabindex(): number {\n return this.focusable ? 0 : -1;\n }\n\n /** Whether the item is hidden. */\n get hidden(): boolean {\n return !!this._overflowItem?.hidden;\n }\n\n /** @hidden */\n @HostListener('focus')\n private _onFocus(): void {\n this._overflowContainer.setFocusedElement(this);\n }\n\n /** @hidden */\n constructor(\n private readonly _overflowContainer: OverflowLayoutComponent,\n @Inject(FD_OVERFLOW_ITEM) @Optional() private readonly _overflowItem: OverflowItem,\n public readonly elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this._overflowItem) {\n this._overflowItem.focusableItem = this;\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { I18nModule } from '@fundamental-ngx/i18n';\nimport { OverflowLayoutComponent } from './overflow-layout.component';\nimport { OverflowItemRefDirective } from './directives/overflow-item-ref.directive';\nimport { OverflowExpandDirective } from './directives/overflow-expand.directive';\nimport { OverflowLayoutItemDirective } from './directives/overflow-layout-item.directive';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutFocusableItemDirective } from './directives/overflow-layout-focusable-item.directive';\n\n@NgModule({\n imports: [CommonModule, PopoverModule, ButtonModule, I18nModule],\n exports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ],\n declarations: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ]\n})\nexport class OverflowLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.OverflowLayoutService","i2","i6.OverflowItemContainerRefDirective","i7.OverflowLayoutPopoverContentDirective","i8.OverflowLayoutItemContainerDirective"],"mappings":";;;;;;;;;;;;;;;;AAEA;;AAEG;MAIU,iCAAiC,CAAA;AAU1C;;;AAGG;IACH,IAAI,MAAM,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YACxB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAG,CAAC;AACjD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,SAAA;AAAM,aAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9E,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,SAAA;KACJ;;AAGD,IAAA,WAAA,CACY,YAA8B,EAC9B,iBAAmC,EACnC,OAAmB,EAAA;QAFnB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAkB;QAC9B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACnC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;;QA3BvB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;QAGlB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;QA2BpB,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAChE;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;KAC5B;;8HAzCQ,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kHAAjC,iCAAiC,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAH7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AAC3C,iBAAA,CAAA;;;MCDY,oCAAoC,CAAA;;AAiC7C,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;;QA9BxB,IAAa,CAAA,aAAA,GAAG,0BAA0B,CAAC;AAE5D;;AAEG;QAGH,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AAEb;;AAEG;QAGH,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAEd;;AAEG;QAGH,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;KAS2B;;iIAjCpC,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,4ZA6B/B,iCAAiC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FA7BtC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAHhD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC9C,iBAAA,CAAA;iGAIoB,aAAa,EAAA,CAAA;sBAD7B,WAAW;uBAAC,OAAO,CAAA;gBAQpB,IAAI,EAAA,CAAA;sBAFH,KAAK;;sBACL,WAAW;uBAAC,sCAAsC,CAAA;gBAQnD,KAAK,EAAA,CAAA;sBAFJ,KAAK;;sBACL,WAAW;uBAAC,uCAAuC,CAAA;gBAQpD,UAAU,EAAA,CAAA;sBAFT,KAAK;;sBACL,WAAW;uBAAC,6CAA6C,CAAA;gBAO1D,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,iCAAiC,CAAA;;;MCftC,6BAA6B,CAAA;AAA1C,IAAA,WAAA,GAAA;;QAEI,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAGjB,IAAK,CAAA,KAAA,GAAsB,EAAE,CAAC;;QAG9B,IAAW,CAAA,WAAA,GAAsB,EAAE,CAAC;;QAGpC,IAAY,CAAA,YAAA,GAAsB,EAAE,CAAC;KACxC;AAAA,CAAA;MAGY,qBAAqB,CAAA;AA6B9B;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACvC;;AAGD,IAAA,WAAA,CAAoB,MAA+B,EAAA;QAA/B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAyB;AAtCnD;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,6BAA6B,EAAE,CAAC;;QAGrC,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;;AAGlB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;;QAG5C,IAAS,CAAA,SAAA,GAAsB,EAAE,CAAC;;QAGlC,IAAY,CAAA,YAAA,GAAsB,EAAE,CAAC;;AAGrC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAGtC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAiC,CAAC;KAiBT;;IAGvD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KACpC;;AAGD,IAAA,cAAc,CAAC,MAA4B,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KAClF;;AAGD,IAAA,SAAS,CAAC,MAA4B,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;AAED;;AAEG;IACH,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAEnC,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,qBAAqB,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,IAAI,CAAC;QAEvF,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;AAE7B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,qBAAqB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;AAC7D,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAE5B,QAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC7E,qBAAqB;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,GAAG,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,EAAE,CAAC;AAEhG,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AAC/E,QAAA,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CACvC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EACpF,CAAC,CACJ,CAAC;QAEF,IACI,cAAc,IAAI,mBAAmB;YACrC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe;AAC9D,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAChC;;AAEE,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtB,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC5B,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;YAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAC5C,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC/F,QAAA,IAAI,WAAW,GAAG,cAAc,GAAG,sBAAsB,CAAC;;AAG1D,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAEzD,QAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,EAAE;gBACZ,OAAO;AACV,aAAA;AACD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAE9E,WAAW,IAAI,WAAW,CAAC;AAC/B,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,eAAe,GACjB,IAAI,CAAC,MAAM,CAAC,eAAe;AAC3B,YAAA,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;QAEtF,IAAI,WAAW,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CACR,0HAA0H,CAC7H,CAAC;AACL,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAE5B,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC1C,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;AAEhC,YAAA,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE;gBACtC,OAAO;AACV,aAAA;YACD,IAAI,eAAe,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE;AAC1D,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;AAChC,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,gBAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;gBACtB,OAAO;AACV,aAAA;AAED,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACzE,YAAA,MAAM,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAErD,YAAA,MAAM,SAAS,GACX,CAAC,aAAa,IAAI,WAAW;AACzB,iBAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACnE,oBAAA,aAAa,IAAI,WAAW,GAAG,sBAAsB,CAAC;gBAC9D,eAAe,GAAG,eAAe,CAAC;AAEtC,YAAA,IAAI,SAAS,EAAE;gBACX,gBAAgB,IAAI,WAAW,CAAC;AAChC,gBAAA,eAAe,EAAE,CAAC;AACrB,aAAA;AAAM,iBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE;gBAC9C,eAAe,GAAG,IAAI,CAAC;AACvB,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;AAChC,gBAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,aAAA;AACL,SAAC,CAAC,CAAC;;AAGH,QAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;AAE7E,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC5B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACnD,QAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC;AACnF,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEvD,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACjC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAChD,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AAE5C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC;;IAGO,sBAAsB,GAAA;QAC1B,OAAO,IAAI,CAAC,SAAS;aAChB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;aACtE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC9B;AAED;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,OAAoB,EAAA;AACzC,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AAC3D,QAAA,MAAM,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAE9G,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACjC;;IAGO,WAAW,GAAA;QACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnC;;IAGO,oBAAoB,CAAC,GAAG,QAAuB,EAAA;AACnD,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,gBAAgB,CAAC,OAAO,CAAC;aACpB,IAAI,CACD,IAAI,CAAC,CAAC,CAAC,EACP,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,EACtC,oBAAoB,EAAE,EACtB,YAAY,CAAC,EAAE,CAAC,CACnB;aACA,SAAS,CAAC,MAAK;YACZ,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;SACN,CAAC,CACT,CACJ,CAAC;KACL;;kHAlQQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;MC/BE,qBAAqB,GAAG,IAAI,cAAc,CAAoB,qBAAqB;;MCAnF,kBAAkB,GAAG,IAAI,cAAc,CAAiB,wBAAwB;;ACAtF,MAAM,0BAA0B,GAAG,IAAI,cAAc,CACxD,+BAA+B,CAClC;;MCFY,oBAAoB,GAAG,IAAI,cAAc,CAAkB,uBAAuB;;ACQ/F;;;AAGG;MAKU,qCAAqC,CAAA;AAC9C;;AAEG;IACH,IACI,KAAK,CAAC,KAAwB,EAAA;;QAE9B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,CAC7C,IAAI,CAAC,MAAM;AACN,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC;AAC5D,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CACtD;AACI,iBAAA,QAAQ,EAAE;AACV,iBAAA,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;;AAgBD,IAAA,WAAA,CAC2C,kBAAqC,EACxD,IAAgB,EACnB,WAA6B,EAAA;QAFP,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;QACxD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QACnB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;;QATjC,IAAa,CAAA,aAAA,GAAG,uCAAuC,CAAC;;QAGjE,IAAI,CAAA,IAAA,GAAkB,KAAK,CAAC;AAQhC,QAAA,IAAI,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAC/D,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC;YAChC,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClG,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;AAID,IAAA,YAAY,CAAC,KAAoB,EAAA;QAC7B,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;AACvG,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,gBAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE;YAC3E,KAAK,CAAC,cAAc,EAAE,CAAC;;AAGvB,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChD,SAAA;KACJ;AAED;;AAEG;IACH,yBAAyB,GAAA;AACrB,QAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;KAChD;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC;KAC1C;;AA7EQ,qCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qCAAqC,kBAmClC,qBAAqB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAnCxB,qCAAqC,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAFnC,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEpB,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAJjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kCAAkC;oBAC5C,SAAS,EAAE,CAAC,gBAAgB,CAAC;AAChC,iBAAA,CAAA;;0BAoCQ,MAAM;2BAAC,qBAAqB,CAAA;;0BAC5B,QAAQ;2EA/BT,KAAK,EAAA,CAAA;sBADR,KAAK;gBAwBW,aAAa,EAAA,CAAA;sBAD7B,WAAW;uBAAC,OAAO,CAAA;gBAwBpB,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCjBxB,uBAAuB,CAAA;AAChC;;AAEG;IACH,IACI,eAAe,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACjC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;AAED,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;;AAwHD,IAAA,IAAY,OAAO,GAAA;QACf,OAAO;AACH,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC1C,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5B,YAAA,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;AACtD,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;AAC9C,YAAA,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa;AACxD,YAAA,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa;YAC3D,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC9C,CAAC;KACL;;IAGD,WACqB,CAAA,WAAoC,EACpC,OAAe,EACtB,IAAuB,EACvB,sBAA6C,EAC1B,IAAgB,EAAA;QAJ5B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAyB;QACpC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAmB;QACvB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAuB;QAC1B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AA3IjD;;AAEG;QAEH,IAAiB,CAAA,iBAAA,GAAwB,OAAO,CAAC;;QAIjD,IAAgB,CAAA,gBAAA,GAAqB,OAAO,CAAC;;QAI7C,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;;QAI3B,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC;AAEhC;;AAEG;AAEH,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU,CAAC;AAE/C;;AAEG;AAEH,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;;QAoD9C,IAAS,CAAA,SAAA,GAAsB,EAAE,CAAC;;QAGlC,IAAY,CAAA,YAAA,GAAsB,EAAE,CAAC;;QAGrC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;QAIT,IAAa,CAAA,aAAA,GAAG,oBAAoB,CAAC;;AAG7B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;;AAM5C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAGpC,IAAgB,CAAA,gBAAA,GAAG,QAAQ,CAAC;;QAG5B,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;;QAG3B,IAAI,CAAA,IAAA,GAAkB,KAAK,CAAC;;QAOpC,IAAmB,CAAA,mBAAA,GAAyC,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO,CAAC;QA0BnF,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACrD,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC;SACjD,CAAC,CACL,CAAC;KACL;;IAGD,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;;IAGD,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC7B,CAAC,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACtD,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AACvC,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;YAEjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC7B,CAAC,CACL,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAEvC,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAE1B,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC;SACjD,CAAC,CACL,CAAC;QAEF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;;;;AAKvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YAC/C,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,SAAC,CAAC,CAAC;KACN;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACtC;AAED;;AAEG;IACH,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,OAAoC,EAAA;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,CAAC,CAAC;AAE3F,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,sBAAsB,CAAC,OAA+B,EAAA;AAClD,QAAA,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;KAC1C;;IAGD,aAAa,CAAC,CAAS,EAAE,IAAqB,EAAA;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;AAGD,IAAA,qBAAqB,CAAC,MAAe,EAAA;AACjC,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,CAAC;AAC7D,SAAA;KACJ;;IAGO,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,SAAS,CAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;aAC3E,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACjD,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACjB,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AAC/B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB;AACrC,qBAAA,OAAO,EAAE;qBACT,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3F,gBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE;gBAC3E,KAAK,CAAC,cAAc,EAAE,CAAC;;AAGvB,gBAAA,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AACjD,aAAA;SACJ,CAAC,CACT,CAAC;KACL;;IAGO,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAChC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC1E,aAAA,QAAQ,EAAE;AACV,aAAA,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,aAAA,uBAAuB,EAAE;AACzB,aAAA,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;KAChE;;IAGO,eAAe,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAC9C,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC9B,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAElC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnG,CAAC,CACL,CAAC;KACL;;oHA7TQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EARrB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,WAAW,EAAE,uBAAuB;AACvC,SAAA;QACD,qBAAqB;KACxB,EA4Da,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kBAAkB,4DAPf,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,SAAA,EAcpB,0BAA0B,EAO7B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,oCAAoC,gDC5HtD,wyGA2EA,EAAA,MAAA,EAAA,CAAA,w/DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDvBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;+BACI,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,WAAW,EAAyB,uBAAA;AACvC,yBAAA;wBACD,qBAAqB;AACxB,qBAAA,EAAA,QAAA,EAAA,wyGAAA,EAAA,MAAA,EAAA,CAAA,w/DAAA,CAAA,EAAA,CAAA;;0BA8JI,QAAQ;4CAvJT,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAiBN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAKN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAKN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAKN,wBAAwB,EAAA,CAAA;sBADvB,KAAK;gBAON,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAOP,gBAAgB,EAAA,CAAA;sBADf,MAAM;gBAQP,MAAM,EAAA,CAAA;sBADL,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAQ5D,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,kBAAkB,CAAA;gBAQhC,uBAAuB,EAAA,CAAA;sBADtB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAQlE,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,oCAAoC,CAAA;gBAQlD,aAAa,EAAA,CAAA;sBADZ,SAAS;uBAAC,cAAc,CAAA;gBAQzB,gBAAgB,EAAA,CAAA;sBADf,SAAS;uBAAC,iBAAiB,CAAA;gBAQ5B,kBAAkB,EAAA,CAAA;sBADjB,SAAS;uBAAC,mBAAmB,CAAA;gBAcrB,aAAa,EAAA,CAAA;sBADrB,WAAW;uBAAC,OAAO,CAAA;gBA0BpB,mBAAmB,EAAA,CAAA;sBADlB,KAAK;;;AElLV;;AAEG;MAUU,wBAAwB,CAAA;AAUjC;;AAEG;IACH,IAAI,MAAM,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9C;AACD,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;;AA2BD,IAAA,OAAO,sBAAsB,CACzB,GAA6B,EAC7B,GAAiC,EAAA;AAEjC,QAAA,OAAO,IAAI,CAAC;KACf;;AAGD,IAAA,WAAA,CAAmB,WAAyD,EAAA;QAAzD,IAAW,CAAA,WAAA,GAAX,WAAW,CAA8C;;QAhC5E,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;QAiBhB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;KAe8D;AAEhF;;;AAGG;AACH,IAAA,aAAa,CAAC,MAAkB,EAAA;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;KAC5B;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,IAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;;qHAzEQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAPtB,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,WAAW,EAAE,wBAAwB;AACxC,SAAA;AACJ,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,oBAAoB;AAC7B,4BAAA,WAAW,EAA0B,wBAAA;AACxC,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;kGA4CG,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,mBAAmB,CAAA;;;ACvD9B;;AAEG;MAUU,uBAAuB,CAAA;;AAMhC,IAAA,OAAO,sBAAsB,CACzB,GAA4B,EAC5B,GAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,CAAC;KACf;;AAGD,IAAA,WAAA,CAAmB,WAA2D,EAAA;QAA3D,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgD;KAAI;;oHAdzE,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAPrB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,WAAW,EAAE,uBAAuB;AACvC,SAAA;AACJ,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAyB,uBAAA;AACvC,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;kGAIG,qBAAqB,EAAA,CAAA;sBADpB,KAAK;;;MCfG,gBAAgB,GAAG,IAAI,cAAc,CAAe,gBAAgB;;ACKjF;;AAEG;MAUU,2BAA2B,CAAA;;IAEpC,IACI,eAAe,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACjC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;KAClD;AAED,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAQD;;AAEG;IACH,IAAI,MAAM,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;AACD,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;KACjD;;AAWD,IAAA,WAAA,CACY,kBAA2C,EAC5C,MAAkB,EACqC,gBAAwC,EAAA;QAF9F,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;QAC5C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QACqC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAwB;AA5B1G;;AAEG;AAEH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW,CAAC;;QAkBnC,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;KAO7B;;IAGJ,QAAQ,GAAA;QACJ,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;KAChD;;AAnDQ,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,gFA4CA,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5C/C,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAPzB,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,WAAW,EAAE,2BAA2B;AAC3C,SAAA;AACJ,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEQ,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,WAAW,EAA6B,2BAAA;AAC3C,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;;0BA6CQ,QAAQ;;0BAAI,QAAQ;;0BAAI,MAAM;2BAAC,oBAAoB,CAAA;4CAzCpD,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAkBN,YAAY,EAAA,CAAA;sBADX,MAAM;;;MCvBE,oCAAoC,CAAA;;AAU7C,IAAA,IACY,SAAS,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAClC;;AAGD,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;KACvC;;IAIO,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KACnD;;AAGD,IAAA,WAAA,CACqB,kBAA2C,EACL,aAA2B,EAClE,UAAmC,EAAA;QAFlC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;QACL,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;QAClE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;;QA3BvD,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;;QAIjB,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;KAwBb;;IAGJ,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3C,SAAA;KACJ;;IAGD,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACzC;;AA3CQ,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,sDA6BjC,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7BnB,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,EAPlC,QAAA,EAAA,oEAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,0BAA0B;AACnC,YAAA,WAAW,EAAE,oCAAoC;AACpD,SAAA;AACJ,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEQ,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAThD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oEAAoE;AAC9E,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,0BAA0B;AACnC,4BAAA,WAAW,EAAsC,oCAAA;AACpD,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;;0BA8BQ,MAAM;2BAAC,gBAAgB,CAAA;;0BAAG,QAAQ;qEA1BvC,SAAS,EAAA,CAAA;sBADR,KAAK;gBAKN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAKM,SAAS,EAAA,CAAA;sBADpB,WAAW;uBAAC,eAAe,CAAA;gBAYpB,QAAQ,EAAA,CAAA;sBADf,YAAY;uBAAC,OAAO,CAAA;;;MCAZ,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAVzB,uBAAuB;QACvB,wBAAwB;QACxB,uBAAuB;QACvB,2BAA2B;QAC3B,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;QACpC,oCAAoC,CAAA,EAAA,OAAA,EAAA,CAnB9B,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CAE3D,uBAAuB;QACvB,wBAAwB;QACxB,uBAAuB;QACvB,2BAA2B;QAC3B,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;QACpC,oCAAoC,CAAA,EAAA,CAAA,CAAA;AAa/B,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAtBnB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA;2FAsBtD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAvBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAAC;AAChE,oBAAA,OAAO,EAAE;wBACL,uBAAuB;wBACvB,wBAAwB;wBACxB,uBAAuB;wBACvB,2BAA2B;wBAC3B,iCAAiC;wBACjC,qCAAqC;wBACrC,oCAAoC;wBACpC,oCAAoC;AACvC,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,uBAAuB;wBACvB,wBAAwB;wBACxB,uBAAuB;wBACvB,2BAA2B;wBAC3B,iCAAiC;wBACjC,qCAAqC;wBACrC,oCAAoC;wBACpC,oCAAoC;AACvC,qBAAA;AACJ,iBAAA,CAAA;;;ACpCD;;AAEG;;;;"}
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { EventEmitter, Directive, Input, HostBinding, Output, inject, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, HostListener, InjectionToken, Inject, Optional, NgModule, ElementRef, Injectable, Injector, ViewContainerRef, ContentChild } from '@angular/core';
|
|
3
3
|
import * as i1$2 from '@angular/cdk/overlay';
|
|
4
4
|
import { CdkScrollable, OverlayConfig, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
5
|
-
import { ESCAPE,
|
|
5
|
+
import { ESCAPE, DOWN_ARROW } from '@angular/cdk/keycodes';
|
|
6
6
|
import * as i2 from '@angular/cdk/a11y';
|
|
7
7
|
import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
|
|
8
8
|
import { Subject, Subscription, merge } from 'rxjs';
|
|
@@ -1035,6 +1035,10 @@ class PopoverComponent extends BasePopoverClass {
|
|
|
1035
1035
|
this.mobile = false;
|
|
1036
1036
|
/** Config for the popover in mobile mode */
|
|
1037
1037
|
this.mobileConfig = { hasCloseButton: true };
|
|
1038
|
+
/**
|
|
1039
|
+
* Whether the popover should prevent page scrolling when space key is pressed.
|
|
1040
|
+
**/
|
|
1041
|
+
this.preventSpaceKeyScroll = true;
|
|
1038
1042
|
}
|
|
1039
1043
|
/** @hidden */
|
|
1040
1044
|
ngAfterViewInit() {
|
|
@@ -1062,17 +1066,18 @@ class PopoverComponent extends BasePopoverClass {
|
|
|
1062
1066
|
/** @hidden */
|
|
1063
1067
|
onKeyDown(event) {
|
|
1064
1068
|
const activeElement = document.activeElement;
|
|
1069
|
+
if (!this.preventSpaceKeyScroll) {
|
|
1070
|
+
return;
|
|
1071
|
+
}
|
|
1065
1072
|
if (
|
|
1066
1073
|
// popoverControl will be undefined when popover is used from "fdPopoverTrigger"
|
|
1067
1074
|
this.popoverControl?.elRef.nativeElement.children[0] === activeElement &&
|
|
1068
1075
|
activeElement?.tagName !== 'INPUT' &&
|
|
1069
1076
|
activeElement?.tagName !== 'TEXTAREA' &&
|
|
1070
1077
|
!activeElement?.classList.contains(SELECT_CLASS_NAMES.selectControl)) {
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
this._popoverService.toggle();
|
|
1075
|
-
}
|
|
1078
|
+
// prevent page scrolling on Space keydown
|
|
1079
|
+
event.preventDefault();
|
|
1080
|
+
this._popoverService.toggle();
|
|
1076
1081
|
}
|
|
1077
1082
|
}
|
|
1078
1083
|
/** Toggles menu open/close state */
|
|
@@ -1187,7 +1192,7 @@ class PopoverComponent extends BasePopoverClass {
|
|
|
1187
1192
|
}
|
|
1188
1193
|
}
|
|
1189
1194
|
PopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PopoverComponent, deps: [{ token: PopoverService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i2$2.DynamicComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1190
|
-
PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PopoverComponent, isStandalone: true, selector: "fd-popover", inputs: { title: "title", trigger: "trigger", fixedPosition: "fixedPosition", id: "id", mobile: "mobile", mobileConfig: "mobileConfig" }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.fd-popover-custom--mobile": "mobile", "attr.id": "id" }, classAttribute: "fd-popover-custom" }, providers: [
|
|
1195
|
+
PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PopoverComponent, isStandalone: true, selector: "fd-popover", inputs: { title: "title", trigger: "trigger", fixedPosition: "fixedPosition", id: "id", mobile: "mobile", mobileConfig: "mobileConfig", preventSpaceKeyScroll: "preventSpaceKeyScroll" }, host: { listeners: { "keydown.enter": "onKeyDown($event)", "keydown.space": "onKeyDown($event)" }, properties: { "class.fd-popover-custom--mobile": "mobile", "attr.id": "id" }, classAttribute: "fd-popover-custom" }, providers: [
|
|
1191
1196
|
PopoverService,
|
|
1192
1197
|
{
|
|
1193
1198
|
provide: FD_POPOVER_COMPONENT,
|
|
@@ -1223,6 +1228,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
1223
1228
|
type: Input
|
|
1224
1229
|
}], mobileConfig: [{
|
|
1225
1230
|
type: Input
|
|
1231
|
+
}], preventSpaceKeyScroll: [{
|
|
1232
|
+
type: Input
|
|
1226
1233
|
}], templateRef: [{
|
|
1227
1234
|
type: ViewChild,
|
|
1228
1235
|
args: ['templateRef', { read: TemplateRef }]
|
|
@@ -1249,7 +1256,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
1249
1256
|
args: ['popoverFooterContent']
|
|
1250
1257
|
}], onKeyDown: [{
|
|
1251
1258
|
type: HostListener,
|
|
1252
|
-
args: ['keydown', ['$event']]
|
|
1259
|
+
args: ['keydown.enter', ['$event']]
|
|
1260
|
+
}, {
|
|
1261
|
+
type: HostListener,
|
|
1262
|
+
args: ['keydown.space', ['$event']]
|
|
1253
1263
|
}] } });
|
|
1254
1264
|
|
|
1255
1265
|
class PopoverModule {
|