{"version":3,"file":"obliczeniowo-elementary-menu.mjs","sources":["../../../../projects/components/menu/services/obl-menu-teleportation.service.ts","../../../../projects/components/menu/components/menu-item/menu-item.component.ts","../../../../projects/components/menu/components/menu-item/menu-item.component.html","../../../../projects/components/menu/components/menu/menu.component.ts","../../../../projects/components/menu/components/menu/menu.component.html","../../../../projects/components/menu/menu.module.ts","../../../../projects/components/menu/obliczeniowo-elementary-menu.ts"],"sourcesContent":["import { DomPortalOutlet, Portal } from '@angular/cdk/portal';\nimport { ApplicationRef, Injectable, Injector } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OblMenuTeleportService {\n   private readonly portalOutlet = new Map<number, DomPortalOutlet>();\n\n  constructor(\n    private readonly appRef: ApplicationRef,\n    private readonly injector: Injector) {\n  }\n\n  registerPortalOutlet(outletElement: HTMLElement): number {\n    const id = Math.random();\n    this.portalOutlet.set(id, new DomPortalOutlet(\n      outletElement,\n      this.appRef,\n      this.injector\n    ));\n\n    return id;\n  }\n\n  unregisterPortalOutlet(id: number): void {\n    const portal = this.portalOutlet.get(id);\n    portal?.dispose();\n    this.portalOutlet.delete(id);\n  }\n\n  teleport(id: number, portal: Portal<any>): void {\n    if (!this.portalOutlet.get(id)?.hasAttached()) {\n      this.portalOutlet.get(id)?.attach(portal);\n    }\n  }\n\n  finishTeleportation(id: number): void {\n    this.portalOutlet.get(id)?.detach();\n  }\n}\n","import { Component, EventEmitter, HostBinding, HostListener, Input, Output, SimpleChanges, TemplateRef } from '@angular/core';\nimport { MenuItem } from '../../models/menu-item.model';\n\n@Component({\n    selector: 'obl-menu-item',\n    templateUrl: './menu-item.component.html',\n    styleUrls: ['./menu-item.component.scss'],\n    standalone: false\n})\nexport class MenuItemComponent {\n  @Input({ required: true }) item!: MenuItem;\n\n  @Input() translations: { [english: string]: string } = {}\n\n  @HostBinding('class.no-icon') noIcon = false;\n\n  @Output() clicked = new EventEmitter<MenuItem>();\n\n  @HostListener('click') onClick() {\n    if (!this.item.disabled) {\n      this.clicked.emit(this.item);\n    }\n  }\n\n  @HostBinding('class.disabled') get disabled() {\n    return this.item.disabled;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.item) {\n      this.noIcon = !this.item.icon;\n    }\n  }\n\n  protected stringIcon(): boolean {\n    return typeof this.item.icon === 'string';\n  }\n\n  protected iconTemplate(): TemplateRef<any> {\n    return this.item.icon as any;\n  }\n\n  protected iconString(): string {\n    return this.item.icon as string;\n  }\n}\n","@if (item.icon) {\n  <ng-container *ngTemplateOutlet=\"stringIcon() ? iconsRef : iconTemplate(); context: { $implicit: item }\"></ng-container>\n}\n\n<div>\n  {{ item.text | oblTranslation : translations }}\n</div>\n\n<ng-template #iconsRef>\n  <obl-icon [name]=\"iconString()\"></obl-icon>\n</ng-template>\n\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { MenuItem } from '../../models/menu-item.model';\nimport { OblMenuTeleportService } from '../../services/obl-menu-teleportation.service';\nimport { DomPortal } from '@angular/cdk/portal';\nimport { IPoint2D } from '@obliczeniowo/elementary/classes';\nimport { OblResizeWindowService } from '@obliczeniowo/elementary/resize-window';\nimport { Subject } from 'rxjs';\n\n@Component({\n    selector: 'obl-menu',\n    templateUrl: './menu.component.html',\n    styleUrls: ['./menu.component.scss'],\n    standalone: false\n})\nexport class MenuComponent {\n\n  protected _opened = false;\n\n  /**\n   * Open/close menu. When set to false emits extra command 'on-close' only by using command Subject\n   */\n  @Input() set opened(opened: boolean) {\n    this._opened = opened;\n    if (!this.opened) {\n      this.command.next('on-close');\n    }\n  }\n\n  get opened(): boolean {\n    return this._opened;\n  }\n\n  // target element (by default document.body)\n  @Input() target: HTMLElement = document.body;\n  // items menu to display\n  @Input() items: MenuItem[] = [];\n  /**\n   * translations for item.text from {@link items}\n   */\n  @Input() translations: { [en: string]: string } = {}\n  /**\n   * emit command when active element was clicked\n   */\n  @Output() clicked = new EventEmitter<string>();\n\n  command = new Subject<string>();\n\n  protected parent: HTMLDivElement;\n\n  protected position: IPoint2D = { x: 0, y: 0 };\n\n  protected size = { width: 0, height: 0 };\n\n  protected id: number;\n\n  @ViewChild('content') set content(elemRef: ElementRef<HTMLElement>) {\n    this.menuTeleportService.teleport(this.id, new DomPortal(elemRef));\n  }\n\n  checkParent(target: HTMLElement | null | undefined) {\n    if (!this.target) {\n      return false;\n    }\n    do {\n      if (target && this.target === target) {\n        return false;\n      }\n\n      target = target?.parentElement;\n    } while (target)\n\n    return true;\n  }\n\n  protected targetClicked = (event: MouseEvent) => {\n    if (this.checkParent((event as any).target)) {\n      if (!this.opened) {\n        return;\n      }\n    }\n    this.opened = !!this.items.length && !this.opened;\n    this.position.x = event.pageX;\n    this.position.y = event.pageY;\n\n    if (this.size.width + this.position.x > this.resize.size.width - 15) {\n      this.position.x = this.resize.size.width - this.size.width - 15;\n    }\n\n    event.preventDefault();\n  }\n\n  constructor(\n    private menuTeleportService: OblMenuTeleportService,\n    protected resize: OblResizeWindowService,\n    protected elementRef: ElementRef<HTMLElement>\n  ) {\n    this.parent = document.createElement('div');\n    document.body.appendChild(this.parent);\n    this.parent.classList.add('obl-menu');\n\n    this.id = this.menuTeleportService.registerPortalOutlet(this.parent);\n\n    this.target.addEventListener('contextmenu', this.targetClicked);\n  }\n\n  ngOnDestroy(): void {\n    this.menuTeleportService.finishTeleportation(this.id);\n    this.menuTeleportService.unregisterPortalOutlet(this.id);\n  }\n\n  ngAfterViewChecked(): void {\n    const dom = document.querySelector('#obl-menu .menu-content')?.getBoundingClientRect();\n\n    this.size = { width: dom?.width || 0, height: dom?.height || 0 };\n  }\n\n  protected itemClicked(item: MenuItem) {\n    this.clicked.emit(item.command);\n    this.command.next(item.command);\n    this.opened = false;\n    this.target.removeEventListener('click', this.targetClicked);\n  }\n}\n","<div #content>\n  @if (opened) {\n    <div class=\"background\" (click)=\"opened = false\"></div>\n    <div\n      class=\"menu-content\"\n      [style.transform]=\"'translate(' + position.x + 'px,' + position.y + 'px)'\"\n    >\n      @for(item of items; track item.id) {\n        <obl-menu-item\n          [item]=\"item\"\n          [translations]=\"translations\"\n          (clicked)=\"itemClicked($event)\"\n        >\n        </obl-menu-item>\n      }\n    </div>\n  }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MenuComponent } from './components/menu/menu.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { IconsModule } from '@obliczeniowo/elementary/icons';\nimport { TextPipesModule } from '@obliczeniowo/elementary/text-pipes';\n\nimport { MenuItemComponent } from './components/menu-item/menu-item.component';\n\n@NgModule({\n  declarations: [\n    MenuComponent,\n    MenuItemComponent\n  ],\n  imports: [\n    CommonModule,\n    OverlayModule,\n    IconsModule,\n    TextPipesModule\n  ],\n  exports: [\n    MenuComponent\n  ]\n})\nexport class MenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.OblMenuTeleportService","i2","i3.MenuItemComponent"],"mappings":";;;;;;;;;;;;;MAMa,sBAAsB,CAAA;AAId,IAAA,MAAA;AACA,IAAA,QAAA;AAJD,IAAA,YAAY,GAAG,IAAI,GAAG,EAA2B;IAEnE,WACmB,CAAA,MAAsB,EACtB,QAAkB,EAAA;QADlB,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAG3B,IAAA,oBAAoB,CAAC,aAA0B,EAAA;AAC7C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,eAAe,CAC3C,aAAa,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,CACd,CAAC;AAEF,QAAA,OAAO,EAAE;;AAGX,IAAA,sBAAsB,CAAC,EAAU,EAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,EAAE,OAAO,EAAE;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;;IAG9B,QAAQ,CAAC,EAAU,EAAE,MAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE;AAC7C,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;;;AAI7C,IAAA,mBAAmB,CAAC,EAAU,EAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;;uGAhC1B,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,iBAAiB,CAAA;AACD,IAAA,IAAI;IAEtB,YAAY,GAAkC,EAAE;IAE3B,MAAM,GAAG,KAAK;AAElC,IAAA,OAAO,GAAG,IAAI,YAAY,EAAY;IAEzB,OAAO,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAIhC,IAAA,IAAmC,QAAQ,GAAA;AACzC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;;AAG3B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;;;IAIvB,UAAU,GAAA;QAClB,OAAO,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;;IAGjC,YAAY,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAW;;IAGpB,UAAU,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAc;;uGAlCtB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,0TCT9B,wTAYA,EAAA,MAAA,EAAA,CAAA,4XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;2FDHa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAGb,KAAK,EAAA,QAAA,EAAA,wTAAA,EAAA,MAAA,EAAA,CAAA,4XAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAA9B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAEhB,YAAY,EAAA,CAAA;sBAApB;gBAE6B,MAAM,EAAA,CAAA;sBAAnC,WAAW;uBAAC,eAAe;gBAElB,OAAO,EAAA,CAAA;sBAAhB;gBAEsB,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO;gBAMc,QAAQ,EAAA,CAAA;sBAA1C,WAAW;uBAAC,gBAAgB;;;MEVlB,aAAa,CAAA;AA8Ed,IAAA,mBAAA;AACE,IAAA,MAAA;AACA,IAAA,UAAA;IA9EF,OAAO,GAAG,KAAK;AAEzB;;AAEG;IACH,IAAa,MAAM,CAAC,MAAe,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;;;AAIjC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;;AAIZ,IAAA,MAAM,GAAgB,QAAQ,CAAC,IAAI;;IAEnC,KAAK,GAAe,EAAE;AAC/B;;AAEG;IACM,YAAY,GAA6B,EAAE;AACpD;;AAEG;AACO,IAAA,OAAO,GAAG,IAAI,YAAY,EAAU;AAE9C,IAAA,OAAO,GAAG,IAAI,OAAO,EAAU;AAErB,IAAA,MAAM;IAEN,QAAQ,GAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAEnC,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AAE9B,IAAA,EAAE;IAEZ,IAA0B,OAAO,CAAC,OAAgC,EAAA;AAChE,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;;AAGpE,IAAA,WAAW,CAAC,MAAsC,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,OAAO,KAAK;;AAEd,QAAA,GAAG;YACD,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACpC,gBAAA,OAAO,KAAK;;AAGd,YAAA,MAAM,GAAG,MAAM,EAAE,aAAa;SAC/B,QAAQ,MAAM;AAEf,QAAA,OAAO,IAAI;;AAGH,IAAA,aAAa,GAAG,CAAC,KAAiB,KAAI;QAC9C,IAAI,IAAI,CAAC,WAAW,CAAE,KAAa,CAAC,MAAM,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB;;;AAGJ,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;QACjD,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK;QAC7B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE;YACnE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE;;QAGjE,KAAK,CAAC,cAAc,EAAE;AACxB,KAAC;AAED,IAAA,WAAA,CACU,mBAA2C,EACzC,MAA8B,EAC9B,UAAmC,EAAA;QAFrC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAU,CAAA,UAAA,GAAV,UAAU;QAEpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AAErC,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;;IAGjE,WAAW,GAAA;QACT,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;;IAG1D,kBAAkB,GAAA;QAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,yBAAyB,CAAC,EAAE,qBAAqB,EAAE;QAEtF,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,EAAE;;AAGxD,IAAA,WAAW,CAAC,IAAc,EAAA;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;;uGA1GnD,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,wSCd1B,seAkBA,EAAA,MAAA,EAAA,CAAA,0OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDJa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cAGR,KAAK,EAAA,QAAA,EAAA,seAAA,EAAA,MAAA,EAAA,CAAA,0OAAA,CAAA,EAAA;wJASN,MAAM,EAAA,CAAA;sBAAlB;gBAYQ,MAAM,EAAA,CAAA;sBAAd;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIS,OAAO,EAAA,CAAA;sBAAhB;gBAYyB,OAAO,EAAA,CAAA;sBAAhC,SAAS;uBAAC,SAAS;;;ME9BT,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,iBAbnB,aAAa;AACb,YAAA,iBAAiB,aAGjB,YAAY;YACZ,aAAa;YACb,WAAW;AACX,YAAA,eAAe,aAGf,aAAa,CAAA,EAAA,CAAA;AAGJ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YATnB,YAAY;YACZ,aAAa;YACb,WAAW;YACX,eAAe,CAAA,EAAA,CAAA;;2FAMN,UAAU,EAAA,UAAA,EAAA,CAAA;kBAftB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,aAAa;wBACb;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;ACxBD;;AAEG;;;;"}