{"version":3,"file":"pebula-ngrid-overlay-panel.mjs","sources":["../../../../libs/ngrid/overlay-panel/src/lib/component-registry-extension.ts","../../../../libs/ngrid/overlay-panel/src/lib/overlay-panel-ref.ts","../../../../libs/ngrid/overlay-panel/src/lib/overlay-panel.service.ts","../../../../libs/ngrid/overlay-panel/src/lib/overlay-panel-def.ts","../../../../libs/ngrid/overlay-panel/src/lib/overlay-panel.module.ts","../../../../libs/ngrid/overlay-panel/src/pebula-ngrid-overlay-panel.ts"],"sourcesContent":["\nimport { ComponentRef, Type, ComponentFactoryResolver, ComponentFactory, Injector } from '@angular/core';\nimport { PblNgridMultiComponentRegistry } from '@pebula/ngrid';\n\nexport class PblNgridOverlayPanelComponentExtension<T> extends PblNgridMultiComponentRegistry<T, 'overlayPanels'> {\n  readonly name: string;\n  readonly kind: 'overlayPanels' = 'overlayPanels';\n  readonly projectContent = false;\n\n  constructor(name: string,\n              public component: Type<T>,\n              public cfr?: ComponentFactoryResolver,\n              public injector?: Injector) {\n    super();\n    this.name = name;\n  }\n\n  getFactory(context: any): ComponentFactory<T> {\n    return this.cfr.resolveComponentFactory(this.component);\n  }\n\n  onCreated(context: any, cmpRef: ComponentRef<T>): void {\n    cmpRef.changeDetectorRef.markForCheck();\n    cmpRef.changeDetectorRef.detectChanges();\n  }\n}\n","import { merge, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport class PblNgridOverlayPanelRef<T = any> {\n\n  closed: Observable<void>;\n  private _closed$ = new Subject<void>();\n\n  constructor(private overlayRef: OverlayRef, public readonly data?: T) {\n    this.closed = this._closed$.asObservable();\n    this._closingActions(this, overlayRef)\n      .pipe(\n        takeUntil(this.closed),\n      )\n      .subscribe(() => this.close());\n  }\n\n  close(): void {\n    if (this._closed$) {\n      const closed$ = this._closed$;\n      this._closed$ = undefined;\n      closed$.next();\n      closed$.complete();\n      this.overlayRef.detach();\n      this.overlayRef.dispose();\n    }\n  }\n\n  private _closingActions(overlayPanelRef: PblNgridOverlayPanelRef, overlayRef: OverlayRef) {\n    const backdrop = overlayRef!.backdropClick();\n    const detachments = overlayRef!.detachments();\n\n    return merge(backdrop, detachments, overlayPanelRef.closed);\n  }\n}\n","import { Injectable, ViewContainerRef, ElementRef, Injector, TemplateRef, NgZone } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  VerticalConnectionPos,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\nimport { PblNgridPluginController, PblNgridComponent, PblNgridMultiTemplateRegistry } from '@pebula/ngrid';\n\nimport { PblNgridOverlayPanelComponentExtension } from './component-registry-extension';\nimport { PblNgridOverlayPanelRef } from './overlay-panel-ref';\nimport { PblNgridOverlayPanelContext } from './overlay-panel-def';\n\ndeclare module '@pebula/ngrid/core/lib/registry/types' {\n  interface PblNgridMultiRegistryMap {\n    overlayPanels?:\n      | PblNgridMultiTemplateRegistry<any, 'overlayPanels'>\n      | PblNgridOverlayPanelComponentExtension<any>;\n  }\n}\n\nexport interface PblNgridOverlayPanelConfig {\n  hasBackdrop?: boolean;\n  backdropClass?: string;\n  xPos?: 'before' | 'center' | 'after';\n  yPos?: 'above' | 'center' | 'below';\n  insetPos?: boolean;\n}\n\nconst DEFAULT_OVERLAY_PANEL_CONFIG: PblNgridOverlayPanelConfig = {\n  hasBackdrop: false,\n  xPos: 'center',\n  yPos: 'center',\n  insetPos: false,\n};\n\n@Injectable()\nexport class PblNgridOverlayPanelFactory {\n  constructor(private _overlay: Overlay, private zone: NgZone) { }\n\n  create<T>(grid: PblNgridComponent<T>): PblNgridOverlayPanel<T> {\n    return new PblNgridOverlayPanel<T>(this._overlay, this.zone, grid);\n  }\n}\n\nexport class PblNgridOverlayPanel<T = any> {\n\n  private vcRef: ViewContainerRef;\n  private injector: Injector;\n  private _scrollStrategy: () => ScrollStrategy;\n\n  constructor(private _overlay: Overlay,\n              private zone: NgZone,\n              public readonly grid: PblNgridComponent<T>) {\n    const controller = PblNgridPluginController.find(grid);\n    this.injector = controller.injector;\n    this.vcRef = controller.injector.get(ViewContainerRef);\n    this._scrollStrategy = () => _overlay.scrollStrategies.reposition();\n  }\n\n\n  /**\n   * Opens a panel relative to a cell element using the overlay panel extension registry template/component with the name provided in `extName`.\n   * The cell element is referenced by the `columnId` and the `rowRenderPosition`.\n   *\n   * If the `rowRenderPosition` is \"header\" or \"footer\" then the grid's header / footer rows are targeted, otherwise the number provided should reference\n   * the rendered row index to use to get the cell from.\n   *\n   * > Note that this helper method does not allow targeting meta cells.\n   */\n  openGridCell<T = any>(extName: string, columnId: string, rowRenderPosition: number | 'header' | 'footer', config?: PblNgridOverlayPanelConfig, data?: T): PblNgridOverlayPanelRef<T> {\n    const column = this.grid.columnApi.findColumn(columnId);\n    if (!column) {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        throw new Error('Could not find the column ' + columnId);\n      }\n      return;\n    }\n\n    let section: 'table' | 'header' | 'footer';\n    let rowRenderIndex = 0;\n    switch (rowRenderPosition) {\n      case 'header':\n      case 'footer':\n        section = rowRenderPosition;\n        break;\n      default:\n        if (typeof rowRenderPosition === 'number') {\n          section = 'table';\n          rowRenderIndex = rowRenderPosition;\n        }\n        break;\n    }\n\n    if (!section) {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        throw new Error('Invalid \"rowRenderPosition\" provided, use \"header\", \"footer\" or any number >= 0.');\n      }\n      return;\n    }\n\n    const el = column && column.columnDef.queryCellElements(section)[rowRenderIndex];\n    if (!el) {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        throw new Error(`Could not find a cell for the column ${columnId} at render index ${rowRenderIndex}`);\n      }\n      return;\n    }\n\n    return this.open(extName, new ElementRef(el), config, data);\n  }\n\n  open<T = any>(extName: string, source: ElementRef<HTMLElement>, config?: PblNgridOverlayPanelConfig, data?: T): PblNgridOverlayPanelRef<T> {\n    config = Object.assign({ ...DEFAULT_OVERLAY_PANEL_CONFIG }, config || {});\n    const match = this.findNamesExtension(extName);\n\n    if (!match) {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        throw new Error('Could not find the overlay panel with the name ' + extName);\n      }\n      return;\n    }\n\n    return this.zone.run(() => {\n      const overlayRef = this._createOverlay(source, config);\n      const overlayPanelRef = new PblNgridOverlayPanelRef(overlayRef, data);\n      this._setPosition(overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy, config);\n\n      if (match instanceof PblNgridMultiTemplateRegistry) {\n        const tPortal = this._getTemplatePortal(match.tRef, overlayPanelRef);\n        const viewRef = overlayRef.attach(tPortal);\n        viewRef.markForCheck();\n        viewRef.detectChanges();\n      } else {\n        const cPortal = this._getComponentPortal(overlayPanelRef, match)\n        const cmpRef = overlayRef.attach(cPortal);\n        match.onCreated(null, cmpRef);\n      }\n\n      overlayRef.updatePosition();\n      return overlayPanelRef;\n    });\n  }\n\n  /**\n   * This method creates the overlay from the provided menu's template and saves its\n   * OverlayRef so that it can be attached to the DOM when openMenu is called.\n   */\n  private _createOverlay(element: ElementRef<HTMLElement>, config: PblNgridOverlayPanelConfig): OverlayRef {\n    const overlayConfig = this._getOverlayConfig(element, config);\n    const overlayRef = this._overlay.create(overlayConfig);\n    overlayRef.getConfig().hasBackdrop = !!config.hasBackdrop\n    // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n    // Ideally we'd also have our keyboard event logic in here, however doing so will\n    // break anybody that may have implemented the `MatMenuPanel` themselves.\n    overlayRef.keydownEvents().subscribe();\n\n    return overlayRef;\n  }\n\n  /**\n   * This method builds the configuration object needed to create the overlay, the OverlayState.\n   * @returns OverlayConfig\n   */\n  private _getOverlayConfig(element: ElementRef<HTMLElement>, config: PblNgridOverlayPanelConfig): OverlayConfig {\n    const positionStrategy = this._overlay\n      .position()\n      .flexibleConnectedTo(element)\n      .withLockedPosition();\n\n    return new OverlayConfig({\n      positionStrategy,\n      backdropClass: config.backdropClass || 'cdk-overlay-transparent-backdrop', // TODO: don't use the cdk's class, create it\n      scrollStrategy: this._scrollStrategy(),\n      direction: this.grid.dir,\n    });\n  }\n\n  private _getTemplatePortal(tRef: TemplateRef<PblNgridOverlayPanelContext>, overlayPanelRef: PblNgridOverlayPanelRef) {\n    const context: PblNgridOverlayPanelContext = {\n      grid: this.grid,\n      ref: overlayPanelRef,\n    };\n    return new TemplatePortal(tRef, this.vcRef, context);\n  }\n\n  private _getComponentPortal(overlayPanelRef: PblNgridOverlayPanelRef,\n                              componentExtension: PblNgridOverlayPanelComponentExtension<any>) {\n    const portalInjector = Injector.create({\n      providers: [\n        { provide: PblNgridOverlayPanelRef, useValue: overlayPanelRef },\n      ],\n      parent: componentExtension.injector || this.injector,\n    });\n    return new ComponentPortal(componentExtension.component, this.vcRef, portalInjector, componentExtension.cfr || null)\n  }\n\n  private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy, config: PblNgridOverlayPanelConfig) {\n    let [originX, originFallbackX]: HorizontalConnectionPos[] =\n      config.xPos === 'center'\n        ? ['center', 'center']\n        : config.xPos === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n    let [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n      config.yPos === 'center'\n        ? ['center', 'center']\n        : config.yPos === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n    let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n    let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n    let offsetY = 0;\n\n    if (!config.insetPos) {\n      if (overlayY !== 'center') {\n        originY = overlayY === 'top' ? 'bottom' : 'top';\n      }\n      if (overlayFallbackY !== 'center') {\n        originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n      }\n    }\n\n    positionStrategy.withPositions([\n      {originX, originY, overlayX, overlayY, offsetY},\n      {originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY},\n      {\n        originX,\n        originY: originFallbackY,\n        overlayX,\n        overlayY: overlayFallbackY,\n        offsetY: -offsetY\n      },\n      {\n        originX: originFallbackX,\n        originY: originFallbackY,\n        overlayX: overlayFallbackX,\n        overlayY: overlayFallbackY,\n        offsetY: -offsetY\n      }\n    ]);\n  }\n\n  private findNamesExtension(extName: string) {\n    let match: PblNgridMultiTemplateRegistry<PblNgridOverlayPanelContext, 'overlayPanels'> | PblNgridOverlayPanelComponentExtension<any>;\n    this.grid.registry.forMulti('overlayPanels', values => {\n      for (const value of values) {\n        if (value.name === extName) {\n          match = value;\n          return true;\n        }\n      }\n    });\n    return match;\n  }\n}\n\n\n","import { Directive, TemplateRef, Input } from '@angular/core';\nimport { PblNgridComponent, PblNgridRegistryService, PblNgridMultiTemplateRegistry } from '@pebula/ngrid';\nimport { PblNgridOverlayPanelRef } from './overlay-panel-ref';\n\nexport interface PblNgridOverlayPanelContext<T = any> {\n  grid: PblNgridComponent<T>;\n  ref: PblNgridOverlayPanelRef;\n}\n\n@Directive({ selector: '[pblNgridOverlayPanelDef]' })\nexport class PblNgridOverlayPanelDef extends PblNgridMultiTemplateRegistry<PblNgridComponent, 'overlayPanels'> {\n\n  readonly kind: 'overlayPanels' = 'overlayPanels';\n  @Input('pblNgridOverlayPanelDef') name: string;\n\n  constructor(tRef: TemplateRef<PblNgridComponent>, registry: PblNgridRegistryService) { super(tRef, registry); }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { PblNgridOverlayPanelFactory } from './overlay-panel.service';\nimport { PblNgridOverlayPanelDef } from './overlay-panel-def';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OverlayModule,\n    BidiModule,\n  ],\n  declarations: [\n    PblNgridOverlayPanelDef,\n  ],\n  exports: [\n    PblNgridOverlayPanelDef,\n  ],\n  providers: [\n    PblNgridOverlayPanelFactory,\n  ],\n})\nexport class PblNgridOverlayPanelModule {\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;AAIM,MAAO,sCAA0C,SAAQ,8BAAkD,CAAA;AAK/G,IAAA,WAAA,CAAY,IAAY,EACL,SAAkB,EAClB,GAA8B,EAC9B,QAAmB,EAAA;AACpC,QAAA,KAAK,EAAE,CAAC;QAHS,IAAS,CAAA,SAAA,GAAT,SAAS,CAAS;QAClB,IAAG,CAAA,GAAA,GAAH,GAAG,CAA2B;QAC9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAN7B,IAAI,CAAA,IAAA,GAAoB,eAAe,CAAC;QACxC,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAO9B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;AAED,IAAA,UAAU,CAAC,OAAY,EAAA;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACzD;IAED,SAAS,CAAC,OAAY,EAAE,MAAuB,EAAA;AAC7C,QAAA,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACxC,QAAA,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC1C;AACF;;MCrBY,uBAAuB,CAAA;IAKlC,WAAoB,CAAA,UAAsB,EAAkB,IAAQ,EAAA;QAAhD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAkB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAI;AAF5D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAGrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC;AACnC,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CACvB;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAClC;IAED,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC3B,SAAA;KACF;IAEO,eAAe,CAAC,eAAwC,EAAE,UAAsB,EAAA;AACtF,QAAA,MAAM,QAAQ,GAAG,UAAW,CAAC,aAAa,EAAE,CAAC;AAC7C,QAAA,MAAM,WAAW,GAAG,UAAW,CAAC,WAAW,EAAE,CAAC;QAE9C,OAAO,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;KAC7D;AACF;;ACDD,MAAM,4BAA4B,GAA+B;AAC/D,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,QAAQ,EAAE,KAAK;CAChB,CAAC;MAGW,2BAA2B,CAAA;IACtC,WAAoB,CAAA,QAAiB,EAAU,IAAY,EAAA;QAAvC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAAK;AAEhE,IAAA,MAAM,CAAI,IAA0B,EAAA;AAClC,QAAA,OAAO,IAAI,oBAAoB,CAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACpE;;2IALU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+IAA3B,2BAA2B,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;;MASE,oBAAoB,CAAA;AAM/B,IAAA,WAAA,CAAoB,QAAiB,EACjB,IAAY,EACJ,IAA0B,EAAA;QAFlC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACJ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAsB;QACpD,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;KACrE;AAGD;;;;;;;;AAQG;IACH,YAAY,CAAU,OAAe,EAAE,QAAgB,EAAE,iBAA+C,EAAE,MAAmC,EAAE,IAAQ,EAAA;AACrJ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,gBAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,QAAQ,CAAC,CAAC;AAC1D,aAAA;YACD,OAAO;AACR,SAAA;AAED,QAAA,IAAI,OAAsC,CAAC;QAC3C,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,QAAA,QAAQ,iBAAiB;AACvB,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,QAAQ;gBACX,OAAO,GAAG,iBAAiB,CAAC;gBAC5B,MAAM;AACR,YAAA;AACE,gBAAA,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;oBACzC,OAAO,GAAG,OAAO,CAAC;oBAClB,cAAc,GAAG,iBAAiB,CAAC;AACpC,iBAAA;gBACD,MAAM;AACT,SAAA;QAED,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,gBAAA,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;AACrG,aAAA;YACD,OAAO;AACR,SAAA;AAED,QAAA,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC;QACjF,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;gBACjD,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,EAAwC,QAAQ,CAAoB,iBAAA,EAAA,cAAc,CAAE,CAAA,CAAC,CAAC;AACvG,aAAA;YACD,OAAO;AACR,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KAC7D;AAED,IAAA,IAAI,CAAU,OAAe,EAAE,MAA+B,EAAE,MAAmC,EAAE,IAAQ,EAAA;AAC3G,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,4BAA4B,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,gBAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,OAAO,CAAC,CAAC;AAC9E,aAAA;YACD,OAAO;AACR,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,eAAe,GAAG,IAAI,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,gBAAqD,EAAE,MAAM,CAAC,CAAC;YAExG,IAAI,KAAK,YAAY,6BAA6B,EAAE;AAClD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;gBACrE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3C,OAAO,CAAC,YAAY,EAAE,CAAC;gBACvB,OAAO,CAAC,aAAa,EAAE,CAAC;AACzB,aAAA;AAAM,iBAAA;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;gBAChE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1C,gBAAA,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,aAAA;YAED,UAAU,CAAC,cAAc,EAAE,CAAC;AAC5B,YAAA,OAAO,eAAe,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;IACK,cAAc,CAAC,OAAgC,EAAE,MAAkC,EAAA;QACzF,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACvD,UAAU,CAAC,SAAS,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAA;;;;AAIzD,QAAA,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,CAAC;AAEvC,QAAA,OAAO,UAAU,CAAC;KACnB;AAED;;;AAGG;IACK,iBAAiB,CAAC,OAAgC,EAAE,MAAkC,EAAA;AAC5F,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ;AACnC,aAAA,QAAQ,EAAE;aACV,mBAAmB,CAAC,OAAO,CAAC;AAC5B,aAAA,kBAAkB,EAAE,CAAC;QAExB,OAAO,IAAI,aAAa,CAAC;YACvB,gBAAgB;AAChB,YAAA,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,kCAAkC;AACzE,YAAA,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;AACzB,SAAA,CAAC,CAAC;KACJ;IAEO,kBAAkB,CAAC,IAA8C,EAAE,eAAwC,EAAA;AACjH,QAAA,MAAM,OAAO,GAAgC;YAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,GAAG,EAAE,eAAe;SACrB,CAAC;QACF,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACtD;IAEO,mBAAmB,CAAC,eAAwC,EACxC,kBAA+D,EAAA;AACzF,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;AACrC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,eAAe,EAAE;AAChE,aAAA;AACD,YAAA,MAAM,EAAE,kBAAkB,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AACrD,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,eAAe,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,kBAAkB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;KACrH;IAEO,YAAY,CAAC,gBAAmD,EAAE,MAAkC,EAAA;QAC1G,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,GAC5B,MAAM,CAAC,IAAI,KAAK,QAAQ;AACtB,cAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;cACpB,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAC9B,MAAM,CAAC,IAAI,KAAK,QAAQ;AACtB,cAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;cACpB,MAAM,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEtE,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC9D,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACpB,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,gBAAA,OAAO,GAAG,QAAQ,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;AACjD,aAAA;YACD,IAAI,gBAAgB,KAAK,QAAQ,EAAE;AACjC,gBAAA,eAAe,GAAG,gBAAgB,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;AACjE,aAAA;AACF,SAAA;QAED,gBAAgB,CAAC,aAAa,CAAC;YAC7B,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAC;AAC/C,YAAA,EAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAC;AAClF,YAAA;gBACE,OAAO;AACP,gBAAA,OAAO,EAAE,eAAe;gBACxB,QAAQ;AACR,gBAAA,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,CAAC,OAAO;AAClB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,QAAQ,EAAE,gBAAgB;AAC1B,gBAAA,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,CAAC,OAAO;AAClB,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,kBAAkB,CAAC,OAAe,EAAA;AACxC,QAAA,IAAI,KAAgI,CAAC;QACrI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,IAAG;AACpD,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;oBAC1B,KAAK,GAAG,KAAK,CAAC;AACd,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC;KACd;AACF;;ACxPK,MAAO,uBAAwB,SAAQ,6BAAiE,CAAA;IAK5G,WAAY,CAAA,IAAoC,EAAE,QAAiC,EAAA;AAAI,QAAA,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAHpG,IAAI,CAAA,IAAA,GAAoB,eAAe,CAAC;KAG8D;;uIALpG,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2HAAvB,uBAAuB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,yBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;mBAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,CAAA;0IAIhB,IAAI,EAAA,CAAA;sBAArC,KAAK;uBAAC,yBAAyB,CAAA;;;MCWrB,0BAA0B,CAAA;;0IAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;2IAA1B,0BAA0B,EAAA,YAAA,EAAA,CATnC,uBAAuB,CAAA,EAAA,OAAA,EAAA,CALvB,YAAY;QACZ,aAAa;AACb,QAAA,UAAU,aAMV,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAMd,mBAAA,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAJ1B,SAAA,EAAA;QACT,2BAA2B;AAC5B,KAAA,EAAA,OAAA,EAAA,CAZC,YAAY;QACZ,aAAa;QACb,UAAU,CAAA,EAAA,CAAA,CAAA;2FAYD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAhBtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,UAAU;AACX,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,uBAAuB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,uBAAuB;AACxB,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,2BAA2B;AAC5B,qBAAA;AACF,iBAAA,CAAA;;;ACvBD;;AAEG;;;;"}