{"version":3,"file":"usitsdasdesign-dds-ng-context-menu.mjs","sources":["../../src/app/dds/context-menu/context-menu-group/constants.ts","../../src/app/dds/context-menu/context-menu-group/context-menu-group.component.ts","../../src/app/dds/context-menu/context-menu-group/context-menu-group.component.html","../../src/app/dds/context-menu/utils.ts","../../src/app/dds/context-menu/context-menu-item/constants.ts","../../src/app/dds/context-menu/services/context-menu.service.ts","../../src/app/dds/context-menu/context-menu-item/context-menu-item.component.ts","../../src/app/dds/context-menu/context-menu-item/context-menu-item.component.html","../../src/app/dds/context-menu/context-menu/constants.ts","../../src/app/dds/context-menu/context-menu/context-menu.component.ts","../../src/app/dds/context-menu/context-menu/context-menu.component.html","../../src/app/dds/context-menu/context-menu.module.ts","../../src/app/dds/context-menu/usitsdasdesign-dds-ng-context-menu.ts"],"sourcesContent":["export const GROUP_CLASS = 'dds-context-menu-group';\n","\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { GROUP_CLASS } from './constants';\n\n@Component({\n  selector: 'dds-context-menu-group',\n  templateUrl: './context-menu-group.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: GROUP_CLASS },\n  standalone: true,\n})\nexport class ContextMenuGroupComponent {\n  @Input() label: string | undefined;\n}\n","@if (label) {<span class=\"dds-context-menu-group__label\">{{label}}</span>}\n\n<ng-content></ng-content>","// Method to check if a value is numeric\nexport function isNumeric(val: any): boolean {\n  return !(val instanceof Array) && val - parseFloat(val) + 1 >= 0;\n}\n\n// Method to generate a unique item ID\nexport function getItemId(): number {\n  return Number(`${new Date().getTime() + Math.random()}`);\n}\n","export const CONTROL_CLASS = 'dds-context-menu-item__control';\nexport const ARIA_ROLE_OPTION = 'option';\nexport const TAB_INDEX = '-1';\n","import { Injectable } from '@angular/core';\nimport { ContextMenuItemComponent } from '../context-menu-item/context-menu-item.component';\nimport { ContextMenuComponent } from '../context-menu/context-menu.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContextMenuService {\n  public contextMenu: ContextMenuComponent;\n\n  public initContextMenu(component: ContextMenuComponent): void {\n    this.contextMenu = component;\n  }\n\n  public addItem(item: ContextMenuItemComponent): void {\n    if (this.contextMenu) {\n      this.contextMenu.addSelectItem(item);\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { CheckboxComponent } from '@usitsdasdesign/dds-ng/checkbox';\nimport { DestroyCtor, DestroyMixin } from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { RadioComponent } from '@usitsdasdesign/dds-ng/radio';\nimport { AdditionalClass, KeyCodes } from '@usitsdasdesign/dds-ng/shared';\nimport { ToggleComponent } from '@usitsdasdesign/dds-ng/toggle';\nimport { takeUntil } from 'rxjs/operators';\nimport { ContextMenuService } from '../services/context-menu.service';\nimport { getItemId } from '../utils';\nimport { ARIA_ROLE_OPTION, CONTROL_CLASS, TAB_INDEX } from './constants';\n\nconst ContextMenuItemBase: DestroyCtor = DestroyMixin();\n\n@Component({\n  selector: 'dds-context-menu-item',\n  templateUrl: './context-menu-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class ContextMenuItemComponent extends ContextMenuItemBase implements OnInit, AfterViewInit, OnChanges {\n  // Bind the disabled class to the component based on the disabled input property\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) width = true;\n\n  // Query for CheckboxComponent, RadioComponent, and ToggleComponent within the content of this component\n  @ContentChild(CheckboxComponent) checkbox: CheckboxComponent;\n  @ContentChild(RadioComponent) radio: RadioComponent;\n  @ContentChild(ToggleComponent) toggle: ToggleComponent;\n\n  // Reference to the button element for external focusing\n  @ViewChild('btnRef') btnRef: ElementRef<HTMLButtonElement>;\n\n  // Input properties for ARIA attributes and custom class\n  @Input() ariaLabel: string | undefined;\n  @Input() ariaRole: string | undefined = ARIA_ROLE_OPTION;\n  @Input() attrTabindex: string | undefined = TAB_INDEX;\n  @Input() customClass: string | undefined;\n  @Input() ariaSelected: boolean | undefined = false;\n  @Input() template: TemplateRef<unknown> | undefined;\n\n  // Input property for counter\n  @Input() counter: number | undefined;\n  // Input property to set focus on the component\n  @Input()\n  set focus(value: boolean | undefined) {\n    if (value) {\n      this.keyboardFocus();\n    } else {\n      this.keyboardUnfocus();\n    }\n  }\n\n  // Output events for selected item and selection change\n  @Output() selectedItem = new EventEmitter<Event>();\n  @Output() selectedChanged = new EventEmitter<boolean>();\n\n  // Internal properties\n  public isAriaSelected = false;\n  public itemId: number;\n\n  constructor(\n    private renderer: Renderer2,\n    public cdr: ChangeDetectorRef,\n    public el: ElementRef,\n    private contextMenuService: ContextMenuService\n  ) {\n    super();\n  }\n\n  public ngOnInit(): void {\n    this.contextMenuService.addItem(this);\n    this.itemId = getItemId();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.ariaSelected) {\n      this.isSelected(changes.ariaSelected.currentValue);\n    }\n  }\n\n  public ngAfterViewInit() {\n    this.isSelected(this.ariaSelected);\n    this.checkIfCheckboxInContent();\n    this.checkIfRadioInContent();\n    this.checkIfToggleInContent();\n  }\n\n  // Method to handle item selection\n  public selectItem(e: Event): void {\n    e.preventDefault();\n\n    this.isAriaSelected = !this.isAriaSelected;\n\n    if (this.checkbox) {\n      this.checkbox.changeHandle();\n    }\n\n    if (this.radio) {\n      this.radio.selectItem();\n    }\n\n    if (this.toggle) {\n      this.toggle.toggleState();\n    }\n\n    this.cdr.detectChanges();\n    this.selectedItem.emit(e);\n\n    if (this.radio || this.checkbox || this.toggle) {\n      this.selectedChanged.emit(this.isAriaSelected);\n    }\n  }\n\n  // Method to emit event on keyboard interaction\n  public emitEvent(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      this.selectedItem.emit(event);\n    }\n  }\n\n  // Prevent default event for specific key codes\n  public preventEvent(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n    }\n  }\n\n  // Method to check if the item is selected\n  public isSelected(value: boolean | undefined = undefined): void {\n    this.isAriaSelected = !!this.ariaSelected;\n\n    if (this.checkbox) this.isAriaSelected = this.checkbox.value;\n\n    if (this.toggle) this.isAriaSelected = !!this.toggle.value;\n\n    if (value !== undefined && !this.checkbox && !this.toggle && !this.radio && !this.ariaSelected) {\n      this.isAriaSelected = value;\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  // Checks if the checkbox is present in the content.\n  private checkIfCheckboxInContent(): void {\n    if (this.checkbox) {\n      this.renderer.addClass(this.checkbox.el.nativeElement, CONTROL_CLASS);\n      this.checkbox.focusDir.disabledDir(true);\n    }\n  }\n\n  // Checks if the radio button is present in the content.\n  private checkIfRadioInContent(): void {\n    if (this.radio) {\n      this.renderer.addClass(this.radio.el.nativeElement, CONTROL_CLASS);\n      this.radio.focusDir.disabled = true;\n\n      this.radio.stateChanged.pipe(takeUntil(this.destroy)).subscribe((value) => {\n        this.isAriaSelected = value;\n        this.cdr.detectChanges();\n        this.selectedChanged.emit(value);\n      });\n    }\n  }\n\n  // Checks if the toggle element is present in the content.\n  private checkIfToggleInContent(): void {\n    if (this.toggle) {\n      this.renderer.addClass(this.toggle.el.nativeElement, CONTROL_CLASS);\n      this.toggle.focusDir.disabled = true;\n    }\n  }\n\n  // Method to add keyboard focus class\n  private keyboardFocus(): void {\n    if (this.btnRef) {\n      this.renderer.addClass(this.btnRef.nativeElement, AdditionalClass.keyboardFocus);\n    }\n  }\n\n  // Method to remove keyboard focus class\n  private keyboardUnfocus(): void {\n    if (this.btnRef) {\n      this.renderer.removeClass(this.btnRef.nativeElement, AdditionalClass.keyboardFocus);\n    }\n  }\n\n\n}\n","<ng-container *ngTemplateOutlet=\"template || defaultTemplate\"></ng-container>\n\n<ng-template #defaultTemplate>\n  <button [ngClass]=\"{\n            'dds-context-menu-item_selected': isAriaSelected,\n            'dds-context-menu-item_disabled': disabled\n          }\"\n          [disabled]=\"disabled\"\n          [attr.aria-selected]=\"isAriaSelected\"\n          [attr.aria-disabled]=\"disabled\"\n          [attr.aria-label]=\"ariaLabel\"\n          [attr.role]=\"ariaRole\"\n          [id]=\"itemId\"\n          data-qa=\"context-menu-item\"\n          class=\"dds-context-menu-item {{customClass}}\"\n          [tabindex]=\"attrTabindex\"\n          (click)=\"selectItem($event)\"\n          (keydown)=\"emitEvent($event); preventEvent($event)\"\n          (keyup)=\"preventEvent($event)\"\n          #btnRef>\n    <ng-content select=\"dds-checkbox\"></ng-content>\n    <ng-content select=\"dds-radio\"></ng-content>\n    <ng-content select=\"dds-toggle\"></ng-content>\n    <ng-content select=\"[icon]\"></ng-content>\n    <ng-content select=\"[image]\"></ng-content>\n    <span class=\"dds-context-menu-item__text\">\n      <ng-content></ng-content>\n    </span>\n    @if (counter) {\n      <div class=\"dds-context-menu-item__counter dds-counter\">{{counter}}</div>}\n  </button>\n</ng-template>\n","import { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\nimport { Size, Themes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const RADIO_GROUP_CLASS = 'dds-context-menu__radio-group';\nexport const CONTEXT_MENU_BTN = '.dds-context-menu-item';\nexport const ARIA_ROLE_MENU = 'listbox';\nexport const CONTEXT_MENU_IS_RESPONSIVE = true;\nexport const HEADER_HEIGHT = '60px';\n\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Size]: {\n    [Size.lg]: 'dds-context-menu_lg',\n    [Size.sm]: 'dds-context-menu_sm',\n  },\n  [ThemeMapEnum.Themes]: {\n    [Themes.dark]: 'dds-context-menu_dark',\n    [Themes.blue]: 'dds-context-menu_blue',\n  },\n};\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport {\n  DestroyCtor,\n  DestroyMixin,\n  I18nCtor,\n  I18nMixin,\n  ResponsivenessCtor,\n  ResponsivenessMixin,\n} from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ListManager } from '@usitsdasdesign/dds-ng/core/list-manager';\nimport { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { coerceBooleanProperty } from '@usitsdasdesign/dds-ng/core/utils';\nimport { RadioComponent, RadioGroupComponent } from '@usitsdasdesign/dds-ng/radio';\nimport {\n  AdditionalClass,\n  DDS_FORM_CONTROL,\n  DDS_FORM_CONTROL_GROUP,\n  DdsFormControl,\n  DdsFormControlGroup,\n  KeyCodes,\n  Size,\n  Themes,\n  WidthState,\n} from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { I18nModule, I18nService, ITranslation } from '@usitsdasdesign/dds-ng/shared/i18n';\nimport { ResizeHandlerModule, ResizeHandlerService } from '@usitsdasdesign/dds-ng/shared/resize-handler';\nimport { takeUntil } from 'rxjs/operators';\nimport { ContextMenuItemComponent } from '../context-menu-item/context-menu-item.component';\nimport { ContextMenuService } from '../services/context-menu.service';\nimport { isNumeric } from '../utils';\nimport { ARIA_ROLE_MENU, HEADER_HEIGHT, RADIO_GROUP_CLASS, themeClassesMap } from './constants';\n\nconst ContextMenuBase: DestroyCtor & I18nCtor & ResponsivenessCtor = DestroyMixin(I18nMixin(ResponsivenessMixin()));\n@Component({\n  selector: 'dds-context-menu',\n  templateUrl: './context-menu.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, ResizeHandlerModule, ThemeModule, FocusHandlerModule, I18nModule],\n  providers: [ContextMenuService],\n})\nexport class ContextMenuComponent extends ContextMenuBase implements AfterContentInit, AfterViewInit, OnChanges {\n  // Host binding to add a full width class\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) isFullWidth = true;\n\n  // Content child to get the form control group\n  @ContentChild(DDS_FORM_CONTROL_GROUP as any) controlGroup: DdsFormControlGroup;\n\n  // Content children to get all form controls\n  @ContentChildren(DDS_FORM_CONTROL as any, { descendants: true }) controls: QueryList<DdsFormControl>;\n\n  // View child to get the context menu element\n  @ViewChild('contextMenu') contextMenu: ElementRef<HTMLElement>;\n\n  // Input properties for various configurations\n  @Input() label: string | undefined;\n  @Input() theme: Themes | string | undefined = this.ddsConfig.getConfig().theme;\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n  @Input() maxHeight: number | string | undefined;\n  @Input() ariaLabel: string | undefined;\n  @Input() ariaRole: string | undefined = ARIA_ROLE_MENU;\n  @Input() customClass: string | undefined;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isInitialFocused: boolean | undefined = true;\n  @Input() isRequired: boolean | undefined = false;\n  @Input() isInverse: boolean | undefined;\n  @Input() activeItemId: number | undefined;\n  @Input() enabledListManager: boolean | undefined = true;\n  @Input() isLoading: boolean | undefined = false;\n  @Input() isLoadingWithCounter: boolean | undefined = false;\n  @Input() loadingTemplate: TemplateRef<any> | undefined;\n  @Input() ariaMultiselectable: boolean | undefined | null = false;\n  @Input() ariaDescription: string | undefined;\n\n  // Output events for various actions\n  @Output() closed = new EventEmitter<void>();\n  @Output() onInit = new EventEmitter<ContextMenuComponent>();\n  @Output() keyPressed = new EventEmitter<KeyboardEvent>();\n  @Output() keyboardFocusOut = new EventEmitter<void>();\n\n  // Public properties for theme configuration, key manager, context menu items, etc.\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n  public keyManager: ListManager<ContextMenuItemComponent>;\n  public contextMenuItems: ContextMenuItemComponent[] = [];\n  public closeBtnAriaLabel: string;\n  public isPreventTab = true;\n\n  // Getter for max height without header\n  get maxHeightWithoutHeader(): string {\n    return this.maxHeight ? `calc(${this.maxHeight} - ${HEADER_HEIGHT})` : 'auto';\n  }\n\n  // Getter for max height\n  get getMaxHeight(): string {\n    return isNumeric(this.maxHeight) ? this.maxHeight + 'px' : (this.maxHeight as string);\n  }\n\n  // Getter to check if size is small\n  get isSmSize(): boolean {\n    return this.size === Size.sm;\n  }\n\n  // Getter to check if size is large\n  get isLgSize(): boolean {\n    return this.size === Size.lg;\n  }\n\n  // Constructor to initialize services and context menu\n  constructor(\n    private renderer: Renderer2,\n    public cdr: ChangeDetectorRef,\n    public elementRef: ElementRef,\n    private ddsConfig: DdsConfigService,\n    public i18n: I18nService,\n    public resizeService: ResizeHandlerService,\n    public contextMenuService: ContextMenuService\n  ) {\n    super();\n    this.contextMenuService.initContextMenu(this);\n  }\n\n  // Lifecycle hook for changes detection\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.isRequired) {\n      this.isRequired = coerceBooleanProperty(changes.isRequired.currentValue);\n    }\n\n    if (changes.isInverse) {\n      this.updateInverseState(changes);\n    }\n\n    if (changes.theme && this.controls?.length) {\n      this.controls.forEach((item) => (item.theme = changes.theme.currentValue));\n    }\n  }\n\n  // Lifecycle hook after content initialization\n  public ngAfterContentInit(): void {\n    if (this.enabledListManager) this.initListManager();\n\n    this.checkForRadioGroupInContent();\n\n    if (this.controls?.length) {\n      this.controls.forEach((item) => {\n        if (this.isInverse) {\n          item.setInverse(this.isInverse);\n        }\n        if (this.theme) {\n          item.theme = this.theme;\n        }\n      });\n    }\n\n    if (this.controlGroup && this.isInverse) {\n      this.controlGroup.setItemsInverse(this.isInverse);\n    }\n  }\n\n  // Lifecycle hook after view initialization\n  public ngAfterViewInit(): void {\n    if (this.isInitialFocused) this.focus();\n    this.onInit.emit(this);\n  }\n\n  // Method to add a select item to the context menu\n  public addSelectItem(selectItem: ContextMenuItemComponent): void {\n    this.contextMenuItems.push(selectItem);\n  }\n\n  // Method to focus the context menu\n  public focus(): void {\n    this.contextMenu.nativeElement.focus();\n  }\n\n  // Method to close the context menu\n  public close(): void {\n    this.closed.emit();\n  }\n\n  // Method to initialize the list manager\n  public initListManager(): void {\n    this.keyManager = new ListManager(this.contextMenuItems).withHomeAndEnd();\n\n    this.keyManager.change.pipe(takeUntil(this.destroy)).subscribe(() => {\n      if (this.keyManager.previousActiveItem) this.keyManager.previousActiveItem.focus = false;\n      if (this.keyManager.activeItem) {\n        this.keyManager.activeItem.focus = true;\n        this.activeItemId = this.keyManager.activeItem.itemId;\n        this.scrollToItem();\n        this.cdr.detectChanges();\n      }\n    });\n\n    this.keyManager.tabOut.pipe(takeUntil(this.destroy)).subscribe(() => {\n      this.unFocus();\n      this.keyboardFocusOut.emit();\n    });\n  }\n\n  // Method to unfocus the active item\n  public unFocus(): void {\n    if (this.keyManager?.activeItem) this.keyManager.activeItem.focus = false;\n  }\n\n  // Method to handle keydown events\n  public handleKeydown(event: KeyboardEvent): void {\n    if (this.enabledListManager) this.keyManager.onKeydown(event, this.isPreventTab);\n\n    if ((event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) && this.keyManager?.activeItem) {\n      event.preventDefault();\n      this.keyManager.activeItem.selectItem(event);\n    }\n\n    this.keyPressed.emit(event);\n  }\n\n  // Method to set i18n texts\n  protected setI18nTexts(translation: ITranslation): void {\n    this.closeBtnAriaLabel = translation?.CONTEXT_MENU?.A11Y?.CLOSE_BTN_ARIA_LABEL || '';\n    this.cdr.detectChanges();\n  }\n\n  // Checks the content for the presence of a radio group or radio controls and updates the ARIA attributes accordingly.\n  private checkForRadioGroupInContent(): void {\n    if (this.controlGroup instanceof RadioGroupComponent || this.controls.some((control) => control instanceof RadioComponent)) {\n      this.ariaMultiselectable = false;\n      this.cdr.detectChanges();\n    } else if (this.controlGroup || this.controls?.length) {\n      this.ariaMultiselectable = true;\n      this.cdr.detectChanges();\n    } else if (this.ariaRole !== ARIA_ROLE_MENU) {\n      this.ariaMultiselectable = null;\n      this.cdr.detectChanges();\n    }\n\n    if (this.controlGroup instanceof RadioGroupComponent) {\n      this.controlGroup.setWidth(WidthState.full);\n      this.renderer.addClass(this.controlGroup.el.nativeElement, RADIO_GROUP_CLASS);\n    }\n  }\n\n  // Updates the inverse state of controls and control groups based on the provided changes.\n  private updateInverseState(changes: SimpleChanges): void {\n    if (this.controls?.length) {\n      this.controls.forEach((item) => item.setInverse(changes.isInverse.currentValue));\n    }\n\n    if (this.controlGroup) {\n      this.controlGroup.setItemsInverse(changes.isInverse.currentValue);\n    }\n  }\n\n  // Method to scroll to the active item\n  private scrollToItem(): void {\n    const activeEl = this.keyManager.activeItem?.el.nativeElement;\n    const contextMenuEl = this.contextMenu.nativeElement;\n    const activeElHeight = activeEl.getBoundingClientRect().height;\n    const contextMenuHeight = contextMenuEl.getBoundingClientRect().height;\n\n    contextMenuEl.scrollTop = activeEl.offsetTop - contextMenuHeight + activeElHeight * 2;\n  }\n}\n","<div [ngStyle]=\"{'maxHeight': getMaxHeight}\"\n     [ngClass]=\"{\n      'dds-context-menu_inverse': isInverse\n     }\"\n     [size]=\"size\"\n     [theme]=\"theme\"\n     [ddsTheme]=\"themeConfig\"\n     [isResponsive]=\"isResponsive\"\n     ddsResize\n     (click)=\"unFocus()\"\n     (blur)=\"unFocus()\"\n     class=\"dds-context-menu {{customClass}}\"\n     data-qa=\"context-menu\">\n\n  @if (smallDevice) {\n  <div class=\"dds-context-menu__header\">\n    @if (label) {\n    <span class=\"dds-context-menu__label\">\n      {{label}}\n      @if (isRequired) {\n      <span class=\"dds-required\"></span>\n      }\n    </span>\n    }\n\n    <button [attr.aria-label]=\"closeBtnAriaLabel\"\n            class=\"dds-context-menu__close dds-icon dds-icon_close\"\n            (click)=\"close()\"></button>\n  </div>\n  }\n\n  <div [ngStyle]=\"{'maxHeight': maxHeightWithoutHeader}\"\n       tabindex=\"0\"\n       ddsFocus\n       [attr.role]=\"ariaRole\"\n       [attr.aria-activedescendant]=\"activeItemId\"\n       [attr.aria-multiselectable]=\"ariaMultiselectable\"\n       [attr.aria-label]=\"ariaLabel\"\n       [attr.aria-description]=\"ariaDescription\"\n       (keydown)=\"handleKeydown($event)\"\n       #contextMenu\n       class=\"dds-context-menu__body\">\n    @if (isLoading) {\n    <ng-container *ngTemplateOutlet=\"loadingTemplate || defaultLoadingTemplate; context: {ctx: this}\"></ng-container>\n    <ng-template #defaultLoadingTemplate>\n      <div class=\"dds-skeleton\"\n           [ngClass]=\"{\n               'dds-skeleton_with-counter': isLoadingWithCounter,\n               'dds-skeleton_sm': isSmSize,\n               'dds-skeleton_lg': isLgSize,\n               'dds-skeleton_inverse': isInverse\n             }\"\n           role=\"option\">\n        <div class=\"dds-skeleton__wrap\"\n             aria-busy=\"true\"\n             aria-live=\"polite\"\n             role=\"alert\"\n             aria-label=\"Loading\">\n          <div class=\"dds-skeleton__item\">\n            <span class=\"dds-skeleton__line\"></span>\n            @if (isLoadingWithCounter) {<span class=\"dds-skeleton__counter\"></span>}\n          </div>\n          <div class=\"dds-skeleton__item\">\n            <span class=\"dds-skeleton__line\"></span>\n            @if (isLoadingWithCounter) {<span class=\"dds-skeleton__counter\"></span>}\n          </div>\n          <div class=\"dds-skeleton__item\">\n            <span class=\"dds-skeleton__line\"></span>\n            @if (isLoadingWithCounter) {<span class=\"dds-skeleton__counter\"></span>}\n          </div>\n          <div class=\"dds-skeleton__item\">\n            <span class=\"dds-skeleton__line\"></span>\n            @if (isLoadingWithCounter) {<span class=\"dds-skeleton__counter\"></span>}\n          </div>\n        </div>\n      </div>\n    </ng-template>\n    } @else {\n    <ng-content></ng-content>\n    }\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ContextMenuGroupComponent } from './context-menu-group/context-menu-group.component';\nimport { ContextMenuItemComponent } from './context-menu-item/context-menu-item.component';\nimport { ContextMenuComponent } from './context-menu/context-menu.component';\nimport { ContextMenuService } from './services/context-menu.service';\n\n@NgModule({\n  imports: [ContextMenuComponent, ContextMenuItemComponent, ContextMenuGroupComponent],\n  exports: [ContextMenuComponent, ContextMenuItemComponent, ContextMenuGroupComponent],\n  providers: [ContextMenuService],\n})\nexport class ContextMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ContextMenuService","i2","i4.ContextMenuService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,WAAW,GAAG,wBAAwB;;MCWtC,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,kKCXtC,2GAEyB,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDSZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BACE,wBAAwB,EAAA,eAAA,EAEjB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EAAA,2GAAA,EAAA;;sBAGf;;;AEZH;AACM,SAAU,SAAS,CAAC,GAAQ,EAAA;AAChC,IAAA,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAClE;AAEA;SACgB,SAAS,GAAA;AACvB,IAAA,OAAO,MAAM,CAAC,CAAA,EAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,CAAC;AAC1D;;ACRO,MAAM,aAAa,GAAG,gCAAgC;AACtD,MAAM,gBAAgB,GAAG,QAAQ;AACjC,MAAM,SAAS,GAAG,IAAI;;MCKhB,kBAAkB,CAAA;AAGtB,IAAA,eAAe,CAAC,SAA+B,EAAA;AACpD,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;IAC9B;AAEO,IAAA,OAAO,CAAC,IAA8B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;QACtC;IACF;8GAXW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACuBD,MAAM,mBAAmB,GAAgB,YAAY,EAAE;AASjD,MAAO,wBAAyB,SAAQ,mBAAmB,CAAA;;IAyB/D,IACI,KAAK,CAAC,KAA0B,EAAA;QAClC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,aAAa,EAAE;QACtB;aAAO;YACL,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;AAUA,IAAA,WAAA,CACU,QAAmB,EACpB,GAAsB,EACtB,EAAc,EACb,kBAAsC,EAAA;AAE9C,QAAA,KAAK,EAAE;QALC,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACT,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;;QA1CuB,IAAA,CAAA,KAAK,GAAG,IAAI;QAYtD,IAAA,CAAA,QAAQ,GAAuB,gBAAgB;QAC/C,IAAA,CAAA,YAAY,GAAuB,SAAS;QAE5C,IAAA,CAAA,YAAY,GAAwB,KAAK;;AAgBxC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAS;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW;;QAGhD,IAAA,CAAA,cAAc,GAAG,KAAK;IAU7B;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE;IAC3B;AAEO,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;QACpD;IACF;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,sBAAsB,EAAE;IAC/B;;AAGO,IAAA,UAAU,CAAC,CAAQ,EAAA;QACxB,CAAC,CAAC,cAAc,EAAE;AAElB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc;AAE1C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAC9B;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;QACzB;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QAC3B;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAChD;IACF;;AAGO,IAAA,SAAS,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,EAAE;AACxE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;IACF;;AAGO,IAAA,YAAY,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,EAAE;YACxE,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;;IAGO,UAAU,CAAC,QAA6B,SAAS,EAAA;QACtD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY;QAEzC,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;QAE5D,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;QAE1D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC9F,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC7B;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;;IAGQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAC1C;IACF;;IAGQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI;YAEnC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACxE,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;IACF;;IAGQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI;QACtC;IACF;;IAGQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,aAAa,CAAC;QAClF;IACF;;IAGQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,aAAa,CAAC;QACrF;IACF;8GAtKW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOrB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACjB,cAAc,yEACd,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/C/B,gyCAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEX,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,uBAAuB,EAAA,eAAA,EAEhB,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,gyCAAA,EAAA;;sBAItB,WAAW;uBAAC,CAAA,MAAA,EAAS,eAAe,CAAC,QAAQ,CAAA,CAAE;;sBAAG;;sBAElD,WAAW;uBAAC,CAAA,MAAA,EAAS,eAAe,CAAC,SAAS,CAAA,CAAE;;sBAGhD,YAAY;uBAAC,iBAAiB;;sBAC9B,YAAY;uBAAC,cAAc;;sBAC3B,YAAY;uBAAC,eAAe;;sBAG5B,SAAS;uBAAC,QAAQ;;sBAGlB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAGA;;sBAEA;;sBAUA;;sBACA;;;AEvEI,MAAM,iBAAiB,GAAG,+BAA+B;AACzD,MAAM,gBAAgB,GAAG,wBAAwB;AACjD,MAAM,cAAc,GAAG,SAAS;AAChC,MAAM,0BAA0B,GAAG,IAAI;AACvC,MAAM,aAAa,GAAG,MAAM;AAE5B,MAAM,eAAe,GAAoB;AAC9C,IAAA,CAAC,YAAY,CAAC,IAAI,GAAG;AACnB,QAAA,CAAC,IAAI,CAAC,EAAE,GAAG,qBAAqB;AAChC,QAAA,CAAC,IAAI,CAAC,EAAE,GAAG,qBAAqB;AACjC,KAAA;AACD,IAAA,CAAC,YAAY,CAAC,MAAM,GAAG;AACrB,QAAA,CAAC,MAAM,CAAC,IAAI,GAAG,uBAAuB;AACtC,QAAA,CAAC,MAAM,CAAC,IAAI,GAAG,uBAAuB;AACvC,KAAA;CACF;;ACoCD,MAAM,eAAe,GAAgD,YAAY,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAS7G,MAAO,oBAAqB,SAAQ,eAAe,CAAA;;AA+CvD,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,SAAS,MAAM,aAAa,CAAA,CAAA,CAAG,GAAG,MAAM;IAC/E;;AAGA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,GAAI,IAAI,CAAC,SAAoB;IACvF;;AAGA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;IAC9B;;AAGA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;IAC9B;;AAGA,IAAA,WAAA,CACU,QAAmB,EACpB,GAAsB,EACtB,UAAsB,EACrB,SAA2B,EAC5B,IAAiB,EACjB,aAAmC,EACnC,kBAAsC,EAAA;AAE7C,QAAA,KAAK,EAAE;QARC,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACT,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,UAAU,GAAV,UAAU;QACT,IAAA,CAAA,SAAS,GAAT,SAAS;QACV,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;;QAxEwB,IAAA,CAAA,WAAW,GAAG,IAAI;QAa5D,IAAA,CAAA,KAAK,GAAgC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK;QACrE,IAAA,CAAA,IAAI,GAA8B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI;QAGjE,IAAA,CAAA,QAAQ,GAAuB,cAAc;QAE7C,IAAA,CAAA,YAAY,GAAwB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,YAAY;QAC3E,IAAA,CAAA,gBAAgB,GAAwB,IAAI;QAC5C,IAAA,CAAA,UAAU,GAAwB,KAAK;QAGvC,IAAA,CAAA,kBAAkB,GAAwB,IAAI;QAC9C,IAAA,CAAA,SAAS,GAAwB,KAAK;QACtC,IAAA,CAAA,oBAAoB,GAAwB,KAAK;QAEjD,IAAA,CAAA,mBAAmB,GAA+B,KAAK;;AAItD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAwB;AACjD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAiB;AAC9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ;;QAG9C,IAAA,CAAA,WAAW,GAAoB,eAAe;QAE9C,IAAA,CAAA,gBAAgB,GAA+B,EAAE;QAEjD,IAAA,CAAA,YAAY,GAAG,IAAI;AAiCxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC;IAC/C;;AAGO,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;QAC1E;AAEA,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACrB,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAClC;QAEA,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5E;IACF;;IAGO,kBAAkB,GAAA;QACvB,IAAI,IAAI,CAAC,kBAAkB;YAAE,IAAI,CAAC,eAAe,EAAE;QAEnD,IAAI,CAAC,2BAA2B,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC7B,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;gBACjC;AACA,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,oBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;gBACzB;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;YACvC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;QACnD;IACF;;IAGO,eAAe,GAAA;QACpB,IAAI,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,KAAK,EAAE;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;;AAGO,IAAA,aAAa,CAAC,UAAoC,EAAA;AACvD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;IACxC;;IAGO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;;IAGO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;;IAGO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,cAAc,EAAE;AAEzE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAClE,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB;gBAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,GAAG,KAAK;AACxF,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;gBAC9B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI;gBACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM;gBACrD,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YAC1B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAClE,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC9B,QAAA,CAAC,CAAC;IACJ;;IAGO,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,UAAU;YAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK;IAC3E;;AAGO,IAAA,aAAa,CAAC,KAAoB,EAAA;QACvC,IAAI,IAAI,CAAC,kBAAkB;YAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;QAEhF,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE;YACzG,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAC9C;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;;AAGU,IAAA,YAAY,CAAC,WAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,IAAI,EAAE;AACpF,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;;IAGQ,2BAA2B,GAAA;QACjC,IAAI,IAAI,CAAC,YAAY,YAAY,mBAAmB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,YAAY,cAAc,CAAC,EAAE;AAC1H,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC1B;aAAO,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC1B;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,EAAE;AAC3C,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC1B;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,YAAY,mBAAmB,EAAE;YACpD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;QAC/E;IACF;;AAGQ,IAAA,kBAAkB,CAAC,OAAsB,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAClF;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;QACnE;IACF;;IAGQ,YAAY,GAAA;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa;AAC7D,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;QACpD,MAAM,cAAc,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC,MAAM;QAC9D,MAAM,iBAAiB,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;AAEtE,QAAA,aAAa,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG,iBAAiB,GAAG,cAAc,GAAG,CAAC;IACvF;8GA3NW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,0wBAFpB,CAAC,kBAAkB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOjB,sBAA6B,8DAG1B,gBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvE1C,61FAkFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBY,YAAY,wXAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,gKAAE,UAAU,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG7E,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAA,SAAA,EAC9E,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,61FAAA,EAAA;;sBAI9B,WAAW;uBAAC,CAAA,MAAA,EAAS,eAAe,CAAC,SAAS,CAAA,CAAE;;sBAGhD,YAAY;uBAAC,sBAA6B;;sBAG1C,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAuB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAG9D,SAAS;uBAAC,aAAa;;sBAGvB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAGA;;sBACA;;sBACA;;sBACA;;;MEzFU,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,OAAA,EAAA,CAJlB,oBAAoB,EAAE,wBAAwB,EAAE,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACzE,oBAAoB,EAAE,wBAAwB,EAAE,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAGxE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,aAFjB,CAAC,kBAAkB,CAAC,EAAA,OAAA,EAAA,CAFrB,oBAAoB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;;2FAI7C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;AACpF,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;oBACpF,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAChC,iBAAA;;;ACVD;;AAEG;;;;"}