UNPKG

imng-kendo-grid-odata

Version:

This library was generated with [Nx](https://nx.dev).

1 lines 40.7 kB
{"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":"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"}