{"version":3,"file":"imng-kendo-grid-odata.mjs","sources":["../../../../libs/imng-kendo-grid-odata/src/lib/kendo-odata-component-base.ts","../../../../libs/imng-kendo-grid-odata/src/lib/kendo-odata-grid-rxjs-operators.ts","../../../../libs/imng-kendo-grid-odata/src/lib/kendo-odata-initial-state-creator.ts","../../../../libs/imng-kendo-grid-odata/src/lib/kendo-odata-grid.directive.ts","../../../../libs/imng-kendo-grid-odata/src/lib/grid-odata-header-component/grid-odata-header.component.ts","../../../../libs/imng-kendo-grid-odata/src/lib/kendo-odata-grid.module.ts","../../../../libs/imng-kendo-grid-odata/src/imng-kendo-grid-odata.ts"],"sourcesContent":["/* eslint-disable @angular-eslint/prefer-inject */\nimport {\n  BehaviorSubject,\n  Observable,\n  concatMap,\n  first,\n  from,\n  isObservable,\n  last,\n  map,\n  scan,\n  switchMap,\n  take,\n  tap,\n  withLatestFrom,\n} from 'rxjs';\nimport { PagerSettings } from '@progress/kendo-angular-grid';\nimport {\n  OnInit,\n  OnDestroy,\n  InjectionToken,\n  Inject,\n  Component,\n  inject,\n} from '@angular/core';\nimport {\n  ODataState,\n  ODataResult,\n  Expander,\n  ODataService,\n  Computation,\n} from 'imng-kendo-odata';\nimport { GridStateChangeEvent, KendoGridBaseComponent } from 'imng-kendo-grid';\nimport { IKendoODataGridFacade } from './kendo-odata-grid-facade';\nimport { Router } from '@angular/router';\nimport { Subscribable } from 'imng-ngrx-utils';\nimport {\n  CompositeFilterDescriptor,\n  FilterDescriptor,\n  isCompositeFilterDescriptor,\n} from '@progress/kendo-data-query';\nimport {\n  ICompositeFilter,\n  IFilter,\n  isCompositeFilter,\n} from 'imng-odata-client';\n\nconst FACADE = new InjectionToken<IKendoODataGridFacade<unknown>>(\n  'imng-grid-odata-facade',\n);\nconst STATE = new InjectionToken<ODataState>('imng-grid-odata-odataState');\n\n@Component({\n  template: '',\n})\nexport abstract class KendoODataBasedComponent<\n  ENTITY extends object,\n  FACADE extends IKendoODataGridFacade<ENTITY>,\n>\n  extends KendoGridBaseComponent<ENTITY>\n  implements OnInit, OnDestroy, Subscribable\n{\n  public useLoadAllDataExport = false;\n  public odataService = inject(ODataService, { optional: true });\n\n  public odataEndpoint?: string;\n  /**\n   * This sets the amount of the maximum amount of sortable columns for this component.  Default = 5.\n   */\n  public maxSortedColumnCount = 5; //NOSONAR\n  /**\n   * This will allow you to provide a visual indicator that some of the columns have been hidden.\n   */\n  public hasHiddenColumns$: Observable<boolean>;\n  public loadDataProgression$ = new BehaviorSubject<number>(0);\n  public gridStateQueryKey = 'odataState';\n  public gridDataState: ODataState;\n  public gridDataResult$: Observable<ODataResult<ENTITY>>;\n  public loading$: Observable<boolean>;\n  public gridPagerSettings$: Observable<false | PagerSettings>;\n  /**\n   * A properties enum to make kendo grid columns definitions type safe\n   * {@example <kendo-grid-column [field]=\"props.FIELD_NAME\">}\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public abstract readonly props: any; //NOSONAR\n  protected expanders?: Expander[];\n  protected compute?: (string | Computation)[];\n  protected transformations?: string;\n\n  /**\n   * The default filter descriptor is set by developer in the constructor initialization.\n   * This is used to reset the filter when the \"Clear Filter\" button is clicked.\n   *\n   * @public\n   * @type {CompositeFilterDescriptor | ICompositeFilter | undefined}\n   */\n  public defaultFilter:\n    | CompositeFilterDescriptor\n    | ICompositeFilter\n    | undefined;\n\n  constructor(\n    @Inject(FACADE) public readonly facade: FACADE,\n    @Inject(STATE) public readonly state: ODataState | Observable<ODataState>,\n    public readonly router: Router | null = null, //NOSONAR\n    public readonly gridRefresh$: Observable<unknown> | null = null,\n  ) {\n    super();\n    if (\n      this.router?.routerState?.snapshot?.root.queryParams[\n        this.gridStateQueryKey\n      ]\n    ) {\n      try {\n        this.gridDataState = this.deserializeODataState(\n          this.router?.routerState?.snapshot?.root?.queryParams[\n            this.gridStateQueryKey\n          ],\n        );\n      } catch {\n        console.error(\n          //NOSONAR\n          `Exception thrown while deserializing query string parameter: ${this.gridStateQueryKey}.`,\n        );\n      }\n    }\n    if (isObservable(state)) {\n      this.allSubscriptions.push(\n        state.subscribe((t) => {\n          this.gridDataState = t;\n          this.expanders = t.expanders;\n          this.compute = t.compute;\n          this.transformations = t.transformations;\n        }),\n        state\n          .pipe(first())\n          .subscribe(\n            (t) => (this.defaultFilter = t.filter as CompositeFilterDescriptor),\n          ),\n      );\n    } else {\n      this.gridDataState = this.gridDataState\n        ? {\n            ...this.gridDataState,\n            selectors: state.selectors,\n            expanders: state.expanders,\n            compute: state.compute,\n          }\n        : state;\n      this.expanders = state.expanders;\n      this.compute = state.compute;\n      this.defaultFilter = state.filter as CompositeFilterDescriptor;\n      this.transformations = state.transformations;\n    }\n    if (gridRefresh$) {\n      this.allSubscriptions.push(\n        gridRefresh$.subscribe(() => this.loadEntities(this.gridDataState)),\n      );\n    }\n  }\n\n  public ngOnInit(): void {\n    if (!this.gridRefresh$) {\n      this.loadEntities(this.gridDataState);\n    }\n    this.loading$ = this.facade.loading$;\n    this.gridDataResult$ = this.facade.gridData$?.pipe(\n      map((gridData) => gridData ?? { total: 0, data: [] }),\n    );\n    this.gridPagerSettings$ = this.facade.gridPagerSettings$;\n  }\n\n  public deserializeODataState(stateQueryParam: string): ODataState {\n    const state: ODataState = JSON.parse(atob(stateQueryParam));\n    state.filter?.filters?.forEach((filter) => this.normalizeFilters(filter));\n    return state;\n  }\n\n  /**\n   * This method ensures the proper handling of date filters in an OData query\n   * @param filter\n   */\n  public normalizeFilters(\n    filter:\n      | FilterDescriptor\n      | CompositeFilterDescriptor\n      | IFilter\n      | ICompositeFilter,\n  ) {\n    if (\n      isCompositeFilterDescriptor(filter as CompositeFilterDescriptor) ||\n      isCompositeFilter(filter as ICompositeFilter)\n    ) {\n      (filter as CompositeFilterDescriptor | ICompositeFilter).filters.forEach(\n        this.normalizeFilters,\n      );\n    } else {\n      const filterObj = filter as IFilter;\n      const filterField = filterObj?.field?.toUpperCase();\n      if (filterField?.endsWith('DATE') || filterField?.endsWith('UTC')) {\n        (filter as IFilter).value = new Date(\n          (filter as IFilter).value as string,\n        );\n      }\n    }\n  }\n\n  public serializeODataState(odataState: ODataState): string {\n    return btoa(JSON.stringify(odataState));\n  }\n  /**\n   * Will reset filters to initialGrid state passed into the constructor\n   */\n  public resetFilters(): void {\n    this.gridDataState = {\n      ...this.gridDataState,\n      filter: this.defaultFilter as ICompositeFilter,\n    };\n    if (!isObservable(this.state)) {\n      this.gridDataState = {\n        ...this.gridDataState,\n        inFilters: this.state.inFilters,\n        childFilters: this.state.childFilters,\n      };\n    }\n    this.loadEntities(this.gridDataState);\n  }\n\n  public dataStateChange(state: GridStateChangeEvent | ODataState): void {\n    this.gridDataState = {\n      ...state,\n      expanders: this.expanders,\n      compute: this.compute,\n      transformations: this.transformations,\n      filter: state.filter as ICompositeFilter,\n    };\n    this.loadEntities(this.gridDataState);\n  }\n\n  /**\n   * Gets an Observable of all data for Excel export.\n   *\n   * Returns all data from the OData endpoint if the endpoint is available and\n   * `useLoadAllDataExport` is enabled, otherwise returns the current grid data result.\n   *\n   * @returns {Observable<ODataResult<ENTITY>>} An Observable containing the OData result with entity data\n   */\n  public excelData = (): Observable<ODataResult<ENTITY>> =>\n    this.odataEndpoint && this.useLoadAllDataExport && this.odataService\n      ? this.loadAllData()\n      : this.gridDataResult$;\n\n  /**\n   * Loads all data from the OData service by fetching data in chunks of 100 items.\n   *\n   * This method retrieves the current grid data and OData state, then creates multiple\n   * OData queries to fetch all available data in batches. Each batch is limited to 100 items\n   * to manage memory and performance. The results from all batches are accumulated and returned\n   * as a single ODataResult.\n   *\n   * @returns {Observable<ODataResult<ENTITY>>} An observable that emits the complete accumulated result\n   *          containing the total count and combined data from all fetched batches. After emission,\n   *          sets the useLoadAllDataExport flag to false.\n   *\n   * @remarks\n   * - Uses `concatMap` to ensure requests are processed sequentially\n   * - Uses `scan` to accumulate results from each batch\n   * - Count is disabled on subsequent requests (count: false) to optimize performance\n   * - The useLoadAllDataExport flag is reset to false upon completion\n   */\n  public loadAllData(): Observable<ODataResult<ENTITY>> {\n    return this.facade.gridData$.pipe(\n      withLatestFrom(this.facade.gridODataState$),\n      take(1),\n      map(([data, state]) => ({ total: data?.total ?? 0, state: state })),\n      map(({ total, state }) => {\n        if (!state?.take || total <= state.take) {\n          return { totalRecordCount: total, queries: [state] };\n        }\n        const odataQueries: ODataState[] = [];\n        const totalRecordCount = total;\n        while (total > 0) {\n          odataQueries.push({\n            ...state,\n            skip: odataQueries.length * 100,\n            take: 100,\n            count: false, // we don't need the count on subsequent requests\n          });\n          total -= 100;\n        }\n        return { totalRecordCount: totalRecordCount, queries: odataQueries };\n      }),\n      switchMap((queryData) =>\n        from(queryData.queries).pipe(\n          concatMap((odataQuery) =>\n            (this.odataService ?? new ODataService())\n              .fetch<ENTITY>(\n                this.odataEndpoint ?? '',\n                odataQuery ?? { skip: 0, take: 100 },\n              )\n              .pipe(\n                tap(() => {\n                  this.loadDataProgression$.next(\n                    Math.max(\n                      1,\n                      Math.trunc(\n                        ((odataQuery?.skip ?? 0) / queryData.totalRecordCount) *\n                          100,\n                      ),\n                    ),\n                  );\n                }),\n              ),\n          ),\n          scan((accumulated, current) => ({\n            total: queryData.totalRecordCount,\n            data: [...accumulated.data, ...current.data],\n          })),\n          last(),\n        ),\n      ),\n      tap(() => {\n        this.useLoadAllDataExport = false;\n        this.loadDataProgression$.next(0);\n      }),\n    );\n  }\n\n  public loadEntities(odataState: ODataState): void {\n    odataState = this.validateSortParameters(odataState);\n    this.gridDataState = odataState;\n    this.expanders = odataState.expanders;\n    this.compute = odataState.compute;\n    this.transformations = odataState.transformations;\n    this.facade.loadEntities(this.gridDataState);\n    this.updateRouterState(odataState);\n  }\n\n  public validateSortParameters(state: ODataState): ODataState {\n    if (state.sort && (state.sort?.length || 0) > this.maxSortedColumnCount) {\n      state = {\n        ...state,\n        sort: state.sort.slice(0, this.maxSortedColumnCount),\n      };\n      console.warn(\n        `You have exceeded the limit of ${this.maxSortedColumnCount} sorted columns for the current grid. MAX-Sorted-Column-Count`,\n      ); //NOSONAR\n    }\n    return state;\n  }\n\n  public updateRouterState(state: ODataState): void {\n    if (this.router) {\n      const tempState = { ...state };\n      delete tempState.selectors;\n      delete tempState.expanders;\n      delete tempState.compute;\n      this.router.navigate([], {\n        relativeTo: this.router.routerState.root,\n        queryParams: {\n          [this.gridStateQueryKey]: this.serializeODataState(tempState),\n        },\n        skipLocationChange: false,\n        queryParamsHandling: 'merge',\n      });\n    }\n  }\n  public reloadEntities(): void {\n    this.facade.reloadEntities();\n  }\n}\n","import { Observable } from 'rxjs';\nimport { PagerSettings } from '@progress/kendo-angular-grid';\nimport { map } from 'rxjs/operators';\nimport { ODataResult, ODataState } from 'imng-kendo-odata';\n\nexport const getODataPagerSettings = <T>(m: {\n  gridData: ODataResult<T>;\n  gridODataState?: ODataState;\n}): false | PagerSettings => {\n  if (!m.gridODataState || !m.gridODataState.take || !m.gridData || !m.gridData.total) {\n    return false;\n  }\n  let pageCount = m.gridData.total / m.gridODataState.take;\n  pageCount = Math.min(10, Math.ceil(pageCount));\n  return {\n    buttonCount: pageCount,\n    info: true,\n    pageSizes: [10, 20, 50, 100],\n    previousNext: true,\n    type: 'numeric',\n  };\n};\n\nexport const mapPagerSettings =\n  <T>() =>\n  (\n    source: Observable<{\n      gridData: ODataResult<T>;\n      gridODataState?: ODataState;\n    }>,\n  ) =>\n    source.pipe(map((m) => getODataPagerSettings(m)));\n","import { KendoODataGridState } from './kendo-odata-grid-state';\n\nexport function createKendoODataGridInitialState<TEntity>(): KendoODataGridState<TEntity> {\n  return {\n    gridData: { data: [], total: 0 },\n    loading: false,\n    gridODataState: {},\n    gridPagerSettings: false,\n    error: undefined\n  };\n}\n","import {\n  Directive,\n  Input,\n  OnInit,\n  OnDestroy,\n  ChangeDetectorRef,\n  AfterViewInit,\n  inject,\n} from '@angular/core';\nimport { GridComponent } from '@progress/kendo-angular-grid';\nimport { Subscribable, Subscriptions } from 'imng-ngrx-utils';\nimport { merge, filter } from 'rxjs';\nimport { KendoODataBasedComponent } from './kendo-odata-component-base';\nimport { IKendoODataGridFacade } from './kendo-odata-grid-facade';\nimport { GridStateChangeEvent, hasHiddenColumns } from 'imng-kendo-grid';\nimport { CompositeFilterDescriptor } from '@progress/kendo-data-query';\n\n@Directive({\n  selector: '[imngODataGrid]',\n})\nexport class IMNG_KENDO_GRID_ODATA\n  implements OnInit, AfterViewInit, OnDestroy, Subscribable\n{\n  readonly gridComponent = inject(GridComponent);\n  readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n  public readonly allSubscriptions = new Subscriptions();\n  private facade: IKendoODataGridFacade<object>;\n\n  @Input('imngODataGrid') public odataComponent: KendoODataBasedComponent<\n    object,\n    IKendoODataGridFacade<object>\n  >;\n\n  ngOnInit(): void {\n    this.facade = this.odataComponent.facade || ({} as never);\n    this.gridComponent.reorderable = true;\n    this.gridComponent.resizable = true;\n    this.gridComponent.filterable = 'menu';\n    this.gridComponent.sortable = {\n      allowUnsort: true,\n      mode: 'multiple',\n    };\n    this.gridComponent.navigable = true;\n    this.allSubscriptions.push(\n      this.facade.loading$.subscribe((t: boolean) => {\n        this.gridComponent.loading = t;\n        this.changeDetectorRef.markForCheck();\n      }),\n    );\n    this.odataComponent.hasHiddenColumns$ = merge(\n      this.odataComponent.facade.loading$.pipe(\n        hasHiddenColumns(this.gridComponent),\n      ),\n      this.gridComponent.columnVisibilityChange?.pipe(\n        hasHiddenColumns(this.gridComponent),\n      ),\n    );\n  }\n\n  ngAfterViewInit(): void {\n    this.allSubscriptions.push(\n      this.gridComponent.dataStateChange.subscribe((t: GridStateChangeEvent) =>\n        this.odataComponent.dataStateChange(t),\n      ),\n      this.facade.gridData$.subscribe((t) => {\n        this.gridComponent.data = t || [];\n        this.changeDetectorRef.markForCheck();\n      }),\n      this.facade.gridPagerSettings$.subscribe(\n        (t) => (this.gridComponent.pageable = t),\n      ),\n      this.facade.gridODataState$.pipe(filter((t) => !!t)).subscribe((t) => {\n        this.gridComponent.pageSize = t?.take || 20; //NOSONAR\n        this.gridComponent.filter =\n          (t?.filter as CompositeFilterDescriptor) || {\n            logic: 'and',\n            filters: [],\n          };\n        this.gridComponent.skip = t?.skip || 0;\n        this.gridComponent.sort = t?.sort || [];\n      }),\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.allSubscriptions.unsubscribeAll();\n  }\n}\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  inject,\n} from '@angular/core';\nimport {\n  GridComponent,\n  ColumnChooserComponent,\n} from '@progress/kendo-angular-grid';\nimport { KENDO_SVGICON } from '@progress/kendo-angular-icons';\nimport {\n  KENDO_BUTTON,\n  KENDO_SPLITBUTTON,\n} from '@progress/kendo-angular-buttons';\nimport {\n  filePdfIcon,\n  fileExcelIcon,\n  filterClearIcon,\n  arrowRotateCcwIcon,\n  plusIcon,\n  exportIcon,\n} from '@progress/kendo-svg-icons';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KendoODataBasedComponent } from '../kendo-odata-component-base';\nimport { IKendoODataGridFacade } from '../kendo-odata-grid-facade';\nimport { KENDO_POPUP } from '@progress/kendo-angular-popup';\nimport { KENDO_PROGRESSBAR } from '@progress/kendo-angular-progressbar';\n\n@Component({\n  selector: 'imng-kendo-grid-odata-header',\n  imports: [\n    AsyncPipe,\n    NgClass,\n    KENDO_BUTTON,\n    KENDO_SPLITBUTTON,\n    KENDO_POPUP,\n    KENDO_PROGRESSBAR,\n    KENDO_SVGICON,\n    ColumnChooserComponent,\n  ],\n  template: ` <span\n      #popupAnchor\n      class=\"k-w-full k-justify-content-center\"></span>\n    @if (loadDataProgression$ | async; as loadDataProgression) {\n      <kendo-popup\n        class=\"w-25\"\n        [anchor]=\"popupAnchor\"\n        [anchorAlign]=\"{\n          horizontal: 'center',\n          vertical: 'center',\n        }\"\n        [popupAlign]=\"{\n          horizontal: 'center',\n          vertical: 'center',\n        }\">\n        <div class=\"text-center\">\n          @if (loadDataProgression > 0 && loadDataProgression <= 5) {\n            <div class=\"font-weight-bold\">Initializing...</div>\n          } @else if (loadDataProgression > 5 && loadDataProgression < 90) {\n            <div class=\"font-weight-bold\">Loading Data...</div>\n          } @else if (loadDataProgression >= 90) {\n            <div class=\"font-weight-bold\">Almost There...</div>\n          }\n          <div>\n            <kendo-progressbar\n              [value]=\"loadDataProgression\"\n              [min]=\"0\"\n              [max]=\"100\"\n              [label]=\"{\n                visible: true,\n                format: 'percent',\n                position: 'center',\n              }\"></kendo-progressbar>\n          </div>\n        </div>\n      </kendo-popup>\n    }\n    <div class=\"mr-5 pr-5\">\n      @if (entityName) {\n        <button\n          name=\"imngAddEntity\"\n          type=\"button\"\n          title=\"Add {{ entityName }}\"\n          primary=\"true\"\n          (click)=\"addItemClicked.emit()\"\n          class=\"btn btn-sm btn-primary mx-1 imng-grid-odata-hdr-btn\">\n          <kendo-svg-icon [icon]=\"plusIcon\"></kendo-svg-icon>\n          Add {{ entityName }}\n        </button>\n      }\n      @if (hideResetFilters !== true) {\n        <button\n          name=\"imngResetFilters\"\n          type=\"button\"\n          title=\"Reset Filters\"\n          (click)=\"resetFiltersClicked.emit()\"\n          class=\"btn btn-sm mx-1 imng-grid-odata-hdr-btn\">\n          <kendo-svg-icon [icon]=\"filterClearIcon\"></kendo-svg-icon> Reset\n          Filters\n        </button>\n      }\n      @if (hideReloadData !== true) {\n        <button\n          name=\"imngReloadData\"\n          type=\"button\"\n          title=\"Clear Cache And Reload Data\"\n          (click)=\"reloadEntitiesClicked.emit()\"\n          class=\"btn btn-sm mx-1 imng-grid-odata-hdr-btn\">\n          <kendo-svg-icon [icon]=\"arrowRotateCcwIcon\"></kendo-svg-icon>\n          Reload Data\n        </button>\n      }\n      @if (hideExports !== true) {\n        <kendo-splitbutton\n          [data]=\"exportOptions\"\n          [svgIcon]=\"exportIcon\"\n          textField=\"name\"\n          class=\"btn btn-sm mx-1 imng-grid-odata-hdr-btn\">\n          Export Data\n        </kendo-splitbutton>\n      }\n      @if (hideColumnChooser !== true) {\n        <kendo-grid-column-chooser\n          name=\"imngColumnChooser\"\n          title=\"Columns\"\n          [allowHideAll]=\"true\"\n          [autoSync]=\"true\"\n          [ngClass]=\"{\n            'text-primary': (hasHiddenColumns$ | async),\n          }\" />\n      }\n    </div>`,\n  styles: [\n    `\n      .btn-sm {\n        height: 30px;\n        border-radius: 2px;\n        background-color: #f5f5f5;\n        border-color: rgba(0, 0, 0, 0.08);\n      }\n      .btn-primary {\n        background-color: #007bff;\n      }\n      .k-icon {\n        padding-bottom: 3px;\n      }\n      .k-bare {\n        border-color: rgba(0, 0, 0, 0.08) !important;\n        background-color: #f5f5f5 !important;\n        background-image: linear-gradient(\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 0.02)\n        ) !important;\n      }\n    `,\n  ],\n})\nexport class IMNG_KENDO_GRID_ODATA_HEADER implements OnInit {\n  public parentGrid = inject<GridComponent>(GridComponent);\n  public readonly exportIcon = exportIcon;\n  public readonly filePdfIcon = filePdfIcon;\n  public readonly plusIcon = plusIcon;\n  public readonly fileExcelIcon = fileExcelIcon;\n  public readonly filterClearIcon = filterClearIcon;\n  public readonly arrowRotateCcwIcon = arrowRotateCcwIcon;\n  @Input({ required: true }) public imngODataGrid!: KendoODataBasedComponent<\n    object,\n    IKendoODataGridFacade<object>\n  >;\n\n  public loadDataProgression$: BehaviorSubject<number>;\n  public exportOptions: {\n    name: string;\n    command: string;\n    click: () => void;\n    svgIcon?: unknown;\n  }[];\n  @Input()\n  public entityName = '';\n  @Input()\n  public hideColumnChooser = false;\n  @Input()\n  public hideResetFilters = false;\n  @Input()\n  public hideReloadData = false;\n  @Input()\n  public hideExports = false;\n  @Input()\n  public hasHiddenColumns$: Observable<boolean> | undefined;\n  @Output()\n  public addItemClicked = new EventEmitter();\n  @Output()\n  public resetFiltersClicked = new EventEmitter();\n  @Output()\n  public reloadEntitiesClicked = new EventEmitter();\n\n  ngOnInit(): void {\n    this.exportOptions = [\n      {\n        name: 'Export PDF',\n        command: 'pdf',\n        click: () => this.parentGrid.saveAsPDF(),\n        svgIcon: filePdfIcon,\n      },\n      {\n        name: 'Export Excel',\n        command: 'excel',\n        click: () => this.parentGrid.saveAsExcel(),\n        svgIcon: fileExcelIcon,\n      },\n    ];\n    if (this.imngODataGrid.odataService && this.imngODataGrid.odataEndpoint) {\n      this.exportOptions.push({\n        name: 'Export All Excel',\n        command: 'excel',\n        click: () =>\n          this.configureGridForLoadAllData((grid) => grid.saveAsExcel()),\n        svgIcon: fileExcelIcon,\n      });\n    }\n    this.loadDataProgression$ = this.imngODataGrid.loadDataProgression$;\n  }\n\n  public configureGridForLoadAllData(\n    exportCallback: (gridComponent: GridComponent) => void,\n  ) {\n    this.imngODataGrid.loadDataProgression$.next(1);\n    this.imngODataGrid.useLoadAllDataExport = true;\n    exportCallback(this.parentGrid);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IMNG_KENDO_GRID_ODATA } from './kendo-odata-grid.directive';\nimport { ExcelModule, PDFModule } from '@progress/kendo-angular-grid';\nimport { ImngKendoGridModule } from 'imng-kendo-grid';\nimport { IMNG_KENDO_GRID_ODATA_HEADER } from './grid-odata-header-component/grid-odata-header.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    PDFModule,\n    ExcelModule,\n    ImngKendoGridModule,\n    IMNG_KENDO_GRID_ODATA,\n    IMNG_KENDO_GRID_ODATA_HEADER,\n  ],\n  exports: [IMNG_KENDO_GRID_ODATA, IMNG_KENDO_GRID_ODATA_HEADER],\n})\nexport class ImngKendoGridODataModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AA+CA,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,wBAAwB,CACzB;AACD,MAAM,KAAK,GAAG,IAAI,cAAc,CAAa,4BAA4B,CAAC;AAKpE,MAAgB,wBAIpB,SAAQ,sBAA8B,CAAA;AA2CtC,IAAA,WAAA,CACkC,MAAc,EACf,KAA0C,EACzD,MAAA,GAAwB,IAAI;AAC5B,IAAA,YAAA,GAA2C,IAAI,EAAA;AAE/D,QAAA,KAAK,EAAE;QALyB,IAAA,CAAA,MAAM,GAAN,MAAM;QACP,IAAA,CAAA,KAAK,GAAL,KAAK;QACpB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,YAAY,GAAZ,YAAY;QA5CvB,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAC5B,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAG9D;;AAEG;AACI,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,CAAC;AAKzB,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QACrD,IAAA,CAAA,iBAAiB,GAAG,YAAY;AAqKvC;;;;;;;AAOG;AACI,QAAA,IAAA,CAAA,SAAS,GAAG,MACjB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC;AACtD,cAAE,IAAI,CAAC,WAAW;AAClB,cAAE,IAAI,CAAC,eAAe;AA9IxB,QAAA,IACE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAClD,IAAI,CAAC,iBAAiB,CACvB,EACD;AACA,YAAA,IAAI;gBACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAC7C,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CACnD,IAAI,CAAC,iBAAiB,CACvB,CACF;YACH;AAAE,YAAA,MAAM;AACN,gBAAA,OAAO,CAAC,KAAK;;AAEX,gBAAA,CAAA,6DAAA,EAAgE,IAAI,CAAC,iBAAiB,CAAA,CAAA,CAAG,CAC1F;YACH;QACF;AACA,QAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACpB,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;AAC5B,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AACxB,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe;YAC1C,CAAC,CAAC,EACF;iBACG,IAAI,CAAC,KAAK,EAAE;AACZ,iBAAA,SAAS,CACR,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,MAAmC,CAAC,CACpE,CACJ;QACH;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AACxB,kBAAE;oBACE,GAAG,IAAI,CAAC,aAAa;oBACrB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;AACvB;kBACD,KAAK;AACT,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAmC;AAC9D,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe;QAC9C;QACA,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CACpE;QACH;IACF;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;QACvC;QACA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAChD,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACtD;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB;IAC1D;AAEO,IAAA,qBAAqB,CAAC,eAAuB,EAAA;QAClD,MAAM,KAAK,GAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3D,QAAA,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzE,QAAA,OAAO,KAAK;IACd;AAEA;;;AAGG;AACI,IAAA,gBAAgB,CACrB,MAIoB,EAAA;QAEpB,IACE,2BAA2B,CAAC,MAAmC,CAAC;AAChE,YAAA,iBAAiB,CAAC,MAA0B,CAAC,EAC7C;YACC,MAAuD,CAAC,OAAO,CAAC,OAAO,CACtE,IAAI,CAAC,gBAAgB,CACtB;QACH;aAAO;YACL,MAAM,SAAS,GAAG,MAAiB;YACnC,MAAM,WAAW,GAAG,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE;AACnD,YAAA,IAAI,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAChE,MAAkB,CAAC,KAAK,GAAG,IAAI,IAAI,CACjC,MAAkB,CAAC,KAAe,CACpC;YACH;QACF;IACF;AAEO,IAAA,mBAAmB,CAAC,UAAsB,EAAA;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACzC;AACA;;AAEG;IACI,YAAY,GAAA;QACjB,IAAI,CAAC,aAAa,GAAG;YACnB,GAAG,IAAI,CAAC,aAAa;YACrB,MAAM,EAAE,IAAI,CAAC,aAAiC;SAC/C;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG;gBACnB,GAAG,IAAI,CAAC,aAAa;AACrB,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;AAC/B,gBAAA,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;aACtC;QACH;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;IACvC;AAEO,IAAA,eAAe,CAAC,KAAwC,EAAA;QAC7D,IAAI,CAAC,aAAa,GAAG;AACnB,YAAA,GAAG,KAAK;YACR,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,MAAM,EAAE,KAAK,CAAC,MAA0B;SACzC;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;IACvC;AAeA;;;;;;;;;;;;;;;;;AAiBG;IACI,WAAW,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAC/B,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAC3C,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACnE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAI;YACvB,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;gBACvC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;YACtD;YACA,MAAM,YAAY,GAAiB,EAAE;YACrC,MAAM,gBAAgB,GAAG,KAAK;AAC9B,YAAA,OAAO,KAAK,GAAG,CAAC,EAAE;gBAChB,YAAY,CAAC,IAAI,CAAC;AAChB,oBAAA,GAAG,KAAK;AACR,oBAAA,IAAI,EAAE,YAAY,CAAC,MAAM,GAAG,GAAG;AAC/B,oBAAA,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,KAAK;AACb,iBAAA,CAAC;gBACF,KAAK,IAAI,GAAG;YACd;YACA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE;AACtE,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,SAAS,KAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAC1B,SAAS,CAAC,CAAC,UAAU,KACnB,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,YAAY,EAAE;AACrC,aAAA,KAAK,CACJ,IAAI,CAAC,aAAa,IAAI,EAAE,EACxB,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;AAErC,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,IAAI,CAAC,GAAG,CACN,CAAC,EACD,IAAI,CAAC,KAAK,CACR,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,SAAS,CAAC,gBAAgB;gBACnD,GAAG,CACN,CACF,CACF;AACH,QAAA,CAAC,CAAC,CACH,CACJ,EACD,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,MAAM;YAC9B,KAAK,EAAE,SAAS,CAAC,gBAAgB;YACjC,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAC,EACH,IAAI,EAAE,CACP,CACF,EACD,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACjC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CACH;IACH;AAEO,IAAA,YAAY,CAAC,UAAsB,EAAA;AACxC,QAAA,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;AACpD,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO;AACjC,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe;QACjD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;IACpC;AAEO,IAAA,sBAAsB,CAAC,KAAiB,EAAA;AAC7C,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvE,YAAA,KAAK,GAAG;AACN,gBAAA,GAAG,KAAK;AACR,gBAAA,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC;aACrD;YACD,OAAO,CAAC,IAAI,CACV,CAAA,+BAAA,EAAkC,IAAI,CAAC,oBAAoB,CAAA,6DAAA,CAA+D,CAC3H,CAAC;QACJ;AACA,QAAA,OAAO,KAAK;IACd;AAEO,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE;YAC9B,OAAO,SAAS,CAAC,SAAS;YAC1B,OAAO,SAAS,CAAC,SAAS;YAC1B,OAAO,SAAS,CAAC,OAAO;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;AACvB,gBAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI;AACxC,gBAAA,WAAW,EAAE;oBACX,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAC9D,iBAAA;AACD,gBAAA,kBAAkB,EAAE,KAAK;AACzB,gBAAA,mBAAmB,EAAE,OAAO;AAC7B,aAAA,CAAC;QACJ;IACF;IACO,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;IAC9B;+GA3ToB,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAgDlC,MAAM,EAAA,EAAA,EAAA,KAAA,EACN,KAAK,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjDK,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,+FAFlC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;4FAEQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAH7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;0BAiDI,MAAM;2BAAC,MAAM;;0BACb,MAAM;2BAAC,KAAK;;;ACnGV,MAAM,qBAAqB,GAAG,CAAI,CAGxC,KAA2B;IAC1B,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACnF,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI;AACxD,IAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO;AACL,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC5B,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,IAAI,EAAE,SAAS;KAChB;AACH;AAEO,MAAM,gBAAgB,GAC3B,MACA,CACE,MAGE,KAEF,MAAM,CAAC,IAAI,CAACA,KAAG,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAC;;SC7BpC,gCAAgC,GAAA;IAC9C,OAAO;QACL,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AAChC,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,iBAAiB,EAAE,KAAK;AACxB,QAAA,KAAK,EAAE;KACR;AACH;;MCUa,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,aAAa,EAAE;AA8DvD,IAAA;IAtDC,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAK,EAAY;AACzD,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,MAAM;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG;AAC5B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,IAAI,EAAE,UAAU;SACjB;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAU,KAAI;AAC5C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,CAAC;AAC9B,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACvC,CAAC,CAAC,CACH;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,GAAG,KAAK,CAC3C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CACtC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CACrC,EACD,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,IAAI,CAC7C,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CACrC,CACF;IACH;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAuB,KACnE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CACvC,EACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACpC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACvC,CAAC,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CACtC,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,CACzC,EACD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACnE,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,MAAM;gBACtB,CAAC,EAAE,MAAoC,IAAI;AAC1C,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,OAAO,EAAE,EAAE;iBACZ;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;YACtC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE;QACzC,CAAC,CAAC,CACH;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;IACxC;+GAnEW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA;;sBAUE,KAAK;uBAAC,eAAe;;;MCoIX,4BAA4B,CAAA;AAjIzC,IAAA,WAAA,GAAA;AAkIS,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAgB,aAAa,CAAC;QACxC,IAAA,CAAA,UAAU,GAAG,UAAU;QACvB,IAAA,CAAA,WAAW,GAAG,WAAW;QACzB,IAAA,CAAA,QAAQ,GAAG,QAAQ;QACnB,IAAA,CAAA,aAAa,GAAG,aAAa;QAC7B,IAAA,CAAA,eAAe,GAAG,eAAe;QACjC,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;QAchD,IAAA,CAAA,UAAU,GAAG,EAAE;QAEf,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAEzB,IAAA,CAAA,gBAAgB,GAAG,KAAK;QAExB,IAAA,CAAA,cAAc,GAAG,KAAK;QAEtB,IAAA,CAAA,WAAW,GAAG,KAAK;AAInB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAEnC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAE;AAExC,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAE;AAoClD,IAAA;IAlCC,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,GAAG;AACnB,YAAA;AACE,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AACxC,gBAAA,OAAO,EAAE,WAAW;AACrB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC1C,gBAAA,OAAO,EAAE,aAAa;AACvB,aAAA;SACF;AACD,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;AACvE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,KAAK,EAAE,MACL,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AAChE,gBAAA,OAAO,EAAE,aAAa;AACvB,aAAA,CAAC;QACJ;QACA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB;IACrE;AAEO,IAAA,2BAA2B,CAChC,cAAsD,EAAA;QAEtD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,GAAG,IAAI;AAC9C,QAAA,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;IACjC;+GAxEW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArH7B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FD,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAnGP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAMP,sBAAsB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAPtB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA8HA,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAjIxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,OAAA,EAC/B;wBACP,SAAS;wBACT,OAAO;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,WAAW;wBACX,iBAAiB;wBACjB,aAAa;wBACb,sBAAsB;qBACvB,EAAA,QAAA,EACS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FD,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mSAAA,CAAA,EAAA;;sBAkCR,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAYxB;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;;MCnLU,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YATjC,YAAY;YACZ,SAAS;YACT,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAEpB,qBAAqB,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAElD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YATjC,YAAY;YACZ,SAAS;YACT,WAAW;YACX,mBAAmB;YAEnB,4BAA4B,CAAA,EAAA,CAAA,CAAA;;4FAInB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,SAAS;wBACT,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,4BAA4B;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;AAC/D,iBAAA;;;ACjBD;;AAEG;;;;"}